MPI
简介
在程序中,不同的进程需要相互的数据交换,特别是在科学计算中,需要大规模的计算与数据交换,集群可以很好解决单节点计算力不足的问题,但在集群中大规模的数据交换是很耗费时间的,因此需要一种在多节点的情况下能快速进行数据交流的标准,这就是MPI。
MPI是一组用于多节点数据通信的标准,而非一种语言或者接口。具体的使用方法需要依赖它的具体实现(mpich or openmpi等)。
mpi的目标是
- 实现较高的通信性能
- 好的程序移植性
- 强大的功能
编译与运行
mpi目前绑定的语言只有FORTRAN 和 C/C++。
c编译: mpicc -o mpiProgram mpiProgram.c
c++编译:mpicxx -o mpiProgram mpiProgram.cpp
FORTRAN编译:mpif77 -o mpiProgram mpiProgram.f
运行可使用mpirun或mpiexec:
mpirun/mpiexec -np 2 mpiProgram
概念
进程
通俗的说,进程就是运行的程序。一个程序可以含有多个进程,但一个进程不能同属于多个程序。进程拥有独立的运行环境(内存,寄存器,CPU执行时间等),是操作系统中独立存在的可执行的基本单位。每个进程所占有的资源都是独立的,不与其他的进程共享,不能访问其他进程内存空间,其他进程也无法访问该进程内存空间。但可以通过消息传递来进行通信。
进程组