MPI
简介
在程序中,不同的进程需要相互的数据交换,特别是在科学计算中,需要大规模的计算与数据交换,集群可以很好解决单节点计算力不足的问题,但在集群中大规模的数据交换是很耗费时间的,因此需要一种在多节点的情况下能快速进行数据交流的标准,这就是MPI。
MPI是一组用于多节点数据通信的标准,而非一种语言或者接口。具体的使用方法需要依赖它的具体实现(mpich or openmpi等)。
mpi的目标是
- 实现较高的通信性能
- 好的程序移植性
- 强大的功能
尽管MPI属于OSI参考模型的第五层或者更高,他的实现可能通过传输层的sockets和Transmission Control Protocol (TCP)覆盖大部分的层。
概念
进程
通俗的说,进程就是运行的程序。一个程序可以含有多个进程,但一个进程不能同属于多个程序。进程拥有独立的运行环境(内存,寄存器,CPU执行时间等),是操作系统中独立存在的可执行的基本单位。每个进程所占有的资源都是独立的,不与其他的进程共享,不能访问其他进程内存空间,其他进程也无法访问该进程内存空间。但可以通过消息传递来进行通信。
进程组
指一个mpi程序中的所有(n个)进程的集合。该程序中所有进程编号从0到n-1,主要是为了标识不同的进程,可以通过进程的编号来索引该进程。不同进程组的进程的编号可以相同。
通信器(MPI_Comm)
可以理解围殴一组进程间可以通信的进程组&