如何通过并行加速Scipy优化任务并提升CPU利用率
Scipy优化并行化的性能优化疑问
基础场景
我正在使用scipy.optimize.minimize优化目标函数fun,需要对DataFrame的每一行独立执行优化,当前通过joblib的Parallel实现并行计算。
核心性能问题
- 本地M1 Pro设备上CPU仅占用约30%,整个数据集的优化耗时极长,想明确该设置多少
n_jobs(或更换并行后端等其他方案)才能让CPU跑满100%以加速程序? - 集群配置为2颗64核CPU,尝试设置
n_jobs=64但未获得明显性能提升,同时希望了解如何充分利用双CPU的算力?
更新1:Jacobian函数的反向效果
处理80行数据时,提供目标函数的Jacobian(jac_)耗时64秒,不使用Jacobian仅需20秒,且此时CPU占用接近100%,请问这一现象的原因是什么?
更新2:补充测试数据后的结果
补充目标函数fun和包含1120行的DataFrame后,在集群环境下不使用jac_时,优化速度约提升5倍。
内容的提问来源于stack exchange,提问作者jasmine
相关产品推荐
相关产品推荐

