MPI基本概念

  MPI 简介
  MPI( Message Passing Interface )是一种基于消息传递的并行程序设计标准,它明确定义了一整套用户接口,而对于具体实现,除了给出了建议以外,并没有太多的限制。由于它在标准化方面所进行的努力,它已经成为了消息传递并行程序程序设计的代表和事实上的标准。

  在MPI标准的制定过程中,制定者希望MPI能够达到下面的三个目标:
  ● 较高的通信性能
  ● 较好的程序可移植性
  ● 可以满足消息传递程序设计的各种要求

  MPI的语言绑定
  由于MPI是一个库而不是一种程序语言,因此对MPI的使用必须和特定的程序语言结合起来进行。通常情况下,对一个MPI的实现,对FORTRAN和C语言的支持是基本的要求。

  在MPI-1标准中明确的提出了MPI和FORTRAN77与C语言的绑定,并且给出了通用接口和针对FORTRAN77与C语言的专用接口说明。由于Fortran90和C++语言在并行程序中的应用逐渐广泛,因此在MPI-2中又加入了对Fortran 90和C++语言的绑定说明。

  绑定的概念可以用一个MPI标准中函数接口的声明来说明:
  MPI_COMM_RANK( comm, rank )
  IN comm
  OUT rank

  int MPI_Comm_rank( MPI_Comm comm, int *rank )

  MPI_COMM_RANK( COMM, RANK, IERROR )
  INTEGER COMM, RANK, IERROR

  这个函数用于得到当前进程标识:
  前三行是语言独立的说明,它给出了函数的名称,参数名称和参数的属性(IN/OUT说明),中间一行是该函数的C语言绑定,最后两行是FORTRAN语言绑定。:

  MPI实现
  在实际的系统中,MPI以程序库的形式出现,通过库函数接口给用户提供MPI规范定义的功能。这样的库被称为MPI实现。

  目前主要的MPI实现
  MPICH是一种最重要的MPI实现(从http://www.mcs.anl.gov/mpi/mpich可以免费得到)。MPICH对MPI标准的支持基本上与官方的MPI标准的发表同步。它的名称是MPI和Chameleon两个词的合体,因为最初的MPICH的实现使用Chameleon消息传递系统。除了必要的MPI功能外,MPICH包还包括了一系列的工具,比如专用的图形库和性能可视化工具等等。由于MPICH提供源码,它还被广泛的用于研究。