MPI并行编程
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
进程 1 发送信息
进程 2 接收信息
并行计算将进程相对独立的 分配于不同的节点上,由 各自独立的操作系统调度, 享有独立的CPU和内存资源 (内存可以共享);进程间
相互信息交换通过消息传递;
精选ppt
3
1.2 并行计算在电力行业的 研究和应用
• 中国电科院发明专利“电力系统潮流分网并行计算方法”获得中国专 利金奖(发明人:周孝信、吴中习、郭剑、李亚楼、田芳)2010.11
精选ppt
11
3.1 基于MPI的Hello World(C)
#include <stdio.h> #include "mpi.h“
main( int argc, char *argv[] )
{ MPI_Init( &argc, &argv ); printf( "Hello, world!\n" ); MPI_Finalize();
。。。。。。
•}
•}
精选ppt
8
MPI是一种消息传递编程模型
• 节点间基于消息进行通讯
精选ppt
9
2.1 MPICH的实验环境
实验环境: RedHat 9.0 + Vmware 6.0 + MPICH 2-1.0 Fedora 14+ Dell Blade*1(主节点)+Dell PC*2
(从节点) +MPICH 2-1.2.1p1
4
1.3 并行编程标准
• 多线程库标准
– – Win32 API. – – POSIX threads.
• 编译制导标准
– – OpenMP – 可移植共享存储并行编程标准.
• 消息传递库标准
– – MPI – – PVM
Hale Waihona Puke Baidu
精选ppt
5
1.4 Massage Passing Interface(MPI)
精选ppt
7
MPI是一种标准或规范,而不是具体实现
实现:Mpich、OpenMPI、Chimp、Lam
例如:MPI_Init(int *argc, char ***argv )的实现
• MPICH的实现
• OpenMPI的实现
• int MPI_Init( int *argc, char ***argv )
• mpirun –np 4 a.out
%np: The Number of Process.
• mpirun –np 4 hello
– 4 指定np的实参,表示进程数,由用户指定.
– a.out / hello 要运行的MPI并行程序.
2020/9/3
精选ppt
13
3.3 运行MPI程序
[dair@node01 ~]$ mpicc -o hello hello.c
• 《基于并行计算的电力系统风险评估》2009
• 《基于并行协调算法的电力系统状态估计》2007
• 《基于改进并行遗传算法的电网状态估计》2006
• 《应用网格平台的潮流计算并行算法》2009
• 《基于MPI电力系统潮流P—Q分解法的并行算法》2008
• 《2008电网控制中心新技术综述精》选pp2t009
精选ppt
10
2.2 MPICH的搭建步骤
搭建步骤 1-挂载NFS文件系统
实现分节点内容与主节点内容的同步更新和自动目录 对应 2-配置SSH公钥认证实现MPI节点间用户的无密码访问 各节点间进行消息传递 3-安装MPICH至NFS目录 4-修改各种配置文件 5-试运行example文件夹中的例子
}
精选ppt
12
3.2 MPI程序的的编译与运行
• mpif77 hello.f 或 mpicc hello.c
– 默认生成a.out的可执行代码.(mpicc hello.c)
% • mpif77 –o hello hello.f 或
• mpicc –o hello hello.c
小写o
– 生成hello的可执行代码.
• MPI 是由MPI 委员会(MPI Forum)在1992年到1994年举 行的一系列会议上逐渐产生的一个消息传递标准 ( http://www.mpi-forum.org/ )。
• 发展
• MPI 1.1: 1995 » MPICH:是MPI最流行的非专利实现,由Argonne国家实验室和 密西西比州立大学联合开发,具有更好的可移植性.
• int MPI_Init( int *argc, char ***argv )
•{
•{
• static const char FCNAME[] = "MPI_Init";
int err;
• int mpi_errno = MPI_SUCCESS; • int rc;
。。。。。。
int provided; char *env; int required = MPI_THREAD_SINGLE;
[dair@node01 ~]$ ./hello
()
[0] Aborting program ! Could not create p4 procgroup. Possible missing fileor program started without mpirun.
[dair@node01 ~]$ mpirun -np 4 hello
• 《大规模电网并行潮流算法》2008
• 《电力系统状态估计的分布式并行处理》2003
• 《电力系统最优潮流的分布式并行算法》2003
• 《电网在线安全分析的并行处理方法》 1996
• 《基于GPU的电力系统并行潮流计算的实现》 2010
• 《基于MPI和P.Q分解法的电力系统潮流并行算法的研究》2005
• MPI 1.2 (1997) • …. • MPI 2.2 (2009-09)
精选ppt
6
MPI是一个库,而不是一门语言
• 这个标准支持 C 语言和 FORTRAN 语言 • MPI库可以被FORTRAN77/C/Fortran90/C++
调用 • 它遵守所有对库函数/过程的调用规则,和
一般的函数/过程没有什么区别
MPI并行编程
精选ppt
1
大纲
• MPI并行编程简介 • Linux下MPI并行编程环境的搭建 • MPI并行程序设计 • 实例分析:矩阵乘法
精选ppt
2
1.1 什么是并行计算
进程 1
进程 2
传统的串行计算,分为“指令” 和“数据”两个部分,并在程序 执行时“独立地申请和占有”内 存空间,且所有计算均局限于 该内存空间。