2011-10-01 121 views
0

我有一台四核计算机;我使用并行计算工具箱。 我设置在并行计算设定了“工人”号不同的号码,例如2,4,8 .............. 然而,不管我设置,CPU的平均MATLAB的使用率恰好是总CPU使用率的25%没有核心运行在100%(全部在10%-30%左右)。我使用MATLAB来运行优化问题,所以我非常希望我的四核计算机能够利用它的所有功能来执行计算。请帮助MATLAB并行计算设置

回答

1

(在四核最多4个)设置了许多工人是不够的。您还需要使用像parfor这样的命令向Matlab发信号通知计算的哪部分应该分配给工作人员。

我很好奇你正在运行什么样的优化。通常,优化问题很难并行化,因为每次迭代的结果都取决于前一个问题。但是,如果你想要例如尝试将多个模型拟合到数据中,或者如果您必须适合多个数据集,那么您可以轻松并行地运行这些模型,而不是按顺序运行这些模型。

注意,有许多在核心资源方面可能是不够的 - 如果一个工人进行优化使用的K GB内存,n个工人执行它需要至少n * K GB的RAM。

+0

我正在使用全局优化工具箱。我已经使用并行计算设置了全局优化工具箱。基本上,全局优化工具箱将使用许多初始起点;每个起点可以被认为是一个新的计算。这就是为什么它可以利用并行计算。但是,它不适用于我的电脑。请帮助 – Marco

+1

@Marco:只是为了确保我们在同一页上:你没通过调用'matlabpool打开4'创建四个工人(和你检查,你确实看到在任务管理器4个Matlab的会话)。然后,你将你的multistart问题初始化为ms = MultiStart('UseParallel','always');'。正确? – Jonas

+1

@Marco:由于测试:你比较一下运行了一个工人之间的问题只与四名工人正在运行的问题时(即'抽动,运行(MS,问题,200); toc'两种情况) ?你看到有什么不同吗?如果是的话,那么它可以在你的计算机上运行,​​但这个问题可能太微不足道让处理器流汗了。另外,如果您的处理器上有超线程,即使它们实际使用了100%的资源,它们也会显示50%的使用率。 – Jonas