MPI并行程序设计学习整理

来源:互联网 发布:网络质量监控 美团 编辑:程序博客网 时间:2024/06/04 20:14

时间坐标:2017.06 大三下

MPI并行编程是在大数据处理中很有意义的方法,能够在串行的基础上提高程序运行的效率,并行的去计算海量的数据。
这篇文章可能会随着学习的深入不断的更新~

  1. Introduction to MPI
    学MPI的时候,老师首先给我们回顾了一下并行编程的一些模式:
    并行可以分为两种:一种是任务并行,另一种是数据并行,根据这两种性质可以分为以下4种模式:
    SIMD(Single Instruction Multiple Data):单指令多数据模式
    SPMD(Single Program Multiple Data):单程序多数据模式 (这种貌似是最常用的模式)
    MIMD(Multiple Instruction Multiple Data):多指令多数据模式
    MPMD(Multiple Program Multiple Data):多程序多数据模式

    然后介绍到底什么是MPI:
    MPI——Message Passing Interface 信息传递接口
    这里直接把百度百科放过来:
    MPI是一个跨语言的通讯协议,用于编写并行计算机。支持点对点和广播。MPI是一个信息传递应用程序接口,包括协议和和语义说明,他们指明其如何在各种实现中发挥其特性。MPI的目标是高性能,大规模性,和可移植性。MPI在今天仍为高性能计算的主要模型。
    主要的MPI-1模型不包括共享内存概念,MPI-2只有有限的分布共享内存概念。 但是MPI程序经常在共享内存的机器上运行。在MPI模型周边设计程序比在NUMA架构下设计要好因为MPI鼓励内存本地化。
    尽管MPI属于OSI参考模型的第五层或者更高,他的实现可能通过传输层的sockets和Transmission Control Protocol (TCP)覆盖大部分的层。大部分的MPI实现由一些指定惯例集(API)组成,可由C,C++,Fortran,或者有此类库的语言比如C#, Java or Python直接调用。MPI优于老式信息传递库是因为他的可移植性和速度。

与OpenMP并行程序不同,MPI是一种基于信息传递的并行编程技术。消息传递接口是一种编程接口标准,而不是一种具体的编程语言。简而言之,MPI标准定义了一组具有可移植性的编程接口。

2.有关MPI的初始化和常用函数
以下几个基本是MPI每个程序都会有的,
① MPI_Comm comm = MPI_COMM_WORLD;
② MPI_Comm_Init(&argc,&argv); //初始化MPI执行环境,建立多个MPI进程之间的联系,为后续通信做准备
③MPI_Comm_Rank(comm,&rank); //用来标识各个MPI进程,给出调用该函数的进程的进程号,返回整型的错误值。两个参数:MPI_Comm类型的通信域,标识参与计算的MPI进程组; &rank返回调用进程中的标识号
④ MPI_Comm_Size(comm,&size); //用来标识相应进程组中有多少个进程
⑤ MPI_Finalize(); //结束MPI执行环境

阅读全文
0 0
原创粉丝点击