在上一篇中我们介绍了 MPI-3 中大的计数及相关函数,下面我们将介绍 MPI 3.1 新增的若干功能。
MPI 3.1 标准于 2015 年 6 月发布,主要是针对 MPI 3.0 的改正,但也增加了少量的新功能。
新增功能
- 新增 MPI_Aint_add 和 MPI_Aint_diff 以对内存地址进行更安全和更具移植性的算术加减操作。
这两个新函数用来替代对地址的直接 + 和 - 算术操作。提供这两个新函数的原因是,地址类型的整数 MPI_Aint 或者 INTEGER(KIND=MPI_ADDRESS_KIND) 是有符号的整型数,绝对地址是无符号的整型数,对地址整数进行直接的 + 和 - 操作可能会溢出或产生其它未定义的结果。新增加的函数可以对内存地址进行更安全和更具移植性的算术加减操作,因此在支持此新函数的环境下,不应该对内存地址再执行内置的 + 和 - 运算。
这两个函数在 mpi4py 中的接口为:
MPI.Aint_add(Aint base, Aint disp)
计算内存中的一个绝对地址 base
和一个相对偏移 disp
的和(为内存中的一个绝对地址)并返回。
MPI.Aint_diff(Aint addr1, Aint addr2)
计算内存中的两个绝对地址 addr1
和 addr