我必须使用具有数值积分的函数(scipy.integrate.quad)来评估矩阵的每个元素。矩阵的元素是 5202x3465 灰度图像的像素。
我可以使用 GPU,我想并行评估尽可能多的元素,因为现在,使用线性编程,整个计算需要超过 24 小时。
这是示例代码:
for i in range(0, rows):
for j in range(0, columns):
img[i, j] = myFun(constant_args, i, j)
def myFunc(constant_args, i, j):
new_pixel = quad(integrand, constant_args, i, j)
... other calculations ...
return new_pixel
我尝试像这样使用多处理(作为 mp):
arows = list(range(0, rows))
acolumns = list(range(0, columns))
with mp.Pool() as pool:
img = pool.map(myFunc, (constant_args, arows, acolumns))
或使用 img = pool.map(myFunc(constant_args), (arows, acolumns))
但它给了我:
TypeError: myFunc() missing 2 required positional arguments: 'j' 和 'i'
我不了解其他示例的工作原理,也不知道文档中使用的术语。
我只想将该嵌套循环划分为子线程,如果有人提出不同的方法,我会全力以赴。
附言。我尝试使用 numba,但在与一些 Scipy 库交互时会出错
预先感谢您的帮助!