- •Паралельні та розподілені обчислення
- •Декомпозиція (сегментування).
- •2. Засоби бібліотеки мpi
- •2.1. Mpi: основні поняття і визначення
- •2.2. Введення в розробку паралельних програм з використанням mpi
- •Int mpi_Init(int *argc, char ***argv), де
- •Int mpi_Finalize(void).
- •Int mpi_Comm_size(mpi_Comm comm, int *size), де
- •Int mpi_Comm_Rank(mpi_Comm comm, int *rank), де
- •Int mpi_Send(void *buf, int count, mpi_Datatype type, int dest, int tag, mpi_Comm comm), де
- •Int mpi_Recv(void *buf, int count, mpi_Datatype type, int source,
- •Int tag, mpi_Comm comm, mpi_Status *status), де
- •2.3. Інсталяція та зв’язування бібліотеки mpi
- •Завдання.
- •Зміст звіту
- •Правила знаходження елементів виразу.
- •Приклад виконання декомпозиції
- •Приклад використання засобів mpi
2.3. Інсталяція та зв’язування бібліотеки mpi
2.3.1. Встановлення бібліотеки.
Запускаємо файл mpich2-1.0.8-win-ia32.msi
Натискаємо кнопку Next Натискаємо кнопку Next
Погоджуємось з ліцензійними вимогами і натискаємо кнопку Next. Вибираємо директорію в якій буде розміщуватись MPI і натискаємо кнопку Next
Чекаємо завершення встановлення та натискаємо кнопку Сlose
Ініціалізація користувача
Командою net user username password /add прописати обліковий запис, під яким запускатимуться MPI- програми
Налаштування середовища.
Додати до середовища Visual Studio шляхи розміщення заголовних файлів та бібліотек
Після виконаних вказаних кроків бібліотека MPI готова до використання.
Завдання.
1.Використовуючи метод функціональної декомпозиції, розробити алгоритм обчислення запропонованого матрично-векторного виразу, який би враховував можливість паралельного виконання і був оптимальним з точки зору часових затрат .
2. На основі створеного алгоритму написати програму використовуючи засоби МPI яка дозволяє обчислити вираз та ілюструє проведену декомпозицію для кількості процесорів заданих у варіанті.
ПОРЯДОК ВИКОНАННЯ РОБОТИ
Проаналізувати, наведені нижче, правила обрахунку елементів виразу;
Провести декомпозицію задачі, виходячи з можливості паралельного виконання окремих під задач для заданої кількості процесорів;
Об’єднати отримані проміжні результати і обрахувати кінцевий вираз;
Написати і продемонструвати програму обчислення виразу засобами MPI;
Визначити паралелізм якого рівня присутній в алгоритмі та зробити висновки щодо залежностей даних, керування, ресурсів, вводу/виводу;
Скласти звіт про виконану роботу.
Зміст звіту
1.Тема, мета, аналіз завдання(згідно варіанту).
2. Схема декомпозиції задачі для заданої кількості процесорів та коментарі до неї.
3. Текст програми та результат її роботи на довільному наборі вхідних даних, для розмірності n>3.
4. Висновки.
Вагомі зауваження.
а) Окрім безпосередніх обчислень, програма виконана засобами MPI повинна мати інтерфейс користувача. Для реалізації інтерфейсу слід виділити один процесор який повинен забезпечити:
ввід(з клавіатури) розмірності даних (n);
можливість вибору – ввід даних(тобто елементів матриці та векторів) з клавіатури чи генерування їх випадковим чином;
вивід на екран (або у файл) проміжних результатів за потребою користувача;
Після виконання генерації даних вони розсилаються всім решта процесів і вкінці результат пересилається в цей процесор що виконує вивід остаточних результатів на екран і у файл у зрозумілому вигляді.
б) Всі вхідні дані є цілими числами, більшими за нуль.
в) Протягом обчислення всі операції передачі/прийому даних повинні логуватися в командну стрічку.
в) Необхідно знайти такі коефіцієнт нормалізації результатів(тобто пониження чи підвищення їх порядку).
Правила знаходження елементів виразу.
1).Задати* квадратну матрицю А порядку n. Отримати вектор(стовпець) , деb – вектор-стовпець, елементи якого обраховуються за формулою, згідно варіанту.
2).Задати квадратну матрицю А1 порядку n та вектори-рядки b1 та c1 з n елементами кожен. Отримати вектор- рядок згідно формули, що задається варіантом.
3).Задати квадратні матриці А2 та B2 порядку n. Отримати матрицю , яка залежить від А2, B2 та додатково визначеної матриці С2, елементи якої знаходяться за формулою, вказаною варіантом.
ЛІТЕРАТУРА
С.Немногин О.Стесик “Параллельное программирование для многопроцессорних систем” Петербург “БХВ-Петербург”, 2002
Томас Бройнль “Паралельне програмування. Початковий курс”Київ "Вища школа, 1997
ВАРІАНТИ ЗАВДАНЬ.
При чому:
означає операцію транспонування; i,j=1…n (n – вхідна розмірність).
Номер варіанту |
Вираз який треба обчислити |
Кількість процесорів | ||||
Вектор y1 |
Вектор y2 |
Матриця Y3 | ||||
1 |
стовпець |
3 | ||||
bi=1/(i2+2) для парних і bi=1/i для непарних і |
A1(b1+c1) |
A2(B2-C2) Cij=1/(i+2j) | ||||
2 |
стовпець |
4 | ||||
bi=1/(i2+2+i) для парних і bi=1/i для непарних і |
A1(b1+2c1) |
A2(C2-B2) Cij=1/(i+j) | ||||
3 |
матриця |
5 | ||||
bi=3/(i2+3) для парних і bi=3/i для непарних і |
A1(3b1+c1) |
A2(B2-C2) Cij=1/(i+j)2 | ||||
4 |
рядок |
3 | ||||
bi=4/(i3+3) |
A1(b1+4c1) |
A2(B2+C2) Cij=1/(i+j2) | ||||
5 |
число |
5 | ||||
bi=5i3 |
A1(5b1-c1) |
A2(B2+10C2) Cij=1/(i2+j) | ||||
6 |
матриця |
4 | ||||
bi=6/i2 |
A1(6b1-c1) |
A2(10B2+C2) Cij=1/(i+j)3 | ||||
7 |
число |
3 | ||||
bi=7i |
A1(b1+c1) |
A2(B2-C2) Cij=1/(i3+j2) | ||||
8 |
стовпець |
4 | ||||
bi=8/i |
A1(2b1+3c1) |
A2(B2-C2) Cij=1/(i+j+2) | ||||
9 |
рядок |
2 | ||||
bi=9i |
A1(b1-c1) |
A2(B2+C2) Cij=1/(i+j) | ||||
10 |
число |
3 | ||||
bi=10/(i2+1) |
A1(b1+c1) |
A2(C2+2B2) Cij=1/(i+2j) |
ВАРІАНТИ ЗАВДАНЬ.
При чому:
означає операцію транспонування; i,j=1…n (n – вхідна розмірність).
11 |
матриця |
4 | ||||
bi=11i2 для парних і bi=11/i для непарних і |
A1(b1-2c1) |
A2(B2-2C2) Cij=1/(i2+j) | ||||
12 |
рядок |
5 | ||||
bi=i2/12 для парних і bi=i для непарних і |
A1(12b1-c1) |
A2(B2-C2) Cij=1/(i+j2) | ||||
13 |
стовпець |
2 | ||||
bi=13/(i+2) для парних і bi=13/i2 для непарних і |
A1b1-c1 |
A2-B2C2 Cij=13/(i2+j2) | ||||
14 |
матриця |
3 | ||||
bi=14/(i3) для парних і bi=1/(i+14) для непарних і |
A1(14b1+14c1) |
A2C2-B2 Cij=14/(i+j4) | ||||
15 |
рядок |
4 | ||||
bi=i для парних і bi=15/i для непарних і |
15A1b1+c1 |
A2С2+B2 Cij=15/(i2+j) | ||||
16 |
число |
2 | ||||
bi=16/(i3) |
A1(b1+16c1) |
A2(B2+16C2) Cij=16/(i+j)2 | ||||
17 |
матриця |
3 | ||||
bi=17/i2 |
A1(17b1+c1) |
A2(B2+C2) Cij=17/(2i+j) | ||||
18 |
матриця |
4 | ||||
bi=18/(i+18)2 |
A1(b1-c1) |
A2B2-A2C2 Cij=18/(i+2j) | ||||
19 |
число |
3 | ||||
bi=19/(i2+1) для парних і bi=19 для непарних і |
A1(b1+19c1) |
A2(B2+C2) Cij=19/(i+2j)3 | ||||
20 |
число |
2 | ||||
bi=20/(i3+20) |
A1(20b1-c1) |
A2C2- B 2 Cij=20/(i3-j3+2) | ||||
21 |
рядок |
3 | ||||
bi=21/i4 |
A1(b1+20c1) |
A2B2-C2 Cij=21/(i2+2j) |
ВАРІАНТИ ЗАВДАНЬ.
При чому:
означає операцію транспонування; i,j=1…n (n – вхідна розмірність).
22 |
стовпець |
5 | ||||||||||
bi=22i для парних і bi=22 для непарних і |
A1(b1-21c1) |
A2(B2-C2) Cij=22/(i+j) | ||||||||||
23 |
матриця |
4 | ||||||||||
bi=23/i для парних і bi=23/i2 для непарних і |
A1(b1+c1) |
A2(23B2+C2) Cij=23/(3i+j)2 | ||||||||||
24 |
число |
3 | ||||||||||
bi=24/(i2+4) для парних і bi=24 для непарних і |
A1(b1-24c1) |
A2(B2+24C2) Cij=24/(i+3j2) | ||||||||||
25 |
число |
2 | ||||||||||
bi=25 для парних і bi=25/i3 для непарних і |
A1(b1+c1) |
A2(B2+C2) Cij=25/(i+j)3 | ||||||||||
26 |
число |
3 | ||||||||||
bi=26i3 |
A1(26b1-c1) |
A2(B2+26C2) Cij=1/(i2+j) | ||||||||||
27 |
матриця |
4 | ||||||||||
bi=27/i2 |
A1(27b1-26c1) |
A2(27B2+C2) Cij=1/(i+j)3 | ||||||||||
28 |
число |
3 | ||||||||||
bi=28i |
A1(b1+28c1) |
A2(B2-28C2) Cij=1/(i3+j2) | ||||||||||
29 |
стовпець |
2 | ||||||||||
bi=29/i |
A1(29b1+3c1) |
A2(29B2-C2) Cij=1/(i+j+2) | ||||||||||
30 |
рядок |
5 | ||||||||||
bi=30/i для парних і bi=30/i2 для непарних і |
A1(b1-c1) |
A2(B2+C2) Cij=30/(i+j) |