加速应用程序的常用方法是使用 MPI 或更高级别的库(例如在幕后使用 MPI 的 PETSc)并行化应用程序。
然而,现在每个人似乎都对使用 CUDA 来并行化他们的应用程序或使用 MPI 和 CUDA 的混合来解决更雄心勃勃/更大的问题感兴趣。
与传统的、经过试验和测试的并行编程 MPI 模型相比,使用混合 MPI+CUDA 编程模型有什么明显的优势吗?我是在粒子方法的应用领域专门问这个问题
我问这个问题的原因之一是,我在网络上到处都看到这样的说法:“粒子方法自然映射到 GPU 的架构”或类似的说法。但他们似乎从来没有证明为什么我使用 CUDA 比仅使用 MPI 来完成同样的工作更好。
这有点像苹果和橘子。
MPI 和 CUDA 是根本不同的架构。最重要的是,MPI 允许您将应用程序分布在多个节点上,而 CUDA 允许您在本地节点内使用 GPU。如果在 MPI 程序中,您的并行进程需要很长时间才能完成,那么是的,您应该研究如何通过使用 GPU 而不是 CPU 来完成工作来加速它们。相反,如果您的 CUDA 应用程序仍然需要很长时间才能完成,您可能希望使用 MPI 将工作分发到多个节点。
这两种技术几乎是正交的(假设集群上的所有节点都支持 CUDA)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)