【发布时间】:2017-01-06 23:54:18
【问题描述】:
我正在使用具有 2 个物理 CPU 内核的机器。 Arii_Modified 函数是我写的。当我在不使用并行池的情况下运行如下代码时,所用时间为425.456秒
profile on
[Ps,Pd,Pv,ThetaMean,Variance,frobonius] = Arii2011_Modified(C11,C12_imag,C12_real,C13_imag,C13_real,C22,C23_imag,C23_real,C33);
profile off
profsave
span = C11+C22+C33;
total=Pd+Ps+Pv+frobonius;
save('results.mat');
但是当我启动一个有两个工人的并行池时:
parpool('local',2)
profile on
[Ps,Pd,Pv,ThetaMean,Variance,frobonius] = Arii2011_Modified(C11,C12_imag,C12_real,C13_imag,C13_real,C22,C23_imag,C23_real,C33);
profile off
profsave
span = C11+C22+C33;
total=Pd+Ps+Pv+frobonius;
save('results.mat');
p = gcp;
delete(p)
所用时间为 687.687 秒。
我是否以真正的方式使用并行池?
函数Arii2011_modified 中的代码完全是顺序的。
我已经使用 MEX 解决方案来加速它,但在 Arii2011_Modified.m 代码和其中的 mex 函数的 C++ 源代码中都没有使用并行编程代码?
【问题讨论】:
标签: c++ matlab parallel-processing