Мне трудно использовать parfor
в Matlab.
Согласно документу https://www.mathworks.com/help/parallel-computing/parfor.html, при использовании parfor
код должен быть быстрее, чем раньше.
Я в точности следую примеру на сайте.
clear all;
tic
n = 200;
A = 500;
a = zeros(1,n);
for i = 1:n
a(i) = max(abs(eig(rand(A))));
end
toc
tic
n = 200;
A = 500;
a = zeros(1,n);
parfor i = 1:n
a(i) = max(abs(eig(rand(A))));
end
toc
Результаты из документа следующие
Elapsed time is 31.935373 seconds.
Elapsed time is 10.760068 seconds.
Ясно, что parfor должен ускорить код.
Но если я запустил тот же код в своем Matlab
Elapsed time is 28.455776 seconds.
Elapsed time is 27.998243 seconds.
Так что я не вижу изменений в прошедшем времени.
Есть ли предварительное условие для использования parfor
в Matlab?
Нет, у меня его нет ... вот в чем причина. Спасибо!
Я загрузил Parallel Computing Toolbox и получил сообщение «Подключено к параллельному пулу (количество рабочих: 4)», но все же я не вижу никаких изменений в прошедшем времени ... Я все еще что-то упускаю?
Хм, это удивительно, что у меня есть Elapsed time is 26.848743 seconds.
и Elapsed time is 7.507984 seconds.
.
У вас есть Parallel Computing Toolbox? Документация, которую вы показываете, является частью документации этого набора инструментов.
parfor
ведет себя как обычныйfor
, если у вас нет набора инструментов.