##1、MPI程序基本结构

注意,所有的MPI标识符,包括函数标识符,都以MPI前缀开头,后面紧跟一个大写字母和一系列小写字母以及下划线。所有的MPI常数都是以MPI开头的大写字母和下划线的字符串。
##2、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_rank
int MPI_Comm_rank(MPI_Comm comm, int* rank)

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

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

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

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

  • 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)

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

04-MPI几个基本函数相关推荐

  1. Ubuntu 16.04 安装 MPI(Message Passing Interface)

    参考 MPI 安装在 Ubuntu16.04 1. 下载源文件 镜像网站 https://www.mpich.org/static/downloads/3.3.2/ 官方网站 http://www.m ...

  2. 虚拟机ubuntu14.04编译MPI版本NAMD

    最近,尝试用ubuntu编译NAMD,由于以前对NAMD完全未接触过,也不懂该专业的相关知识,因此作为一个外行人尝试编译NAMD,这里记录一下粗略过程: 1.首先,需要搭建MPI并行环境:http:/ ...

  3. 用gdb调试mpi程序的一些心得

    Linux下MPI (Message Passage Interface) 的程序不太好调试,在windows下vs2005以上的IDE有集成的简便MPI调试工具,没有用过,有兴趣的可以试验一下.下面 ...

  4. Ubuntu 18.04 LTS安装配置驱动、CUDA9.1和Amber18 AmberTools18

    目录 1. 环境 2. 驱动安装 2.1 驱动下载:https://www.nvidia.com/download/driverResults.aspx/132541/ 2.2.删除原有NVIDIA驱 ...

  5. 扩增子分析QIIME. 3以管理员安装QIIME1.9.1至Ubuntu16.04

    Install QIIME 1.9.1 on Ubuntu 16.04 Desktop LTS x64 所有公共软件.数据库,全部以yongxin(我的用户名)用户安装,为使计算机所有用户使用,此用户 ...

  6. Ubuntu16.04 安装 OpenMPI4.0.0

    Ubuntu16.04 安装 OpenMPI4.0.0 文章目录 OpenMPI 简介 一.OpenMPI 1.0.0版本下载 二.OpenMPI 安装步骤 1.解压并进行配置 2.Build 并安装 ...

  7. 编译分布式并行版caffe(Open MPI)教程

    caffe版本:https://github.com/yjxiong/caffe 使用环境: 1 CentOS release 6.6 (Final) 2 CUDA8.0 3 CuDNN6.0 4 O ...

  8. MPI编程及性能优化

    第1节 MPI简介 1.1 MPI及其历史 与OpenMP相似,消息传递接口(Message Passing Interface,简称MPI)是一种编程接口标准,而不是一种具体的编程语言.该标准是由消 ...

  9. 多台工作站搭建MPI并行环境

    因为所作研究工作计算量真是太大了,一台z840的48核工作站还是感觉有点慢,所以就想着自己搭建一个小的集群环境,正好办公室里面有台人家不用z800,所以就拿过来试了一下. 折腾了两天,终于在两台hp ...

  10. Ubuntu 15.04 安装 boost-python

    1. 安装依赖库 sudo apt-get install python-dev sudo apt-get install mpi-default-dev #安装mpi库 sudo apt-get i ...

最新文章

  1. mysql 5.6 innodb_MYSQL 5.6中禁用INNODB引擎
  2. C#-DataSet和DataTable详解
  3. Swift - 使用CoreLocation实现定位(经纬度、海拔、速度、距离等)
  4. java堆栈句柄,深入了解JVM—内存区域
  5. Yolo家族算法分析
  6. centos python_在centos上配置python的虚拟开发环境
  7. Unity3D卡牌手游《X三国》源码前后端完整下载安卓+IOS双端
  8. 视频教程-【深入理解计算机网络】讲师解读计算机网络原理视频课程(上)-计算机网络
  9. js日期转换成时间戳
  10. 软考-高项计算1--投资回收周期计算(涉及概念:投资回收期 折现因子 净现值 累计净现值 现金流 累计净现金流)
  11. Oracle技巧:如何诊断一些未预料的 Oracle 错误(ORA-NNNN)
  12. 用unity制作2d钟表
  13. Java精品文章收藏(百度文库)
  14. 计算机网络本直通线的制作方法,一种用于计算机网络对接网线接头的制作方法...
  15. EXCEL中的数据分析—抽样分析
  16. 狼书三卷终大成,狼叔亲传Node神功【留言送书】
  17. php算命,GitHub - baidan/efairy: 基于php的算命网站
  18. Flowable实战-Camel使用
  19. 创建和调用存储过程:查询Stu数据库中某个同学的选修课程的信息,包括学号,姓名,课程名称,成绩
  20. 初识 Box2D世界

热门文章

  1. 解决u盘不能格式化的问题
  2. android html footer 固定,HTML5+CSS把footer固定在底部
  3. Six Sigma Basics
  4. 电脑计算机睡眠时间设置为永不熄灭后,电脑仍会熄屏,重新唤醒时出现在登录界面怎么办?
  5. 关于数据导出成excel表
  6. oracle判断日期为月末,ORACLE查询月初和月底时间
  7. vue.js中文社区Demo:vue全家桶,muse-ui
  8. .gitignore文件
  9. 2、股权融资 - 打造企业上市系列文章
  10. 复制微信号并打开微信_理解信号并不那么复杂