首页 > 解决方案 > Matlab parfor 中的工人数量

问题描述

我正在使用 MATLAB 的 parfor 函数运行一个 for 循环。我的 CPU 规格是

在此处输入图像描述

我将首选工作人员数量设置为 24。但是,MATLAB 将此数字设置为 6。工作人员数量是否受内核数量或(内核数量)x(处理器数量 = 6x12?

标签: matlabparallel-processingparfor

解决方案


Matlab 更喜欢将工作人员的数量限制为核心数量(在您的情况下为六个)。您的 CPU ( intel i7-9750H ) 具有超线程,即每个内核可以运行多个(此处为 2 个)线程。但是,如果您想在满负荷下运行它们,这将毫无用处,这意味着根本没有可用于切换到不同任务的资源(有效的附加线程是什么)。

请参阅文档

每个物理内核限制为一个工作人员可确保每个工作人员对浮点单元具有独占访问权限,这通常可以优化计算代码的性能。如果您的代码不是计算密集型的,例如,它是输入/输出 (I/O) 密集型的,则考虑每个物理内核最多使用两个工作器。在太少的资源上运行太多的工作人员可能会影响机器的性能和稳定性。

请注意,Matlab 需要将数据流式传输到每个内核才能运行分布式代码。这是某种初始化工作,也是如果将核心/工作人员数量加倍,您将无法将运行时间减半的原因。这也是为什么 Matlab 没有使用超线程的原因。这只是意味着在没有任何加速的情况下增加初始流式传输工作 - 事实上,核心可能会强制 matlab 保存中间结果并不时切换到其他任务......这与以前的任务相同;)


推荐阅读