
Министерство науки и образования Российской Федерации
Федеральное государственное бюджетное образовательное учреждение высшего образования
«Уфимский университет науки и технологий»
Кафедра вычислительной математики и кибернетики
ОТЧЁТ
По лабораторной работе №4
«ПАРАЛЛЕЛЬНОЕ ВЫЧИСЛЕНИЕ ПРОИЗВЕДЕНИЯ ДВУХ МАТРИЦ СРЕДСТВАМИ MPI»
по дисциплине параллельные вычисления
Выполнили:
студенты группы ПРО-432
Ихсанова Э. А., Мустафин А. А., Видманов А. А,
Проверила:
проф. каф. ВМИК,
канд. физ.-мат. наук Шерыхалина Н.М.
Уфа — 2024 г.
Цель работы:
Научиться использовать принцип геометрической декомпозиции в параллельных алгоритмах и создавать параллельные программы для систем с распределенной памятью с использованием коллективных функций MPI на примере вычисления произведения двух матриц.
Порядок выполнения работы:
1. Написать параллельную программу перемножения двух квадратных матриц с использованием коллективных функций MPI. Размерность L вводится пользователем, размерность N = 10L. Матрицы A и B заполняются случайными элементами вещественного типа.
2. Выполнить отладку параллельной программы на персональном компьютере в режиме эмуляции многопроцессорного режима. Отладку провести сначала на матрицах малой размерности для возможности проверки правильности вычислений.
3. Написать параллельную программу вычисления матричного выражения согласно варианту (номеру в подгруппе).
Матрицы (N×N) обозначены заглавными буквами, вектора- строки (1×N) – строчными. Размерность N вводится пользователем, матрицы и вектора заполняются случайными элементами вещественного типа.
4. Выполнить отладку параллельной программы на персональном компьютере в режиме эмуляции многопроцессорного режима. Отладку провести сначала на матрицах малой размерности для возможности проверки правильности вычислений.
5. Отлаженные программы запустить при различном числе процессоров. В каждой программе выбрать размерность так, чтобы время выполнения параллельной программы на одном процессоре T1 составляло порядка 500 с. Последовательно просчитать варианты запуска при числе процессов p = 1, 2, 4, 6, 8. Полученные данные о продолжительности вычислительного процесса занести в таблицу 2.1, аналогичную таблице 1 предыдущей лабораторной работы.
6. Отлаженные программы запустить на Суперкомпьютере согласно инструкции, используя систему очередей. В каждой программе выбрать размерность так, чтобы время выполнения параллельной программы на одном процессоре T1 составляло порядка 500 с. Последовательно просчитать варианты запуска на 1, 2, 3, 4 узлах при числе процессоров p = 1, 2, 4, 6, 8. Полученные данные о продолжительности вычислительного процесса занести в таблицу 2.2, аналогичную таблице 1 предыдущей лабораторной работы.
7. Вычислить ускорение и эффективность, полученные результаты занести в таблицы, аналогичные таблице 2 предыдущей лабораторной работы. Построить графики зависимости ускорения и эффективности от числа процессоров для каждой программы. Сравнить случаи использования одинакового общего числа процессоров при разном количестве узлов.
Ход работы:
Была выполнена программная реализация на языке С++ перемножения двух квадратных матриц с использованием коллективных функций MPI. В начале с размерностью LxL = 109 x 109. После с размерностью L = 109, N=10L=1090. Матрицы A и B заполняются случайными элементами вещественного типа.
Для каждой программы последовательно просчитали варианты запуска на 1, 2, 4, 6, 8 процессорах, выбрали L так, чтобы время работы на одном процессоре T1 в первом случае составляло порядка 12 с (L = 109).
Матрица LxL на 1-м процессоре:
на 2-х процессорах:
на 4-х:
на 6-сти:
на 8-ми:
Второй случай, умножаем вектор на квадратную матрицу (NxL):
По полученным результатам выполнения программы составили таблицу:
p |
Tp, c |
|
NxL |
LxL |
|
1 |
0,538 |
12,1935 |
2 |
0,229 |
5,6532 |
4 |
0,213 |
3,2264 |
6 |
0,312 |
28,009 |
8 |
0,325 |
54,7262 |
Вычислили ускорение и эффективность и занесли данные в таблицу:
p |
S*p |
E*p |
||
NxL |
LxL |
NxL |
LxL |
|
1 |
1 |
1 |
1 |
1 |
2 |
2,34934497 |
2,15691997 |
1,17467248 |
1,07845998 |
4 |
2,52582159 |
3,77928961 |
0,63145539 |
0,94482240 |
6 |
1,74110032 |
0,43534221 |
0,29018338 |
0,07255703 |
8 |
1,65538461 |
0,22280918 |
0,20692307 |
0,02785114 |
По данным ускорения был построен график зависимости S*p1 и S*p2:
По данным эффективности E*p1 и E*p2:
Вывод
В ходе выполнения лабораторной работы мы научились использовать принципе геометрической декомпозиции в параллельных алгоритмах и создавать параллельные программы на примере вычисления произведения и суммы двух матриц.