目录
上一节我们介绍了MPI进程组和通信域的相应管理接口的使用方法,本节我们继续对剩余内容进行介绍。
一、组间通信域
组间通信域是一种特殊的通信域,该通信域包括两个进程组,通过组间通信域实现这两个不同进程组内进程之间的通信。一般把调用进程所在的进程组叫做本地组,把另一个组叫做远程组。
1、MPI_COMM_TEST_INTER
MPI_COMM_TEST_INTER判断给定的通信域是组内通信域还是组间通信域,如果是组间通信域则返回true,否则返回false。
MPI_COMM_TEST_INTER(comm, flag)
IN comm 通信域(句柄)
OUT flag 测试结果(逻辑值)
//c语言的说明
int MPI_Comm_test_inter(MPI_Comm comm, int *flag)
//Fortran语言的说明
MPI_COMM_TEST_INTER(COMM, FLAG, IERROR)
INTEGER COMM, FLAG, IERROR
2、MPI_COMM_REMOTE_SIZE
MPI_COMM_REMOTE_SIZE返回组间通信域内远程进程组的进程个数。
MPI_COMM_REMOTE_SIZE(comm, size)
IN comm 通信域(句柄)
OUT size comm的远程组中进程的个数(整数)
//c语言的说明
int MPI_Comm_remote_size(MPI_Comm comm, int *size)
//Fortran语言的说明
MPI_COMM_REMOTE_SIZE(COMM, SIZE, IERROR)
INTEGER COMM, SIZE, IERROR
3、MPI_COMM_REMOTE_GROUP
MPI_COMM_REMOTE_GROUP返回组间通信域中的远程进程组。
MPI_COMM_REMOTE_GROUP(comm, group)
IN comm 通信域(句柄)
OUT group comm的远程组(句柄)
//c语言的说明
int MPI_Comm_remote_group(MPI_Comm comm, MPI_Group *group)
//Fortran语言的说明
MPI_COMM_REMOTE_GROUP(COMM, GROUP, IERROR)
INTEGER COMM, GROUP, IERROR
4、MPI_INTERCOMM_CREATE
MPI_INTERCOMM_CREATE调用创建一个组间通信域,它包括两个通信域,其形成方式是,每个进程提供自身所在的一个通信域local_comm中特定进程的标识local_leader(同一个本地进程组中的进程给出的local_leader必须相同),同时给出另一个通信域中特定进程在peer_comm中的标识remote_leader(同一个本地进程组中的进程给出的remote_leader也必须相同),形成相同组间通信域的进程必须提供相同的tag,在这里tag不允许是MPI_WILD_TAG。一般地,用MPI_COMM_WORLD的复制品来作为peer_comm。
MPI_INTERCOMM_CREATE(local_comm, local_leader, peer_comm, remote_leader, tag, newintercomm)
IN local_comm 本地组内通信域(句柄)
IN local_leader 本地组内特定进程的标识号(整型)
IN peer_comm “对等”通信域,仅在local_leader中有意义(句柄)
IN remote_leader 远程组特定进程在peer_comm中对应的标识号(整型)
IN tag “安全”标志(整型)
OUT newintercomm 返回的新组间通信域(句柄)
//c语言的说明
int MPI_Intercomm_create(MPI_Comm local_comm, int local_leader, MPI_Comm peer_comm, int remote_leader, int tag, MPI_Comm *newintercomm)
//Fortran语言的说明
MPI_INTERCOMM_CREATE(LOCAL_COMM, LOCAL_LEADER, PEER_COMM, REMOTE_LEADER, TAG, NEWINTERCOMM, IERROR)
INTEGER LOCAL_COMM, LOCAL_LEADER, PEER_COMM, REMOTE_LEADER