MPI, OpenMP, CUDA 特征比较

MPI, OpenMP, CUDA 对比

Heterogeneous

异构计算

Hardware

AMD EPYC 9754 为例:

  1. 采用双插槽可以搭建 256核512线程 服务器,连接24个内存通道;
  2. 每个 CPU 各占用 12 个内存通道;
  3. CPU 与物理内存通过 IMC (Memory Controller I/O) 进行数据交互,因此这 12 个内存通道对应的物理内存为共享内存;
  4. 对于该平台进行混合编程,至少需要为两个计算节点创建 2 个进程,每个进程可以基于逻辑核心数量创建 256 个线程。

MPI – OpenMP

MPI和OpenMP混合编程可以充分利用分布式内存和共享内存的优势,从而提高并行计算的效率。MPI 和 OpenMP 主要区别如下:

MPI OpenMP
Message Passing Interface Open Multi-Processing
基于消息传递的多进程模型 基于共享内存的多线程模型
适用于分布式内存系统 适用于共享内存系统
显式处理进程间通信和同步 编译器指令实现并行化
高细粒度并行策略 快速串并行转换
负责节点间数据传输和通信 负责节点内并行通信
编程相对复杂 编程相对简单

Reference

0%