Skip to content
sh1kaffPublic

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Latest commit

 

History

9 Commits

Folders and files

Repository files navigation

Отчет по лабораторной работе: Умножение квадратных матриц

1. Описание файлов

  • main.cpp: основной код программы на C++. Использует библиотеку OpenMP для распараллеливания вычислений
  • gen.py: скрипт на Python для генерации двух квадратных матриц заданного размера со случайными значениями
  • verify.py: скрипт для автоматической сверки результата C++ с эталонным значением (используется numpy.dot)
  • run.sh: bash-скрипт для автоматизации процесса: создание окружения, компиляция, запуск генератора, программы и верификатора

2. Сборка проекта

Команда для компиляции с поддержкой OpenMP:

g++ -O3 -fopenmp main.cpp -o matrix_mult

Запуск автоматического скрипта:

bash start.sh <THREADS_COUNT> <MATRIX_SIZE>

3. Результаты экспериментов

Размер матрицы ($N$) Кол-во потоков Время выполнения (сек) Верификация
200 1 0.00515293 Пройдена
200 2 0.00300008 Пройдена
200 3 0.00176918 Пройдена
200 4 0.00108796 Пройдена
400 1 0.0360259 Пройдена
400 2 0.016189 Пройдена
400 3 0.0112543 Пройдена
400 4 0.00992024 Пройдена
800 1 0.377512 Пройдена
800 2 0.188626 Пройдена
800 3 0.136126 Пройдена
800 4 0.101037 Пройдена
1200 1 1.47221 Пройдена
1200 2 0.879413 Пройдена
1200 3 0.658919 Пройдена
1200 4 0.38095 Пройдена
1600 1 8.91008 Пройдена
1600 2 3.71802 Пройдена
1600 3 2.19717 Пройдена
1600 4 1.66299 Пройдена
2000 1 27.1503 Пройдена
2000 2 11.4617 Пройдена
2000 3 7.42694 Пройдена
2000 4 5.69533 Пройдена

Графики: Image


4. Выводы

  1. Эффективность параллелизма: На матрице $N=1000$ переход с 1 на 4 потока сократил время с 0.69 до 0.16 сек (ускорение в ~4 раза). Это говорит о высокой эффективности распараллеливания данного алгоритма на данных мощностях.
  2. Масштабируемость: При увеличении размера матрицы в 2 раза (с 1000 до 2000) время выполнения на 4 потоках выросло с 0.16 до 5.89 сек. Рост времени составил более чем 30 раз, что объясняется теоретической сложностью алгоритма $O(N^3)$ и возможным исчерпанием ресурсов кэш-памяти процессора при работе с большими объемами данных.
  3. Верификация: Во всех случаях скрипт верификации подтвердил результаты работы кода на C++.

5. Исходный код


6. Видео работы программы

2026-03-08.21-00-07.mp4

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages