我对 Matlab 中的并行计算还是有些陌生。我在 C 中成功使用了 OpenMP,但在 Matlab 中无法获得更好的性能。
首先,由于我是一所大学的新机器,我通过在命令提示符中键入 ver
验证了我所在的机器是否具有 Parallel Computing Toolbox,它显示: 并行计算工具箱版本 5.2 (R2011b)
。注意机器有4核
我尝试了使用 parfor
与 for
的简单示例,但 for
总是赢,尽管这可能是因为开销成本。我正在做一些简单的事情,比如这里的例子:MATLAB parfor is slower than for -- what is wrong?
在尝试将 parfor 应用于我更大更复杂的程序之前(我需要计算一个函数的 500 次评估,每次评估大约需要一分钟,因此并行化在这里会有所帮助),我非常希望看到一个具体的例子parfor
胜过 for
。 . OpenMP 的例子很多,但没有找到一个简单的例子,我可以复制和粘贴显示 parfor
比 for
最佳答案
我使用以下代码(每个 Matlab session 一次)来使用 parfor
:
pools = matlabpool('size');
cpus = feature('numCores');
if pools ~= (cpus - 1)
if pools > 0
matlabpool('close');
end
matlabpool('open', cpus - 1);
end
这为其他进程留下了 1 个核心。
请注意,feature()
命令未记录。
https://stackoverflow.com/questions/11934910/