Matlab parfor中的工人人数

时间:2019-12-03 11:53:21

标签: matlab parallel-processing parfor

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

enter image description here

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

1 个答案:

答案 0 :(得分:4)

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

请参见documentation

  

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

请注意,Matlab需要将数据流传输到每个内核,以便运行分布式代码。这是某种初始化工作,这是如果将内核/工作程序数量加倍的话,您将无法将运行时间减少一半的原因。这也解释了为什么Matlab无法利用超线程。这仅意味着在不提高速度的情况下增加初始流工作量-实际上,核心可能会迫使matlab保存中间结果并不时切换到其他任务...这与之前的任务相同;)