DAS_2023_1/senkin_alexander_lab_5/README.md

30 lines
2.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Лабораторная работа №5 - Параллельное умножение матриц
Цель: реализовать умножение двух больших квадратных матриц.
Задача: в лабораторной работе требуется сделать два алгоритма: обычный и параллельный (задание со * - реализовать это в рамках одного алгоритма). В параллельном алгоритме предусмотреть ручное задание количества потоков (число потоков = 1 как раз и реализует задание со *), каждый из которых будет выполнять умножение элементов матрицы в рамках своей зоны ответственности.
# Разработка приложения
Было решено производить разработку приложения на языке Go, так как на нем удобно реализован механизм паралеллизма.
В рамках одного main файла реализованы две функции - параллельного и последовательного умножения матриц. Также реализована функция по запуску этих функций, и функция создания случайной матрицы.
![img.png](img.png)
# Запуск
Запуск программы производится с помощью команды в командной строке go run {путь до исполняемого main.go файла}
# Работа программы
- Создание случайной матрицы: ![img_1.png](img_1.png)
- Метод для последовательного умножения матриц: ![img_2.png](img_2.png)
- Метод параллельного умножения матриц: ![img_3.png](img_3.png)
- Метод запуска тестов: ![img_4.png](img_4.png)
- Главный метод запуска программы main: ![img_5.png](img_5.png)
- Вывод на консоль и анализ результатов: ![img_6.png](img_6.png)
- По результатам видим, что на Go параллельное умножение матриц всегда выигрывает последовательное, и чем больше матрица и больше потоков, тем больше выигрыш по производительности
# Видео
Видео с разбором лабораторной работы - https://youtu.be/IfPJS8Tza5Y