25 lines
1.9 KiB
Markdown
25 lines
1.9 KiB
Markdown
Задание: необходимо реализовать умножение двух больших квадратных матриц. Требуется сделать два алгоритма: обычный и параллельный.
|
||
В параллельном алгоритме предусмотреть ручное задание количества потоков
|
||
(число потоков = 1 как раз и реализует задание со *), каждый из которых будет выполнять умножение
|
||
элементов матрицы в рамках своей зоны ответственности.
|
||
Сделать несколько бенчмарков последовательного и параллельного алгоритма на умножение двух матриц размером 100x100, 300x300, 500x500 элементов.
|
||
|
||
Результаты работы:
|
||
https://vkvideo.ru/video272231566_456240487?list=ln-x7Bdvda2vcCFVKUwql
|
||
|
||
|
||
Выводы:
|
||
100х100 матрица:
|
||
Лучший результат у 16 потоков – 4 мс.
|
||
Чуть хуже у 8 – 5мс.
|
||
Значительно хуже – 2 и 4 потока с результатами 41 и 64 мс.
|
||
1 поток в параллельном алгоритме показал себя так же, как и последовательный алгоритм – 13 мс.
|
||
|
||
300х300 матрица:
|
||
Время последовательного алгоритма одно из худших, а 16 потоков снова показали себя наилучшими в параллельном алгоритме.
|
||
|
||
|
||
500х500 матрица:
|
||
16 потоков показали наилучший результат в параллельном алгоритме, в противовес ему идет 1 поток.
|
||
Последовательный алгоритм показал средний результат.
|