高性能计算机技术交流
并行库
• 基本思想是:用户不需要自己编写通用的并行算 法代码,而由程序库提供并行算法,并对用户透 明。用户只需要根据自己的需求,调用相应的库 函数,就可以编写出并行程序。 • 由于库函数的编写者一般经验丰富,而且库函数 会采取较为优化的算法,并采用优化编译,使得 库函数的执行效率很高。对于大量使用通用计算 算法的用户来说,使用并行库是一种高效的开发 模式。 • 并行库的缺点是无法帮助那些需要自己书写非通 用并行算法的用户。
高性能计算和高性能计算机
赵崇山 2007-08-10
目 录
• • • • • 并行计算概要 高性能计算机体系结构 并行编程简介 高性能计算机群 并行计算的应用模式
计算是认识世界的主要手段
应用物理
新材料设计 辐射传输 宇宙演化
不可能进行实验
工程
多物理尺度的问题 流体力学(CFD) 结构力学(CAE)
共享存储模型
• 特点:
– 一个并行程序由多个共享内存的并行任务组成,数据的交换通过隐含地使 用共享数据来完成。 – 一般仅需指定可以并行执行的循环,而不需考虑计算与数据如何划分,以 及如何进行任务间通信,编译器会自动完成上述功能。
• 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编译器。
常用并行库
• 目前的并行库很多,包括PBLAS(Parallel Basic Linear Algebra Subroutines),以及建立在其基础上的LAPACK和 ScaLAPACK,提供了一些线性代数问题的并行求解算法, 如求特征值、最小二乘问题等。LAPACK是为SMP系统优 化的,ScaLAPACK是为DMP系统优化的。大多数高性能计 算系统都提供在本系统上优化的PBLAS、LAPACK、 ScaLAPACK。 • 另一个著名的并行库是PETSc。PETSc是一套基于MPI的数 据结构和库函数,用于解决基于偏微分方程的典型科学计 算问题。 • MATLAB是很常用的科学计算软件。很多公司和研究机构 也在进行并行化MATLAB的工作,如RTExpress。
消息传递模型
• 特点:
–一个并行程序由多个并行任务组成 –每个并行任务拥有自己的数据并对其进行计算操作 –任务之间数据的交换是通过显式的消息传递语句来完成 的
• 现在广泛使用的消息传递模型有两个:PVM和MPI
–PVM即Parallel Virtual Machine(并行虚拟机) –MPI即Message Passing Interface(消息传递界面) –几乎所有的高性能计算系统都支持PVM和MPI
NUMA:
多处理机和多计算机
•多处理机(单地址空间共享存储器) • UMA: Uniform Memory Access • NUMA: Nonuniform Memory Access •多计算机(多地址空间非共享存储器) • NORMA: No-Remote Memory Access
多处理机 (共享存储)
并行编程标准
• 数据并行语言标准
• 线程库标准(Thread Library)
– – Win32 API. – – POSIX threads线程模型. 数据并行编程 – Fortran90, HPF(1992), Fortran95/2001:显式数据分布描述,并行 DO循环. 共享变量编程
• 编译制导(Compiler Directives)
消息传递并行程序设计
• 消息传递并行程序设计
– 指用户必须通过显式地发送和接收消息来实现处理机间的数据交 换。 – 在这种并行编程中,每个并行进程均有自己独立的地址空间,相 互之间访问不能直接进行,必须通过显式的消息传递来实现。 – 这种编程方式是大规模并行处理机(MPP)和机群(Cluster)采 用的主要编程方式。
– 对称式共享存储:任意处理器可 直接访问任意内存地址,且访问 延迟、带宽、机率都是等价的; 系统是对称的; – 处理器: 一般少于64个; – 处理器不能太多, 总线和交叉开 关的一旦作成难于扩展; – 例子:SUN Enterprise, 曙光1号, IBM RS6000,HP SuperDome
– – OpenMP : portable shared memory parallelism
• 消息传递库标准(Message Passing Libraries)
– – MPI : Message Passing Interface – – PVM : Parallel Virtual Machine 消息传递编程
• 根据问题的求解过程,把任务分成若干子任 务(任务级并行或功能并行) • 根据处理数据的方式,形成多个相对独立的 数据区,由不同的处理器分别处理(数据并行)
如何实现并行计算?
分而治之!
目 录
• • • • • 并行计算概要 高性能计算机体系结构 并行编程简介 高性能计算机群 并行计算的应用模式
大规模并行计算机系统(MPP)
• MPP
–物理和逻辑上均是分布内存 –能扩展至成百上千个处理器(微 处理器或向量处理器) –采用高通信带宽和低延迟的互 联网络 (专门设计和定制的) –一种异步的MIMD机器;程序 系由多个进程组成,每个都有 其私有地址空间,进程间采用 传递消息相互作用; –代表: 曙 光 1000 , 神 威 机 系 列 , CRAY T3E, ASCI Red(3072), IBM SP4, CRAY RedStorm , IBM Blue Gene
实验危险
环境科学
全球气候 污染输运
实验困难
生物学
药物设计 基因学
数值 模拟
公共安全与管理
燃烧 现象 城市交通模拟
实验有争议
实验昂贵
并行计算的功能
• 降低单个问题求解的时间 • 增加问题求解规模、提高问题求解精度
• (多机同时执行多个串行程序)容错、更高的可用 性、提高吞吐率
并行计算的应用需求
并行化的主要方法:分而治之
多计算机 (分布式存储)
UMA:
NUMA:
NORMA:
访存模型和体系结构对应
UMA: NUMA: NORMA:
目 录
• • • • • 并行计算概要 高性能计算机体系结构 并行编程简介 高性能计算机群 并行计算的应用模式
并行程序开发环境
• 共享存储模型(Shared Memory) • 消息传递模型(Message Passing) • HPF(High Performance Fortran)
–一种新的库描述,不是一种语言。共有上百个函数调 用接口,在Fortran和C语言中可以直接对这些函数进行 调用 –MPI是一种标准或规范的代表,而不是特指某一个对它 的具体实现 –MPI是一种消息传递编程模型,并成为这种编程模型的 代表和事实上的标准
为什么要用MPI?
• 高可移植性
–MPI已在IBM PC机上、MS Windows上、所有主要的 Unix工作站上和所有主流的并行机上得到实现。使 用MPI作消息传递的C或Fortran并行程序可不加改变 地运行在IBM PC、MS Windows、Unix工作站、以 及各种并行机上。
超级计算机肯定是属于MIMD。MIMD从结构上和访存方式上, 又可以分为:
– 结构模型:PVP, SMP, MPP, DSM, CLUSTER – 访存模型:UMA, NUMA, COMA, CC-NUMA, NORMA
并行计算机体系结构分类
• 分布共享存储系统(DSM)
–通过硬件来实现内存统一编址的超级计算机 –SGI Altix 4000系列和Origin 3000系列
并行编程标准归类
• 所有并行编程标准可分为以下三类:
– 数据并行
• HPF, Fortran90 • 用于SMP, DSM
– 共享编程
• OpenMP • 用于SMP, DSM
– 消息传递
• MPI, PVM • 用于所有并行计算机
• 三者可混合使用:
– 如对以SMP为节点的Cluster来说, 可以在节点间进行消息传递,在节 点内进行共享变量编程.
HPF
• HPF(High Performance Fortran)的思想与OpenMP类似, 都是通过定义编译指导语句来帮助编译器生成并行代码。 • HPF的目标系统与OpenMP不同,它支持DMP系统。因此, 除了指定并行性的编译指导语句外,HPF还指定数据划分 的编译指导语句。 • HPF与消息传递模型的不同之处则在于:HPF通过编译器来 生成通信语句,不需要程序员手工编写。 • HPF得到了工业界的广泛支持,如IBM、HP、Sun都有HPF 编译器。第三方产品则有PGI的PGHPF、APR的Forge xHPF 等。其不足是对于某些问题无法得到与手工编写的消息传 递程序相同的性能。
分布共享存储系统(DSM)
• DSM:
–分布共享存储: 内存模块物理上局 部于各个处理器内部,但逻辑上(用 户)是共享存储的; 这种结构也称为 基于Cache目录的非一致内存访问 (CC-NUMA)结构;局部与远程内存 访问的延迟和带宽不一致,3-10倍 高性能并行程序设计注意 –与SMP的主要区别:DSM在物理上 有分布在各个节点的局部内存从而 形成一个共享的存储器 –处理器: 可扩展性比较好 –代表: SGI Origin 3000, Altix 4700 , Cray T3D