【问题标题】:Number of workers in Matlab's parforMatlab parfor 中的工人数量
【发布时间】:2019-12-03 11:53:21
【问题描述】:

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

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

【问题讨论】:

    标签: matlab parallel-processing parfor


    【解决方案1】:

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

    请参阅documentation

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-24
      • 2015-03-11
      • 1970-01-01
      • 2016-09-12
      相关资源
      最近更新 更多