18核PC运行MATLAB Parfor远慢于10核PC的原因咨询
异常性能问题成因分析
核心原因优先级从高到低如下:
- 并行池worker异常/资源抢占问题
18核PC任务管理器中10个同分组的MATLAB进程是当前parfor启动的有效工作进程,其余10个为历史残留的孤儿进程,并未参与当前任务调度,反而占用大量CPU、内存带宽资源。此外需确认MOSEK的内部并行配置:MOSEK默认会调用所有可用CPU核心做内点法并行计算,和parfor的worker抢占核心资源。如果18核PC上未配置MOSEK的numThreads参数限制单任务线程数,会出现多worker同时争抢18个核心的情况,上下文切换开销会直接让计算效率下降数倍。 - MATLAB版本并行调度差异问题
MATLAB 2021a对并行池的默认亲和性配置逻辑做了调整,i9-7980XE为多CCX架构(Skylake-X架构分为2个CCX模块,每个模块9个核心),如果parforworker的核心绑定跨CCX,会带来极大的缓存一致性开销,效率远低于i9-10900K单CCX架构的通信效率。 - 单核性能与负载不匹配问题
i9-10900K单核睿频可达5.3GHz,远高于i9-7980XE的4.2GHz最大单核睿频,如果单个循环任务单线程占比高、原生并行度低,18核PC如果有效worker数量不足,单核性能差距会被进一步放大。 - 次要验证点
可先排查18核PC的电源计划是否设为高性能模式,是否存在CPU异常降频;其次单独运行190号之后的单个循环,对比前189号循环的耗时,排除负载拆分不均的问题。
内容的提问来源于stack exchange,提问作者Stephen Ge
相关产品推荐
相关产品推荐

