在我的脚本执行期间查看资源监视器,我注意到我的 PC 的所有内核都在工作,即使我没有实现任何形式的多处理。试图查明原因,我发现在使用numpy's时代码是并行化的matmult(或者,如下例所示,二元运算符@)。
import numpy as np
A = np.random.rand(10,500)
B = np.random.rand(500,50000)
while True:
_ = A @ B
看看这个问题,原因似乎是numpy调用BLAS/LAPACK了确实并行化的例程。
尽管我的代码运行得更快并使用了所有可用资源,这很好,但当我在PBS队列管理器管理的共享集群上提交代码时,这给我带来了麻烦。与集群 IT 经理一起,我们注意到即使我在集群节点上请求 N 个 CPU,numpy仍然会产生与节点上 CPU 数量相等的线程数。
这导致节点过载,因为我使用的 CPU 比分配给我的 CPU 多。
有没有办法“控制”这种行为并告诉numpy它可以使用多少个 CPU?
猛跑小猪
相关分类