一、实验简介
1.1 实验目标
本节着重于介绍MPI的基本概念。如果你对MPI有充分的了解,可选择跳过本节。
1.2 实验环境要求
gcc/g++ 编译器
1.3 涉及知识点和基本知识
- MPI的概念
- MPI的历史
- 结语
二、实验步骤
2.1 MPI的概念
如今,分布式计算对于大众来说,就跟手机和平板电脑一样普及。很明显地,你应该认同这个观点。学习MPI确实可以让你的并行编程知识变得更深厚。
MPI,全称Message Passing Interface(消息传递接口),是业界定义的一种消息传递标准,用于编写并行计算的程序,广泛应用于高性能计算领域。
标准定义了库函数核心的基本语法和语义,在C, C++和Fortran语言中也可以写出具有消息传递功能的程序。
MPI标准有许多经过良好测试且效率较高的的实现,这些实验是开源的,可供公众使用。
这些成果促进了大规模并行程序应用的长足发展。
MPI具有以下三个目标:
- 高性能
- 可伸缩性
- 可移植性
2.2 MPI的历史
在 90 年代之前,程序员可没我们这么幸运。对于不同的计算架构写并发程序是一件困难而且冗长的事情。当时,很多软件库可以帮助写并发程序,但是没有一个大家都接受的标准来做这个事情。
在当时,大多数的并发程序只出现在科学和研究的领域。最广为接受的模型就是消息传递模型。什么是消息传递模型?它其实只是指程序通过在进程间传递消息(消息可以理解成带有一些信息和数据的一个数据结构)来完成某些任务。在实践中,并发程序用这个模型去实现特别容易。举例来说,主进程(master process)可以通过对从进程(slave process)发送一个描述工作的消息来把这个工作分配给它。另一个例子就是一个并发的排序程序可以在当前进程中对当前进程可见的(我们称作本地的,locally)数据进行排序,然后把排好序的数据发送的邻居进程上面来进行合并的操作。几乎所有的并行程序可以使用消息传递模型来描述。
以下是MPI标准诞生的大事表。
- 1991年夏天,一组研究员于奥地利进行山中修养时,进行了创建信息传递接口的讨论。
- 1992年4月29-30号,于弗吉尼亚威廉姆斯伯格召开了一次关于分布式内存环境下的信息传递标准设置研讨会。在这次研讨会上讨论了对标准信息传递接口至关重要的一些基本特征,并创建了一个继续标准化此过程的工作组。
- 1992年11月,工作组提出了一些初始草稿提议,后被称为MPI-1。
- 1992年11月,一个MPI的工作组会议在Minneapolis召开,他们决定了为此标准化过程创建一个更正式的标注。
- 1993年的头九个月,MPI工作组每6个星期见面一次。
- 1993年11月,MPI标准草稿在超级计算机会议上提出。在经过一阵子的公众论议后,MPI修改了一些部分。
- 1994年6月,发布了MPI1.0版本。这些会议和邮件共同创建了MPI论坛,此论坛后来向所有高性能计算的成员开放。
- 1997年7月,对原来的MPI作了重大扩充的基础上又推出了MPI的扩充部分MPI-2 而把原来的MPI各种版本称为MPI-1。MPI-2的扩充很多,但主要是三个方面:并行I/O,远程存储访问和动态进程管理。
MPI包含了80个人40个组织的共同努力,他们主要都在美国和欧洲。主流的电脑供应商也涉足MPI,还有大学的研究员,政府公务员和产业界。
2.3 结语
不管你是出于什么原因想学习并行编程,或者说分布式编程、并行编程,也许是因为课程需要,或者是工作,或者单纯地觉得好玩,我觉得都是一个很好的开始。