From 36dfe3c47aacf42da888151f6e81168ba19ce3fe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9D=D0=B8=D0=BA=D0=B8=D1=82=D0=B0=20=D0=A7=D0=B5=D1=80?= =?UTF-8?q?=D0=BD=D1=8B=D1=88=D0=BE=D0=B2?= Date: Sun, 15 Dec 2024 17:10:21 +0400 Subject: [PATCH] chernyshov_nikita_lab_5 is ready --- chernyshov_nikita_lab_5/README.md | 58 ++++++++++++++++++ chernyshov_nikita_lab_5/benchmark.py | 27 ++++++++ chernyshov_nikita_lab_5/img1.png | Bin 0 -> 26565 bytes chernyshov_nikita_lab_5/img2.png | Bin 0 -> 29157 bytes chernyshov_nikita_lab_5/img3.png | Bin 0 -> 29245 bytes chernyshov_nikita_lab_5/img4.png | Bin 0 -> 19872 bytes .../matrix_multiplication/parallel.py | 21 +++++++ .../matrix_multiplication/sequential.py | 9 +++ 8 files changed, 115 insertions(+) create mode 100644 chernyshov_nikita_lab_5/README.md create mode 100644 chernyshov_nikita_lab_5/benchmark.py create mode 100644 chernyshov_nikita_lab_5/img1.png create mode 100644 chernyshov_nikita_lab_5/img2.png create mode 100644 chernyshov_nikita_lab_5/img3.png create mode 100644 chernyshov_nikita_lab_5/img4.png create mode 100644 chernyshov_nikita_lab_5/matrix_multiplication/parallel.py create mode 100644 chernyshov_nikita_lab_5/matrix_multiplication/sequential.py diff --git a/chernyshov_nikita_lab_5/README.md b/chernyshov_nikita_lab_5/README.md new file mode 100644 index 0000000..6801207 --- /dev/null +++ b/chernyshov_nikita_lab_5/README.md @@ -0,0 +1,58 @@ +# Лабораторная работа 5: Умножение матриц + +## Описание + +**Цель работы** – реализовать и сравнить производительность последовательного и параллельного алгоритмов умножения матриц на больших массивах данных. + +### Задачи: +1. Разработать последовательный алгоритм умножения матриц. +2. Реализовать параллельный алгоритм с возможностью настройки числа потоков. +3. Провести тестирование обоих подходов на матрицах размером 100x100, 300x300 и 500x500. +4. Выполнить анализ производительности, изучив зависимость времени выполнения от размера матриц и количества потоков, и сформулировать выводы. + +## Теоретическое обоснование + +Операция умножения матриц широко применяется в задачах вычислительного характера, таких как обработка изображений, машинное обучение и физическое моделирование. Сложность умножения матриц размером +N×N составляет O(N^3), что приводит к резкому росту времени вычислений с увеличением размера матриц. Для ускорения работы можно использовать параллельные алгоритмы, распределяющие вычисления между несколькими потоками. + +## Реализация + +1. **Последовательный алгоритм:** Реализован в модуле sequential.py. Алгоритм вычисляет каждый элемент результирующей матрицы поэлементно, складывая произведения соответствующих элементов строк и столбцов исходных матриц. + +2. **Параллельный алгоритм:** Представлен в модуле parallel.py. Он использует многопоточность, разделяя вычисления на несколько потоков, где каждый поток обрабатывает определённый блок строк результирующей матрицы. Пользователь может задавать количество потоков для оптимизации производительности с учётом размера матриц и доступных ресурсов. + +## Результаты тестирования + +Тестирование проводилось на матрицах размером 100x100, 300x300 и 500x500 с различным числом потоков. Было проанализировано влияние количества потоков на производительность алгоритма. + +## Скриншоты результатов + +### Результат бенчамарка при 1 потоке: +![img1.png](img1.png) + +### Результат бенчамарка при 2 потоках: +![img2.png](img2.png) + +### Результат бенчамарка при 4 потоках: +![img3.png](img3.png) + +### Результат бенчамарка при 8 потоках: +![img4.png](img4.png) + +## Выводы + +1. **Эффективность параллельного алгоритма**: Использование многопоточности в параллельном алгоритме показало значительное ускорение по сравнению с последовательным методом, особенно на матрицах больших размеров. Например, для матриц размером 500x500 параллельный алгоритм с 4 потоками оказался более чем вдвое быстрее последовательного. + +2. **Влияние количества потоков**: Увеличение числа потоков сокращает время выполнения, но этот эффект ограничен. Для небольших матриц (100x100) использование более 2 потоков практически не улучшает производительность. На матрицах среднего и большого размера (300x300 и 500x500) оптимальный результат достигался при использовании 4 потоков, так как это позволяло равномерно распределить вычислительную нагрузку. + +3. **Закономерности и ограничения**: Эффективность параллельного умножения матриц ограничена накладными расходами на управление потоками. Для небольших задач эти расходы могут нивелировать преимущества параллелизации. Однако на больших данных задача лучше масштабируется, что делает параллельный подход значительно более выгодным. + +4. **Рекомендации по использованию**: Для работы с большими матрицами в реальных задачах рекомендуется использовать параллельные алгоритмы, подбирая оптимальное число потоков в зависимости от объёма задачи и доступных вычислительных ресурсов. + +## Заключение + +Выполнение лабораторной работы показало, что параллельные алгоритмы значительно ускоряют умножение матриц на больших данных. Однако для достижения максимальной эффективности важно учитывать размер задачи и оптимально выбирать количество потоков. Полученные результаты подтверждают, что параллельный подход предпочтителен для работы с крупными матрицами, тогда как для небольших задач затраты на управление потоками могут свести его преимущества на нет. + +## Видео + +https://vkvideo.ru/video286865610_456239228?list=ln-RciNpMoyWby0uMIZoa \ No newline at end of file diff --git a/chernyshov_nikita_lab_5/benchmark.py b/chernyshov_nikita_lab_5/benchmark.py new file mode 100644 index 0000000..7aa0c07 --- /dev/null +++ b/chernyshov_nikita_lab_5/benchmark.py @@ -0,0 +1,27 @@ +import time +import random +from matrix_multiplication.sequential import matrix_multiply_sequential +from matrix_multiplication.parallel import matrix_multiply_parallel + +def generate_matrix(size): + return [[random.randint(0, 10) for _ in range(size)] for _ in range(size)] + +def benchmark(matrix_size, num_threads): + A = generate_matrix(matrix_size) + B = generate_matrix(matrix_size) + + start = time.time() + matrix_multiply_sequential(A, B) + sequential_time = time.time() - start + + start = time.time() + matrix_multiply_parallel(A, B, num_threads) + parallel_time = time.time() - start + + print(f"Размер матрицы: {matrix_size}x{matrix_size}") + print(f"Последовательное время: {sequential_time:.5f} сек") + print(f"Параллельное время ({num_threads} потоков): {parallel_time:.5f} сек") + +if __name__ == "__main__": + for size in [100, 300, 500]: + benchmark(size, num_threads=8) diff --git a/chernyshov_nikita_lab_5/img1.png b/chernyshov_nikita_lab_5/img1.png new file mode 100644 index 0000000000000000000000000000000000000000..00b4f2b545ae55d3a3f82c3e166127e23c723803 GIT binary patch literal 26565 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 literal 0 HcmV?d00001 diff --git a/chernyshov_nikita_lab_5/img2.png b/chernyshov_nikita_lab_5/img2.png new file mode 100644 index 0000000000000000000000000000000000000000..e40dafde046a48e0bda8937105347228e4b29aa1 GIT binary patch literal 29157 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 literal 0 HcmV?d00001 diff --git a/chernyshov_nikita_lab_5/img3.png b/chernyshov_nikita_lab_5/img3.png new file mode 100644 index 0000000000000000000000000000000000000000..aa4d45e28c5c76bfbf7e5921b9814d23fe15fd47 GIT binary patch literal 29245 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 literal 0 HcmV?d00001 diff --git a/chernyshov_nikita_lab_5/img4.png b/chernyshov_nikita_lab_5/img4.png new file mode 100644 index 0000000000000000000000000000000000000000..1242ac849c5534ef54039c5e3a63dedc1ae81213 GIT binary patch literal 19872 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 G5}E)4x1JLK literal 0 HcmV?d00001 diff --git a/chernyshov_nikita_lab_5/matrix_multiplication/parallel.py b/chernyshov_nikita_lab_5/matrix_multiplication/parallel.py new file mode 100644 index 0000000..7bf60a0 --- /dev/null +++ b/chernyshov_nikita_lab_5/matrix_multiplication/parallel.py @@ -0,0 +1,21 @@ +from concurrent.futures import ThreadPoolExecutor + +def matrix_multiply_parallel(A, B, num_threads=1): + n = len(A) + result = [[0] * n for _ in range(n)] + + def worker(start, end): + for i in range(start, end): + for j in range(n): + result[i][j] = sum(A[i][k] * B[k][j] for k in range(n)) + + chunk_size = n // num_threads + with ThreadPoolExecutor(max_workers=num_threads) as executor: + futures = [ + executor.submit(worker, i * chunk_size, (i + 1) * chunk_size) + for i in range(num_threads) + ] + for future in futures: + future.result() + + return result diff --git a/chernyshov_nikita_lab_5/matrix_multiplication/sequential.py b/chernyshov_nikita_lab_5/matrix_multiplication/sequential.py new file mode 100644 index 0000000..f4f3daa --- /dev/null +++ b/chernyshov_nikita_lab_5/matrix_multiplication/sequential.py @@ -0,0 +1,9 @@ +def matrix_multiply_sequential(A, B): + n = len(A) + result = [[0] * n for _ in range(n)] + + for i in range(n): + for j in range(n): + result[i][j] = sum(A[i][k] * B[k][j] for k in range(n)) + + return result