Matlab 2011a使用64位Linux上可用的所有内核



嗨,我在网上看了看,但似乎找不到答案,我是否需要做些什么来让matlab使用所有核心?据我所知,自2007年以来一直支持多线程。在我的机器上,matlab只使用一个内核@100%,其余的都挂在~2%。我使用的是64位Linux(Mint12)。在我的另一台只有两个核心的32位计算机上,Matlab似乎100%使用了两个核心。不是所有的时间,但在足够多的情况下。在64位4核PC上,这种情况从未发生过。

我必须在64位中做任何事情才能让Matlab尽可能使用所有核心吗?安装后,我不得不进行一些自定义链接,因为Matlab找不到库(例如libc.so.6),因为它找不到正确的位置。

根据标准,自最新版本以来,您可以使用并行计算工具箱使用12个内核。如果没有这个工具箱,我想你会倒霉的。任何额外的核心都可以通过MATLAB分布式计算服务器访问,在那里你实际上按照工作线程的数量付费。

要使matlab使用您的多核心,您必须进行

matlabpool open

当然,如果你真的有多线程代码(比如使用spmd函数或parfor循环),效果会更好

更多信息请访问Matlab主页

MATLAB只有一个用于计算的线程。

也就是说,将为某些函数创建多个线程,这些函数使用其下面使用的BLAS库的多线程功能。

因此,只有在调用使用这些多线程blas库的函数时,才能获得"多线程"优势。

此链接包含有关多线程函数列表的信息。

现在,对于核心的使用,这将取决于您的操作系统。我相信操作系统必须对线程进行负载平衡才能在所有内核上使用。不能在MATLAB中设置与线程的亲缘关系。然而,可以将工作MATLAB进程设置为与并行计算工具箱中的核心具有相关性。

但是,您可以尝试通过以下Linux 链接中的详细信息手动设置MATLAB进程与所有处理器的相关性

Windows用户只需在任务管理器中右键单击进程并设置关联即可。

我的理解是,这只是对操作系统的请求,而不是操作系统必须遵守的硬绑定规则。