04-MPI几个基本函数

1、MPI程序基本结构

MPI程序基本结构
注意,所有的MPI标识符,包括函数标识符,都以MPI前缀开头,后面紧跟一个大写字母和一系列小写字母以及下划线。所有的MPI常数都是以MPI开头的大写字母和下划线的字符串。

2、MPI原始数据类型

MPI原始数据类型

3、MPI基本函数

  • MPI_Init
int MPI_Init(int*argc, char *argv[])

每一个被MPI程序调用的第一个MPI函数都是MPI_Init。该函数指示系统完成所有初始化工作,以备对后续MPI库的调用进行处理。

调用MPI_Init并不一定是程序中第一个执行语句。实际上,它甚至不需要放在main函数中。唯一的要求是MPI_Init要在调用任何MPI函数之前调用,除MPI_Initialized外。

在C接口中,MPI系统通过argc和argv得到命令行参数,并且会把MPI系统专用的参数删除,留下用户的解释参数。

  • MPI_Initialized
int MPI_Initialized(int* flag)

唯一可在MPI_Init前使用的函数,用来检测MPI系统是否已经初始化,已经调用MPI_Init,返回flag=true,否则返回flag=false

  • MPI_Comm_size
int MPI_Comm_size(MPI_Comm comm, int* size)

当MPI初始化后,每一个活动进程变成了一个叫MPI_COMM_WORLD的通信域中的成员。一个通信域是一个不透明的对象,提供了在进程之间传递消息的环境。在一个通信域内的进程是有序的,一个进程的序号便是它在整个排序中的位置。在一个有p个进程的通信域中,每一个进程有一个唯一的序号(ID号),取值为0~p-1

可以使用进程的序号来决定它负责计算和(或)数据集的哪一部分,进程可以通过调用函数MPI_Comm_size来确定它在通信域中的序号

  • MPI_Comm_rank
int MPI_Comm_rank(MPI_Comm comm, int* rank)

进程可以通过调用函数MPI_Comm_rank来确定一个通信域中的进程总数

  • MPI_Finalize
int MPI_Finalize(void)

退出MPI系统,在一个进程执行完其全部MPI函数调用后,将调用函数MPI_Finalize,从而让系统释放分配给MPI的资源(例如内存等)。

每个进程都必须调用,使用后不准许调用任何MPI函数,若不执行MPI退出函数,进程可能被悬挂,用户在调用该函数前,应确保非阻塞通讯结束。

  • MPI_Abort
int MPI_Abort(MPI_Comm comm, int errorcode)

异常终止MPI程序,在出现了致命错误而希望异常终止MPI程序时执行,MPI系统会设法终止comm通信器中的所有进程,输入整形参数errocode,将被作为进程的退出码返回给系统。

  • MPI_Get_processor_name
int MPI_Get_processor_name(char* name, int* resultlen)

获取处理器的名称,在返回的name中存储所在处理器的名称;resultlen存放返回名字所占字节。

应提供参数name不少于MPI_MAX_PROCESSOR_NAME个字节的存储空间。

  • MPI_Get_version
int MPI_Get_version(int* version, int* subversion)

获取MPI版本号,若MPI版本号为2.0, 则返回的version=2,subversion=0

  • MPI_Wtime
double MPI_Wtime(void)

获取墙上时间,返回调用时刻的墙上时间,用浮点数表示秒数;经常用来计算程序运行时间。

猜你喜欢

转载自blog.csdn.net/Sunshine8430/article/details/81289772
mpi