获取当前时间

在插入MPI提供的头文件后,可以获得获取时间的函数。

double MPI_Wtime(void) 取得当前时间, 计时的精度由 double MPI_Wtick(void) 取得
作为对比,一般在C/C++中, 插入time.h,通过 clock_t clock(void) 取得当前时间, 计时的精度由常数 CLOCKS_PER_SEC 定义。

点到点通信函数

进程间的通信需要通过一个通信器来完成。MPI 环境在初始化时会自动创建两个通信器,一个称为 MPI_COMM_WORLD,它包含程序中的所有进程,另一个称为 MPI_COMM_SELF,它是每个进程独自构成的、仅包含自己的通信器。MPI 系统提供了一个特殊进程号 MPI_PROC_NULL,它代表空进程 (不存在的进程),与 MPI_PROC_NULL 进行通信相当于一个空操 作,对程序的运行没有任何影响。

使用MPI_Barrier(communicator)来完成同步

使用MPI_Send(message, size, data_type, dest_id, tag, communicator) 来把数据message封装起来成为真正的消息结构,向进程号为dest_id的进程发送数据,是否要先把消息存入缓冲区根据默认缓冲区的大小确定。

使用MPI_Bsend(message_data, size, data_type, dest_id, tag, communicator) 来发送数据,需要预先注册一个缓冲区,并调用MPI_Buffer_attach(buffer, buf_size)来供MPI环境使用

使用MPI_Buffer_attach(buffer, size)来把缓冲区buffer提交给MPI环境,其中buffer是通过malloc分配的内存块。

使用MPI_Buffer_detach(&buffer,&size)来确保传输的完成,尽量把detach和attach函数配对使用,正如尽可能同时使用malloc和free,同时使用Init和Finalize,防止遗漏!

使用MPI_Pack_size(size, data_type, communicator, &pack_size)来获取包装特定类型的数据所需要的缓冲区大小(还没有计入头部,所以真正缓冲区大小 buf_size = MPI_BSEND_OVERHEAD + pack_size,如果有多份数据发送,则buf_size还要叠加)。

使用MPI_Recv(message, size, data_type, src_id, tag, communicator, status)来接收数据,把已经到达接收缓冲区的数据解析到message数组中,只有全部数据都解析出来时,函数才返回。

tips:除了上述两种发送模式外,还有就绪通信MPI_Rsend()和同步通信MPI_Ssend(),参数都是一致的,函数的区别在于,如果已经保证接收动作在发送动作之前启动了(可以利用MPI_Barrier函数做到这一点),那么就可以使用MPI_Rsend()提高效率;如果需要保证接收动作发生后,发送动作才能返回,那么就使用MPI_Ssend()

tips:上面都是阻塞通信的方式,也就是调用这些函数的时候进程可能会阻塞。可以使用别的通信模式,或者使用多线程来改变这一点。

集合通信

MPI_Bcast广播,使得数据有p份拷贝

MPI_Scatter散发,每份数据只拷贝一次

MPI_Gather收集,每份数据只拷贝一次

MPI_Reduce归约

以后如果需要用到再写吧。

数据类型和预定义的量

用于作为参数的数据类型 MPI_INT, MPI_DOUBLE, MPI_CHAR, MPI_Status

预定义的量 MPI_STATURS_IGNORE, MPI_ANY_SOURCE, MPI_ANY_TAG

初始化与结束

使用MPI_Init(&argc, &argv)来初始化MPI环境,可能是一些全局变量的初始化。

使用MPI_Comm_rank(communicator, &myid)来获取当前进程在通信器中具有的进程号。

使用MPI_Comm_size(communicator, &numprocs)来获取通信器中包含的进程数目。

使用MPI_Finalize()来结束并行编程环境。之后我们就可以创建新的MPI编程环境了。

MPI编程的常用接口速查的更多相关文章

  1. Git 常用命令速查表(图文+表格)

    一. Git 常用命令速查 git branch 查看本地所有分支git status 查看当前状态 git commit 提交 git branch -a 查看所有的分支git branch -r ...

  2. Git 常用命令速查表(图文+表格)【转】

    转自:http://www.jb51.net/article/55442.htm 一. Git 常用命令速查 git branch 查看本地所有分支git status 查看当前状态 git comm ...

  3. 转收藏:Git常用命令速查表

    一. Git 常用命令速查 git branch 查看本地所有分支git status 查看当前状态 git commit 提交 git branch -a 查看所有的分支git branch -r ...

  4. Linux常用命令速查备忘

    Linux常用命令速查备忘   PS:备忘而已,详细的命令参数说明自己man 一. 启动,关机,登入,登出相关命令 [login] 登录 [logout] 登出 [exit] 登出 [shutdown ...

  5. web 开发:CSS3 常用属性——速查手册!

    web 开发:CSS3 常用属性——速查手册! CSS3 简介:http://www.runoob.com/css3/css3-intro.html 1.目录 http://caniuse.com/ ...

  6. Linux常用命令速查-汇总篇

    Linux常用命令速查-用户管理 Linux常用命令速查-文件管理 Linux常用命令速查-系统监控 Linux常用命令速查-网络管理 Linux常用命令速查-定时任务 Linux常用命令速查-Vim

  7. git 常用命令速查

    git 常用命令速查 命令速查表 一.克隆项目 把远程仓库上的项目克隆到本地.一般来说项目是有1个或2个分支,主要是做开发和线上的区别.既然所属分支不一样,那命令也会有一点区别.这里假设是有2个分支, ...

  8. 实用掌中宝--HTML&CSS常用标签速查手册 PDF扫描版

    实用掌中宝--HTML&CSS常用标签速查手册 内容推荐: 本书第一篇以语法和实例相结合的形式,详细讲解了HTML语言中各个元素及其属性的作用.语法和显示效果:第二篇从CSS基本概念开始,分别 ...

  9. Docker常用命令速查手册(华贵铂金版)

    原创声明:作者:Arnold.zhao  博客园地址:https://www.cnblogs.com/zh94 Docker常用命令速查手册 搜索仓库镜像 docker search nginx 获取 ...

随机推荐

  1. PhyreEngine3.8 MSAA resolution

    There is something wrong in PhyreEngine 3.8 to fullfill MSAA, actually, I think it is eqaa You have ...

  2. PAT-乙级-1052. 卖个萌 (20)

    1052. 卖个萌 (20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 萌萌哒表情符号通常由“手”.“眼”. ...

  3. [Unity3D+算法]一小时做个2048

    原地址:http://blog.csdn.net/dingxiaowei2013/article/details/36462749 048是继FlappyBird之后另一个比较热的轻量级的手游,简单易 ...

  4. hdu 1596 find the safest road(最短路,模版题)

    题目 这是用Dijsktra做的,稍加改动就好,1000ms..好水.. #define _CRT_SECURE_NO_WARNINGS #include<string.h> #inclu ...

  5. HDU 1540 / POJ 2892 Tunnel Warfare (单点更新,区间合并,求包含某点的最大连续个数)

    题意:一条线上有n个点,D x是破坏这个点,Q x是表示查询x所在的最长的连续的点的个数,R是恢复上一次破坏的点. 思路:这题的关键是查询. 将被毁的村庄看成空位,当查询某个点的时候,如果我们知道它左 ...

  6. spark在eclipse上配置

    环境:spark1.4.0,hadoop2.6.0 1.安装好jdk 2.在spark的conf目录下找到spark-env.sh.template,打开,在后面加上 export SCALA_HOM ...

  7. Struts2 常用的常量配置

    在struts2-core-2.1.8.1.jar的org.apache.struts2包下面的default.properties资源文件里可以查到常用的常量配置,这些不用刻意的记住:忘记的时候可以 ...

  8. nmap使用详解

    nmap是一个网络探测和安全扫描程序, 系统管理者和个人可以使用这个软件扫描大型的网络,获取那台主机正在运行以及提供什么服务等信息.nmap支持很多扫描技术,例如:UDP.TCP connect(). ...

  9. [Browsable(false)]

    1.c#方法上面的[Browsable(false)]是干吗用的? 答案:标明此对象不可被浏览,这样它就不会出现在设计器的属性窗口里了 看如下代码: /// <include file='Asp ...

  10. OpenStack重启之后,dashboard登录不上去

    ubuntu 12.04装好openstack之后,安装成功,终端打出如下信息: Horizon is now available at http://192.168.0.2/Keystone is ...