MPI, OpenMP, CUDA 对比
Heterogeneous
异构计算
Hardware
以 AMD EPYC 9754 为例:
- 采用双插槽可以搭建 256核512线程 服务器,连接24个内存通道;
- 每个 CPU 各占用 12 个内存通道;
- CPU 与物理内存通过 IMC (Memory Controller I/O) 进行数据交互,因此这 12 个内存通道对应的物理内存为共享内存;
- 对于该平台进行混合编程,至少需要为两个计算节点创建 2 个进程,每个进程可以基于逻辑核心数量创建 256 个线程。
MPI – OpenMP
MPI和OpenMP混合编程可以充分利用分布式内存和共享内存的优势,从而提高并行计算的效率。MPI 和 OpenMP 主要区别如下:
MPI | OpenMP |
---|---|
Message Passing Interface | Open Multi-Processing |
基于消息传递的多进程模型 | 基于共享内存的多线程模型 |
适用于分布式内存系统 | 适用于共享内存系统 |
显式处理进程间通信和同步 | 编译器指令实现并行化 |
高细粒度并行策略 | 快速串并行转换 |
负责节点间数据传输和通信 | 负责节点内并行通信 |
编程相对复杂 | 编程相对简单 |