DAS_2024_1/lazarev_andrey_lab_5
2024-11-05 22:38:45 +04:00
..
main.py lazarev_andrey_lab_5 2024-11-05 22:38:45 +04:00
README.md lazarev_andrey_lab_5 2024-11-05 22:38:45 +04:00
report.png lazarev_andrey_lab_5 2024-11-05 22:38:45 +04:00

Лабораторная работа №5

Задание

Реализовать последовательное и параллельное умножение матриц размером 100x100, 300x300, 500x500 элементов, сравнить результаты.

Описание алгоритмов

Последовательное умножение

  • Реализовано при помощи тройного цикла умножения квадратных матриц с сложностью O(n³), т.е. при увеличении размера матриц увеличится и время работы алгоритма.

Параллельное умножение

  • Реализовано при помощи разделения матриц на части в зависимости от количества потоков, а после умножаются две прямоугольные матрицы.
  • Сложность аналогична последовательному алгоритму, но разделение матриц значительно снижает время работы алгоритма.

Умножение с использованием библиотеки Numpy

  • Умножение с ипользованием библиотеки Numpy максимально отпимизировано за счет кэшированияи и использования библиотеки BLAS (Basic Linear Algebra Subprograms) на языке C для выполнения линейной алгребры.

Результаты

Вывод

  • Параллельное умножение матриц эффективно при работе с большими матрицами при увеличении потоков.
  • Последовательное умножение матриц эффективно использовать при меньших размерах матриц, где выйгрыш от управления потоками минимален.
  • Numpy показал блестящий результат.

Видеодемонстрация работоспособности

Демонстрация работы сервисов