基于曙光2000的MPI运行验证
- 格式:pdf
- 大小:274.56 KB
- 文档页数:6
北京数系科技有限责任公司二零零八年十月十三日高效并行油藏数值模拟器PRIS目录一、高效并行油藏数值模拟器--- PRIS (2)1. PRIS软件发展史 (2)2、PRIS主要特性: (2)3. PRIS 已经运行成功的并行计算平台 (3)4.PRIS 的运行 (3)5. 若干数值计算实例 (3)高效并行油藏数值模拟器PRIS一、高效并行油藏数值模拟器--- PRISPRIS 是基于高性能并行计算机及微机机群的并行油藏数值模拟器, 主要技术(包括:完全的数据并行-SPMD, 并行I/O,通信极小化, 井的并行处理算法,高效并行解法器等)由我公司自主研制开发.1. PRIS软件发展史1997年开始并行版本软件的应用开发,形成PRIS1.0 PVM 版;1998年对并行软件的关键部位进行加速,形成PRIS1.0 MPI 版;1998年在高性能计算机SR2201、SGI Power Challenge、IBM SP2、SGI Origin 2000成功移植,并对国内石油部门提供的数十套历史拟合数据(规模为2万~ 45万)进行油藏数值模拟计算,取得了较好的效果;1999年在国产高性能并行计算机神威、曙光及自行组装的Linux微机机群上,进行国内某油田两套实际数据:104万和116万网格点、三维三相黑油模型、历史拟合达13~31年的大规模计算模拟和应用分析,并通过了大庆油田专家的测试,其主要成果被列入国家“八六三”十五周年成果展览中;2000年,油藏数值模拟并行版本软件PRIS正式定版,并于9月份在北京友谊饭店正式对外宣布;2001年,在国产高性能并行计算机曙光3000上模拟国内某油田116万网格点全部生产史,仅需11.9小时,达到了“夕发朝至”;用17.4小时完成了100多年的生产预测,全区最终综合含水为96.7%(2100年);这些结果为石油生产调度部门制定开采计划、保持稳产提供了软硬环境方面的保障。
云南大学高性能计算中心曙光集群系统使用指南1、使用SSH客户端软件用在高性能计算中心申请的用户名和密码登录到集群系统(Windows系统可使用SSHSecureShellClient-3.2.9软件包,下载地址/structure/download Linux系统可直接使用ssh命令登录)。
登录成功后你所在的节点是登录节点,系统会有一些通知信息显示,操作提示符是[username@node34 ~]$。
这个节点是作用户帐号管理,不要在上面运行程序。
2、编译与调试程序请用rsh转到相关作业区节点。
本集群系统共有32个计算节点(每个节点有4个CPU 8G 内存),分为4个作业区。
小作业区small包含4个节点(node1..node4),中型作业区medium包含8个节点(node5..node13),专用作业区long包含8个节点(node13..node20),大作业区large包含12个节点(node21..node32)。
每一个作业区的第一个节点该作业区的服务节点,small为node1,medium为node5,long为node13,large为node21。
例如从登录节点转到一号节点:[hbli@node34 ~]$rsh node1Last login: Mon Aug 28 15:33:16 from node34[hbli@node1 ~]$3、编译链接、运行用户程序串行程序可使用GCC或PGI编译器,并行程序可使用mpicc, mpiCC, mpif77,mpif90进行编译。
以下是一个c使用mpi的例子:/* hello.c *//* MPI sample c program *//* compile "with mpicc -o hello hello" *//* run with "mpirun -np 8 hello" *//* or submit with pbs script "qsub hello.pbs" *//* you can use "qstat" to dislay your job statusa */#include <stdio.h>#include "mpi.h"int main( argc, argv )int argc;char **argv;{int rank, size;MPI_Init( &argc, &argv );MPI_Comm_size( MPI_COMM_WORLD, &size );MPI_Comm_rank( MPI_COMM_WORLD, &rank );printf( "Hello world from process %d of %d\n", rank, size );MPI_Finalize();return 0;}可以用如下命令对上面的程序进行编译:$ [hbli@node1 sample]mpicc –o hello hello.c生成可运行的文件hello,用ls –l 命令可以看到生成的可执行文件:$ [hbli@node1 sample]ls –l-rwxrwxr-x 1 hbli hbli 507375 Oct 10 10:39 hello-rw-r--r-- 1 hbli hbli 532 Jun 20 08:01 hello.c这样就可运行hello 这个程序了。
作为新兴的视频标准,在提高视频压缩率的同H.264时,采用了更多先进、实用的编码技术。
与先前的一系列压缩标准相比,的计算复杂度更高,编码同样的视频序H.264列将耗费更长的时间。
而视频的编码是一个复杂的计算过程,对计算机的处理能力具有非常高的要求。
目前,单处理器的计算能力还不能满足视频编码的需求。
另一方面,基于硬件的编码方式大都是面向专门的应用,灵活性较差。
因此,在分布式系统上采取并行方式编码视频序列成为一个必然的趋势。
在进行并行视频编码算法的研究中,所采用的体系结构主要有对称处理器、大规模并行处理器、分布式共享存储器和机群等。
而采用高速网络互联的基于或工作站的机PCs 群,由于处理器的高速和部件的低价,逐渐成为流行的平台。
其中,曙光是由国家智能计算机研究开发中心研3000制,基于分布式存储机群系统和消息传递体系结构的,通用的可扩展超级服务器系统。
曙光的节点运行完整的3000操作系统,提供定制的和并行程序设计环IBM AIX PVM MPI 境,为视频并行编码的研究提供了可靠的平台。
现有的视频并行编码技术1 由于在无线网络、可扩展编码、极低码率等方面的一致性,年月,视频编码专家小组同运动图像专家200112VCEG 组成立了联合视频小组,在MPEG JVT(Joint Video Team)的基础之上,共同制定标准草案,其成果将成H.26L H.26L 为的第部分与,在内部仍然称为MPEG-410ITU H.264ITU-T ,本文用引用。
H.26L H.264H.264[1]仍然是基于运动补偿加变换编码的混合编码方式,同、视频编码方法类似,继续H.263 v1/2/3MPEG-1/2/4沿用了以前的优秀技术但引入了许多先进、实用的视,H.264频编码技术,集中到几个方面:多模式的运动估计,帧内预测,多帧预测,统一,×二维整数变换等。
高达VLC 44像素精度的运动估计,多帧参考等技术。
目录你应该知道的超级计算机 (2)超级计算机的五大形态 (2)当今主流:机群式超级计算机概况 (5)机群的软件系统 (8)衡量机群的计算性能的指标 (9)试试看,构建一个低成本的小型机群系统! (9)“天河一号”的硬件与软件系统有啥不同? (10)超级计算机都有哪些用武之地? (13)写在最后:超级计算机的未来征程 (15)在去年10月底,长沙举办的中国高性能计算学术年会上,国防科技大学研制的千万亿次超级计算机“天河一号”成为焦点,这是我国国内计算能力最高的超级计算机,而且标志着我国超级计算机的研发能力成功实现了千万亿次计算的跨越。
超级计算机不仅体现了一个国家战略性高技术的发展水平,也是与科技创新、国计民生密切相关的重要基础设施。
超级计算机的各种应用,实际上会以不同的方式影响到我们每个人,这些似乎遥不可及的超级计算机实际上离我们“非常近”。
你应该知道的超级计算机目前各种超级计算机的高速处理能力基本上都是利用并行体系结构实现的,并行计算(Parallel Computing)已成为提高处理性能的关键技术之一。
简单地讲,并行计算技术就是用同时运行的多个处理机或计算机来处理同一任务,从而大幅度提高任务的处理速度、缩短了任务的处理时间。
超级计算机的五大形态在超级计算机技术的发展历程中,先后出现过多种超级计算机并行体系结构,主要有如下5种。
●并行向量处理(Parallel Vector Processing,PVP)系统并行向量处理结构采用一定数量的、并行运行的向量处理器和共享式内存(Shared Memory,SM)结构的计算机系统。
PVP系统的SM结构,也就是采用高带宽的交叉开关将各个向量处理器与其共享的内存模块连接。
向量处理器(Vector Processor)的一条指令能够同时对多个数据项(向量矩阵)执行运算,而一般的通用CPU属于标量处理器(Scalar Processor),每次只能对一个数据项进行处理。
曙光6000超级计算机使用手册系统运行部2012年12月12日目录一、基本环境二、系统软件环境2.1 操作系统 (5)2.2 作业调度系统 (5)2.3编译器和并行实现 (5)2.4 数学库 (6)三、使用方法3.1 登录和传输文件 (8)3.2 编译 (12)3.3 作业提交 (13)3.4 作业管理 (23)附件A.常用的作业提交模板1.普通串行计算 (25)2.普通MPI并行作业 (25)3.多个计算步骤的计算脚本 (25)4.共享内存并行作业 (26)5. 4. OpenMP+MPI 混合并行作业 (26)附录B:商用软件使用方法1.Fluent软件 (28)2.ANSYS软件 (30)3.CFX软件 (33)4.ABAQUS软件 (35)5.MARC软件 (37)6.NASTRAN软件 (39)7.LSDYNA软件 (41)8.DYTRAN软件 (43)9.ADF软件 (45)10.HFSS软件 (47)国家超级计算深圳中心采用由中科院和曙光公司联合研制的曙光6000超级计算系统,该系统整体计算能力实测峰值为1.271千万亿次浮点运算(1.271PFLOPS)。
于2011年11月16日投入运行。
本文主要介绍曙光6000超级计算系统的使用方法和环境。
一、基本环境为了方便管理和使用,曙光6000超级计算系统高性能计算区分成5个逻辑分区,分别为科学计算分区(GK)、工程计算分区(GG)、生命科学计算(GS)、胖节点分区(Fn)以及龙芯计算分区(Lx)。
其中GK、GG、GS分区的每个计算节点由2颗Intel5650六核心处理器组成、主频2.66GHz,配置24GB DDR3内存以及1块Nvidia C2050 GPGPU卡,一块本地149G的 SAS硬盘,一块QDR IB子卡。
胖节点分区(Fn)共配置128台4路A840 SMP计算节点,每个计算节点配置4颗AMD 6136 八核心处理,主频2.4GHz,内存128GB。
万方数据成单一的计算机资源蠲。
图1给出了一个集群的典型体系结构。
编程环境和应用可用性和单一系统映像基础设施os}osIos—————J}———————_L————一结点jI结点Il结点TTT商品化或专用互联网图l集群的典型体系结构集群具有许多优越性,其中最重要的是能用性、可用性、可扩展性、高性价比唧。
(1)能用性:由于集群中每个结点均是传统平台,故用户能在熟悉和成熟环境中开发和运行它们的应用程序。
平台提供了所有功能很强的工作站编程环境工具.并允许多个现有的应用程序无需修改便可运行。
因此一个集群可视为一个巨型工作站.它能为多个顺序用户作业提供大为增加的吞吐率并减少响应时间(2)可用性:可用性指一个系统从事生产性使用的时间百分比。
传统的整体系统,如主机和容错系统依靠昂贵的定制设计来获取高可用性。
集群不使用定制组件,而使用廉价的商品化组件以提供大量冗余的较高可用性。
(3)可扩展性:一个集群的计算能力随结点增多而增加。
其次,集群的可扩展性是群体可扩展性。
集群扩展是多组件的,包括处理器、存储器、磁盘、甚至I/O部件。
因为是松耦合,集群能扩展到成百上千个结点。
(4)高性价比:传统的PVP超级计算机以及MPP的成本很容易达到几百万美元。
与此相比,具有相同峰值性能的集群价格则低1到2个数量级。
集群大量采用商品化部件,它们的性能和价格遵循Moore定律.从而使集群的性价比的增长速率远快于PVP和MPP。
集群系统中比较有影响的是Beowulf集群。
Beowulf集群的研究是由美国国家航空航天局于1994年上半年启动的。
主持ESS(地球与空间科学)计划的CESDIS(优良空间数据信息科学中心)研究工作人员于1994年夏天将16台带有DX4处理器的计算机通过以太网互连,组合成了一个称为Beowulf的计算机集群系统(ComputerCluster)[41。
它主要用来进行地球、空间科学的研究。
Beowulf的主要目的是使用普通的、相对廉价的计算机构建能够处理繁重计算的集群。
基于曙光-2000的MPI运行验证1崔焕庆 韩丛英山东科技大学信息科学与工程学院 泰安 271019smart0193@,congyh@摘要本文对共享消息传递接口库MPI(Message Passing Interface)在曙光-2000并行计算机上进行了验证,就点到点通信方式、模式的区别用Petri网模型进行了描述;并对某些MPI函数在应用中发现的问题提出了一些解决方案,使用户能更好得利用MPI编写并行程序。
关键词MPI;曙光-2000;点到点通信;Petri网一、 引言MPI(Message Passing Interface)是一个免费共享的消息传递并行库,作为一个标准,它的主要目标是开发一个应用广泛、可移植性好的消息传递程序。
MPI强大的并行性已经在许多类并行机得到验证,特别是在分布式存储的并行机上MPI这种消息传递并行模型更能充分发挥其通信能力。
MPI主要包括以下几个方面的内容:点到点通信(一对进程之间的通信);集群通信(一个进程组内所有进程的通信以及同步操作);组、上下文、通信子;进程拓扑;环境管理等等。
在这些内容中最常用的是MPI的通信函数,详细研究通信函数的四种通信模式是非常有意义的。
因为MPI不是根据哪一类特殊的并行机设计的,所以对于曙光-2000这样分布式存储的并行计算机来说,MPI的许多常用函数有其不同于在其它并行机上的应用特点,所以研究验证MPI函数在曙光-2000上的应用非常有实用意义,更便于用户充分利用MPI顺利编写及调试并行程序。
二、 点到点通信方式的Petri网描述在MPI中,点到点通信是最基本最常用的通信,因此熟悉掌握它的通信方式以便有效使用之。
点到点通信分为两种方式——阻塞方式与非阻塞方式,这两种通信方式从表面上看,它们的区别在于:阻塞方式的通信用一个函数来实现发送操作或者接收操作的启动与完成,而在非阻塞通信方式中,却用两个函数——启动函数和完成函数——来实现发送操作或者接收操作。
从本质来讲,它们的区别在于:阻塞方式的一个操作的启动与完成之间不允许做其他的事情,即使操作的完成要等待较长的时间;而非阻塞方式的一个操作的启动与完成之间可以进行一些计算等,以实现资源的充分利用。
下面用petri网(图1)来区别这两种方式:s5 t4 s6(a) 阻塞通信的petri网模型s2 t2 s3s1 t1s7 t5s6s5 t4(b)非阻塞通信的petri网模型图1 两种通行方式的petri网模型(注:在这个图中,s1表示系统的通信要求,t1表示通信的启动,s2、t2、s3表示进行通信,t3表示通信的完成,s4表示通信返回,s5表示系统的计算要求,t4表示进行计算,s6表示计算或等待的完成,s7、t5表示系统在等待。
其中的弧“”是抑止弧,当弧的前置库所无标识时,弧的后置变迁才有可能发生。
关于“”的说明对以后各图同样适用。
)比如在下面的程序中,实现了在一次非阻塞通信方式的启动与完成之间实现一些计算。
main(int argc,char** argv){……………if (rank==0){MPI_Irsend(sdata,n*n,MPI_INT,1,89,MPI_COMM_WORLD,&request);MPI_Test(&request,&flag,&status);do{k++;MPI_Test(&request,&flag,&status);} while (flag==0);}//在等待通信完成的过程中,对k实现每次加1的计算。
…………}三、通信模式的Petri网描述在每种通信方式中都存在四种模式,标准模式、缓冲模式、同步模式以及就绪模式,这四种模式仅仅是针对发送操作而言的,且每一种通信方式的四种模式只对应一个接收函数。
在阻塞方式下,对于标准模式的发送操作,如果系统决定缓冲消息,那么发送操作将在缓冲完毕后成功返回,而不管接收操作的情况;如果系统不缓冲消息,那么发送操作将在接收操作完成之后成功返回。
见图2。
(a)系统缓冲消息时的petri网模型(注:这个图中的s1表示发送进程的发送请求,t1表示进行发送,s2表示消息缓冲完毕,t3表示发送完成,s4表示发送进程,s5表示接收进程的接收请求,t2、s3表示进行接收,s6、s8分别为发送、接收进程的计算请求,t4、s7和t5、s9分别表示相应进程进行计算。
)s5 t4 s6 t5 s7 t6 s8(b)系统不缓冲消息的petri网模型(s1、s5分别为发送、接收进程的发送、接收请求,t1、t4分别为发送、接收的启动,t2、t5分别表示进行发送、接收,t3、t6分别为发送、接收的完成。
)图2 标准模式的petri网模型如果采用的缓冲模式,由于用户将负责缓冲区的分配与释放,所以发送操作是否成功返回与接收操作无关。
它的petri网模型与图2(a)类似。
在同步模式下,发送操作只有在相应的接收操作启动之后才可返回。
见图3。
s5 t4 s6 t5 s7 t6 s8图3 同步模式的petri网模型(各个库所、变迁的含义与图2(b)相同)就绪模式的发送操作必须在相应的接收操作启动之后才可以启动,而它的结束与接收操作无关。
见图4。
s5 t4 s6 t5 s7 t6 s8图4 就绪模式的petri网模型(各个库所、变迁的含义与图2(b)相同)在非阻塞方式下,各种模式的含义与阻塞方式下的基本相同。
对于发送操作的启动,除就绪模式必须在相应的接收操作启动之后才可以启动外,其他模式下的发送操作的启动与接收操作是否启动无关。
在每种模式下,发送操作启动的完成都与接收操作无关。
对于发送操作的完成,就要区别各种不同的模式了。
在标准模式下,如系统缓冲消息,则可在相应的接收操作出现前返回;否则,必须在消息已经复制到相应的接收操作的缓冲区后才可以返回。
在缓冲模式下,发送操作的完成与接收操作无关。
同步模式发送操作的完成则要在相应的接收操作已启动后返回。
就绪模式发送操作的完成的返回与接收操作无关。
四、常用MPI函数应用中的问题及解决方法1、MPI_SEND和MPI_RECV是实现点到点通信的两个基本函数,当一个进程调用MPI_SEND函数向另外一个进程发送消息,而调用MPI_RECV函数则用于接收相应进程发送来的消息。
MPI_RECV(buf,count,datatype,source,tag,comm,status)函数中的参数count表示接收缓冲区长度,即可以接收的数据的最大个数。
它应当不小于MPI_SEND(buf,count,datatype,dest,tag, comm )中的参数count,即发送缓冲区的长度。
由于可以在MPI_SEND函数中指定发送缓冲区的起始地址,所以可以发送整个消息的一部分。
在C语言中,这可以通过取地址操作符&来实现。
上述结论对于所有通信方式下的标准模式、同步模式、就绪模式皆成立。
在缓冲模式的点到点通信中,必须用函数MPI_BUFFER_ATTACH(buffer,size)来分配用于缓冲消息的缓冲区。
在这个函数中,不论被缓冲的消息是什么类型,参数buffer的定义类型可以是包括void在内的C语言的任意数据类型。
而且在发送函数MPI_BSEND(buf,count,datatype,dest,tag,comm)中,参数count必须与消息的实际长度相同。
2、调用集群通信函数MPI_GATHERV(sendbuf,sendcount,sendtype,recvbuf,recvcounts, displs, recvtype,root,comm) 实现根进程root从不同的进程中接收个数不同的数据,并且实现根进程接收数据的不连续存放。
要正确使用这一函数,必须使进程j(j是一个有效的进程秩)发送给根进程的数据个数sendcount和根进程root接收自进程j的数据个数recvcounts[j]相互匹配,匹配的方法如下:(1)如果每个进程发送的数据个数相同,那么recvcounts数组中的元素都相等,sendcount取recvcounts中元素的数值;(2)如果sendcount是一个以发送进程秩为自变量的函数f(rank) (rank是进程的秩),那么参数sendcount就使用f(rank),而recvcounts需要在根进程中进行赋值;(3)把发送的数据定义为一个新的数据类型(用派生数据类型构造函数),或者用MPI_PACK函数将数据压缩,此时参数sendcount为1,sendtype用新定义的派生数据类型或者MPI_PACKED,recvtype 是根进程接收数据时的需要类型,recvcounts根据需要类型使用要接收的数据的个数;(4)每个进程对发送数据的个数num进行赋值,然后在调用MPI_GATHERV时,参数sendcount 直接使用num。
而recvcounts需要在根进程中进行赋值。
函数MPI_SCATTERV(sendbuf,sendcounts,displs,sendtype,recvbuf,recvcount,recvtype,root, comm) 实现与MPI_GATHERV相反的功能。
要正确使用这一函数,必须使根进程root发送给进程j(j是一个有效的进程秩)的数据个数sendcounts[j]与进程j接收自根进程的数据个数recvcount相互匹配,匹配的方法与上面的函数类似。
但要注意两个函数参数上的区别。
函数MPI_ALLGATHERV(sendbuf,sendcount,sendtype,recvbuf,recvcounts,displs,recvtype, comm) 实现与MPI_GATHERV相似的功能,但它是把接收到的数据放入每个进程的recvbuf中。
要正确使用这一函数,必须使进程j(j是一个有效的进程秩)发送的数据个数sendcount与每个进程接收自进程j的数据个数recvcounts[j]相互匹配,匹配的方法与MPI_GATHERV的处理方法类似,只是recvcounts必须在每个进程中进行赋值。
3、函数MPI_OP_CREATE(function,commute,op) 把一个用户定义的操作与一个op句柄相互联系起来,这个op可以用于MPI_Reduce、MPI_Allreduce、MPI_Scan、MPI_Reduce_scatter中。
参数function 是一个用户定义的函数,在C语言中它的原型是:typedef void MPI_User_function(void *invec,void *inoutvec,int *len,MPI_Datatype *dptr)在对这个函数进行说明和定义时,形参的类型必须与上述原型中的相同。