在上一篇中我们介绍了 SLURM 资源管理系统,下面将介绍 MPI-3 的新特性。
在前面我们介绍了 MPI 的基本概念和使用 mpi4py 在 Python 环境下进行 MPI 编程的方法。不过前面的介绍主要基于 MPI-1 和 MPI-2 标准,最新的 MPI-3 标准已经发布,MPI-3 引进了若干新特性,并对之前版本的部分特性作了扩充和改进,这些新特性使我们能够更好地使用 MPI 以满足更高的并行计算需求和应对更加广泛的并行计算平台。各大 MPI 软件实现已支持 MPI-3 标准,我们有必要加以了解。
MPI 发布历史
-
版本:1.0 (1994 年 5 月),1.1 (1995 年 6 月),1.2 (1997 年 7 月),1.3 (2008 年 5月)
引进了基本的消息传递概念。
-
版本:2.0 (1997 年 7 月),2.1 (2008 年 6 月)
增加了单边通信和并行 I/O 特性。
-
版本:2.2 (2009 年 9 月)
小的改正。
-
版本:3.0 (2012 年 9 月)
增加若干新特性,为 MPI 标准较为重大的更新。
-
版本:3.1 (2015 年 6 月)
主要是对 MPI 3.0 的改正,也增加了少量新特性。
当前最新的 MPI 标准为 MPI 3.1,我们将要介绍的 MPI-3,如不特别加以说明,即指 MPI 3.1 标准。
MPI 3.0
主要新特性
- 非阻塞集合通信
- 近邻集合通信(阻塞 + 非阻塞)
- 单边通信增强
- 共享内存扩展
- 新的 Fortran 2008 接口
- 新的工具接口(MPI_T)
小的改动和增加
- 用于混合编程的线程安全的 Mprobe 和 Mrecv
- 非阻塞通信子复制和组集合通信子创建
- 新函数 MPI_Type_create_hindexed_block
- 大的计数 MPI_Count 及相关函数
- 去掉 C++ 接口
- 其它小的改动
MPI 3.1
错误改正
- 若干工具接口(MPI_T)改正
- 若干新的 Fortran 2008 接口改正
- 少量单边通信改正
增加的新特性
- 地址 + 和 - 被替换为 MPI_Aint_add 和 MPI_Aint_diff
- 单边通信窗口创建函数增加新的 info 项 same_disp_unit
- 非阻塞集合并行 I/O 函数: MPI_File_iread_at_all + MPI_File_iwrite_at_all 和 MPI_File_iread_all + MPI_File_iwrite_all
- 工具接口(MPI_T)增加 3 个新函数和 2 个新的错误代码
以上概要地介绍了最新的 MPI-3 标准中引进的新特性,mpi4py 3.0.0 支持 MPI-3 的很多新特性,我们将在后面逐步介绍,在下一篇中我们首先介绍 mpi4py 中的非阻塞集合通信。