Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 25 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,2 +1,25 @@
# Parallel-programming
Прикладное программирование. Лабораторные работы
Отчет по лабораторной работе №1
Тема: Умножение квадратных матриц на C++ с верификацией результатов
Выполнил: Васильченко Данила
Группа: 6211-100503D
Дисциплина: Параллельное программирование
Дата: 16.03.2026

1. Цель работы
Разработка программы на языке C/C++ для умножения двух квадратных матриц с последующей автоматизированной верификацией результатов вычислений с помощью стороннего ПО (Python + NumPy). Исследование временных характеристик алгоритма в зависимости от размера матриц.

2. Реализация программы
Программа состоит из следующих основных компонентов:
· Генерация данных (create_matrix) – создает файл с квадратной матрицей заданного размера, заполненную случайными числами от 1 до 100.
· Чтение из файла (read_matrix) – считывает матрицу из текстового файла.
· Алгоритм умножения (multiplication) – реализует классический алгоритм умножения матриц.
· Запись результатов (write_in_file) – сохраняет результирующую матрицу в выходной файл и выводит временные характеристики в консоль.
· Верификация – после завершения вычислений программа автоматически запускает Python-скрипт check.py, который сравнивает результат программы с результатом NumPy.

3. Результаты вычислений
Процессор: Ryzen 5 5500U (6 ядер)
ОЗУ: 16 GB
На картинке 1 представлены результаты замеров времени выполнения программы в зависимости от размера матрицы.
На картинке 2 представлен график зависимости времени выполнения умножения матриц от их размерности.
<img width="717" height="418" alt="изображение_2026-03-16_225246465" src="https://github.com/user-attachments/assets/b648b48b-1d48-40bf-9436-90460f7de56a" />
<img width="808" height="368" alt="изображение_2026-03-16_225227199" src="https://github.com/user-attachments/assets/43a6b732-dd60-4c17-a6c3-b45663abb976" />
25 changes: 25 additions & 0 deletions lab1/check.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
import numpy as np

matrix1 = "C:/Parallel-programing/lab1/matrix1.txt"
matrix2 = "C:/Parallel-programing/lab1/matrix2.txt"
endfile = "C:/Parallel-programing/lab1/endfile.txt"

def load_square_matrix(filename):
with open(filename, 'r') as f:
n = int(f.readline().strip())
matrix = np.loadtxt(f, max_rows=n)
return matrix

print("Загрузка матриц...")
A = load_square_matrix(matrix1)
B = load_square_matrix(matrix2)

result_numpy = np.dot(A, B)

print("Проверка корректности умножения...")
loaded_result = load_square_matrix(endfile)

if np.allclose(result_numpy, loaded_result):
print("Результаты совпадают!")
else:
print("Ошибка: результаты не совпадают!")
Loading