Wenyin 的拾萃园
OpenMP / MPI

OpenMP 和 MPI 是过去在 CPU 作集群超算的主力时所需要了解的计算框架。两者字面上看非常相近,但是

  • OpenMP 指 Multi-processing, 是在共享内存的多线程架构上的语言模型。
  • MPI 是 Message Passing Interface, 是在分布式计算架构上作为调度消息传递的工具,在 Unix 系统上的实现是 OpenMPI。要是概括起来,MPI 控制了一些让人很容易想象出来的并行所需要的行为, 比如 broadcast/send/receive/reduce 等等这些操作。

两者相结合构成了上个世纪各类超算上 Fortran/C/C++ 语言的并行逻辑,随着 GPU 越来越多地承担了浮点计算的任务,CPU 端的数学计算也由 Python 的 numpy/scipy/dask 逐渐承担,OpenMP/MPI 渐渐不为新一代的技术人员所熟悉,这两者下沉到了这些数值计算库的底层。不过,对 OpenMP/MPI 深入了解也有助于对老代码的理解。

我在学习的过程中,也在这里记载一些相关的资料以供参考。

劳伦斯实验室的并行计算资料挺多的,参见 Lawrence Livermore National Laboratory Tutorials on HPC