From fd54e426b5809fd7f6bdd25e20fd523b8ff72d5e Mon Sep 17 00:00:00 2001 From: HellsSenju Date: Fri, 25 Oct 2024 20:52:46 +0400 Subject: [PATCH] =?UTF-8?q?=D0=BE=D1=81=D1=82=D0=B0=D0=BB=D0=BE=D1=81?= =?UTF-8?q?=D1=8C=20=D0=B2=D0=B8=D0=B4=D0=B5=D0=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tsukanova_irina_lab_5/README.md | 9 +++++++-- tsukanova_irina_lab_5/img.png | Bin 0 -> 24852 bytes tsukanova_irina_lab_5/main.py | 17 ++++++++++------- 3 files changed, 17 insertions(+), 9 deletions(-) create mode 100644 tsukanova_irina_lab_5/img.png diff --git a/tsukanova_irina_lab_5/README.md b/tsukanova_irina_lab_5/README.md index 512c50b..f220fca 100644 --- a/tsukanova_irina_lab_5/README.md +++ b/tsukanova_irina_lab_5/README.md @@ -3,9 +3,14 @@ ## Результат: +![results](./img.png) +## Выводы: -## Вывод: - +1. Для маленьких матриц выгоднее использовать последовательное умножение (1 поток) +2. Для больших матриц лучше использовать параллельное умножение, так как временные затраты +последовательного умножения в этом случае существенно выше, чем затраты на управление потоками. +3. Увеличение количества потоков для осуществления умножения больших матриц в определенный момент не дает +прироста в скорости выполнения. Это значит, что достигнуто оптимальное количество потоков. ## [Видео]() \ No newline at end of file diff --git a/tsukanova_irina_lab_5/img.png b/tsukanova_irina_lab_5/img.png new file mode 100644 index 0000000000000000000000000000000000000000..52dd80389113dbbc8c9653a816bd9faf2120a1d3 GIT binary patch literal 24852 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 SZyuaEV{!W~=%a~y+