我正在尝试使用带有 MPI 库的 C/CUDA 中的代码在多 GPU 架构上的实际空间中求解泊松方程。目前,我只对在周期框中解决问题感兴趣。但在未来,我可能想看看球面几何。
是否有现有的例程来解决这个问题?2012 年 8 月的评论似乎表明推力库不适用于多 GPU 架构。那仍然正确吗?
如果例程存在,它使用什么方法(Jacobi、SOR、Gauss-Seidel、Krylov)?请就它的速度和您可能遇到的问题发表您的看法。
谢谢你的时间。
Thrust 可用于多 GPU 环境。您可以使用运行时 api 即 cudaSetDevice 来切换设备。由于thrust 隐式处理向量的分配和解除分配,因此必须注意确保在声明设备向量和解除分配(即超出范围)时选择了正确的设备。
通过多 GPU 方法求解泊松方程,位于不同集群节点上的 GPU 通过使用 MPI 协议进行交互,是一个相对较新的研究课题。基本思想是使用域分解,让每个GPU求解一部分计算域,使用MPI交换边界数据。
您可能希望查看论文Towards a multi-GPU solver for the three-dimensional two-phase incompressible Navier-Stokes equations,在 GTC 2012 上发表,以及An MPI-CUDA Implementation for Massively Parallel Incompressible Flow Computations on Multi- GPU 集群。特别是在第一种方法中,Navier-Stokes 方程通过 Chorin 投影方法求解,而这又需要求解 Poisson 方程,这是最艰巨的任务,并通过利用 Jacobi 预条件共轭梯度求解器的 MultiGPU/MPI 策略求解。
关于可用的例程,在过去我遇到了GAMER,这是一个用于天体物理学应用程序的可下载软件。作者声称该代码包含各种 GPU 加速 Poisson 求解器和混合 OpenMP/MPI/GPU 并行化。但是,我从来没有机会下载它。