640 likes | 790 Views
高性能计算和高性能计算机. 赵崇山 2007-08-10. 目 录. 并行计算概要 高性能计算机体系结构 并行编程简介 高性能计算机群 并行计算的应用模式. 计算是认识世界的主要手段. 应用物理 新材料设计 辐射传输 宇宙演化. 不可能进行实验. 工程 多物理尺度的问题 流体力学( CFD ) 结构力学( CAE ). 环境科学 全球气候 污染输运. 实验危险. 实验困难. 数值 模拟. 生物学 药物设计 基因学. 公共安全与管理 燃烧 现象 城市交通模拟. 实验有争议. 实验昂贵. 并行计算的功能.
E N D
高性能计算和高性能计算机 赵崇山 2007-08-10
目 录 • 并行计算概要 • 高性能计算机体系结构 • 并行编程简介 • 高性能计算机群 • 并行计算的应用模式
计算是认识世界的主要手段 应用物理 新材料设计 辐射传输 宇宙演化 不可能进行实验 工程 多物理尺度的问题 流体力学(CFD) 结构力学(CAE) 环境科学 全球气候 污染输运 实验危险 实验困难 数值 模拟 生物学 药物设计 基因学 公共安全与管理 燃烧 现象 城市交通模拟 实验有争议 实验昂贵
并行计算的功能 • 降低单个问题求解的时间 • 增加问题求解规模、提高问题求解精度 • (多机同时执行多个串行程序)容错、更高的可用性、提高吞吐率
并行化的主要方法:分而治之 • 根据问题的求解过程,把任务分成若干子任务(任务级并行或功能并行) • 根据处理数据的方式,形成多个相对独立的数据区,由不同的处理器分别处理(数据并行)
如何实现并行计算? 分而治之!
目 录 • 并行计算概要 • 高性能计算机体系结构 • 并行编程简介 • 高性能计算机群 • 并行计算的应用模式
定义:并行计算机 由众多部件组成,具有运算速度快、存储容量大、可靠性高的特性。 也称为:超级计算机、高端计算机、高性能计算机 目前任何高性能计算机和并行计算都离不开使用并行技术,所以高性能计算机肯定是并行计算机。
TOP500排名标准依据Linpack软件实际测试值所表现出来的浮点计算能力TOP500排名标准依据Linpack软件实际测试值所表现出来的浮点计算能力 衡量并行计算机的标准
并行计算机系统结构 • Flynn分类: • SISD, SIMD, MIMD, MISD • 结构模型: • PVP, SMP, MPP, DSM, COW • 访存模型: • UMA, NUMA, COMA, CC-NUMA, NORMA
Flynn分类 Flynn分类 Flynn(1972)提出指令流、数据流和多倍性概念,把不同的计算机分为四大类: • SISD(Single-Instruction Single-Data) • SIMD(Single-Instruction Multi-Data) • MISD(Multi-Instruction Single-Data) • MIMD(Multi-Instruction Multi-Data) 超级计算机肯定是属于MIMD。MIMD从结构上和访存方式上,又可以分为: • 结构模型:PVP, SMP, MPP, DSM, CLUSTER • 访存模型:UMA, NUMA, COMA, CC-NUMA, NORMA
并行计算机体系结构分类 • 分布共享存储系统(DSM) • 通过硬件来实现内存统一编址的超级计算机 • SGI Altix 4000系列和Origin 3000系列 • 大规模并行计算机系统(MPP) • 采用专用定制的网络连接或结构的超级计算机 • Cray “红色风暴” ,IBM SP4 ,IBM “蓝色基因” • 机群系统(Cluster) • 通过定制/标准网络连接的超级计算机 • 曙光TC4000系列,联想深腾6800
对称多处理机系统(SMP) • SMP • 对称式共享存储:任意处理器可直接访问任意内存地址,且访问延迟、带宽、机率都是等价的; 系统是对称的; • 处理器: 一般少于64个; • 处理器不能太多, 总线和交叉开关的一旦作成难于扩展; • 例子:SUN Enterprise, 曙光1号,IBM RS6000,HP SuperDome
分布共享存储系统(DSM) • DSM: • 分布共享存储: 内存模块物理上局部于各个处理器内部,但逻辑上(用户)是共享存储的; 这种结构也称为基于Cache目录的非一致内存访问(CC-NUMA)结构;局部与远程内存访问的延迟和带宽不一致,3-10倍高性能并行程序设计注意 • 与SMP的主要区别:DSM在物理上有分布在各个节点的局部内存从而形成一个共享的存储器 • 处理器: 可扩展性比较好 • 代表: SGI Origin 3000, Altix 4700 , Cray T3D
大规模并行计算机系统(MPP) • MPP • 物理和逻辑上均是分布内存 • 能扩展至成百上千个处理器(微处理器或向量处理器) • 采用高通信带宽和低延迟的互联网络 (专门设计和定制的) • 一种异步的MIMD机器;程序系由多个进程组成,每个都有其私有地址空间,进程间采用传递消息相互作用; • 代表: 曙光1000 ,神威机系列,CRAY T3E, ASCI Red(3072), IBM SP4, CRAY RedStorm,IBM Blue Gene
机群系统(Cluster) • Cluster • 每个节点都是一个完整的计算机 • 各个节点通过高性能网络相互连接 • 网络接口和I/O总线松耦合连接 • 每个节点有完整的操作系统 • 曙光2000、 3000、4000, ASCI Blue Mountain
NORMA: UMA: NUMA: 访存模型分类
UMA: NORMA: NUMA: 多处理机和多计算机 • 多处理机(单地址空间共享存储器) • UMA: Uniform Memory Access • NUMA: Nonuniform Memory Access • 多计算机(多地址空间非共享存储器) • NORMA: No-Remote Memory Access 多处理机 (共享存储) 多计算机 (分布式存储)
UMA: NORMA: NUMA: 访存模型和体系结构对应
目 录 • 并行计算概要 • 高性能计算机体系结构 • 并行编程简介 • 高性能计算机群 • 并行计算的应用模式
并行程序开发环境 • 共享存储模型(Shared Memory) • 消息传递模型(Message Passing) • HPF(High Performance Fortran)
共享存储模型 • 特点: • 一个并行程序由多个共享内存的并行任务组成,数据的交换通过隐含地使用共享数据来完成。 • 一般仅需指定可以并行执行的循环,而不需考虑计算与数据如何划分,以及如何进行任务间通信,编译器会自动完成上述功能。 • OpenMP: • 目前流行的共享内存模型开发标准是OpenMP。 • OpenMP定义了一套编译指导语句,用于指定程序的并行性、数据的共享/私有等信息。其目标是为SMP系统提供可移植、可扩展的开发接口。 • OpenMP由OpenMP Architecture Review Board于1997年推出,现在已发展到2.0版。OpenMP支持的编程语言包括Fortran、C和C++。 • OpenMP得到了工业界的广泛支持,有大量的商业编译器和其他开发工具支持OpenMP的开发,如IBM、HP、Sun、SGI、Intel等硬件厂商均有支持OpenMP的编译器产品,另外还有一些第三方厂商的OpenMP编译器。
消息传递模型 • 特点: • 一个并行程序由多个并行任务组成 • 每个并行任务拥有自己的数据并对其进行计算操作 • 任务之间数据的交换是通过显式的消息传递语句来完成的 • 现在广泛使用的消息传递模型有两个:PVM和MPI • PVM即Parallel Virtual Machine(并行虚拟机) • MPI即Message Passing Interface(消息传递界面) • 几乎所有的高性能计算系统都支持PVM和MPI
HPF • HPF(High Performance Fortran)的思想与OpenMP类似,都是通过定义编译指导语句来帮助编译器生成并行代码。 • HPF的目标系统与OpenMP不同,它支持DMP系统。因此,除了指定并行性的编译指导语句外,HPF还指定数据划分的编译指导语句。 • HPF与消息传递模型的不同之处则在于:HPF通过编译器来生成通信语句,不需要程序员手工编写。 • HPF得到了工业界的广泛支持,如IBM、HP、Sun都有HPF编译器。第三方产品则有PGI的PGHPF、APR的Forge xHPF等。其不足是对于某些问题无法得到与手工编写的消息传递程序相同的性能。
并行编程标准 数据并行编程 • 数据并行语言标准 • Fortran90, HPF(1992), Fortran95/2001:显式数据分布描述,并行DO循环. • 线程库标准(Thread Library) • – Win32 API. • – POSIX threads线程模型. • 编译制导(Compiler Directives) • –OpenMP : portable shared memory parallelism • 消息传递库标准(Message Passing Libraries) • –MPI : Message Passing Interface • –PVM : Parallel Virtual Machine 共享变量编程 消息传递编程
并行编程标准归类 • 所有并行编程标准可分为以下三类: • 数据并行 • HPF, Fortran90 • 用于SMP, DSM • 共享编程 • OpenMP • 用于SMP, DSM • 消息传递 • MPI, PVM • 用于所有并行计算机 • 三者可混合使用: • 如对以SMP为节点的Cluster来说, 可以在节点间进行消息传递,在节点内进行共享变量编程.
消息传递并行程序设计 • 消息传递并行程序设计 • 指用户必须通过显式地发送和接收消息来实现处理机间的数据交换。 • 在这种并行编程中,每个并行进程均有自己独立的地址空间,相互之间访问不能直接进行,必须通过显式的消息传递来实现。 • 这种编程方式是大规模并行处理机(MPP)和机群(Cluster)采用的主要编程方式。 • 并行计算粒度大,特别适合于大规模可扩展并行算法 • 由于消息传递程序设计要求用户很好地分解问题,组织不同进程间的数据交换,并行计算粒度大,特别适合于大规模可扩展并行算法. • 消息传递是当前并行计算领域的一个非常重要的并行程序设计方式
什么是MPI? • Massage Passing Interface:是消息传递函数库的标准规范,由MPI论坛开发,支持Fortran和C • 一种新的库描述,不是一种语言。共有上百个函数调用接口,在Fortran和C语言中可以直接对这些函数进行调用 • MPI是一种标准或规范的代表,而不是特指某一个对它的具体实现 • MPI是一种消息传递编程模型,并成为这种编程模型的代表和事实上的标准
为什么要用MPI? • 高可移植性 • MPI已在IBM PC机上、MS Windows上、所有主要的Unix工作站上和所有主流的并行机上得到实现。使用MPI作消息传递的C或Fortran并行程序可不加改变地运行在IBM PC、MS Windows、Unix工作站、以及各种并行机上。
并行库 • 基本思想是:用户不需要自己编写通用的并行算法代码,而由程序库提供并行算法,并对用户透明。用户只需要根据自己的需求,调用相应的库函数,就可以编写出并行程序。 • 由于库函数的编写者一般经验丰富,而且库函数会采取较为优化的算法,并采用优化编译,使得库函数的执行效率很高。对于大量使用通用计算算法的用户来说,使用并行库是一种高效的开发模式。 • 并行库的缺点是无法帮助那些需要自己书写非通用并行算法的用户。
常用并行库 • 目前的并行库很多,包括PBLAS(Parallel Basic Linear Algebra Subroutines),以及建立在其基础上的LAPACK和ScaLAPACK,提供了一些线性代数问题的并行求解算法,如求特征值、最小二乘问题等。LAPACK是为SMP系统优化的,ScaLAPACK是为DMP系统优化的。大多数高性能计算系统都提供在本系统上优化的PBLAS、LAPACK、ScaLAPACK。 • 另一个著名的并行库是PETSc。PETSc是一套基于MPI的数据结构和库函数,用于解决基于偏微分方程的典型科学计算问题。 • MATLAB是很常用的科学计算软件。很多公司和研究机构也在进行并行化MATLAB的工作,如RTExpress。
开发工具 • 调试工具 • 性能分析与预测 • 资源管理和负载平衡系统
调试工具 • IBM的pdb(命令行方式)、pedb(Xwindow图形界面)、HP的DDE(XWindow图形界面)和LaDebug(用于Alpha系统)、Sun的Prism等 • Etnus公司的TotalView是最著名的第三方并行调试器。它提供对C、C++、Fortran程序的图形化符号调试,可以调试MPI、PVM、HPF、OpenMP程序,支持SGI、Sun、HP、IBM等几乎所有的高性能厂商的产品,还提供对Linux的支持。 • Intel公司的 Thread Analyzer是一个支持OpenMP的程序正确性检测工具,用于自动发现程序中的常见错误。它目前仅支持IA32和IA64上的Linux
性能分析与预测 • 程序性能分析(profiling)可以帮助用户找到程序中最费时的部分,从而集中精力进行改进和优化,是改进程序性能的有效手段 • 传统的性能分析工具一般仅提供子程序级的性能分析 • 但对于高性能程序来说,对于循环程序的性能分析是必不可少的。现有的大部分高性能计算系统中大都具有能够进行循环级性能分析的性能分析器,有些还提供了友好的用户界面,如Intel的VTune、AMD的CodeAnalyst、IBM的Xprofiler等。 • 一些第三方厂商也提供性能分析工具,比如Pallas的Vampir,它支持从Linux PC到IBM、HP、Sun、SGI等几乎所有的高性能厂商的产品。
资源管理和负载均衡系统 • 严格地说负载平衡系统是运行时环境,而不是开发环境 • 负载平衡系统通过了解系统中各个结点的负载状况、计算能力、内存状况等,可以合理地分配任务的执行结点,必要时迁移现有的任务到其他结点,从而达到提高系统吞吐量的作用。 • 对于SMP系统来说,操作系统内置的任务调度器可以完成任务的调度功能 • 对于DMP系统来说,需要专门的软件来进行任务调度,达到负载平衡和单一系统映象(SSI) • 著名的负载均衡系统 • Platform公司的LSF(Load Sharing Facility) • Veridian的PBS(Portable Batch System) • 开源OpenPBS(Torque)、SGE
串行程序自动并行化 • 优点:可以将现有的很多串行代码转换成并行代码 • 并行化分为全自动并行化和交互式并行化两种模式 • 全自动并行化的并行过程不需要人的干预,可以自动发现程序中可并行的部分,生成并行代码;对大多数程序来说,并行化的效果还不理想 • 交互式并行化工具通过给用户提供程序中的有效信息,包括相关性分析结果、程序调用图、性能预测结果等帮助用户进行并行化工作,但是如何更好地结合用户和并行化工具的能力还需要进一步研究。目前产品化的交互式并行化工具主要有APR的Forge,该系统支持Fortran77的并行化,并同时支持SMP系统和DMP系统。
发展趋势 • OpenMP将成为支持SMP系统编程的主要标准,将来的工作在于研究和开发更加有效的OpenMP编译器,以及更加强大友好的开发、调试工具 • MPI和PVM将仍然是DMP系统的主要标准 • 并行库是很有前途的开发方式和研究方向,随着更多的并行程序库的出现,并行化编程会越来越容易。 • 程序自动并行化技术也能大大缩短并行程序的开发时间,但目前的技术即使对SMP系统也没有达到实用的水平,还需要技术上的突破。 • 网格计算是现在的热门话题,也是将来高性能计算的发展方向之一。为网格计算制定标准,提供所需的开发环境和运行环境将是未来的发展方向。
目 录 • 并行计算概要 • 高性能计算机体系结构 • 并行编程简介 • 高性能计算机群 • 并行计算的应用模式
超级计算机的发展 • 专用时代在机群技术出现之前都是,包括大型机,MPP系统,SGI NUMA 系统,SUN大型SMP系统,也包括我国的神威,银河,曙光1000,KJ。之所以称为“专用”,并不是说它们只能运行某种应用,是指它们的组成部件是专门设计的,它们的CPU板,内存板,I/O板,操作系统,甚至I/O系统,都是不能在其它系统中使用的。由于技术上桌面系统与高端系统的巨大差异,和用户群窄小。 • 平民化时代这个时代里两个技术趋势起到重要作用。商品化趋势使得大量生产的商品部件接近了高性能计算机专有部件标准化趋势使得这些部件之间能够集成一个系统中,其中X86处理器、以太网、内存部件、Linux都起到决定性作用。机群系统是高性能计算机的一种,它的技术基础和工业基础都是商品化和标准化。
机群是目前高性能计算机的主流 TOP500排名(2007年6月)
Mainframe PC Workstation Mini Computer Vector Supercomputer 1984年计算机的食物链
(hitting wall soon) Mini Computer PC Workstation Mainframe (future is bleak) Vector Supercomputer MPP 1994年计算机的食物链
什么是机群系统 • 机群系统(Cluster)利用标准网络将一台台普通服务器或者PC机连接起来,为使用者提供更高的计算能力和存储能力并为使用者提供单一系统映象的系统。
单一系统映象 • 使用者在使用机群系统的时候感觉上就象使用一个单独的计算机系统一样。单一系统映象实现方法: • 硬件层、操作系统层、软件层
机群系统的分类 • 按节点机的类型 • SMP Cluster:节点机为SMP,也成为CLUMPS(Cluster of SMP’s)。我们通常说的机群就是SMP Cluster。 • NUMA Cluster:节点机为NUMA结构的机群系统 • PC Cluster:节点机为PC机,通常也成为Beowulf机群(DIY机群) • 按应用领域 • 高性能计算机群 • 信息服务机群