MPI并行编程入门
中国科学院计算机网络信息中心
超级计算中心
参考材料
张林波 清华大学出版社 莫则尧 科学出版社 都志辉 清华大学出版社
消息传递平台MPI
• 什么是MPI (Message Passing Interface )
– 是函数库规范,而不是并行语言;操作如同库函数调用
– 是一种标准和规范,而非某个对它的具体实现(MPICH等),
与编程语言无关
– 是一种消息传递编程模型,并成为这类编程模型的代表
• What is the message?
DATA+ENVELOPE
• MPI的目标
– 较高的通信性能
– 较好的程序可移植性
– 强大的功能
消息传递平台MPI
• MPI的产生
– 1992-1994年,MPI 1.1版本问世
– 1995-1997年,MPI 2.0版本出现
• 扩充并行I/O
• 远程存储访问
• 动态进程管理等
• MPI的语言绑定
– Fortran (科学与工程计算)
– C (系统和应用程序开发)
• 主要的MPI实现
– 并行机厂商提供
– 高校、科研部门
• MPICH (/mpi/mpich )
• LAMMPI (/)
消息传递平台MPI
• MPI程序编译与运行
– 程序编译
C: %mpicc -o mpiprog mpisrc.c
Fortran 77: %mpif77 -o mpiprog mpisrc.f
– 程序运行
%mpirun -np 4 mpiprog
•程序执行过程中不能动态改变进程的个数
•申请的进程数np与实际处理器个数无关
MPI基础知识
• 进程与消息传递
• MPI重要概念
• MPI函数一般形式
• MPI原始数据类型
• MPI程序基本结构
• MPI几个基本函数
• 并行编程模式
进程与消息传递
• 单个进程(process )
– 进程与程序相联,程序一旦在操作系统中运行即成为进程。
进程拥有独立的执行环境(内存、寄存器、程序计数器等)
,是操作系统中独立存在的可执行的基本程序单位
– 串行应用程序编译形成的可执行代码,分为“指令”和“数据”两
个部分,并在程序执行时“独立地申请和占有” 内存空间,且
所有计算均局限于该内存空间。
进程1 进程2
内存
进程与消息传递
• 单机内多个进程
– 多个进程可同时存在于单机内同一操作系统。操作系统负责
调度分时共享处理机资源(CPU、内存、存储、外设等)
– 进程间相互独立(内存空间不相交)。在操作系统调度下各
自独立地运行,例如多个串行应用程序在同一台计算机运行
– 进程间可以相互交换信息。例如数据交换、同步等待,消息
是这些交换信息的基本单位,消息传递是指这些信息在进程
间的相互交换,是实现进程间通信的唯一方式