假设有一台计算机有 4 个 CPU,每个 CPU 有 2 个内核,所以总共有 8 个内核。以我有限的理解,我认为在这种情况下所有处理器共享相同的内存。现在,是直接使用 openMP 还是使用 MPI 使其通用更好,以便代码可以在分布式和共享设置上工作。另外,如果我将 MPI 用于共享设置,与 openMP 相比,性能会降低吗?
最佳答案
现在大多数分布式内存平台由 SMP 或 NUMA 节点组成,不使用 OpenMP 是没有意义的。 OpenMP 和 MPI 可以完美地协同工作; OpenMP 为每个节点上的内核供电,MPI 在节点之间进行通信。这称为混合编程。它在 10 年前被认为是奇特的,但现在它正在成为高性能计算的主流。
至于问题本身,鉴于所提供的信息,正确答案始终是相同的:视情况而定 .
关于共享内存的 MPI 与 openMP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11332018/