forked from Alexey/DAS_2024_1
осталось видео
This commit is contained in:
parent
ad8894c0ca
commit
fd54e426b5
@ -3,9 +3,14 @@
|
|||||||
|
|
||||||
|
|
||||||
## Результат:
|
## Результат:
|
||||||
|
![results](./img.png)
|
||||||
|
|
||||||
|
## Выводы:
|
||||||
|
|
||||||
## Вывод:
|
1. Для маленьких матриц выгоднее использовать последовательное умножение (1 поток)
|
||||||
|
2. Для больших матриц лучше использовать параллельное умножение, так как временные затраты
|
||||||
|
последовательного умножения в этом случае существенно выше, чем затраты на управление потоками.
|
||||||
|
3. Увеличение количества потоков для осуществления умножения больших матриц в определенный момент не дает
|
||||||
|
прироста в скорости выполнения. Это значит, что достигнуто оптимальное количество потоков.
|
||||||
|
|
||||||
## [Видео]()
|
## [Видео]()
|
BIN
tsukanova_irina_lab_5/img.png
Normal file
BIN
tsukanova_irina_lab_5/img.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 24 KiB |
@ -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('-------------------------------------------------')
|
||||||
|
Loading…
Reference in New Issue
Block a user