【发布时间】:2017-01-14 19:14:28
【问题描述】:
我使用spmd 同时计算了两段代码。我正在使用的计算机有一个 8 核处理器。这意味着通信开销几乎为零!
我将这个spmd 块的运行时间和spmd 之外的相同代码与tic & toc 进行比较。
当我运行代码时,我的代码的并行版本比顺序形式花费更多的时间。
知道为什么会这样吗?
这是我正在谈论的示例代码:
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 行 -
不,我以前做过,只是没有把它带到这里。
标签: matlab performance parallel-processing spmd