繁体   English   中英

Matlab并行循环或Matlab开放池

[英]Matlab parallel for loop or Matlab open pool

我正在尝试进行一些计算,我想使用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

它的工作正常,但我真的很想知道是否有一种方法可以加快速度……非常感谢!

使用parfor循环并打开matlabpool一起进行。 打开matlabpool将为您的MATLAB会话提供专门的工作人员,以便他们可以运行parfor循环的主体。 因此,您可以将代码更改为以下内容:

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

在并行运行代码之前,我绝对建议您使用MATLAB分析器,以确保您了解运行代码所花的时间。 (让load提升到外部循环的t1中没有效果,我感到有些惊讶-探查器因此应该显示load调用与您的算法其余部分相比花费的时间很少)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM