Разработка программы на языке С++ для перемножения двух матриц с чтением исходных данных из файлов и записью результата в файл, измерением времени выполнения операции и автоматизированной верификацией результатов с помощью Python.
Программа на С++ выполняет следующие действия:
- Читает исходные матрицы из файлов.
- Проверяет совместимость размеров матриц для умножения.
- Выполняет умножение матриц.
- Записывает результат в файл
resultMatrix.txt
. - Измеряет время выполнения операции умножения с помощью библиотеки
<chrono>
. - Выводит время выполнения операции в файл.
Программа также содержит реализацию на основе MPI и OpenMP для параллельного выполнения умножения матриц.
Для верификации результатов был написан Python скрипт, который:
- Генерирует исходные матрицы и сохраняет их в файлы.
- Запускает программу на С++ для умножения матриц (однопоточную, MPI и OpenMP версии).
- Считывает исходные матрицы и результат умножения из файлов.
- Выполняет умножение с помощью библиотеки NumPy и сравнивает полученный результат с содержимым файла
resultMatrix.txt
. - Выводит сообщение о корректности выполненных вычислений.
- Строит график времени выполнения в зависимости от размера матрицы и сохраняет его в файл
single_mpi_omp_comparison.png
.
Проект полностью автоматизирован:
- Все необходимые директории и файлы создаются автоматически.
- Компиляция и сборка программ осуществляется с помощью CMake.
- Python скрипт автоматически выполняет все этапы генерации данных, запуска программ и верификации результатов.
Разработанная программа на языке С++ корректно решает задачу перемножения матриц, что было подтверждено с помощью автоматизированной верификации результатов на Python. Использование файлов для ввода исходных данных и вывода результата обеспечивает гибкость и удобство проверки работы программы. Измерение времени выполнения операции умножения позволяет оценить эффективность реализации. Программа полностью автоматизирована, что упрощает процесс её использования и проверки.
Для запуска проекта выполните следующие шаги:
-
Склонируйте репозиторий:
git clone https://github.com/the80hz/parprog.git cd parprog
-
Запустите скрипт для создания виртуальной среды venv:
python3 -m venv .venv source .venv/bin/activate
-
Установите зависимости и запустите главный скрипт:
pip3 install -r requirements.txt python3 main.py
Скрипт скомпилирует и запустит все версии программы (однопоточную, MPI и OpenMP), проверит корректность их работы и построит график времени выполнения.
parprog/ # Директория для сборки проекта
├── CMakeLists.txt # Файл конфигурации CMake
├── single.cpp # Однопоточная версия программы
├── mpi.cpp # Версия программы на основе MPI
├── omp.cpp # Версия программы на основе OpenMP
├── main.py # Python скрипт для автоматизации
├── README.md # Текущий файл
└── single_mpi_omp_comparison.png # Сгенерированный график