forked from Alexey/DAS_2024_1
36 lines
2.3 KiB
Markdown
36 lines
2.3 KiB
Markdown
|
# Лабораторная работа №5
|
|||
|
|
|||
|
## Задание
|
|||
|
|
|||
|
Реализовать последовательное и параллельное умножение матриц размером 100x100, 300x300, 500x500 элементов, сравнить результаты.
|
|||
|
|
|||
|
## Описание алгоритмов
|
|||
|
|
|||
|
### Последовательное умножение
|
|||
|
|
|||
|
- Реализовано при помощи тройного цикла умножения квадратных матриц с сложностью O(n³), т.е. при увеличении размера матриц увеличится и время работы алгоритма.
|
|||
|
|
|||
|
### Параллельное умножение
|
|||
|
|
|||
|
- Реализовано при помощи разделения матриц на части в зависимости от количества потоков, а после умножаются две прямоугольные матрицы.
|
|||
|
- Сложность аналогична последовательному алгоритму, но разделение матриц значительно снижает время работы алгоритма.
|
|||
|
|
|||
|
### Умножение с использованием библиотеки Numpy
|
|||
|
|
|||
|
- Умножение с ипользованием библиотеки Numpy максимально отпимизировано за счет кэшированияи и использования библиотеки BLAS (Basic Linear Algebra Subprograms) на языке C для выполнения линейной алгребры.
|
|||
|
|
|||
|
## Результаты
|
|||
|
|
|||
|
![](report.png "")
|
|||
|
|
|||
|
|
|||
|
### Вывод
|
|||
|
- Параллельное умножение матриц эффективно при работе с большими матрицами при увеличении потоков.
|
|||
|
- Последовательное умножение матриц эффективно использовать при меньших размерах матриц, где выйгрыш от управления потоками минимален.
|
|||
|
- Numpy показал блестящий результат.
|
|||
|
|
|||
|
## Видеодемонстрация работоспособности
|
|||
|
|
|||
|
[Демонстрация работы сервисов](https://files.ulstu.ru/s/4jmPMLK3szdKdWS)
|
|||
|
|