首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Matlabpool线程数与核心数

Matlabpool线程数与核心数
EN

Stack Overflow用户
提问于 2013-01-23 06:03:45
回答 1查看 5.7K关注 0票数 7

我有一台在Intel(R) Core(TM) i5-2410M CPU @ 2.30GHz上运行Ubuntu的笔记本电脑。根据上述处理器(位于here)的Intel网站,该处理器有两个核心,可以同时并行运行4个线程(因为虽然它有2个物理核心,但它有4个逻辑核心)。

当我启动matlabpool时,它从local配置开始,并显示它已连接到2个实验室。我想这意味着它可以并行运行两个线程。难道它不知道CPU实际上可以并行运行4个线程吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-01-23 06:41:41

根据我的经验,默认情况下,matlabpoollocal配置使用机器拥有的物理核心的数量,而不是逻辑核心的数量。因此,在您的机器上,matlabpool仅连接到两个实验。

但是,这只是一个设置,可以用以下命令覆盖:

代码语言:javascript
复制
matlabpool poolsize n

其中n是一个介于1和12之间的整数,表示您希望Matlab使用的实验室数量。

现在我们到了有趣的部分,多亏了@RodyOldenhuis在评论中的一个快速教训,我更有能力回答这个问题。

超线程意味着给定的物理核心可以有两个线程同时通过它。当然,它们在字面上不能同时处理。这个想法更像这样:如果其中一个线程在将任务分配给内核时效率低下,那么内核可能会出现一些“停机时间”。第二个线程可以利用这个“停机时间”来完成一些工作。

我的台式机是一个核心-i7,有4个物理核心,但有8个逻辑核心。然而,我注意到运行一个包含4个实验的parfor循环与运行8个实验之间的差别很小。事实上,由于与初始化额外实验相关的启动成本,8个实验通常较慢。

当然,这可能会因为其他外部因素而变得复杂,比如您还可能同时在Matlab上运行哪些其他程序。

总而言之,我怀疑即使你可以强制Matlab初始化4个实验室(甚至12个实验室),你也不会看到比2个实验室更快的速度,因为Matlab在将任务分配给处理器方面通常是相当有效的。

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14468886

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档