Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Метод АТПО лр.doc
Скачиваний:
3
Добавлен:
01.07.2025
Размер:
561 Кб
Скачать
☆

Хід роботи

Розглянемо програму обчислення добутку матриць.

#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;}

Завдання

  1. Вивчити теоретичний матеріал.

  2. Використовуючи наведений вище приклад розробити блок-схеми загальної частини і окремих паралельних блоків обробки для реалізації процесу обчислення добутку двох матриць.

  3. Написати MPI-програму обчислення добутку двох довільних матриць розмірності 6х6 на основі розробленої блок-схеми.

  4. Відповісти на контрольні питання.

Зміст звіту

  1. Тема та мета лабораторної роботи.

  2. Завдання.

  3. Блок-схеми та програмний код.

Контрольні запитання

  1. В чому полягає постановка задачі множення матриць?

  2. Які інформаційні взаємодії виконуються при множенні матриць?

  3. Які функції бібліотеки MPI були потрібні при програмній реалізації алгоритму?

Список літератури

  1. Антонов А.С. Введение в параллельные вычисления / А.С. Антонов. – Москва, 2002. – 69 с.

  2. Богачёв К.Ю. Основы параллельного программирования / К.Ю. Богачёв – M.: БИНОМ. Лаборатория знаний, 2003. – 345 с.

  3. Бройнль Т. Паралельне програмування. Початковий курс: Навч. посіб. / Т. Бройнль – К.: Вища шк., 1997. – 358 с.

  4. Бурова И.Г. Алгоритмы параллельных вычислений и программирование / И.Г. Бурова, Демьянович Ю.К. – СПб.: БХВ-Петербург, 2002. – 207 с.

  5. Воеводин В.В. Вычислительная математика и структура алгоритмов / В.В. Воеводин – М.: Изд-во МГУ, 2006. – 113 с.

  6. Гергель В.П. Основы параллельных вычислений для многопроцессорных числительных систем. Учебное пособие / В.П. Гергель, Р.Г. Стронгин – Издание 2-е, Нижний Новгород, 2003. – 84 с.

  7. Жуков І.А. Паралельні та розподілені обчислення / І.А. Жуков, О.В. Корочкін – К.: Корнійчук, 2005.– 224с.

  8. Корнеев В.В. Параллельное программирование в MPI /В.В. Корнеев Москва-Ижевск: Институт компьютерных исследований, 2003. – 215с.

  9. Немнюгин С.А. Параллельное программирование для многопроцессорных вычислительных систем / С.А. Немнюгин, О. Стесик – СПб.: БХВ-Петербург, 2007. – 88с.

Методичні вказівки щодо виконання лабораторних робіт з навчальної дисципліни «Алгоритми та технології паралельних обчислень» для студентів денної та заочної форм навчання з напряму 6.040302 – «Інформатика» (у тому числі скорочений термін навчання)

Укладачі: доцент, к. ф.-м.н. Ю.П. Глухов,

асист. О. І. Нечепуренко,

асист. С.О. Геращенко,

асист. Т.С. Бриль

Відповідальний за випуск зав. кафедри інформатики і вищої математики В. П. Ляшенко

Підп. до др._________.Формат 60х84 1/16. Папір тип. Друк ризографія.

Ум. друк. арк.____. Наклад____ прим. Зам. №__________. Безкоштовно.

Видавничий відділ

Кременчуцького національного університету

імені Михайла Остроградського

вул. Першотравнева, 20, м. Кременчук, 39600

39