欢迎来到天天文库
浏览记录
ID:27629555
大小:319.77 KB
页数:21页
时间:2018-12-05
《mpi并行程序设计》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、MPI并行程序设计(MessagePassingInterface)一、相关内容a)并行计算机分类存储方式:共享内存、分布式内存、分布式共享内存。PEMPEPEMM互连网络PEPEPE共享内存分布式内存并行计算机共享内存并行计算机PEPEPEPE1PEIPE111互连网络1分布式共享存并行计算机•对于共享内存的并行计算机,个个处理单元通过对共享内存的访问来交换信息,协调各处理器对并行任务的处理。这种共享内存的编程实现起来相对简单,但共享内存往往成为性能特别是扩展性的重要瓶颈。•对于分布式内存的并行计算机,由于不存在可公用的存储单元,各个处理器之间通过消息來交换信息,以协调和控制各
2、个处理器的执行。这就是消息传递并行编程模型所面对的并行计算机的存储方式。由于这种类型的并行计算机有很好的扩展性和很高的性能,它的应用非常广泛。•分布式共享内存的计算机结合了前两者的特点,是一种重要的发展方向。通过提高一个局部节点内的计算能力,使它成为所谓的“超节点”,不仅提高丫整个系统的计算能力,而丑可以提高系统的模块性和扩展性,有利于快速构造超大型的计算系统。b)并行语言的产生方式•设计全新的并行语言•扩展原来的串行语言的语法成分,使它支持并性特征•不改变串行语言,仅为串行语言提供可调用的并行库C)消息传递并行编程模型消息传递即各个并行执行的部分之间通过传递消息来交换信息、协调
3、步伐、控制执行。儿乎所有共享和分布存储的并行计算环境均支持进程间的消息传递通信;基于消息传递的并行程序的两种执行模式:•SPMD模式:单程序多数据流并行应用程序代码◄一可执行代码运行复制多份并独立执行,形成多个独立的进程进程一(内存)进程二(内存)进程三(内存)消息传递(交换数据、同步、归约)协同•MPMD模式:多程序多数据流,除初始启动多个可执行代码,其余与SPMD模式一致;MPI程序一般是SPMD程序,当然也可以用MW来编写MPMD程序,但是,所有的MPMD程序,都可以用SPMD程序来表达,二者的表达能力是相同的。二、MPI概述a)什么是MPI消息传递并行编程模型的事实上的标
4、准、一个库MPI是目前应用最广的并行程序设计工具,几乎被所有并行计算环境(共享和分布式存储并行机、机群系统等)和流行的多进程操作系统(UNIX、WindowsNT)所支持,基于它开发的应用程序具有很好的可移植性;优点:移植性好、功能强大、效率高b)语言绑定和具体实现MPI是一个库不是一门语言,要使用它,必须和特定的语言结合起来:FORTRAN、C。和这两种语言绑定是很成功的策略,它们使用面广,熟悉、会用这两种语言的人很多。Fortran90、C++与MPI-2绑定。免费的MPI实现:Mpich、Chimp、Lamc)MH程序的框架结构头文件mpif.h相关变量声明I进入MPI系统
5、,形成通信MPIINIT()—I域MPI_COMM_WORLDMPI_COMM_RANK()MPI_COMM_STZE()"r应用程序实体:1.计算部分;2.进程间通信;IMPI_FINALIZE()<一退岀MPI系统Endd)一个例子:hello.c#include#includenmpi.hnmain(argc,argv)intargc;char林argv;{charmessage[20];intmyrank,numprocs;MPI_Statusstatus;intnamelen;charprocessor_name[MPI_MAX_PROCESSOR_N
6、AME];MPI_Init(&argc,&argv);MPI_Comm_rank(MPI_COMM_WORLD,&myrank);MPI_Comm_size(MPI_COMM_WORLD,&numprocs);MPI_Get_processor_name(processor_name,&namelen);printf(nHelloWorld!Process%dof%don%sn,myrank,numprocs,processor_name);MPI_Finalize();•惯例:所有MPI的名字都有前缀“MPI_”,FORTRAN形式的MPI调用,一般全为大写,而C形式的MP
7、I调用,则为MPI_Aaaa_aaa的形式•编译命令:mpicc-ohellohello.c•运行命令:mpirun-np4hello运行效果:•MPI系统选择相同或不同的处理机,将可执行代码hello同时启动4份,形成4个独立的进程,各进程拥有独立的内存空间,进程间通信通过调用MPI接口来实现;•每个进程开始执行时,将获得一个唯一的序号(rank)。例如启动m个进程,序号依次为0,1,...,m-1;•程序执行过程屮不能动态改变进程的个数•与串行程序的主要区别,同时打印出了多个
此文档下载收益归作者所有