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 поток.
|
|||
|
Последовательный алгоритм показал средний результат.
|