44 lines
2.9 KiB
Markdown
44 lines
2.9 KiB
Markdown
|
# Лабораторная работа 1 - Знакомство с Docker и Docker Compose
|
|||
|
### ПИбд-42 || Бондаренко Максим
|
|||
|
|
|||
|
# Описание работы
|
|||
|
|
|||
|
## Цель
|
|||
|
> [!NOTE]
|
|||
|
> Изучение современных технологий контейнеризации.
|
|||
|
|
|||
|
## Результат работы
|
|||
|
> [!NOTE]
|
|||
|
> Кратко: реализовать умножение двух больших квадратных матриц.
|
|||
|
>
|
|||
|
> Подробно: в лабораторной работе требуется сделать два алгоритма: обычный и параллельный (задание со * - реализовать это в рамках одного алгоритма). В параллельном алгоритме предусмотреть ручное задание количества потоков (число потоков = 1 как раз и реализует задание со *), каждый из которых будет выполнять умножение элементов матрицы в рамках своей зоны ответственности.
|
|||
|
|
|||
|
## Краткое описание модулей и их работа
|
|||
|
1. matrixOperations.js
|
|||
|
multiplyMatricesSequential(A, B):
|
|||
|
- Перебирает элементы матриц и вычисляет их произведение, заполняя результирующую матрицу.
|
|||
|
multiplyMatricesParallel(A, B, numThreads):
|
|||
|
- Делит работу между потоками, каждый из которых умножает часть матриц. Запускает воркеры и собирает их результаты.
|
|||
|
|
|||
|
2. benchmark.js
|
|||
|
generateMatrix(size):
|
|||
|
- Создает матрицу с случайными значениями заданного размера.
|
|||
|
benchmark():
|
|||
|
- Вызывает generateMatrix для создания матриц, затем измеряет время выполнения multiplyMatricesSequential и multiplyMatricesParallel с различными параметрами, выводит результаты.
|
|||
|
3. matrixWorker.js
|
|||
|
multiplyPartial(A, B, start, end):
|
|||
|
- Воркеры выполняют умножение только для части матриц, определенной параметрами start и end, и возвращают частичные результаты через parentPort.
|
|||
|
|
|||
|
## Запуск
|
|||
|
```
|
|||
|
node benchmark.js
|
|||
|
```
|
|||
|
|
|||
|
## Результат работы
|
|||
|
> [!IMPORTANT]
|
|||
|
> ![benchmark.png](./benchmark.png)
|
|||
|
>
|
|||
|
> В отчете отражены времена выполнения для каждого из подходов, что позволяет оценить, как число потоков влияет на скорость вычислений для матриц разного размера.
|
|||
|
|
|||
|
Ссылка на видео: https://cloud.mail.ru/public/rEGy/HaBwrm7t8
|