【发布时间】:2012-08-13 13:10:26
【问题描述】:
我对 Matlab 中的并行计算还有些陌生。我在 C 中成功使用了 OpenMP,但在 Matlab 中无法获得更好的性能。
首先,由于我是一所大学的机器,我是新来的,我通过在命令提示符中输入ver 验证了我所在的机器具有并行计算工具箱,它显示:Parallel Computing Toolbox Version 5.2 (R2011b)。注意机器有4核
我尝试了使用parfor 与for 的简单示例,但for 总是获胜,尽管这可能是因为开销成本。我正在做一些简单的事情,比如这里的例子:MATLAB parfor is slower than for -- what is wrong?
在尝试将 parfor 应用到我更大更复杂的程序之前(我需要计算 500 次函数评估,每次评估大约需要一分钟,因此并行化在这里会有所帮助),我非常希望看到一个具体的例子,其中parfor 击败 for。 . OpenMP 的例子很多,但是没有找到一个简单的例子可以复制和粘贴显示parfor 比for 更好
【问题讨论】:
-
您是否尝试过计算需要很长时间的函数?你可以只做一个里面有
pause(5)的... -
你在使用
parfor之前是否设置了matlabpool?例如:matlabpool open 4 -
@Serg:不。
matlabpool open 4只是意味着我想使用 4 个内核吗?如果是这样,那将非常有帮助。另外,例如,matlabpool open 3是否意味着我只使用 4 个内核中的 3 个? -
@GuntherStruyf:是的,我有,虽然这个例子很复杂,这就是为什么我想用一个简单的例子来检查一下。我现在离开我的工作电脑...明天我会检查你和 Serg 的建议并回来
-
嗯..Serg 从这里开始看起来是对的:mathworks.ch/help/toolbox/distcomp/brb2x2l-1.html 它说“注意如果 matlabpool 没有运行,parfor-loop 在客户端连续运行而不考虑迭代顺序。”而且我没有打开matlabpool...
标签: performance matlab for-loop parallel-processing