标题已经说了。我目前正在并行化我的代码,主要瓶颈是由两个三维
ndarrays
的元素乘法造成的。我的系统监视器显示只有一个 40
可用核心用于该操作。
我知道并行化是有效的,因为其他
scipy.fft
和 BLAS 操作是并行运行的。
到目前为止,我还没有在 SO 或 GitHub 上真正找到任何有意义的问题/问题。有点令人困惑的是没有其他人遇到过这个问题。我是不是错过了什么?
我尝试使用 BLAS 环境变量并使用
dgbmv
和扁平化数组来实现所需的行为,但我还没有成功。一个最小的代码示例是(在我的案例中涉及更大的 k
、3d 数组和广播):
import numpy as np
k = 1e6
x = np.random.rand(k)
y = np.random.rand(k)
z = np.multiply(x, y)
您可以尝试查看 numexpr :https://pypi.org/project/numexpr/2.6.1/
这个库应该使用你所有的核心。
你可以这样使用它:
import numpy as np
import numexpr as ne
k = int(1e6)
x = np.random.rand(k)
y = np.random.rand(k)
z = ne.evaluate('x * y')
请遵循以下代码: 这个库应该使用你所有的核心。
你可以这样使用它:
将 numpy 导入为 np 将 numexpr 导入为 ne
x = np.random.rand(k) y = np.random.rand(k)
z = ne.evaluate('x * y')