第二章 MPI 术语和约定 BACKWARDFORWARD


2.4 数据类型

2.4.1 隐含对象  

MPI 管理系统存储器, 主要用于暂存消息和存储各种MPI对象的内部表示, 如进程组, 通讯组, 数据类型等MPI对象。用户不能直接对这个存储器存取,并且所存储的对象是隐含的:即他们的尺寸和形状对用户不可见。隐含对象通过存在于用户空间的句柄可以被存取。对隐含对象操作的MPI过程被传送给存取这些对象的句柄参数。句柄除了用于MPI调用这些对象存取外, 句柄能参与赋值和比较。   

Fortran中, 所有句柄的类型都是INTEGER(整型)。C语言中, 对每种对象定义不同类型的句柄。这些类型应支持赋值操作和相等操作。   

Fortran中, 句柄可以是系统表中的一个隐含对象表的一个索引; C语言中, 句柄可以是对隐含对象的这样的索引或者是隐含对象的一个指针。更希奇的可能存在。   

对每类对象的调用能“分配”和“解出分配”隐含对象。这些在描述对象那节给出列表。调用接受一个相应类型的句柄参数。在一个分配调用中,这是一个OUT参数, 它返回这个对象的一个有效引用。在一个解出分配调用中,这是一个INOUT参数, 带着一个" 无效的句柄" 值返回。MPI对每种对象类型提供一个" 无效的句柄" 常量。对这个常量的比较用于检测这个句柄的有效性。   

对解出分配的一个调用使该句柄无效,并标记这个对象为解出分配。在这个调用之后,用户不能存取该对象。但MPI不必立刻解出分配这个对象。涉及对象的任何挂起操作(在解出分配时)将正常完成; 之后, 这个对象将被解出分配。   

一个隐含对象和它的句柄仅在创建对象的进程中是重大的,而且还不能传给其他进程。   

MPI提供预定义的隐含对象和这些对象的预定义的静态句柄。这些对象不能被损坏。


Copyright: NPACT BACKWARDFORWARD