在上一篇中我们介绍了 mpi4py 中的通用化请求,下面我们将介绍 mpi4py 中的数据类型解析。
通过自定义数据类型,应用程序可任意指定数据在内存中的布局。在 MPI-1 中,一旦确定了数据类型定义,则定义的具体细节将无从获取。某些情况下,在数据类型定义完之后,仍有必要访问其定义流程、数据布局等信息,为此 MPI-2 提供了一些函数来解析定义数据类型过程的信息,如数据类型图,数据类型描述等。
方法接口
MPI.Datatype.Get_envelope(self)
获取创建数据类型的参数数量信息,返回值为一个 (num_integers, num_addresses, num_datatypes, combiner) 的四元 tuple,其中 num_integers 是数据类型创建函数使用整型参数的个数,num_addresses 是数据类型创建函数使用地址型参数的个数,num_datatypes 是数据类型创建函数使用原始数据类型的个数,combiner 是数据创建函数的类型,下表是常用的 combiner 取值和数据类型创建函数的对应关系:
combiner 取值 | 对应的数据类型创建函数 |
---|---|
MPI.COMBINER_NAMED | MPI 预定义数据类型,已命名 |
MPI.COMBINER_DUP | MPI.Datatype.Dup |
MPI.COMBINER_CONTIGUOUS | MPI.Datatype.Create_contiguous |
MPI.COMBINER_VECTOR | MPI.Datatype.Create_vector |
MPI.COMBINER_HVECTOR | MPI.Datatype.Create_hvector |
MPI.COMBINER_INDEXED | MPI.Datatype.Create_indexed |