获取当前时间

在插入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 ...

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

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

  3. c语言各常用函数,c语言常用函数速查手册 pdf

    C语言常用函数速查手册是一本非常全面系统的讲述了学习c语言相关的常用函数,包括常见的350多个常用函数,且每一个常用函数后面都会有一个经典的示例帮助更快掌握C语言,欢迎下载. 图书简介: 为了方便查找 ...

  4. 【收藏】Linux系统常用命令速查手册(附赠PDF档)

    给大家收集整理了日常常用的Linux系统命令,仅供大家参考. 大家如果觉得文章看起来不太方便,获取<Linux系统常用命令速查手册>.PDF版. 联系小姐姐,备注"liunx命令 ...

  5. 【收藏】Linux系统常用命令速查手册(附PDF下载链接)

    给大家收集整理了日常常用的Linux系统命令,仅供大家参考. 大家如果觉得文章看起来不太方便,可以在+qq. 2 3 5 53 3 1 0 4 6 备注"liunx命令",即可获取 ...

  6. 全套Python数据分析常用命令速查表!PDF文档限时分享

    当下利用python学习数据分析的热度越来越高,对于很多新手而言,大量要学习的库和工具的命令繁杂,用起来不是很顺手. 今天给大家分享一份python数据分析常用命令速查表. 一共6张表,包括:Jupy ...

  7. 51单片机常用寄存器速查

    51单片机常用寄存器速查表 一 : 定时器 / 计数器方式选择 : TMOD 地址 (89H) 不可位寻址 D7 D6 D5 D4 D3 D2 D1 D0 GATE C/T M1 M0 GATE C/ ...

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

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

  9. linux常用命令速查手册PDF下载

    Linux常用命令速查手册 需要该PDF文档的朋友扫码关注下方二维码[入门小站],后台回复 「1001」 自取 点击下面标题即可获取对应资料 LeetCode刷题开源手册 LeetCode题解[jav ...

最新文章

  1. @NotNull-JSR-303验证
  2. Ethernet/IP 学习笔记二
  3. WeChat生成授权的token:md5(随机字符串+时间戳+盐值)
  4. 广度优先遍历算法-01寻找制高点问题
  5. Animate.css介绍
  6. 从GAN到WGAN到LipschitzGA
  7. 解决苹果os 10.9 和 parallels desktop 8 兼容问题
  8. 关于推送的一些记录要点
  9. 设计师找灵感?集设用作品打动世界的窗口
  10. 浙大PAT甲级1027. Colors in Mars (20)
  11. 安卓系统的文件管理神器Solid Explorer(v2.2)
  12. HBase的数据迁移(含HDFS的数据迁移)
  13. c语言 转义字符双写,谭浩强C语言程序设计习题集
  14. linux系统小米球(ngrok)实现内网穿透
  15. 使用深度学习进行表检测、信息提取和构建
  16. Java算法:LeetCode算法Java版合集1111-1588题
  17. Bypass UAC 提权
  18. 【无标题】c++日常练习(16)——从中序与前序遍历序列构造二叉树
  19. C++OpenCV系统学习(17)——图像分割与抠图(4)Grabcut
  20. 如何加粗线条html,PS线条如何加粗,加深?

热门文章

  1. 这个瑞士的项目没法在今年三月申请,因为我需要护照并且这个项目在人文社科学员下面,886
  2. php使用CURL不依赖COOKIEJAR获取COOKIE的方法
  3. NLP的一些学习资料
  4. html5/css3响应式页面开发总结
  5. 托管数据中心之间的PUE比较(下)
  6. web04--cookie
  7. Btrace详细指南(JDK7,监控HashMap扩容)
  8. MySQL数据类型:UNSIGNED注意事项
  9. USACO crypt1
  10. Android中实现不同文字颜色和图文混排的Span总结