服务器端Numpy运行速度远慢于家用PC故障排查求助
Numpy运算速度过慢排查方案
- 调整线性代数库线程数
你当前使用的OpenBLAS默认会启用和CPU核心数等量的线程,而逐元素数值运算属于内存带宽敏感型操作,过多线程会引发缓存争抢反而导致性能下降。运行脚本前先执行环境变量配置再测试:
可以尝试将数值设置为1、2、4、8分别测试,找到最优数值。export OPENBLAS_NUM_THREADS=4 export OMP_NUM_THREADS=4 - 调整CPU电源管理策略
服务器默认多采用节能模式运行,会限制CPU主频,你使用的Xeon Gold 6230默认主频2.1GHz,睿频可达3.9GHz,可通过以下命令切换为性能模式释放主频:
可使用sudo cpupower frequency-set -g performancecpufreq-info命令查看当前CPU实际运行频率确认设置生效。 - 优化数据类型与运算逻辑
你当前测试用数组为float64类型,运算耗时是float32的两倍左右,若业务精度允许可修改代码使用float32:
另外此类逐元素运算可通过numba JIT编译进一步提升性能,无需修改运算逻辑即可获得数倍速度提升。patch_np = (np.random.rand(140,512,512).astype(np.float32))*2048.0 - 更换优化版Numpy包
你当前使用的pip安装的通用版Numpy虽然支持AVX512指令集,但编译优化程度较低,可尝试安装带Intel MKL优化的Numpy版本:conda install numpy mkl - 排查硬件与系统占用
确认服务器内存规格是否和家用PC存在明显差距,同时测试时关闭其他占用内存带宽、CPU资源的进程,排除资源争抢导致的性能下降。测试时建议多次运行取平均值,排除首次内存分配的额外开销影响测试结果。
内容的提问来源于stack exchange,提问作者Tahsin Reasat
相关产品推荐
相关产品推荐

