осталось видео

This commit is contained in:
HellsSenju 2024-10-25 20:52:46 +04:00
parent ad8894c0ca
commit fd54e426b5
3 changed files with 17 additions and 9 deletions

View File

@ -3,9 +3,14 @@
## Результат: ## Результат:
![results](./img.png)
## Выводы:
## Вывод: 1. Для маленьких матриц выгоднее использовать последовательное умножение (1 поток)
2. Для больших матриц лучше использовать параллельное умножение, так как временные затраты
последовательного умножения в этом случае существенно выше, чем затраты на управление потоками.
3. Увеличение количества потоков для осуществления умножения больших матриц в определенный момент не дает
прироста в скорости выполнения. Это значит, что достигнуто оптимальное количество потоков.
## [Видео]() ## [Видео]()

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

View File

@ -31,22 +31,25 @@ def do(first, second, size, threads):
for p in processes: for p in processes:
p.join() p.join()
stop_test = time() 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__": if __name__ == "__main__":
threads_count = 20 # задание кол-ва потоков
sizes = [100, 300, 500] sizes = [100, 300, 500]
test = [[5, 3, 4], [2, 8, 3], [6, 3, 4]] threads_counts = [1, 4, 6, 8, 12]
test2 = [[4, 3, 6], [2, 8, 3], [5, 6, 4]]
threads_counts = [1, 4, 6, 8]
for threads in threads_counts: for threads in threads_counts:
print('-------------------------------------------------') print('-------------------------------------------------')
print(f'Threads:{threads}') print(f'Threads:{threads}')
for n in sizes: for n in sizes:
first_matrix = np.random.randint(3, size=(n, n)) first_matrix = np.random.randint(3, size=(n, n))
second_matrix = np.random.randint(3, size=(n, n)) second_matrix = np.random.randint(3, size=(n, n))
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) do(first_matrix, second_matrix, n, threads)
print('-------------------------------------------------') print('-------------------------------------------------')