并行运行两个函数matlab

时间:2015-03-22 13:45:30

标签: matlab parallel-processing

我有这个问题:我有一个MATLAB函数可以在一个卷上执行各向异性扩散。对于医疗量,完成执行大约需要20分钟。现在,我想在两个不同的卷上同时使用此功能,以便使用Matlab的并行计算工具箱,总执行时间保持20分钟而不是40分钟。 我有一个四核Macbook,所以在我的想法中,一个核心应该运行第一个卷,第二个核心运行第二个卷。

我该怎么做?

我想要同时运行的功能是:

filt1=anisodiff3D(volume1);
filt2=anisodiff3D(volume2);

谢谢!

2 个答案:

答案 0 :(得分:3)

首先需要创建一个Matlab流程池,然后使用 parfor 构造。我会这样做:

% Useful for operating on parfor
filt = [filt1, filt2];
vol = [volume1, volume2];

% Please note that these are separate processes and sharing data can be challengin
matlabpool(2); % or parpool(2);

% Parallelize the for loop using 2 workers
parfor i = 1 : 2
   filt(i) = anisodiff3D(vol(i));
end

答案 1 :(得分:1)

您正在寻找MATLAB并行计算工具箱(除非您已经拥有它)。这允许你并行地进行乘法运算(比如运行两个函数)。问题是这些功能之间的IPC。我相信当你让他们彼此沟通时,事情变得更加复杂。如果不需要,您可以通过该工具箱使用并行for循环PARFOR,以便并行运行两个(或更多)func。