Matlab中的并行计算

时间:2015-09-18 07:19:37

标签: matlab parallel-processing

我想使用Parallel Computing Toolbox更快地完成我的Matlab项目。 在我的PC中有2个处理器,12个内核(每个处理器)。所以,我有24个核心。 问题是Matlab总是只找到12个核心。据我所知,它只使用一个处理器中的内核,Matlab的项目正在运行。但我想使用我的所有24核心。可能吗?如果是,我该怎么办? 我想,我应该构建集群,但对于集群,我必须购买MATLAB Distributed Computing Server。我不想这样做,因为我不想使用很多电脑...只有我的电脑有24芯...... 感谢您的时间和考虑

3 个答案:

答案 0 :(得分:1)

有几种方法可以确定并行池中的工作量。例如。使用parpool

parpool(poolsize)

打开一个包含poolsize工作人员的并行池,前提是您的计算机上可以有多名工作人员。

另一种可能性是转到home-> preference->并行首选项标签,然后在其中创建一个包含所需工作人员数量的配置文件。然后,您可以使用以下方法呼叫池:

parpool(profilename,poolsize)

其中profilename是您为该池配置文件指定的名称。 poolsize参数在这里是可选的,如果你没有指定它,它将使用并行首选项下指定的默认工作数。

请注意,我在R2014a中删除了matlabpool,因此您无法再使用它来打开您的池。另一种可能性是gcp,但这主要是获取当前池和该池的参数。

作为评论:在尝试并行之前,始终确保您的代码在 serial 中是最快的。并行计算并不像你想要提高速度的神奇想法,它是一种专门用于高效程序的专用工具,请参阅here

答案 1 :(得分:1)

MATLAB(和Parallel Computing Toolbox)默认情况下只考虑“真实”核心,而不考虑超线程核心。这是因为经验表明,在大多数情况下,这实际上提高了性能。但是,您可以通过执行:

覆盖MATLAB的默认选择
$state.go

或者,对于Parallel Computing Toolbox,您可以使用Cluster Profile Manager修改maxNumCompThreads(24) 个人资料,并将工人人数设置为24。

编辑:刚刚注意到OP正在使用R2013b。在这种情况下,您不能使用超过12名本地工人。升级到R2014a或更高版本将解决这个问题。

答案 2 :(得分:0)

根据您的Matlab版本,可能是许可问题。对于旧版本,您需要MATLAB分布式计算服务器(MDCS)。 R2014a取消了对12名工人的限制。