我正在处理的代码有如下循环:
bistar = zeros(numdims,numcases);
parfor hh=1:nt
bistar = bistar + A(:,:,hh)*data(:,:,hh+1)' ;
end
Run Code Online (Sandbox Code Playgroud)
小nt(10).
计时后,它实际上比使用常规循环慢100倍!我知道parfor可以做并行总和,所以我不确定为什么这不起作用.
我跑
matlabpool
Run Code Online (Sandbox Code Playgroud)
在运行我的代码之前使用开箱即用的配置.
我对matlab比较陌生,刚开始使用并行功能,所以请不要认为我没有做一些愚蠢的事情.
谢谢!
PS:我在四核上运行代码,所以我希望看到一些改进.
我熟悉matlabpool和parfor使用,但我仍然需要加快计算速度.
我的1GB网络中有一台功能更强大的电脑.两台计算机都有R2010b,并且具有相同的代码和路径.
使用两台计算机进行并行计算的最简单方法是什么?
我今天使用的代码示例:
--- main.m ---
matlabpool('open', 3);
% ...
x = randn(1e5,1);
y = nan(size(x));
parfor k = 1 : length(x)
y(k) = myfunc(x(k));
end
Run Code Online (Sandbox Code Playgroud)
--- myfunc.m ---
function y = myfunc(x)
y = x; % some computation
return
Run Code Online (Sandbox Code Playgroud)