我的意思是任务管理器显示的“占用率”可能不准确。
超线程通常仅对“优化”较差的程序有用。科学计算程序“优化”比较好,有些程序能自动编译成多线程的指令(而不需要编程者起多线程),这时候只有物理核心能发挥作用。
我前面说的那个程序就是只有物理核心有用超线程实际上没用的程序,哪个微架构都一样(并不是Sunny Cove能用上逻辑核心),但任务管理器显示的就不一样:Sky Lake会显示有空闲(好像逻辑核心没用上),而Sunny Cove显示没有空闲(好像逻辑核心也占用了)。
另外par for应该不涉及“Matlab不支持AMD处理器”的问题,因为par for只是个很普通的多线程编程模型,处理器有多个核心就能用。核心摸鱼可能只是任务管理器显示不准确,也可能是有些别的瓶颈(比如数据传输延迟)。
不支持AMD处理器是指一些看起来平淡无奇的函数(比如矩阵乘矩阵)在牙膏平台和AMD平台的编译结果不一样,牙膏平台可以使用新的更高效的指令,AMD平台却是老旧的低效指令(即使AMD的处理器支持新指令且有对应的硬件单元)。
DingKingWoii (崑崙酒徒) 在 ta 的帖子中提到:
所以,sunny cove平台默认并行worker数和逻辑处理器数一样?
哪种快一点?