Розпаралелювання обчислення суми десяти чисел

Вивчення масиву перших десяти натуральних чисел. Блок-схеми і програми алгоритму розпаралелювання множин. Топологічний аналіз початкового графу. Аналіз ефективності паралельних рішень. Розгляд процесу розпаралелювання обчислення суми десяти чисел.

Рубрика Программирование, компьютеры и кибернетика
Вид лабораторная работа
Язык украинский
Дата добавления 04.04.2015
Размер файла 230,2 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Лабораторна робота №2

Тема: Розпаралелювання обчислення суми десяти чисел

Бондар Ігор

СУА-12-1

Задача

Задано масив перших десяти натуральних чисел. Скласти блок-схеми і програму алгоритму розпаралелювання сум від 4 до 10 чисел. Для перевірки додати у програму частину, яка б сумувала числа за допомогою стандартного алгоритму. Алгоритм і програму складати за умовою, що є два процесори.

Лістинг програми

// ptroc++.cpp: определяет точку входа для консольного приложения.

//

#include "stdafx.h"

#include <windows.h>

#include <process.h>

#include <iostream>

#include <conio.h>

using namespace std;

int proc1, proc2, k=0, mem[12];

unsigned tid;

HANDLE Thread[10];

int i, p=2, A, B;

int a[10]= {0,0,0,0,0,0,0,0,0,0};

unsigned __stdcall Sum( void * arg) // Функція потоку

{

proc1=a[k]; proc2=a[k+1];

mem[k]=proc1+proc2;

cout<<"Комiрка памятi[ "<<i<<" ] "<<mem[k]<<endl;

k+=2;

return 0;

};

unsigned __stdcall Sum2( void * arg) // Функція потоку

{

proc1 = mem[k];

proc2 = mem[k + p];

mem[k] = proc1 + proc2;

cout << "Комiрка памятi[ " << i << " ] " << mem[k] << endl;

k += 4;

return 0;

};

int main()

{

setlocale(LC_ALL, "Russian");

cout<<"Введiть кiлькiсть чисел (до десяти)\n";

cin>>A;

for (i = 0; i < A; i++)

{

cout << "Введiть число " << i <<": ";

cin >> a[i];

}

for (i = 0; i < 5; i++)

{

Thread[i] = (HANDLE)_beginthreadex(NULL, 0, Sum, 0, 0, &tid);

Sleep(10);

}

// Чекаємо, доки потоки не завершать свою работу

WaitForMultipleObjects(5, Thread, TRUE, INFINITE );

cout << "Потоки завершили виконання" << endl;

for (i = 0; i < 10; i++)

{

CloseHandle(Thread[i]);

}

k = 0;

for (i = 0; i < 3; i++)

{

Thread[i] = (HANDLE)_beginthreadex(NULL, 0, Sum2, 0, 0, &tid);

Sleep(10);

}

// Чекаємо, доки потоки не завершать свою работу

WaitForMultipleObjects(3, Thread, TRUE, INFINITE );

cout << "Потоки завершили виконання" << endl;

for (i = 0; i < 3; i++)

{CloseHandle(Thread[i]);}

p = 4;

k = 0;

i = 0;

Thread[1] = (HANDLE)_beginthreadex(NULL, 0, Sum2, 0, 0, &tid);

Sleep(10);

cout << "Потоки завершили виконання" << endl;

CloseHandle(Thread[1]);

p = 8;

k = 0;

i = 0;

Thread[2] = (HANDLE)_beginthreadex(NULL, 0, Sum2, 0, 0, &tid);

Sleep(10);

cout << "Потоки завершили виконання" << endl;

CloseHandle(Thread[1]);

_getch();

return 0;

}

Рис. 1 Схема розпаралелювання процесу

розпаралелювання число натуральний масив

На рис. 3 показано процес розпаралелювання. В першому та другому ярусі всі чотири процесори виконують функцію множення, в третьому - додавання. Як видно на малюнку при виконанні задачі не виникає конфліктів в пам'яті.

Висновок: під час цієї лабораторної роботи ми навчилися розпаралелюванним обчисленням суми десяти чисел.

Размещено на Allbest.ru

...

Подобные документы

  • Топологічний аналіз початкового графу. Розробка підходів до розпаралелювання і послідовного рішення задачі – розрахунку потоків повітря у кожній гілці мережевого динамічного об’єкту – вентиляційної мережі. Аналіз ефективності паралельних рішень.

    курсовая работа [743,4 K], добавлен 27.08.2012

  • Блок-схема алгоритму та функціональні ряди. Код програми обчислення визначених інтегралів. Операції з масивами та значення накопичення функціональної суми. Діапазон зміни аргументу і обчислення функціональної суми у режимі відображення формул та графіки.

    отчет по практике [2,7 M], добавлен 30.11.2011

  • Лінійна програма на C++. Арифметичні вирази. Обчислення значень функції. Значення логічних виразів і логічних операцій. Види циклів, обчислення нескінченної суми з заданою точністю. Створення файлу цілих чисел з N компонент, виведення їх на екран.

    контрольная работа [12,7 K], добавлен 09.09.2011

  • Теоретичні відомості про язик С++. Розробка програми, що виконує основні арифметичні дії над простими та складними числами на язику С++. Опис алгоритму програми та її код. Інструкція по користуванню. Обгрунтовування вибору та складу технічних засобів.

    курсовая работа [852,8 K], добавлен 30.11.2011

  • Обчислення наближеного значення суми спадного ряду. Складання блок-схеми та програми, яка б виводила на друк сгенерований, сформований та впорядкований масиви. Використання операторів умовного переходу If - Then - Else. Розроблення програми на VBA.

    практическая работа [51,7 K], добавлен 09.11.2009

  • Складання блок-схеми і програми обчислення значення функції з заданою точністю та програми табулювання функції з заданим кроком. Обчислення двох значень поліному за допомогою схеми Горнера. Програма введення вхідних даних з клавіатури і з файлу ZAD4.DAT.

    контрольная работа [168,6 K], добавлен 29.09.2010

  • Сімейство процесорів ADSP-2100 та їх характеристика. Аналіз ресурсів та структурна схема обчислювального модуля ALU. Призначення регістра ASTAT. Блок-схема алгоритму та програма реалізації ділення цілих чисел на мові Асемблера поточного процесора ADSP.

    курсовая работа [463,2 K], добавлен 04.01.2014

  • Формирование устойчивой последовательности псевдослучайных чисел с использованием метода "середины квадрата". Разработка программы для определения среднего значения чисел, среднего значения квадратов чисел и дисперсии для последовательности из 20 чисел.

    лабораторная работа [1,4 M], добавлен 21.01.2015

  • Знайомство з комп’ютерною програмою, розробленою для використання у грі в шахи, розгляд особливостей застосування на практиці. Загальна характеристика результатів роботи програми. Аналіз основних способів кодування шахової дошки парою натуральних чисел.

    контрольная работа [479,8 K], добавлен 18.09.2014

  • Подання чисел у нормальній формі. Порядок нормалізації чисел з рухомою комою. Правила додавання двійкових чисел з рухомою комою. Алгоритми і програми додавання чисел в арифметиці з рухомою комою в інструкціях навчального комп'ютера-симулятора DeComp.

    лабораторная работа [31,7 K], добавлен 13.03.2011

  • Преобразование чисел из естественной формы в нормализованную. Алгоритм нормализации числа. Способы кодирования чисел и действия над ними. Особенности прямого, дополнительного, смещенного и обратного кода. Понятие вещественных чисел, их представление.

    презентация [42,6 K], добавлен 14.06.2011

  • Розробка програмних модулів базових операцій обробки на підставі розрядно-логарифмічного кодування. Дослідження алгоритму розв'язку системи лінійних алгебраїчних рівнянь. Реалізація алгоритму Гауса. Покращення точності розрахунків за допомогою рл-чисел.

    курсовая работа [427,2 K], добавлен 20.11.2013

  • Программирование микро ЭВМ на МП БИС КР580ИК80. Арифметические команды. Представление чисел в различных системах счисления и отображение их на дисплее. Сложение массива однобайтных чисел. Вычитание одинаковых чисел. Сложение двух десятичных чисел.

    лабораторная работа [263,8 K], добавлен 03.03.2009

  • Оптимальный алгоритм деления чисел в нормализованной форме для получения нормализованного произведения чисел с помощью TP Pascal. Работа со строковыми данными и типами Real и Integer. Описание метода решения. Блок-схема работы программы, ее листинг.

    курсовая работа [111,8 K], добавлен 28.07.2009

  • Розробка алгоритму множення чисел у прямому коді з молодших розрядів із пропусканням тактів сумування для двійкових чисел. Синтез операційного та керуючого автоматів з жорсткою логікою. Описання технології числового контролю операції додавання по модулю.

    курсовая работа [74,9 K], добавлен 14.03.2013

  • Розробка програми, яка вираховує з введених чисел парні та непарні та додає парні числа. Особливості синтаксису й семантики операторів мови С++. Перевірка коректності введення кількості чисел. Написання коду програми, проведення її тестування на прикладі.

    лабораторная работа [860,5 K], добавлен 20.12.2012

  • Аналіз паралельного обчислення, під яким розуміють сукупність питань, що відносяться до створення ресурсів паралелізму в процесах вирішення задачі з метою досягнення більшої ефективності використання обчислювальної техніки. Другий та третій закони Амдала.

    реферат [127,2 K], добавлен 13.06.2010

  • Розробка програмного продукту візуального відображення алгоритмів генерації псевдовипадкових чисел та засобів їх тестування у середовищі Delphі; статистичний аналіз. Реалізація лінійного конгруентного методу в стандартних бібліотеках різних компіляторів.

    дипломная работа [2,4 M], добавлен 26.10.2012

  • Розробка алгоритму та написання програми обчислення множин. Доведення теоретико-математичних тотожностей і тверджень. Побудова диз’юнктивної нормальної форми. Розробка алгоритму та написання програми знаходження множини елементарних циклів у графі.

    курсовая работа [184,4 K], добавлен 17.04.2011

  • Написання програми для виведення чисел Фібоначчі. Загальна характеристика мови Паскаль. Науковий доробок Леонардо Фібоначчі. Історія і властивості послідовності. Особливості програмування мовою Turbo Pascal. Відкалібрування та синхронізування програми.

    курсовая работа [325,1 K], добавлен 09.10.2013

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.