附录 3:MPI参考手册
本附录给出主要MPI函数的参考手册。为了节省篇幅,这里仅列出MPI函数的C接口,
Fortran 接口子程序的参数与C 接口函数的参数完全类似。除MPI_Wtime和MPI_Wtick
外,Fortran 接口子程序比 C接口函数在最后多出一个整型参数,用于返回错误码。
所列出的MPI 函数和变量是按照它们的类别组织的。为方便查找特定的函数,附3.1 中
给出了一个MPI 的函数、变量名称按字母顺序排列的索引。
本附录的内容主要参考文献[8, 9] 以及MPICH的部分在线手册编写而成。
附3.1 MPI 函数、变量速查表
本节中出现在变量或函数名后边的页码代表它们在参考手册中所在页号,主要为了方便
它们的查找,没有其他含义。
MPI_2INT ...........................................37
MPI_Abort ..........................................40
MPI_Address .....................................46
MPI_Aint ............................................38
MPI_Allgather ....................................47
MPI_Allgatherv ..................................48
MPI_Allreduce ...................................49
MPI_Alltoall .......................................48
MPI_Alltoallv .....................................48
MPI_ANY_SOURCE .............................39
MPI_ANY_TAG ...................................39
MPI_Attr_delete .................................52
MPI_Attr_get .....................................52
MPI_Attr_put .....................................52
MPI_BAND .........................................38
MPI_Barrier ........................................47
MPI_Bcast ..........................................47
MPI_BOR ............................................38
MPI_BOTTO .......................................39
MPI_Bsend .........................................42
MPI_Bsend_init ..................................44
MPI_BSEND_OVERHEAD ....................39
MPI_Buffer_attach .............................42
MPI_Buffer_detach ............................42
MPI_BXOR ..........................................38
MPI_BYTE ...........................................37
MPI_Cancel ........................................44
MPI_CART ..........................................39
MPI_Cart_coords ...............................53
MPI_Cart_create ................................52
MPI_Cart_get .....................................53
MPI_Cart_map ...................................53
MPI_Cart_rank ...................................53
MPI_Cart_shift ...................................53
MPI_Cart_sub ....................................53
MPI_Cartdim_get ..............................53
MPI_CHAR .........................................37
MPI_Comm........................................38
MPI_Comm_compare ........................51
MPI_Comm_create ............................51
MPI_Comm_dup ................................51
MPI_Comm_free ................................52
MPI_Comm_group ............................51
MPI_COMM_NULL .............................38
MPI_Comm_rank ...............................51
MPI_Comm_remote_group ..............54
MPI_Comm_remote_size ..................54
MPI_COMM_SELF ...............................37
MPI_Comm_size ...............................51
MPI_Comm_split ...............................51
MPI_Comm_test_inter ......................54
MPI_COMM_WORLD ..........................37
MPI_CONGRUENT .............................37
MPI_Copy_function ...........................38
MPI_Datatype ....................................38
MPI_DATATYPE_NULL .......................38
MPI_Delete_function ........................38
MPI_Dims_create ..............................52
MPI_DOUBLE ......................................37
MPI_DOUBLE_INT ..............................37
MPI_DUP_FN ......................................38
MPI_ERR_ARG ....................................40
MPI_ERR_BUFFER ...............................39
MPI_ERR_COMM ................................39
MPI_ERR_COUNT ...............................39
MPI_ERR_DIMS ..................................40
MPI_ERR_GROUP ...............................40
MPI_ERR_IN_STATUS .........................40
MPI_ERR_INTERN ...............................40
MPI_ERR_LASTCODE .........................40
MPI_ERR_OP ......................................40
MPI_ERR_OTHER ...............................40
MPI_ERR_PENDING ............................40
MPI_ERR_RANK ..................................39
MPI_ERR_REQUEST ............................40
MPI_ERR_ROOT .................................39
MPI_ERR_TAG ....................................39
MPI_ERR_TOPOLOGY ........................40
MPI_ERR_TRUNCATE .........................40
MPI_ERR_TYPE ...................................39
MPI_ERR_UNKNOWN .........................40
MPI_Errhandler .................................38
MPI_Errhandler_create .....................40
MPI_Errhandler_free .........................41
MPI_Errhandler_get ..........................41
MPI_ERRHANDLER_NULL ..................38
MPI_Errhandler_set ...........................41
MPI_Error_class .................................41
MPI_Error_string ...............................41
MPI_ERRORS_ARE_FATAL .................38
MPI_ERRORS_RETURN .......................38
MPI_Finalize ......................................40
MPI_FLOAT ........................................37
MPI_FLOAT_INT ................................37
MPI_Gather ........................................47
MPI_Gatherv ......................................48
MPI_Get_count ..................................47
MPI_Get_elements ............................47
MPI_Get_processor_name ................40
MPI_GRAPH .......................................39
MPI_Graph_create .............................54
MPI_Graph_get ..................................54
MPI_Graph_map ................................54
MPI_Graph_neighbors ......................54
MPI_Graph_neighbors_count ...........54
MPI_Graphdims_get .........................54
MPI_Group .........................................38
MPI_Group_compare ........................50
MPI_Group_difference ......................50
MPI_GROUP_EMPTY ..........................37
MPI_Group_excl ................................50
MPI_Group_free ................................51
MPI_Group_incl .................................50
MPI_Group_intersection ...................50
MPI_GROUP_NULL .............................38
MPI_Group_range_excl .....................50
MPI_Group_range_incl .....................50
MPI_Group_rank ...............................50
MPI_Group_size ................................50
MPI_Group_translate_ranks .............51
MPI_Group_union .............................51
MPI_Handler_function ......................38
MPI_HOST ..........................................39
MPI_Ibsend ........................................42
MPI_IDENT .........................................37
MPI_Init ..............................................40
MPI_Initialized ..................................40
MPI_INT .............................................37
MPI_Intercomm_create .....................54
MPI_Intercomm_merge ....................54
MPI_IO ...............................................39
MPI_Iprobe ........................................44
MPI_Irecv ...........................................42
MPI_Irsend .........................................42
MPI_Isend ..........................................42
MPI_Issend ........................................43
MPI_Keyval_create ............................52
MPI_Keyval_free ................................52
MPI_KEYVAL_INVALID .......................39
MPI_LAND ..........................................38
MPI_LB ...............................................37
MPI_LONG .........................................37
MPI_LONG_DOUBLE ..........................37
MPI_LONG_DOUBLE_INT ...................37
MPI_LONG_INT ..................................37
MPI_LONG_LONG_INT ......................37
MPI_LOR ............................................38
MPI_LXOR ..........................................38
MPI_MAX ...........................................38
MPI_MAX_ERROR_STRING ................39
MPI_MAX_PROCESSOR_NAME ..........39
MPI_MAXLOC ....................................38
MPI_MIN ............................................38
MPI_MINLOC .....................................38
MPI_NULL_COPY_FN .........................38
MPI_NULL_DELETE_FN ......................38
MPI_Op ..............................................38
MPI_Op_create ..................................49
MPI_Op_free ......................................50
MPI_OP_NULL ....................................38
MPI_Pack ...........................................46
MPI_Pack_size ...................................46
MPI_PACKED ......................................37
MPI_Probe .........................................42
MPI_PROC_NULL ...............................39
MPI_PROD ..........................................38
MPI_Recv ...........................................41
MPI_Recv_init ....................................44
MPI_Reduce .......................................48
MPI_Reduce_scatter ..........................49
MPI_Request ......................................38
MPI_Request_free .............................44
MPI_REQUEST_NULL .........................38
MPI_Rsend .........................................42
MPI_Rsend_init ..................................45
MPI_Scan ...........................................49
MPI_Scatter .......................................48
MPI_Scatterv ......................................48
MPI_Send ...........................................41
MPI_Send_init ....................................44
MPI_Sendrecv ....................................41
MPI_Sendrecv_replace ......................42
MPI_SHORT .......................................37
MPI_SHORT_INT ................................37
MPI_SIMILAR ......................................37
MPI_Ssend .........................................42
MPI_Ssend_init ..................................45
MPI_Start ...........................................44
MPI_Startall .......................................44
MPI_Status .........................................38
MPI_SUCCESS ....................................39
MPI_SUM ............................................38
MPI_TAG_UB ......................................39
MPI_Test ............................................43
MPI_Test_cancelled ..........................43
MPI_Testall ........................................43
MPI_Testany ......................................43
MPI_Testsome ...................................43
MPI_Topo_test ..................................52
MPI_Type_commit ............................46
MPI_Type_contiguous ......................45
MPI_Type_dup ...................................47
MPI_Type_extent ..............................47
MPI_Type_free ...................................46
MPI_Type_hindexed .........................45
MPI_Type_hvector .............................45
MPI_Type_indexed ............................45
MPI_Type_lb ......................................47
MPI_Type_size ..................................47
MPI_Type_struct ...............................46
MPI_Type_ub .....................................47
MPI_Type_vector ...............................45
MPI_UB ...............................................37
MPI_UNDEFINED ................................39
MPI_UNDEFINED_RANK ....................39
MPI_UNEQUAL ...................................37
MPI_Unpack .......................................46
MPI_UNSIGNED ..................................37
MPI_UNSIGNED_CHAR ......................37
MPI_UNSIGNED_LONG ......................37
MPI_UNSIGNED_SHORT ....................37
MPI_User_function ............................38
MPI_Wait ............................................43
MPI_Waitall ........................................43
MPI_Waitany ......................................43
MPI_Waitsome ...................................44
MPI_Wtick ..........................................55
MPI_Wtime .........................................55
MPI_WTIME_IS_GLOBAL ....................39
附3.2 MPI 预定义的变量及类型
附3.2.1 C语言 MPI原始数据类型
C语言中表示MPI数据类型的变量类型是MPI_Datatype。
1. 基本数据类型
MPI_CHAR 对应于 char。
MPI_BYTE 对应于unsigned char。
MPI_SHORT 对应于 short。
MPI_INT 对应于 int。
MPI_LONG 对应于 long。
MPI_FLOAT 对应于 float。
MPI_DOUBLE 对应于double。
MPI_UNSIGNED_CHAR 对应于unsigned char。
MPI_UNSIGNED_SHORT 对应于unsigned short。
MPI_UNSIGNED 对应于unsigned int。
MPI_UNSIGNED_LONG 对应于unsigned long。
MPI_LONG_DOUBLE 对应于 long double (有的系统不支持)。
MPI_LONG_LONG_INT 对应于 long long (有的系统不支持)。
2. 特殊数据类型
MPI_PACKED MPI_Pack和 MPI_Unpack函数用的打包类型。
MPI_UB 用于在 MPI_Type_struct函数中设定数据类型的上
界。
MPI_LB 用于在 MPI_Type_struct函数中设定数据类型的下
界。
3. MPI MAXLOC 和 MPI MINLOC 中使用的数据类型
MPI_FLOAT_INT 对应于 struct {float,int}。
MPI_LONG_INT 对应于 struct {long,int}。
MPI_DOUBLE_INT 对应于 struct {double,int}。
MPI_SHORT_INT 对应于 struct {short,int}。
MPI_2INT 对应于 struct {int,int}。
MPI_LONG_DOUBLE_INT 对应于 struct {long double,int}。
附3.2.2 预定义的通信器与进程组
MPI的通信器和进程组在 C语言中的变量类型分别为MPI_Comm和MPI_Group,它
们在 Fortran语言中都用 INTEGER 表示。
MPI_COMM_WORLD 包含所有进程的通信器。
MPI_COMM_SELF 只包含本进程的通信器。
MPI_GROUP_EMPTY 空进程组(不包含任何进程)。
通信器或进程组的比较结果
MPI_IDENT 表示两个通信器或进程组完全一样。
MPI_CONGRUENT 表示两个通信器包含的进程组一样(参看
MPI_Comm_compare)。
MPI_SIMILAR 表示两个通信器或进程组中的进程集合
一样,但进程排序不同。
MPI_UNEQUAL 表示两个通信器或进程组不相同。
附3.2.3 用于归约函数的预定义的二目运算
MPI用于进行归约运算的函数有MPI_Reduce、MPI_Allreduce、MPI_Reduce_scatter
和MPI_Scan,它们所使用的二目运算在 C中的类型为MPI_Op,在 Fortran 中的类型为
INTEGER。
MPI_MAX 两个操作数中较大的一个。
MPI_MIN 两个操作数中较小的一个。
MPI_SUM 两个操作数之和。
MPI_PROD 两个操作数之积。
MPI_LAND 两个操作数的逻辑与(logical and)。
MPI_BAND 两个操作数的按位与(bitwise and)。
MPI_LOR 两个操作数的逻辑或(logical or)。
MPI_BOR 两个操作数的按位或(bitwise or)。
MPI_LXOR 两个操作数的逻辑异或(logical xor)。
MPI_BXOR 两个操作数的按位异或(bitwise xor)。
MPI_MINLOC 两对操作数中较小一个的值和位置。
MPI_MAXLOC 两对操作数中较大一个的值和位置。
附3.2.4 C变量类型及预定义函数
MPI_Status 存储通信状态的变量(参看 3.2.8)。
MPI_Aint 存放地址或位移的变量。
MPI_Datatype 数据类型变量。
MPI_Request 通信请求变量。
MPI_Comm 通信器变量。
MPI_Group 进程组变量。
MPI_Op 归约操作的二目运算操作句柄。
MPI_User_function 聚合通信中的自定义函数(参看MPI_Op_create)。
MPI_Copy_function 通信器属性复制函数(参看MPI_Keyval_create)。
MPI_Delete_function 通 信 器 属 性 删 除 函 数 (参 看
MPI_Keyval_create)。
MPI_NULL_COPY_FN 预定义的属性拷贝函数。
MPI_NULL_DELETE_FN 预定义的属性删除函数。
MPI_DUP_FN 预定义的属性复制函数。
MPI_Errhandler 错误处理函数句柄。
MPI_Handler_function 错 误 处 理 函 数 (参 看
MPI_Errhandler_create)。
MPI_ERRORS_ARE_FATAL 预定义的错误处理函数:发生错误则立即退出(默
认行为)。
MPI_ERRORS_RETURN 预定义的错误处理函数:发生错误时返回错误码,
程序继续运行。
附3.2.5 空对象
MPI_COMM_NULL 空通信器。
MPI_OP_NULL 空操作。
MPI_GROUP_NULL 空进程组。
MPI_DATATYPE_NULL 空数据类型。
MPI_REQUEST_NULL 空请求(空回执)。
MPI_ERRHANDLER_NULL 空错误处理过程。
附3.2.6 MPI 常量
MPI_TAG_UB 最大标签值(不小于216 -1)。
MPI_HOST 该变量给出主机所在的进程号(如果有主机的话)。
MPI_IO 具有输入、输出能力的进程号。
MPI_WTIME_IS_GLOBAL 代表MPI_Wtime函数返回的时间是否是全局同步
的。
MPI_MAX_PROCESSOR_NAME 给出MPI_Get_processor_name返回的处理器名
称最大长度。
MPI_MAX_ERROR_STRING 给出MPI_Error_string返回的错误信息的最大长
度。
MPI_UNDEFINED 被许多MPI函数用于表示未知或未定义的
整数值。
MPI_UNDEFINED_RANK 未定义的进程号。
MPI_KEYVAL_INVALID 用于表示非法或未定义的 keyvalue。
MPI_BSEND_OVERHEAD 给出MPI_Bsend 附加的额外数据长度。
MPI_PROC_NULL 空进程,与空进程进行通信相当于空操作。
MPI_ANY_SOURCE 接收操作中用于表示从任何源地址接收。
MPI_ANY_TAG 接收操作中用于表示接收任何标签的消息。
MPI_BOTTO 表示MPI 地址空间的基底地址
(参看MPI_Address)。
附3.2.7 进程拓扑结构
MPI_GRAPH 图结构。
MPI_CART 笛卡尔结构。
附3.2.8 通信状态信息
C语言中,MPI利用结构MPI_Status来返回消息传递的完成情况。该结构中包含下述
成员可供调用程序查询:
typedef struct {
... ...
intMPI_SOURCE; /*消息源地址*/
intMPI_TAG; /*消息标签*/
intMPI_ERROR; /*错误码*/
... ...
} MPI_Status;
附3.2.9 错误码
MPI_SUCCESS 操作成功。
MPI_ERR_BUFFER 非法缓冲区指针。
MPI_ERR_COUNT 非法个数。
MPI_ERR_TYPE 非法数据类型。
MPI_ERR_TAG 非法消息标签。
MPI_ERR_COMM 非法通信器。
MPI_ERR_RANK 非法进程号。
MPI_ERR_ROOT 非法根进程。
MPI_ERR_GROUP 非法进程组。
MPI_ERR_OP 非法归约运算操作。
MPI_ERR_TOPOLOGY 非法进程拓扑结构。
MPI_ERR_DIMS 非法维数。
MPI_ERR_ARG 非法参数。
MPI_ERR_UNKNOWN 未知错误。
MPI_ERR_TRUNCATE 接收数据时消息被截断。
MPI_ERR_OTHER 其他错误,错误信息可通过MPI_Error_string获
得。
MPI_ERR_INTERN 内部错误。
MPI_ERR_IN_STATUS 错误码在状态变量的MPI_ERROR 元素中
(参看MPI_Status)。
MPI_ERR_PENDING 有尚未完成的请求。
MPI_ERR_REQUEST 非法请求(MPI_Request)。
MPI_ERR_LASTCODE 该值位于错误码列表的最后。
附 3.3 初始化、退出与错误处理函数
int MPI_Init(int *argc, char ***argv)
初始化MPI系统。通常它应该是第一个被调用的MPI函数。除MPI_Initialized 外,其
他所有MPI函数仅在调用了该函数后才可以被调用。argc和 argv分别是命令行参数的个
数和参数数组的指针(通过C的 main函数得到),必须将它们如实传递给MPI系统。MPI
系统通过它们得到所需的参数,并且会将MPI系统专用的参数删除而仅留下供用户程序使
用的参数。
参看MPI_Initialized,MPI_Finalize,MPI_Abort。
int MPI_Initialized(int *flag)
用于检查MPI系统是否已经初始化。如果已经调用过MPI_Init则返回值 flag != 0,否
则返回值 flag == 0。这是唯一可以在MPI_Init之前调用的函数。
参看MPI_Init。
int MPI_Finalize(void)
退出MPI系统。所有 MPI进程在正常退出前都必须调用该函数。它是MPI程序中最后
一个被调用的MPI函数。调用MPI_Finalize后不允许再调用任何MPI函数。调用该函数前
应该确认所有的(非阻塞型) 通信均已完成。
参看MPI_Init,MPI_Initialized,MPI_Abort。
int MPI_Abort(MPI_Comm comm, int errorcode)
调用该函数时表明因为出现了某种致命错误而希望立即终止MPI程序的执行。MPI系
统会尽量设法终止通信器 comm中的所有进程。在UNIX 系统环境中,errorcode被作为
进程的退出码(exit code) 返回给操作系统。
参看MPI_Init 和MPI_Finalize。
int MPI_Get_processor_name(char *name, int *resultlen)
该 函 数 返 回 运 行 本 进 程 的 处 理 器 名 称 。 参 数 name应 该 提 供 不 少 于
MPI_MAX_PROCESSOR_NAME 个字节的存储空间用于存放处理器名称。
int MPI_Errhandler_create(MPI_Handler_function *function,MPI_Errhandler
*errhandler)
注册异常处理函数。参数 function 为异常处理函数,errhandler返回一个可用于
MPI_Errhandler_set的句柄。function 应该是一个如下形式的 C函数:
void function(MPI_Comm *comm, int
*errcode, ...)
其中comm是与之相关联的通信器,errcode为错误码(它们都是输入参数,使用地址
是为了方便编写 Fortran 异常处理函数)。其余参数与MPI的具体实现有关。
参看MPI_Errhandler_free和MPI_Errhandler_set等。
int MPI_Errhandler_free(MPI_Errhandler *errhandler)
释放一个已注册的异常处理函数。
参看MPI_Errhandler_create和MPI_Errhandler_set等。
int MPI_Errhandler_set(MPI_Comm comm,MPI_Errhandler errhandler)
为通信器comm指定异常处理函数。其中,参数 errhandler给出异常处理函数,它可
以是通过MPI_Errhandler_create注册的自定义异常处理函数,也可以是MPI预定义的异
常 处 理 函 数 。 MPI预 定 义 的 异 常 处 理 函 数 有 : MPI_ERRORS_ARE_FATAL 和
MPI_ERRORS_RETURN。
参看MPI_Errhandler_create和MPI_Errhandler_free等。
int MPI_Errhandler_get(MPI_Comm comm,MPI_Errhandler *errhandler)
获取通信器 comm的异常处理函数, errhandler返回异常处理函数的句柄。
参看MPI_Errhandler_create和MPI_Errhandler_free等。
int MPI_Error_string(int errorcode, char *string,int *resultlen)
获取指定错误码的错误信息(字符串)。string的长度必须不小于
MPI_MAX_ERROR_STRING。
int MPI_Error_class(int errorcode, int *errorclass)
获取指定错误码的错误类。
附 3.4 点对点通信函数
附3.4.1 阻塞型通信函数
int MPI_Send(void *buf, int count, MPI_Datatype datatype,int dest, int tag,
MPI_Commcomm)
阻塞型消息发送。参数 buf为发送缓冲区;count为发送的数据个数;datatype为发
送的数据类型;dest为消息的目的地址(进程号),其取值范围为0 到np-1间的整数(np
代表通信器 comm中的进程数) 或MPI_PROC_NULL;tag 为消息标签,其取值范围为 0
到MPI_TAG_UB间的整数;comm为通信器。
int MPI_Recv(void *buf, int count, MPI_Datatype datatype,int source, int tag,
MPI_Commcomm,MPI_Status *status)
阻塞型消息接收。参数buf 为接收缓冲区;count为数据个数,它是接收数据长度的
上限,具体接收到的数据长度可通过调用MPI_Get_count函数得到;datatype为接收的数
据类型;source为消息源地址(进程号),其取值范围为0 到np-1 间的整数(np代表通信
器 comm 中的进程数),或MPI_ANY_SOURCE,或MPI_PROC_NULL;tag 为消息标签,
其取值范围为 0到MPI_TAG_UB间的整数或MPI_ANY_TAG;comm为通信器;status
返回接收状态,参看MPI_Status。
int MPI_Sendrecv(void *sendbuf, int sendcnt,MPI_Datatype sendtype, int
dest,int sendtag,
void *recvbuf, int recvcnt,MPI_Datatype recvtype, int
source,int recvtag,
MPI_Comm comm,MPI_Status *status)
该函数将一次发送调用和一次接收调用合并进行,它使得MPI程序更为简洁。更重要的是,
它能够避免阻塞型通信函数由于消息收发配对不好而引起的程序死锁。使用该函数的一个限
制是 sendbuf和 recvbuf必须指向不同的缓冲区。各参数与MPI_Send和MPI_Recv 中的
参数相对应。
int MPI_Sendrecv_replace(void *buf, int count,MPI_Datatype datatype, int
dest,int sendtag,
int source,int recvtag, MPI_Comm comm,MPI_Status
*status)
该函数的功能与MPI_Sendrecv类似,但收发使用同一缓冲区。
int MPI_Bsend(void *buf, int count, MPI_Datatype datatype,int dest, int tag,
MPI_Comm comm)
阻塞型缓冲模式消息发送,各参数的含义与MPI_Send同。该函数将 buf中的数据拷
贝到事先指定的缓冲区中然后立即返回,实际发送由MPI系统在后台进行。在调用该函数
前必须调用MPI_Buffer_attach 函数来指定发送缓冲区。各参数的含义与MPI_Send函数
相同。
int MPI_Buffer_attach(void *buffer, int size)
指定 buffer做为MPI_Bsend 使用的缓冲区,缓冲区的最大长度为 size字节。MPI只
允许提交一个供MPI_Bsend使用的缓冲区,应该保证该缓冲区足够容下用MPI_Bsend 发
送的消息(每个消息所需的缓冲区长度通常等于消息中数据的长度加上一个常量,可以调用
函数MPI_Type_size来查询一个消息实际需要的缓冲区长度)。
int MPI_Buffer_detach(void *bufferptr, int *size)
撤销在此之前通过MPI_Buffer_attach函数提交的缓冲区。在调用MPI_Buffer_detach
前不应该修改缓冲区中的内容,以免破坏正在发送的消息。该函数的返回表明所有缓冲模式
的消息发送均已完成。注意该函数中bufferptr和 size均为输出参数。其中bufferptr返
回所撤销的缓冲区的地址,而 size则返回所撤销的缓冲区的长度。
int MPI_Probe(int source, int tag, MPI_Commcomm,MPI_Status *status)
该函数等待一个符合条件的消息到达然后返回。参数source、tag和comm的含义与
MPI_Recv函数相同,status返回所到达的消息的有关信息。
int MPI_Ssend(void *buf, int count, MPI_Datatype datatype,int dest, int tag,
MPI_Comm comm)
略。
int MPI_Rsend(void *buf, int count, MPI_Datatype datatype,int dest, int tag,
MPI_Commcomm)
略。
附3.4.2 非阻塞型通信函数
int MPI_Isend(void *buf, int count, MPI_Datatype datatype,int dest, int tag,
MPI_Commcomm,MPI_Request *request)
非阻塞型消
本文档为【MPI参考手册】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。