.gitattributes | ||
.gitignore | ||
Matrix.cs | ||
Program.cs | ||
README.md | ||
rvip_5.csproj | ||
rvip_5.sln |
Задание: необходимо реализовать умножение двух больших квадратных матриц. Требуется сделать два алгоритма: обычный и параллельный. В параллельном алгоритме предусмотреть ручное задание количества потоков (число потоков = 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 поток. Последовательный алгоритм показал средний результат.