《并行计算的编程模型》一1.2 MPI基础

1.2 MPI基础

MPI的核心是进程间通信,遵循进程间顺序通信模型(CSP)。每个进程在自己的地址空间内运行程序。声明的变量(例如int b[10];)是每个进程的私有变量,变量b在不同的进程中是相互独立的。在MPI中,存在两种主要的通信方式:一是点对点通信,即两个进程间通信;二是聚合通信,即一组进程间通信。
每个MPI进程在每组进程中拥有1个进程号。进程号从0开始,例如4个进程在一组,进程号分别是0、1、2、3。所有的MPI通信都在通信域中进行。通信域包含一组进程和一个(隐藏的)通信文本。通信文本的作用在于保证消息和库的一致性,也是保证MPI应用程序能够使用第三方库的关键。通信域对象是一个隐藏类型,可称之为句柄。在C语言中,通信域句柄是MPI_Comm类型;在Fortran语言中,通信域句柄是TYPE(MPI_Comm)类型(针对Fortran 2008语言)或者INTEGER类型(针对早期的Fortran语言)。在MPI程序中,存在MPI_COMM_WORLD和MPI_COMM_SELF两个预定义的通信域。MPI_COMM_WORLD包含所有MPI进程,MPI_COMM_SELF仅包含运行一个实例程序的进程。MPI提供各种通信域函数,例如MPI_Comm_rank函数用于获取进程号,MPI_Comm_size函数用于获取通信域中的进程数量,以及用于创建新的通信域的函数。
一个简单完整的MPI程序示例如图1-1所示。在图1-1中,MPI_Init函数用于初始化MPI程序,MPI_Finalize函数用于结束MPI程序。除了极个别函数,大多数MPI函数需要在MPI_Init(或者MPI_Init_thread)函数之后和MPI_Finalize函数之前进行调用。在并行程序中,若MPI_Init函数参数无法从main函数中获取命令行参数,则需要通过MPI进行指定。

screenshot

MPI进程间执行是相互独立的。在图1-1例子中,printf语句按照随机顺序执行,甚至无法保证一次输出一行。
图1-1的例子采用C语言编写,但MPI设计为不专门针对特定的语言。目前,MPI支持C语言(C++程序可调用C语言的接口)和Fortran语言。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
中文版mpi编程手册 写得很详细 都志辉编著 李三立审阅 陈渝刘鹏 校对 本书介绍目前最常见的并行程序—MPI并行程序的设计方法它适合高校三四年级本科 生非计算机专业研究生作为教材和教学自学参考书也适合于广大的并行计算高性能计 算用户作为自学参考书使用对于有FORTRAN和C编程经验的人员都可以阅读并掌握 本书的内容 首先介绍了并行程序设计的基础提供给读者进行并行程序设计所需要的基本知识然 后介绍了MPI的基本功能从简单的例子入手告诉读者MPI程序设计的基本过程和框架 这一部分是具有C或/FORTRAN串行程序设计经验的人员很容易理解和接受的接下来介绍 MPI程序设计的高级特征是已经掌握了MPI基本程序设计的人员进一步编写简洁高效的 MPI程序使用各种高级和复杂的MPI功能所需要的最后一部分介绍了MPI的最新发展和 扩充MPI-2 主要包括三个部分动态进程管理远程存储访问和并行文件读写 本书包括了MPI-1的全部调用和MPI-2的关键扩充部分的调用并附以大量的图表和示 例性程序对程序的关键部分给出了讲解或注释读者若能将例子和对MPI调用的讲解结合 起来学习会取得更好的效果 本书的目的不仅是教给读者如何去编写从简单到复杂的MPI并行程序更重要的是 希望在学习本书之后在读者以后解决问题的过程中能够树立并行求解的概念使并行方 法真正成为广大应用人员和程序开发员手中的重要工具

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值