0

我正在尝试进行一些计算,我想使用 parfor 或通过打开 matlabpool.. 并行执行它,因为当前的实现太慢了:

result=zeros(25,16000);
for i = 1:length(vector1) % length is 25

     for j = 1:length(vector2) % length is 16000 

              temp1 = vector1(i); 
              temp2 = vector2(j);
              t1 = load(matfiles1(temp1).name) %load image1 from matfile1
              t2 = load(matfiles2(temp2).name) % load image2 from matfile2
              result(i,j)=t1.*t2
    end
end

它工作正常,但我真的很想知道是否有办法加快速度......提前非常感谢!

4

1 回答 1

1

使用parfor循环并matlabpool一起打开。打开matlabpoolMATLAB 会话可为您的 MATLAB 会话提供专用的工作程序,它可以使用这些工作程序运行您的parfor循环体。因此,您可以将代码更改为以下内容:

matlabpool open local 4 % or however many cores you have
parfor i = ...
   ...
end

在并行运行代码之前,我绝对建议您使用MATLAB 分析器来确保您了解运行代码所花费的时间。(我有点惊讶将 in 提升loadt1外循环没有任何效果 - 因此分析器应该显示load调用与算法的其余部分相比花费的时间非常短)。

于 2012-07-10T06:19:49.473 回答