Я использовал spmd
для вычисления двух частей кода одновременно. Компьютер, который я использую, имеет процессор с 8 ядрами. Это означает, что накладные расходы на связь - это что-то вроде нуля!
Я сравниваю время работы этого блока spmd
и того же кода за пределами spmd
с tic & toc
.
Когда я запускаю код, параллельная версия моего кода занимает больше времени, чем последовательная форма.
Любая идея, почему так?
Вот пример кода, что я говорю о:Почему время работы SPMD больше, чем последовательное - matlab
tic;
spmd
if labindex == 1
gamma = (alpha*beta);
end
if labindex == 2
for t = 1:T,
for i1=1:n
for j1=1:n
kesi(i1,j1,t) = (alpha(i1,t) + phi(j1,t));
end;
end;
end;
end
end
t_spmd = toc;
tic;
gamma2= (alpha * beta);
for t = 1:T,
for i1=1:n
for j1=1:n
kesi2(i1,j1,t) = (alpha(i1,t) + phi(j1,t));
end;
end;
end;
t_seq = toc;
disp('t spmd : ');disp(t_spmd);
disp('t seq : ');disp(t_seq);
Может быть полезно «предварительно выделить» переменной 'kesi'? , например. 'kesi = zeros (size (...))' в строке 2 – Wouter
Нет, я сделал это раньше, я просто не привел это здесь. –