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

简介: 本节书摘来华章计算机《并行计算的编程模型》一书中的第1章 ,第1.2节, [(美)帕万·巴拉吉(Pavan Balaji)编著;张云泉等译,更多章节内容可以访问云栖社区“华章计算机”公众号查看。

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语言。

相关文章
|
1月前
|
缓存 并行计算 算法
MPI并行计算的基本介绍和使用
MPI并行计算的基本介绍和使用
42 1
|
分布式计算 资源调度 并行计算
并行计算框架MapReduce编程模型
思想:分而治之 map:对每一部分进行处理 reduce :汇总map结果 map是MapReduce最核心的。 mapreduce编程模型 一种分布式计算模型,解决海量数据计算问题 MapReduce把整个并行计算的过程抽象到两个函数,map和reduce函数。
1470 0
|
并行计算
《并行计算的编程模型》一1.10 MPI开发心得
本节书摘来华章计算机《并行计算的编程模型》一书中的第1章 ,第1.10节, [(美)帕万·巴拉吉(Pavan Balaji)编著;张云泉等译,更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1835 0
|
并行计算
《并行计算的编程模型》一1.3 点对点通信
本节书摘来华章计算机《并行计算的编程模型》一书中的第1章 ,第1.3节, [(美)帕万·巴拉吉(Pavan Balaji)编著;张云泉等译,更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1289 0
|
并行计算 算法 API
《并行计算的编程模型》一导读
对于正在编程的程序员,编程模型可被看作一台虚拟机,并可通过编程语言和函数库实现。如果某个编程模型成为计算机科学研究中的热点,需要具有以下特性:高效性(易于描述各种抽象算法)、移植性(兼容各种硬件计算平台)、高性能(高效均衡地利用硬件平台的计算能力)、通用性(广泛地描述各种算法)。
3301 0
|
并行计算
《并行计算的编程模型》一1.11 总结
本节书摘来华章计算机《并行计算的编程模型》一书中的第1章 ,第1.11节, [(美)帕万·巴拉吉(Pavan Balaji)编著;张云泉等译,更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1021 0
|
并行计算 索引
《并行计算的编程模型》一2.3.1 开始和结束
本节书摘来华章计算机《并行计算的编程模型》一书中的第2章 ,第2.3.1节, [(美)帕万·巴拉吉(Pavan Balaji)编著;张云泉等译,更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1061 0
|
并行计算
《并行计算的编程模型》一1.8 并行I/O
本节书摘来华章计算机《并行计算的编程模型》一书中的第1章 ,第1.8节, [(美)帕万·巴拉吉(Pavan Balaji)编著;张云泉等译,更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1923 0
|
并行计算
《并行计算的编程模型》一3.5.2 RMA函数使用
本节书摘来华章计算机《并行计算的编程模型》一书中的第3章 ,第3.5.2节, [(美)帕万·巴拉吉(Pavan Balaji)编著;张云泉等译,更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1154 0
|
并行计算 安全
《并行计算的编程模型》一1.9 其他特性
本节书摘来华章计算机《并行计算的编程模型》一书中的第1章 ,第1.9节, [(美)帕万·巴拉吉(Pavan Balaji)编著;张云泉等译,更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1419 0