MPI最基本函数整理
MPI-1共有128个调用接口,MPI-2共有287个调用接口。整体上MPI是非常庞大的,但是,从理论上说,MPI所有的通信功能可以用它的最基本的6个调用来实现。
int MPI_Init(int *argc, char ***argv)
功能:MPI_Init
是MPI程序的第一个调用,完成MPI程序初始化工作,通过获取main
函数的参数,让每一个MPI进程都能获取到main
函数的传入参数信息。
int MPI_Finalize(void)
功能:MPI_Finalize
是MPI程序的最后一个调用,清除全部MPI环境,必须要有,否则程序的运行结果不可预知。
int MPI_Comm_rank(MPI_Comm comm, int *rank)
功能:这一调用用于获取调用进程在给定的通信域中的进程标识号,每个进程有了标识号之后,不同的进程才可以将自己与其他进程进行区分,实现进程的并行与协作。
int MPI_Comm_size(MPI_Comm comm, int *size)
功能:这一调用返回给定的通信域中所包含的进程总数,不同的进程通过这一调用知道在给定的通信域中一共有多少个进程在并行执行。
int MPI_Send(void* buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm)
功能:将发送缓冲区buf中的count个datatype数据类型的数据,发送给comm通信域中的标识号为dest,消息标志为tag的进程。
int MPI_Recv(void* buf, int count, MPI_Datatype datatype, int source, int tag, MPI_Comm comm, MPI_Status *status)
功能:从comm通信域中标识号为source的进程,接收消息标记为tag,消息数据类型为datatype,个数为count消息并存储在buf缓冲区中,并将该过程的状态信息写入status中。
其他常见:
double MPI_Wtime(void)
功能:记录时间
例:
#include <iostream>
#include <vector>
#include <map>
#include <mpi.h>
using namespace std;<