1、初始化函数
int MPI_Init(int *argc, char*** argv) argc 变量数目 argv 变量数组
MPI_Init是MPI程序的第一个调用,它完成MPI程序所有的初始化工作,所有的MPI程序并行部分的第一条可执行语句都是这条语句,这条语句标志着程序并行部分的开始。该函数的返回值为调用成功标志。同一程序中只能调用一次。
2、结束函数
int MPI_finalize()
MPI_Finalize是MPI程序的最后一个调用,它结束MPI程序的运行。他是MPI程序的最后一条可执行语句,否则程序的运行结果是不可预知的,她标志着并行程序的结束,这条语句之后的代码仍然可以进行串行程序的运行。
3、获取当前进程标识函数
int MPI_Comm_rank(MPI_Comm comm ,int* rank) comm 该进程所在的通信域句柄 rank 调用这一函数的进程在通信域中的标识号
这一调用通过指针返回调用该函数的进程在给定的通信域中的进程标识号。有了这一标识号,不同的进程就可以将自身和其他的进程区别开来,实现各进程的并行和协作。
4、获取通信域包含的进程总数函数
int MPI_Comm_size(MPI_Comm comm ,int* size) comm 通信域句柄 size 通信域comm内包含的进程总数
这一调用返回给定的通信域中所包括的进程的总个数,不同的进程通过这一调用得知在给定的通信域中一共有多少个进程在并行执行。
5、消息发送函数
int MPI_Send(void* buf , int cout , MPI_Datatype datatype , int dest , int tag , MPI_Comm comm) buf 发送缓冲区的起始地址(可选类型) count 将发送的数据个数(非负整数) datatype 发送数据的数据类型(句柄) dest 目的进程标识号(整型) tag 消息标志(整型) comm 通信域(句柄)
6、消息接收函数
int MPI_Recv(void* buf , int count , MPI_Datatype datapyte , int source , int tag , MPI_Comm comm , MPI_Status* status) buf 接收缓冲区的起始地址(可选类型) count 最多接收的数据个数(非负整数) datatype 接收数据的数据类型(句柄) source 接收数据的来源进程标识号(整型) tag 消息标识与相应的发送操作的表示相匹配(整型) comm 本进程和发送进程所在的通信域(句柄) status 返回状态(状态类型)
7、计时功能
double MPI_Wtime(void) double starttime , endtime; ... starttime = MPI_Wtime() 需计时部分: endtime = MPI_Wtime() 时间:endtime - starttime
8、同步故障
int MPI_Barrier(MPI_Comm comm) comm 通信域(句柄)
MPI_Barrier阻塞通信域中所有调用了本函数的进程,直到所有的调用者都调用了它,进程中的调用才可以返回,该函数用于对各进程实施同步。
9、数据规约函数
int MPI_Reduce(void* sendbuf , void* recvbuf , int count , MPI_Datatype datatype, MPI_Op op , int root , MPI_Comm comm) sendbuf 发送消息缓冲区的起始地址(可选数据类型) recv 接收消息缓冲区的地址(可选数据类型) count 发送消息缓冲区的数据个数(整型) datatype 发送消息缓冲区的元素类型(句柄) op 规约操作符(句柄) root 根进程序列号(整型) comm 通信域(句柄)