获取当前时间

在插入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. [设计模式] 8 组合模式 Composite

    DP书上给出的定义:将对象组合成树形结构以表示“部分-整体”的层次结构.组合使得用户对单个对象和组合对象的使用具有一致性.注意两个字“树形”.这种树形结构在现实生活中随处可见,比如一个集团公司,它有一 ...

  2. PHP之list()函数讲解

    定义和用法 list() 函数用数组中的元素为一组变量赋值. 注意,与 array() 类似,list() 实际上是一种语言结构,不是函数. 语法 list(var1,var2...) 参数 描述 v ...

  3. switch_to 理解

    最近看linux0.11源码时,看到任务切换函数switch_to,感觉很晦涩,于是在网上查了一些资料,现在终于有些眉目,特记录于此,以方便大家参考,有什么错误或不足之处,还请大家指出~ switch ...

  4. URAL 1297 Palindrome 最长回文子串

    POJ上的,ZOJ上的OJ的最长回文子串数据量太大,用后缀数组的方法非常吃力,所以只能挑个数据量小点的试下,真要做可能还是得用manacher.贴一下代码 两个小错,一个是没弄懂string类的sub ...

  5. 【hadoop2.6.0】一句话形容mapreduce

    网上看到的: We want to count all the books in the library. You count up shelf #1, I count up shelf #2. Th ...

  6. 恢复mdf文件到数据库方法

    CREATE DATABASE crm_testdb1 ON (FILENAME = N'C:\e527051\crm_testdb\crm_testdb_20121104.mdf')FOR ATTA ...

  7. hdu1102

    http://acm.hdu.edu.cn/showproblem.php?pid=1102 最小生成树(模板题) 3 0 990 692 990 0 179 692 179 0 1 1 2 一共3个 ...

  8. aircrack-ng 字典破解WPA / WPA2

    1. 安装 首先安装两个扩展sudo apt-get install build-essentialsudo apt-get install libssl-dev 然后到http://download ...

  9. java使用Apache POI操作excel文件

    官方介绍 HSSF is the POI Project's pure Java implementation of the Excel '97(-2007) file format. XSSF is ...

  10. QString转换成LPCWSTR

    不知道大家用QT做什么程序,但应该还是Windows程序居多吧,仍免不了与WINAPI打交道.这就要求数据类型要与Windows一致,而QT的数据类型却是自成一体的.这就需要转换.比如我用到了Logo ...