.. | ||
benchmark.js | ||
benchmark.png | ||
matrix.operations.js | ||
matrix.worker.js | ||
README.md |
Лабораторная работа 1 - Знакомство с Docker и Docker Compose
ПИбд-42 || Бондаренко Максим
Описание работы
Цель
Note
Изучение современных технологий контейнеризации.
Результат работы
Note
Кратко: реализовать умножение двух больших квадратных матриц.
Подробно: в лабораторной работе требуется сделать два алгоритма: обычный и параллельный (задание со * - реализовать это в рамках одного алгоритма). В параллельном алгоритме предусмотреть ручное задание количества потоков (число потоков = 1 как раз и реализует задание со *), каждый из которых будет выполнять умножение элементов матрицы в рамках своей зоны ответственности.
Краткое описание модулей и их работа
- matrixOperations.js multiplyMatricesSequential(A, B):
- Перебирает элементы матриц и вычисляет их произведение, заполняя результирующую матрицу. multiplyMatricesParallel(A, B, numThreads):
- Делит работу между потоками, каждый из которых умножает часть матриц. Запускает воркеры и собирает их результаты.
- benchmark.js generateMatrix(size):
- Создает матрицу с случайными значениями заданного размера. benchmark():
- Вызывает generateMatrix для создания матриц, затем измеряет время выполнения multiplyMatricesSequential и multiplyMatricesParallel с различными параметрами, выводит результаты.
- matrixWorker.js multiplyPartial(A, B, start, end):
- Воркеры выполняют умножение только для части матриц, определенной параметрами start и end, и возвращают частичные результаты через parentPort.
Запуск
node benchmark.js
Результат работы
Important
В отчете отражены времена выполнения для каждого из подходов, что позволяет оценить, как число потоков влияет на скорость вычислений для матриц разного размера.
Ссылка на видео: https://cloud.mail.ru/public/rEGy/HaBwrm7t8