关于scipy.optimize.minimize并行及全核利用的技术咨询
关于scipy.optimize.minimize(BFGS)的并行化问题
我使用scipy.optimize.minimize并指定method="BFGS"时,遇到了如下现象:理论上该函数在计算代价函数或数值梯度时似乎并未做并行化处理,但在8核Apple M1的Macbook Air上运行优化时,通过top命令观测到CPU使用率达750%-790%,所有8核均被占用;而在单节点40核的超级计算机上运行时,CPU使用率仅为100%-200%,仅用到2核。
现提出以下问题:
- 问题1:
scipy.optimize.minimize在计算代价函数/数值梯度时是否会采用并行化? - 问题2:若支持并行化,如何让
scipy.optimize.minimize利用全部核心?
最小可复现示例代码
# 随机对称矩阵变分泛函的基础优化 import numpy as np from numpy.random import uniform from scipy.optimize import minimize # 生成随机对称矩阵,用于计算最小特征值 N = 1000 H = uniform(-1, 1, [N,N]) H = H + H.T # 变分代价函数 def cost(x): return (x @ H @ x) / (x @ x) x0 = uniform(-0.1, 0.1, N) # 使用BFGS最小化变分函数 minimize(cost, x0, method='BFGS')
内容的提问来源于stack exchange,提问作者Solarflare0
相关产品推荐
相关产品推荐

