共享内存的 MPI 与 openMP

标签 mpi openmp shared-memory

假设有一台计算机有 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/

相关文章:

C++ MPI,使用多个节点,首先在节点级别减少,然后减少到头节点

c++ - 具有集体功能的 MPI 死锁

linux - 如何获取 gcc OpenMP 库的调试信息(符号)?

executable - 共享可执行内存

c - 如何使用共享内存传递数据并将接收到的数据保存到文件

linux - 结束一个 mpirun 进程终止一个 b​​ash 循环

c - MPI_Bcast 发送字符串

parallel-processing - 如何删除 Fortran 竞争条件?

c++ - 多核机器上的多个程序实例

c - 如何使用共享内存传输FILE结构(POSIX SKIN)