done
This commit is contained in:
parent
f944b01cca
commit
d24d5be799
21
tsukanova_irina_lab_6/README.md
Normal file
21
tsukanova_irina_lab_6/README.md
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
# Цуканова Ирина ПИбд-42
|
||||||
|
# Лабораторная работа №6 - Определение детерминанта матрицы
|
||||||
|
|
||||||
|
|
||||||
|
## Результат:
|
||||||
|
![results](./img.png)
|
||||||
|
|
||||||
|
## Выводы:
|
||||||
|
|
||||||
|
1. Увеличение числа потоков ускоряет вычисление детерминанта для больших матриц.
|
||||||
|
Как видно по результатам для матрицы 11 × 11 при использовании 1 потока время составляет 260 секунд,
|
||||||
|
тогда как при 10 потоках оно сокращается до 62 секунд.
|
||||||
|
2. Производительность снижается при увеличении числа потоков на малых матрицах.
|
||||||
|
Для матрицы 8×8 использование 10 потоков оказывается медленнее, чем использование 4 или 8 потоков.
|
||||||
|
Это связано с накладными расходами на создание и управление потоками, которые становятся ощутимыми при малых объемах вычислений.
|
||||||
|
3. Подход с многопоточностью эффективно снижает время выполнения для больших матриц,
|
||||||
|
однако оптимальное количество потоков следует выбирать в зависимости от размера задачи,
|
||||||
|
чтобы избежать накладных расходов и добиться наилучших результатов.
|
||||||
|
|
||||||
|
|
||||||
|
## [Видео](https://drive.google.com/file/d/1tVVQwmh3W9HEEn6WrqEEiB9n-cEI8aGW/view?usp=sharing)
|
BIN
tsukanova_irina_lab_6/img.png
Normal file
BIN
tsukanova_irina_lab_6/img.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 27 KiB |
@ -19,7 +19,6 @@ def do_task(matrix, start_j, stop_j, queue):
|
|||||||
res += a * b
|
res += a * b
|
||||||
else:
|
else:
|
||||||
res += a * b * (-1)
|
res += a * b * (-1)
|
||||||
# print(res)
|
|
||||||
if queue:
|
if queue:
|
||||||
queue.put(res)
|
queue.put(res)
|
||||||
return res
|
return res
|
||||||
@ -50,16 +49,9 @@ def do_threads(matrix, size, threads):
|
|||||||
print(f'{size}x{size}, time: {stop_test - start_test}')
|
print(f'{size}x{size}, time: {stop_test - start_test}')
|
||||||
|
|
||||||
|
|
||||||
matrix2 = np.array([
|
|
||||||
[3, -3, -5, 8],
|
|
||||||
[-3, 2, 4, -6],
|
|
||||||
[2, -5, -7, 6],
|
|
||||||
[-4, 3, 5, -6]
|
|
||||||
])
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
sizes = [5, 6, 7, 8, 9, 10, 11, 12]
|
sizes = [8, 9, 10, 11]
|
||||||
threads_counts = [1, 4, 6, 8, 12]
|
threads_counts = [1, 4, 6, 8, 10]
|
||||||
|
|
||||||
for threads in threads_counts:
|
for threads in threads_counts:
|
||||||
print('-------------------------------------------------')
|
print('-------------------------------------------------')
|
||||||
|
Loading…
Reference in New Issue
Block a user