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

时间:2012-02-08 10:21:39

标签: linux multithreading matlab 64-bit

您好我在网上看了但是我似乎无法找到答案我是否需要做任何事情来让matlab使用所有内核?据我所知,自2007年以来一直支持多线程。在我的机器上,matlab只使用一个核心@ 100%,其余的约为2%。我正在使用64位Linux(Mint 12)。在我的另一台只有2个核心并且是32位的计算机上,Matlab似乎正在使用两个核心@ 100%。不是所有的时间,但在足够数量的情况下。在64位,4核PC上,这种情况从未发生过。

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

2 个答案:

答案 0 :(得分:2)

按照标准,从最新版本开始,您可以使用 Parallel Computing Toolbox 使用12个内核。没有这个工具箱,我猜你运气不好。 MATLAB分布式计算服务器可以访问任何其他核心,您实际需要为每个工作线程数付费。

要让matlab使用您必须执行的多核

matlabpool open

如果您实际拥有多线程代码(例如使用spmd函数或parfor循环),它当然会更好。

更多信息at the Matlab homepage

答案 1 :(得分:0)

MATLAB只有一个用于Computation的线程。

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

因此,如果您调用使用这些多线程blas库的函数,您将只能获得“多线程”优势。

This link包含多线程函数列表的信息。

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

但是,您可以尝试通过以下链接for Linux

提供的详细信息手动设置MATLAB流程与所有处理器的亲和力。

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

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