并行编程模型和库

ghy / 2023-07-25 / 原文

MPI 和 OpenMP 都属于并行计算库,不局限于特定的硬件
CUDA和HIP都是针对特定硬件的编程平台

CUDA(Compute Unified Device Architecture)是由NVIDIA开发的用于并行计算的编程模型和平台。它主要用于NVIDIA的GPU(图形处理器)架构上,如NVIDIA的Tesla、Quadro和GeForce系列显卡。CUDA程序通常使用NVIDIA提供的编译器和工具链进行开发和优化。
HIP(Heterogeneous-Compute Interface for Portability)是由AMD开发的用于并行计算的编程接口。它旨在提供跨不同硬件平台的可移植性,包括AMD的GPU和CPU。HIP可以在AMD的GPU架构上,如Radeon和FirePro系列显卡,以及x86 CPU上进行开发。

HIP 可以看为 AMD 对标 NVDIA 的 CUDA而推出的一种编程模型,HIP 和 CUDA 二者的组成部分基本是一一对应的,甚至可以通过转换工具直接将程序在二者之间进行转换。
二者之间的对应关系如下图所示

除了以上常见的并行编程模型和库之外,还包含以下内容

  1. OpenCL:OpenCL是一个跨平台的并行编程框架,可用于编写可在不同硬件上运行的并行计算应用程序。它支持各种设备,包括GPU、CPU、FPGA等。
  2. SYCL:SYCL(Single-source C++)是一种基于C++的并行编程模型,用于编写高性能并行代码。SYCL通过将并行计算任务表示为C++函数对象,并使用简洁的C++代码来描述数据依赖关系,实现了简化的并行编程。
  3. Chapel:Chapel是一种新型的并行编程语言,旨在简化并行计算的开发。它提供了高级的并行构造,如任务并行、数据并行和工作流,并支持多种硬件平台。
  4. TBB:TBB(Threading Building Blocks)是一个面向C++的并行编程库,用于实现可扩展的并行算法。TBB提供了一组高级的并行原语和算法,可以在多核处理器上利用任务并行。

Reference

  • [1] CUDA 和 HIP 对比