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 0000000..52dd803 Binary files /dev/null and b/tsukanova_irina_lab_5/img.png differ diff --git a/tsukanova_irina_lab_5/main.py b/tsukanova_irina_lab_5/main.py index 2f6ffd2..eb9627a 100644 --- a/tsukanova_irina_lab_5/main.py +++ b/tsukanova_irina_lab_5/main.py @@ -31,22 +31,25 @@ def do(first, second, size, threads): for p in processes: p.join() stop_test = time() - print(f'{n}x{n}, time: {stop_test - start_test}') + print(f'{size}x{size}, time: {stop_test - start_test}') if __name__ == "__main__": - threads_count = 20 # задание кол-ва потоков sizes = [100, 300, 500] - test = [[5, 3, 4], [2, 8, 3], [6, 3, 4]] - test2 = [[4, 3, 6], [2, 8, 3], [5, 6, 4]] - - threads_counts = [1, 4, 6, 8] + threads_counts = [1, 4, 6, 8, 12] for threads in threads_counts: print('-------------------------------------------------') print(f'Threads:{threads}') for n in sizes: first_matrix = np.random.randint(3, size=(n, n)) second_matrix = np.random.randint(3, size=(n, n)) - do(first_matrix, second_matrix, n, threads) + if threads == 1: + res = np.zeros((n, n)) + start = time() + matrix_multi(first_matrix, second_matrix, res, 0, n, n) + stop = time() + print(f'{n}x{n}, time: {stop - start}') + else: + do(first_matrix, second_matrix, n, threads) print('-------------------------------------------------')