并行反转许多小矩阵

计算科学 线性代数 矩阵 并行计算
2021-12-05 06:44:21

我正在尝试找到一种处理以下问题的好方法: Let C be an N by 3 array (对应于点R3)。有一种我有兴趣测试的方法,它需要为 i=1....N 构建一个矩阵Ai大小的ni<<N和一个向量bi大小的ni仅使用 C 的第 i 行的数据。然后,我们寻求解决方案xi=Ai1bi.

我目前在 MATLAB 中将其作为从 i=1 到 i=N 的大型 for 循环运行,并执行上述操作。对于 N = 30,000,这需要一段时间,我希望找到一些方法来加快速度。由于每次迭代都相互独立,我希望我可以并行化 for 循环。但是,我不熟悉并行编程。

我无法访问 matlab 并行工具箱,所以我不能简单地调用 parfor 来并行化循环。如果有帮助,我熟悉 Python+Numpy+Scipy,并且对 C/C++ 有点熟悉,并且渴望学习 MPI 或 CUDA 或任何有用的东西。

我认为这个 for 循环可以并行化以获得更快的性能是否正确?任何人都可以向我指出一些资源以开始并行(或更快)实施吗?

谢谢!

1个回答

您可以使用 Python 的 Multiprocessing 在 Numpy 中执行此操作(特别是通过构建一个 Pool 并在要解决的矩阵上使用 Pool.map )。