03-关于MPI不得不提的一些事

       在正式用MPI编程之前,我们再最后一次看一下和MPI有关的一些概念。

       MPI是一种消息传递编程模型,并成为这种编程模型的代表和事实上的标准,共有上百个函数调用接口,在Fortran和C语言中可以直接对这些函数进行调用。

1 、消息传递并行程序设计的特点

  • 每个并行进程均有自己独立的地址空间,相互之间访问不能直接进行,用户必须通过显式地发送和接收消息来实现处理机间的数据交换
  • 并行计算粒度大,适合大规模可扩展并行算法,适用于大规模并行处理机(MPP)和机群(Cluster)
  • 消息传递程序设计要求用户很好地分解问题,组织不同进程间的数据交换

2、进程与消息传递

2.1 进程

       进程与程序相联,程序一旦在操作系统中运行即成为进程。进程拥有独立的执行环境(内存、寄存器、程序计数器等),是操作系统中独立存在的可执行的基本程序单位。
       串行应用程序编译形成的可执行代码,分为“指令”和“数据”两个部分,并在程序执行时“独立地申请和占有”内存空间,且所有计算均局限于该内存空间。

2.2 单机内多个进程
  • 多个进程可同时存在于单机内同一操作系统。操作系统负责调度分时共享处理机资源(CPU、内存、存储、外设等)
  • 进程间相互独立(内存空间不相交)。在操作系统调度下各自独立地运行,例如多个串行应用程序在同一台计算机运行
  • 进程间可以相互交换信息。例如数据交换、同步等待,消息是这些交换信息的基本单位。消息传递是指这些信息在进程间的相互交换,是实现进程间通信的唯一方式,最基本的消息传递操作包括发送消息send、接受消息receive、进程同步barrier、归约reduction
2.3 进程组

       进程组(process group)指MPI 程序的全部进程集合的一个有序子集且进程组中每个进程被赋于一个在该组中唯一的序号(rank),用于在该组中标识该进程。序号的取值范围是[0,进程数-1]。

       进程序号(rank)用来在一个进程组或通信器中标识一个进程。

  • MPI 程序中的进程由进程组或通信器序号唯一确定,序号相对于进程组或通信器而言(假设np个处理器,标号0…np-1)
  • 同一个进程在不同的进程组或通信器中可以有不同的序号,进程的序号是在进程组或通信器被创建时赋予的
2.4 通信器

       通信器(communicator)理解为一类进程的集合即一个进程组,且在该进程组,进程间可以相互通信。

  • 任何MPI通信函数均必须在某个通信器内发生
  • MPI系统提供省缺的通信器MPI_COMM_WORLD,所有启动的MPI进程通过调用函数MPI_Init()包含在该通信器内;各进程通过函数MPI_Comm_size()获取通信器包含的(初始启动)的MPI进程个数
2.5 消息

       消息(message)分为数据(data)和包装(envelope)两个部分。包装由:接收进程序号/发送进程序号、消息标号和通信器三部分组成;数据包含用户将要传递的内容。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值