如果对并行计算不清楚的同学可以参考我上篇博客,网上关于并行的文章有很多,务必弄清楚一些基本的概念,比如并发与并行的区别。在我上篇博客的末尾推荐了一篇文章,里面有目前主流计算框架的比较,这里我选择了MPI进行学习,MPI的优势这里不再赘述。
一、MPI简介
- MPI(Message Passing Interface )是1994年5月发布的一种消息传递接口。它实际上是一个消息传递函数库的标准说明,吸取了众多消息传递系统的优点,是目前国际上最流行的并行编程环境之一,尤其是分布式存储的可缩放并行计算机和工作站网络的一种编程范例。MPI具有许多优点:具有可移植性和易用性;有完备的异步通信功能;有正式和详细的精确定义,固而为并行软件产业的增长提供了必要的条件。
- 在基于MPI编程模型中,计算是由一个或多个彼此通过调用库函数进行消息收、发通信的进行所组成。在绝大部分MPI实现中,一组固定的进程在程序初始化时生成,一个处理器生成一个进程。这些进程可以执行相同或不同的程序(相应地称为SPMD或MPMD模式)。进程间地通信可以是点到点的,也可以是集合的。
- MPI只是为程序员提供一个并行环境库,程序员通过调用MPI的库程序来达到程序员所要达到的并行目的。MPI提供C语言接口、C++接口和Fortran语言接口。
简而言之,MPI是一个用于进程(进程和线程的区别搞清楚)间信息传递的并行编程接口标准,它定义了一组具有可移植性的编程接口。MPI是一种分布式内存编程,区别于共享内存编程,比如OpenMP,大家可以参考我的另一篇博客