使用 GPU 和多处理加速对角化

问题描述

在我的 Python 代码中,我必须对数百个数组进行对角化,每个数组的大小约为 1000*1000。但是,每个数组都是独立的,因此我似乎可以使用并行编程来加速这个过程。一个最小的(伪代码)示例是这样的形式

arr_list = [a0,a1,a2,...,a199] # each arr is of shape 1000*1000
for idx,arr in enumerate(arr_list):
  evals,evecs  = np.linalg.eigh(arr)
  arr_list[idx] = evals

我对 CUDA、numba、CuPy 或多处理不是很熟悉,但一些快速研究似乎告诉我,CuPy 主要用于加速基本运算,例如加法、乘法、对角化等,并且只有真正具有如果数组大小远大于 1000,则相对于 numpy 的时间显着跳跃。相比之下,多处理似乎利用 cpu 上的多核 (6-8),但似乎 numpy 对角化已经是多核进程(如有错误请指正),所以时间上可能不会有较大的下降。

我对并行编程不是很熟悉,所以我想知道是否有更多经验的人可以就这样的问题提供一些指导。也许是一个研究方向。

编辑。不幸的是,我使用的是 Windows,所以 jax 似乎不起作用。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)