2.2 过程说明 |
MPI 通过某种语言指定 MPI 的函数。过程调用的参数有 IN (输入)、OUT (输出) 或 INOUT (输入/输出)。含义如下:
有一种特殊情况--如果一个参数是隐含对象(这些术语在2.4.1 中定义)的一个句柄,并且这个对象被过程调用修改,那么这个参数记为OUT。即使句柄本身没被修改,仍记为OUT--我们用OUT属性表示句柄所引用的部分被修改。
MPI 的定义在最大范围内避免 INOUT 参数的使用, 因为这些使用易于出错,特别对标量参数。
MPI 函数的一般情况是一个参数被一些进程用作 IN , 被另些进程用作 OUT。这样的参数语法上记为 INOUT , 虽然在语义上它不是同一个调用的输入和输出,但它仍记为 INOUT 。
当进程仅需要一个参数值时,另种情况将出现。在进程中一个参数不重要时,可传送任意值作为参数。
如果一个参数没有被指定为 OUT 或 INOUT , 那么它不能和任何其他参数混合一起传送给一个 MPI 函数。下面是 C 语言中参数混合的一个例子。我们如下定义一个 C 过程,
void copyIntBuffer( int *pin, int *pout, int len ) { int i; for (i=0; i<len; ++i) *pout++ = *pin++; }
那么在下面代码段中, 对这个过程的调用混合了参数。
int a[10];
copyIntBuffer( a, a+3, 7);
虽然 C 语言中允许这样,但除非特别说明,MPI过程禁止这样使用。注意Fortran 中禁止参数混合。
所有 MPI 函数首先是不依赖任何语言而被指定, 然后给出这个函数的标准 C版本, 最后给出这个函数的 Fortran 77 版本。
Copyright: NPACT |