Розпаралелювання обчислення суми десяти чисел
Вивчення масиву перших десяти натуральних чисел. Блок-схеми і програми алгоритму розпаралелювання множин. Топологічний аналіз початкового графу. Аналіз ефективності паралельних рішень. Розгляд процесу розпаралелювання обчислення суми десяти чисел.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | лабораторная работа |
Язык | украинский |
Дата добавления | 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