1.8 KiB
1.8 KiB
Лабораторная 6
Вариант 9
Задание
Кратко: реализовать нахождение детерминанта квадратной матрицы.
Подробно: в лабораторной работе требуется сделать два алгоритма: обычный и параллельный. В параллельном алгоритме предусмотреть ручное задание количества потоков, каждый из которых будет выполнять нахождение отдельной группы множителей.
Описание Программы
Алгоритмы:
Базовый алгоритм
Он работает, с помощью уже встроенной функции из библиотеки numpy
def determinant_block(matrix_block):
return np.linalg.det(matrix_block)
Параллельный алгоритм
def determinant_parallel(matrix, num_processes):
size = matrix.shape[0]
step = size // num_processes
pool = Pool(processes=num_processes)
blocks = []
for i in range(0, size, step):
blocks.append(matrix[i:i + step, i:i + step])
dets = pool.map(determinant_block, blocks)
return np.product(dets)
Результат
Был проведен замер времени работы алгоритмов для каждого типа матрицы: 100x100, 300x300, 500x500 с разным количеством процессов
Из скриншота выше видно, что для каждого типа матрицы оказалось быстрее выполнение последовательно, причем гораздо.
Ссылка на видео: https://vk.com/video151119348_456239203?list=ln-GQ61rRxQRWzAoVg2SZ