《超性能计算(mpi) ppt课件详解》由会员分享,可在线阅读,更多相关《超性能计算(mpi) ppt课件详解(159页珍藏版)》请在金锄头文库上搜索。
1、高性能计算程序设计,课程内容,并行计算机与并行算法的基础知识 MPI程序设计 OpenMP程序设计,目的: 了解和掌握基本的高性能程序设计编程技术。,参考资料,高性能计算并行编程技术MPI并行程序设计 都志辉 清华大学出版社 并行算法实践 阵国良等 高等教育出版社 并行计算-结构、算法、编程 阵国良等 高等教育出版社,第一讲 基础知识 2014.9.16,一 高性能计算的定义,高性能计算指同时对多项任务或多条指令或多个数据进行处理的一种方法 同意词:并行计算,超级计算,高性能计算的目的 提供比传统计算机更快的计算速度 解决传统计算机无法解决的问题,二、什么叫高性能计算机?,完成并行处理的计算机
2、系统称为并行计算机(高性能计算机),它是将多个(几个、几十个,几千个,上万个)处理器通过网络连结以一定的方式有序地组织起来形成的一种特殊的计算机(计算机集群)。,连接方式涉及网络之间的互联拓扑、通信协议等 有序组织涉及操作系统、中间软件等,并行计算机示例,并行计算机示例,并行计算机示例,Berkeley于1994年开发的集群式系统,并行计算机示例,国内独立研制的第一套大规 模并行机系统“曙光1000“,并行计算机示例,IBM 建造的世界上最大的 并行计算中心, 用于美国能源部的核试验,计算系统共有15台曙光W580双路服务器,CPU整体峰值性能达到3.312万亿次/秒。每台计算节点配置2颗In
3、telXEON E5-2630 2.3G 6C CPU六核CPU,24G DDR3内存。 GPGPU计算系统共有7台曙光W580I,GPU双精度浮点峰值达到9.17万亿次/秒。每台GPGPU计算节点配置2块Nvidia K20 GPGPU卡。 系统配备1台管理/IO/登陆节点,存储裸容量为2.3TB,部署曙光Gridview 2.6集群管理系统,用户可通过IP地址实现Web访问。 系统配置机房环境管理节点1台,部署曙光IMMS机房环境管理系统。用户可通过IP地址实现Web访问。 系统配置1套线速互联的56Gb FDR Infiniband网络。 系统共用9个服务器机柜、1个空调机柜、4个航空电
4、源箱供电,系统峰值功耗约为28kW。,三、为什么要建造高性能计算机?,一、许多问题串行计算机难以解决 核试验,地球物理资料处理,天气预报等 二、计算速度的要求 串行速度提升缓慢; 需要在更短的时间内解决相同的问题; 三、问题的规模不断扩大 物理现象的仿真模拟(一维 二维 三维) 长期天气预报 更为复杂的科学研究 四、对计算结果的精确性的要求不断提高,动物的食物链,高性能计算机主要解决两类问题,一、常规串行机不能解决的问题 二、常规机器能够解决,但速度很慢的问题,四、高性能(并行)计算机的发展历史及趋势,20世纪70年代末,向量机的出现标志着超级计算机的开始 计算速度:提高了一个数量级 提高计算
5、速度的途径:改进芯片技术,提供共享存储多处理器系统 20世纪80年代后期,共享存储方式的大规模并行计算机蓬勃发展,超大规模并行机出现 贵族计算机 近年来,集群式系统由于具有以下优点而得到了快速发展 低成本、高性能、短周期,大规模并行,分布式共享内存 平民的超级计算机,发展历史,向量机 (芯片级的并行计算机) MPP(Massively Parallel Processors) (主板级的并行计算机) Cluster,研制难度逐渐降底,发展趋势: 集群式系统将成为并行机的发展主流,原因: 1、传统向量机与共享内存计算机的计算速度很难突破物理极限 2、大型计算机价格昂贵,削弱了其市场竞争力 3、操
6、作困难,缺乏一个统一的标准 4、其它诸多原因,国内的超级计算中心,国家高性能计算中心(北京,合肥,成都,武汉,上海,杭州,西安) 山东大学高性能计算中心 天津高性能计算中心 北京应用物理与计算数学研究所- 高性能计算中心 上海超级计算中心 中国科学院的超级计算中心,五、高性能计算(机)的应用,1、理论科学 2、实验科学 3、计算科学 计算流体力学、计算力学、计算分子动力学、计算生物学、计算化学、计算气象学、计算材料学、计算物理学、计算电子学、计算量子力学、,中长期天气预报。每增加一天,要求计算速度增加一个数量级。 信息战。关键是对信息的处理速度,如雷达信息的处理 地震预报预测 石油勘测 生物信
7、息处理 ,六、并行计算机的分类,指令与数据:,SIMD(Single-Instruction Multiple-Data),同时用相同的指令对不同的数据进行操作 MIMD(Multiple-Instruction Multiple-Data),同时有多条指令对不同的数据进行操作 SPMD(Single-Program Multuple-Data),同时执行相同的程序对不同数据操作 MPMD(Multiple-Program Multuple-Data),同时有多个程序对不同的数据进行操作,存储方式:,共享内存 处理单元通过对共享内存的访问来交换信息协调各处理器对并行任务的处理。 分布式内存 各
8、个处理单元拥有独立的局部存储器,处理器之间通过消息传递来交换信息,协调和控制各个处理器的执行。 分布式共享内存 结合前两者特点,提高了整个系统的计算能力而且可以提高系统的模块性和扩展性,有利于快速构造超大型的计算系统,七、并行算法及分类,算法是解题的精确描述 -是一组有穷的规则,它规定了解决某一特定类型问题的一系列运算。并行计算是可同时求解的诸进程的集合,这些进程相互作用和协调动作,并最终获得问题的求解。 并行算法就是对并行计算过程的精确描述 并行算法可以从不同的角度分类为: -数值计算并行算法和非数值计算并行算法 -同步并行算法和异步并行算法 -共享存储并行算法和分布存储并行算法,数值计算并
9、行算法和非数值计算并行算法,数值计算是指基于代数关系运算的计算问题 -如矩阵运算,多项式求根,线性代数方程组的求解等 -科学与工程中的计算问题如计算力学,计算物理,计算化学等一般为数值计算问题 非数值计算是指基于比较关系的运算问题 -诸如排序、选择、搜索、匹配等符号处理 -在符号类的信息处理中获得广泛应用,如数据库领域的计算问题,海量数据挖掘,生物信息学等,同步并行计算和异步并行计算,同步并行计算:参与并行计算的各个进程必须在相同的时刻执行至某一位置,此时较先到达该点的进程必须等待其它进程均已到达该位置才向下执行 大多数工程计算所采用并行计算方式 并行化程度较低 异步并行计算:各进程独立运行,
10、互不干涉 并行化程度较高,同步并行计算,异步并行计算,共享存储并行算法和分布存储并行算法,适用于不同的机器,划分(Partitioning) 划分计算与数据,开拓并行机会 通信(Commutication) 计算之间数据共享,任务协调 组合(Agglomeration) 合理组织各任务来提高性能 映射(Mapping) 分配任务(分布式、共享) 分配给不同处理器的任务量应当均衡, 不同处理器交互应当最少,八、PCAM并行算法设计过程,九 MPI简介,并行语言的产生方式 MPI并行编程,1、 并行语言的产生方式,设计全新的并行语言 改变串行语言的语法,使其支持并行编程 不改变串行语言的语法,仅为
11、串行语言提供并行库,目前较常用的并行编程语言: PVM DPF OpenMP MPI 共同特点: 公用软件, 易于得到 多数厂家支持,消息传递的特点: 在消息传递模型中, 一个并行应用由一组进程组成, 每个进程的代码是本地的, 只能访问私有数据, 进程之间通过传递消息实现数据共享和进程同步. 优点: 用户可以对并行性的开发、数据分布和通信实现完全控制. 缺点: 要求程序员显式地处理通信问题, 如, 消息传递调用的位置, 数据移动, 数据复制, 数据操作, 数据的一致性等等. 对大多数科学计算程序来说, 消息传递模型的真正困难还在于显式的域分解, 也就是说, 将对相应数据的操作限定在指定的处理器
12、上进行, 在每个处理器上只能看见整个分布数据的一部分. 无法以渐进的方式、通过逐步将串行代码转换成并行代码而开发出来. 大量的散布在程序各处的域分解要求整个程序由串行到并行的转换一次性实现, 而共享存储方法允许在现有的串行代码中插入并行说明从而实现逐步转换.与之相比, 这是消息传递的一个明显的缺点.,2、 MPI并行编程,MPI:Message Passing Interface,当前应用最为广泛的并行编程工具,是一个库而不是一门语言 是一种标准或规范的代表而不特指某一个对它的具体实现 是一种消息传递编程模型,并成为这种编程模型的代表和事实上的标准,什么是MPI?,MPI的三个主要目的,1 较
13、高的通信性能; 2 较好的程序可移植性; 3 强大的功能。,提供应用程序编程接口。 提高通信效率。措施包括避免存储器到存储器的多次重复拷贝,允许计算和通信的重叠等。 可在异构环境下提供实现。 提供的接口可以方便 C 语言和 Fortran 77的调用。 提供可靠的通信接口。即用户不必处理通信失败。 定义的接口和现在已有接口(如PVM)差别不能太大,但是允许扩展以提供更大的灵活性。 定义的接口能在基本的通信和系统软件无重大改变时,在许多并行计算机生产商的平台上实现。接口的语义是独立于语言的。 接口设计应是线程安全的。,3、MPI的产生与发展,4、MPI的语言绑定,MPI不是一门语言,而是一个库,
14、必须和特定的语言绑定才能进行,MPI_I:C、FORTRAN77 MPI_II:C+、FORTRAN90,5、目前MPI的主要实现,MPICH: 美国的Argonne国家实验室 http:/www-unix.mcs.anl.gov/mpi/mpich CHIMP: 爱丁堡大学的并行计算中心 ftp:/ftp.epcc.ed.ac.uk/pub/packages/chimp LAM(Local Area Multicomputer): 俄亥俄州立大学 http:/www.mpi.nd.edu/lam/download,较强的通信功能 较高的可移置性 与最常用的编译器实现的绑定 免费,源代码开放,
15、6、MPI的特点,十、 第一个MPI程序,MPI程序的框架结构 第一个MPI程序 并行程序的运行方式 MPI程序的惯例,MPI程序的框架结构,#include void main(int argc, char *argv) printf(“hello world!n”); ,用串行的C语言实现“hello world”,用C+MPI实现hello world!,#include “mpi.h“ #include #include void main(int argc,char* argv) int myid, numprocs namelen; char processor_nameMPI_M
16、AX_PROCESSOR_NAME; MPI_Init( /*结束*/ ,第二部分,第四部分,执行结果,进程,进程是一个程序,同时包含它的执行环境(内存、寄存器、程序计数器等),是操作系统中独立存在的可执行的基本程序单位。 通俗理解:串行应用程序编译形成的可执行代码,分为“指令”和“数据”两个部分,并在程序执行时“独立地申请和占有”内存空间,且所有计算均局限于该内存空间。,正在微机上运行的进程,单机内的多个进程,多个进程可以同时存在于单机内同一操作系统:由操作系统负责调度分时共享处理机资源(CPU、内存、存储、外设等)。 进程间相互独立(内存空间不相交):在操作系统调度下各自独立地运行,例如多个串行应用程序在同一台计算机中运行。,最基本的消息传递操作:发送消息(send)、接受消息(receive)、进程同步(barrier)、规约(re