加速应用程序的常用方法是使用 MPI 或更高级的库(如 PETSc,后者在底层使用 MPI)并行化应用程序。
然而,如今每个人似乎都对使用 CUDA 来并行化他们的应用程序或使用 MPI 和 CUDA 的混合体来解决更雄心勃勃/更大的问题感兴趣。
与传统的、久经考验的并行编程 MPI 模型相比,使用混合 MPI+CUDA 编程模型是否有任何明显的优势?我是专门在粒子方法的应用领域问这个问题的
我问这个问题的一个原因是,我在网络上到处都能看到“粒子方法自然地映射到 GPU 的架构”或类似的说法。但他们似乎从来没有证明为什么我使用 CUDA 比只使用 MPI 来完成相同的工作更好。
最佳答案
这是一点点苹果和橘子。
MPI 和 CUDA 是根本不同的架构。最重要的是,MPI 允许您将应用程序分布在多个节点上,而 CUDA 允许您在本地节点内使用 GPU。如果在 MPI 程序中,您的并行进程需要很长时间才能完成,那么是的,您应该研究如何通过使用 GPU 而不是 CPU 来加速它们的工作。相反,如果您的 CUDA 应用程序仍然需要很长时间才能完成,您可能希望使用 MPI 将工作分配到多个节点。
这两种技术几乎是正交的(假设集群上的所有节点都支持 CUDA)。
关于algorithm - MPI+CUDA 比纯 MPI 有什么优势?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8061419/