- •Хід роботи
- •Включення і настройка mpi відладника в ms vs
- •Програма 'π': паралельне інтегрування по формулі трапецій
- •Основні поняття mpi
- •Хід роботи
- •Завдання
- •Варіанти завдань
- •Хід роботи
- •Контрольні питання
- •Лабораторна робота № 4 Тема. Організація паралельного множення матриць
- •Короткі теоретичні відомості
- •Завдання
- •Хід роботи
- •Завдання
- •Контрольні запитання
- •Список літератури
Хід роботи
Розглянемо програму обчислення добутку матриць.
#include "windows.h"
#include "process.h"
#include "stdio.h"
#define M 3
#define N 4
#define NumberOfProcessors 3
int A[M][N];
int B[N][M];
int C[M][M];
void InititalizeMatices()
{
unsigned i, j, n;
printf("\nMatrix A:\n");
for (i = 0, n = 1; i < M; i++)
{
for (j = 0; j < N; j++, n++)
{
A[i][j] = n;
printf("%4d ", n);
}
printf("\n");
}
printf("\nMatrix B:\n");
for (i = 0, n = 1; i < N; i++)
{
for (j = 0; j < M; j++, n++)
{
B[i][j] = n;
printf("%4d ", n);
}
printf("\n");
}
}
unsigned __stdcall ThreadFunction(void *pData)
{
unsigned Branch = (unsigned)pData;
unsigned Start = M / NumberOfProcessors * Branch;
unsigned End = M / NumberOfProcessors * (Branch + 1);
for (unsigned i = Start; i < End; i++)
for (unsigned j = 0; j < M; j++)
{
int Value = A[i][0] * B[0][j];
for (unsigned k = 1; k < N; k++)
Value += A[i][k] * B[k][j];
C[i][j] = Value;
}
return 0;
}
int main(int argc, char* argv[])
{
UNREFERENCED_PARAMETER(argc);
UNREFERENCED_PARAMETER(argv);
assert(M % NumberOfProcessors == 0);
InititalizeMatices();
HANDLE hThreads[NumberOfProcessors];
unsigned i, j, n, tid;
for (i = 0; i < NumberOfProcessors; i++)
hThreads[i] = (HANDLE)_beginthreadex(NULL, 0,
ThreadFunction, (void *)i, 0, &tid);
WaitForMultipleObjects(NumberOfProcessors, hThreads, TRUE,
INFINITE);
for (i = 0; i < NumberOfProcessors; i++)
CloseHandle(hThreads[i]);
printf("\nMatrix C = A * B:\n");
for (i = 0, n = 1; i < M; i++)
{
for (j = 0; j < M; j++, n++)
printf("%4d ", C[i][j]);
printf("\n");
}
return 0;}
Завдання
Вивчити теоретичний матеріал.
Використовуючи наведений вище приклад розробити блок-схеми загальної частини і окремих паралельних блоків обробки для реалізації процесу обчислення добутку двох матриць.
Написати MPI-програму обчислення добутку двох довільних матриць розмірності 6х6 на основі розробленої блок-схеми.
Відповісти на контрольні питання.
Зміст звіту
Тема та мета лабораторної роботи.
Завдання.
Блок-схеми та програмний код.
Контрольні запитання
В чому полягає постановка задачі множення матриць?
Які інформаційні взаємодії виконуються при множенні матриць?
Які функції бібліотеки MPI були потрібні при програмній реалізації алгоритму?
Список літератури
Антонов А.С. Введение в параллельные вычисления / А.С. Антонов. – Москва, 2002. – 69 с.
Богачёв К.Ю. Основы параллельного программирования / К.Ю. Богачёв – M.: БИНОМ. Лаборатория знаний, 2003. – 345 с.
Бройнль Т. Паралельне програмування. Початковий курс: Навч. посіб. / Т. Бройнль – К.: Вища шк., 1997. – 358 с.
Бурова И.Г. Алгоритмы параллельных вычислений и программирование / И.Г. Бурова, Демьянович Ю.К. – СПб.: БХВ-Петербург, 2002. – 207 с.
Воеводин В.В. Вычислительная математика и структура алгоритмов / В.В. Воеводин – М.: Изд-во МГУ, 2006. – 113 с.
Гергель В.П. Основы параллельных вычислений для многопроцессорных числительных систем. Учебное пособие / В.П. Гергель, Р.Г. Стронгин – Издание 2-е, Нижний Новгород, 2003. – 84 с.
Жуков І.А. Паралельні та розподілені обчислення / І.А. Жуков, О.В. Корочкін – К.: Корнійчук, 2005.– 224с.
Корнеев В.В. Параллельное программирование в MPI /В.В. Корнеев Москва-Ижевск: Институт компьютерных исследований, 2003. – 215с.
Немнюгин С.А. Параллельное программирование для многопроцессорных вычислительных систем / С.А. Немнюгин, О. Стесик – СПб.: БХВ-Петербург, 2007. – 88с.
Методичні вказівки щодо виконання лабораторних робіт з навчальної дисципліни «Алгоритми та технології паралельних обчислень» для студентів денної та заочної форм навчання з напряму 6.040302 – «Інформатика» (у тому числі скорочений термін навчання)
Укладачі: доцент, к. ф.-м.н. Ю.П. Глухов,
асист. О. І. Нечепуренко,
асист. С.О. Геращенко,
асист. Т.С. Бриль
Відповідальний за випуск зав. кафедри інформатики і вищої математики В. П. Ляшенко
Підп. до др._________.Формат 60х84 1/16. Папір тип. Друк ризографія.
Ум. друк. арк.____. Наклад____ прим. Зам. №__________. Безкоштовно.
Видавничий відділ
Кременчуцького національного університету
імені Михайла Остроградського
вул. Першотравнева, 20, м. Кременчук, 39600
