商品参数
面向大规模应用的高性能计算编程与优化 |
 |
曾用价 |
58.00 |
出版社 |
科学出版社 |
版次 |
1 |
出版时间 |
2015年11月 |
开本 |
16开 |
著编译者 |
文梅,柴俊,苏华友,董辛楠,张春元著 |
页数 |
188 |
ISBN编码 |
9787030462596 |
内容介绍
随着信息技术的不断发展,应用对计算的需求不断增加,需要借助高性能计算系统来解决相关领域的问题。如何高效地利用高性能计算资源解决工程和科学问题成为急需解决的问题。本书源自于作者基于天河系列超级计算机进行大规模应用开发的经验和研究成果,对高性能计算相关的基础知识和优化关键技术进行系统的介绍。
本书共 9 章,第 1 章绪论,主要介绍大规模应用对计算的需求,阐述编程方面的挑战;第 2~5 章介绍高性能计算的基础知识,重点介绍 GPU 和 MIC 编程及优化技术;第 6~8 章阐述作者基于天河-1A、天河 2 号超级计算机开发的三个典型应用案例,重点介绍大规模计算集群的优化技术;第 9 章介绍未来的高性能计算,E 级计算的挑战以及一些新兴应用,并讨论未来高性能计算可能的发展方向。
目录
目录
序
前言
第1章绪论1
1.1大规模应用对高性能计算的迫切需求1
1.2高性能计算硬件基础3
1.2.1多核通用处理器3
1.2.2众核加速器4
1.2.3加速器增强型异构系统5
1.3高性能计算编程挑战与研究现状7
1.3.1高性能计算编程挑战7
1.3.2高性能计算编程研究现状9
参考文献13
第2章高性能计算并行基础17
2.1并行计算分类17
2.1.1数据并行17
2.1.2任务并行18
2.2并行计算的度量19
2.2.1性能20
2.2.2扩展性22
2.3并行程序测试集23
2.3.1Linpack23
2.3.213类基准测试分类体系24
2.3.3其他测试集32
参考文献34
第3章并行程序设计36
3.1共享存储计算机36
3.1.1共享存储体系结构36
3.1.2OpenMP编程36
3.1.3实例40
3.2分布式存储计算机45
3.2.1分布式存储体系结构45
3.2.2MPI消息传递机制46
3.2.3实例47
3.3大规模并行计算52
3.3.1混合编程模型52
3.3.2大规模系统节点间通信优化55
参考文献58
第4章GPU并行计算59
4.1GPU体系结构59
4.1.1GPU的发展历程59
4.1.2GPU硬件体系结构62
4.2CUDA编程模型65
4.2.1程序结构65
4.2.2存储模型67
4.3性能优化68
4.3.1大规模线程并行68
4.3.2全局带宽的利用69
4.3.3SM片上资源优化70
4.4单节点多GPU编程71
4.4.1单线程多GPU编程72
4.4.2多线程多GPU编程74
4.4.3多GPUP2P直接通信模式75
4.5大规模CPU-GPU异构计算77
参考文献79
第5章MIC并行计算81
5.1MIC体系结构81
5.1.1MIC体系结构概述81
5.1.2MIC计算核82
5.1.3MIC环形网络84
5.1.4MIC存储层次85
5.2MIC编程模式86
5.2.1offload编程模式87
5.2.2native编程模式90
5.2.3底层编程接口91
5.3性能优化策略93
5.3.1并行优化93
5.3.2访存优化97
5.3.3通信优化99
5.4节点内多MIC并行计算100
5.4.1基于stencil计算的任务划分100
5.4.2基于pragma卸载模式的优化101
5.4.3基于系统级接口的卸载模式104
5.4.4基于MPI-OpenMP的对称模式109
5.4.5不同卸载模式的比较110
5.5大规模CPU-MIC并行计算111
5.5.1大规模CPU-MIC异构系统111
5.5.2基于MIC加速器的大规模异构系统的编程模型112
5.5.3基于MIC加速器的大规模异构系统的并行优化113
5.6本章小结120
参考文献120
第6章面向贝叶斯进化分析的大规模异构混合计算123
6.1引言123
6.2背景125
6.2.1MrBayes概述125
6.2.2同时利用CPU和GPU的挑战126
6.3方法1276.3.1oMC3算法127
6.3.2负载划分策略129
6.4结果和讨论131
6.4.1实验设置131
6.4.2单计算节点上的性能132
6.4.3验证负载划分策略134
6.4.4多节点扩展性135
6.5小结136
参考文献136
第7章基于CPU-GPU异构系统的双岩沉降模拟138
7.1概述138
7.2数学模型和数值方法139
7.3并行实现设计141
7.3.1基于MPI的CPU-only实现142
7.3.2GPU-only实现143
7.3.3CPU-GPU混合实现145
7.4实验评估与分析149
7.4.1实验设置和结果149
7.4.2单GPU性能比较与分析151
7.4.3扩展性评测152
7.4.4时间分布156
7.5小结158
参考文献158
第8章接近纳米级精度的钙动力模拟并行计算160
8.1引言160
8.2应用描述161
8.2.1数学模型161
8.2.2数值方法163
8.3目标体系结构164
8.4实现和优化165
8.4.1整体策略165
8.4.2单协处理器利用166
8.4.3单节点利用168
8.4.4多节点效率168
8.5性能研究169
8.5.1单协处理器性能169
8.5.2单节点性能170
8.5.3弱扩展性170
8.5.4强扩展性171
8.6模拟结果172
8.7小结175
参考文献176
第9章未来的高性能计算178
9.1E级计算的挑战178
9.2Scaleup与Scaleout的比较180
9.3未来可能的发展方向181
9.3.1大规模机器学习181
9.3.2热点方向184
参考文献185
在线试读
第1章绪论
高性能计算(HighPerformanceComputing,HPC)是指使用高端处理器的高端服务器(处理器可以是多个、多种类型,如CPU、GPU等),或者是由多个这样的服务器构成的集群(单个这样的服务器称为一个节点),节点之间以高速互联网络,如天河网络、InfiniBand或Myrinet连接的计算系统来进行计算的统称。传统的高性能计算通常指科学计算,广泛应用于军事、石油勘探、医学成像、气候模拟、自然科学研究等领域。作为解决国家挑战性问题的重要手段,以及解决制约国家经济发展瓶颈问题的重要工具,高性能计算有非常重要的战略意义,高性能计算的水平是国家综合国力的体现。本章从应用需求、硬件平台、编程挑战等几个方面介绍高性能计算的背景,并简单介绍本书中重点关注的加速器增强型异构集群。
1.1大规模应用对高性能计算的迫切需求
大规模科学与工程计算应用领域对计算能力的需求是推动并行计算机发展的源动力[1]。21世纪人类面临的一系列挑战性的重要科技问题,如卫星成像数据处理、全球天气预报、核爆炸模拟、石油勘探、地震数据处理、飞行器数值模拟和大型事务处理、基因工程、生物医学模拟等,数据规模高达TB(1012B)或者PB(1015B)量级①,每秒需要执行万亿次、百万亿次乃至千万亿次浮点运算,高性能计算已经成为当前科学研究不可或缺的重要手段。
下面以生物计算里的心电计算模拟为例来说明。近年来,心脏病已经成为人类三大疾病之一,我国心脏性猝死发生率上升很快,这一现象导致我国心脏性猝死研究工作任务艰巨,需求迫切。绝大多数猝死事件发生在医院外,一旦发生,存活比例甚低,据西方国家报道,院外猝死抢救存活率仅为2%~15%。心脏性猝死作为人类疾病的主要死亡方式之一,迄今仍是威胁人类的重大健康问题。估计全球每年有350万例心脏性猝死发生,美国为40万~45万例,德国为8万~10万例,文献[2]调查首次得出我国心脏性猝死发生率为41.84例/10万人。若以13亿人口推算,则我国心脏性猝死总人数高达54.4万例/年,位居全球各国之首。在医学领域对心电的研究主要依靠对心电现象的直接观察、对心电规律的总结和动物实验。心脏心电活动只有在有生命的个体上才能真实地表现出来。无论在伦理、观测深度还是实验便捷性上,直接观察都无法满足人类心脏心电特性研究需要。因此,在心脏分子和细胞学研究领域,通过对心肌细胞中的离子动作电位进行包含心肌细胞电生理特征的数学建模,可以精确表述真实的心肌细胞收缩,能够在细胞水平上直接利用计算机技术对一些复杂的心脏活动假说进行验证与预测。
然而,心脏电活动的空间和时间的跨度很大,空间跨度可以从细胞膜蛋白分子直径的1nm到整个机体10cm的尺度,相差达8个数量级;时间跨度从布朗运动的1μs到人们心脏跳动持续的周期数十分钟,相差9个数量级。建立一个多层次的心脏细胞模型,用于精确描述健康或者生理病理的心脏细胞活动,仍是难以捉摸的。用单个细胞的模型构建整个心脏的模型(从左至右是从微观到宏观,亚细胞级、细胞级、组织级到器官级,如图1.1所示),这种自下而上的方法不仅建立了将细胞/亚细胞级别的生物物理现象与心脏器官活动模式关联的可能性,还对心电模拟的空间分辨率、时间分辨率的提升和优化打下基础,成为心电建模与仿真发展的一个主要方向。整个心脏由约1010个细胞组成,这么多细胞级别甚至亚细胞级别模型模拟的计算量是极其巨大的。更为严重的是,由于心脏电子脉冲传播的时空特征,心脏状态的变化极快,要求极高的时间分辨率,而且心电波阵面是急剧升降的,所以又需要非常精细的空间分辨率。综合来说,这两个因素使得仅模拟一次心脏跳动,就要上万甚至数十万次求解一个庞大的方程系统,同时,因为需要设置大量不同的参数和场景组合,这些模拟通常必须反复运行[3],所以需要庞大的计算能力来保证系统数学模型的精确性和正确性[2]。
图1.1心电模拟自下而上的四个层次(从左至右是从微观到宏观)
当前超级计算机已经进入千万亿次(Peta-flops,1015)浮点计算能力的时代,但诸如高能核物理、材料化学、生命科学等一系列应用表现出对计算能力的超高需求,计算和模拟的时间空间分辨率,规模,以及实时性的需求永无止境,也就是说应用对计算能力的需求同样永无止境。近年来,美国、欧洲联盟(简称欧盟)、日本、俄罗斯和印度纷纷制定百亿亿次(Exascale,1018)级计算的计划[4],简称E级计算。例如,美国计算机科学中心为Jaguar/Titan超级计算机选定了6个面向百亿亿级的核心程序:S3D、CAM-SE、DENOVO、LAMMPS、PFLOTRAN和WL-LSMS[5]。这些代码的特点是在不同的尺度进行高分辨率模拟或直接数值模拟,但有限元/有限差分和分子动力学模拟这两大类基本数值方法仍将是未来百亿亿级科学与工程计算的核心应用算法[6]。
综上所述,应用领域对计算能力存在着巨大的需求,而当前基于加速器增强型异构高性能计算系统的发展正好为这类计算问题的解决提供了良好的机遇。
1.2高性能计算硬件基础
高性能计算系统从硬件角度来看,是由集中存放的高性能服务器节点通过高速网络互连组成的。高性能服务器的核心就是高端处理器(高端指性能高)。下面简要介绍主流的两种类型的处理器,通用处理器(CPU)和加速器,同时介绍高速网络和典型的加速器增强型异构计算系统。
1.2.1多核通用处理器
传统通用处理器的特点是面向广泛的应用领域,如桌面应用、Web服务、SPEC等应用设计,多数工作负载以事务处理、不规则标量、非计算密集等特点为主①,因此可以独立作为处理器或者作为加速器的主处理器存在。由于通用处理器通常采用全局寄存器文件、Cache、深度流水线等,能效比相对专用处理器、加速器等较低。
三十多年来,大规模和超大规模集成电路和体系结构技术的发展,使得处理器的性能一直保持着指数规律飞速增长。根据摩尔定律(Moore’slaw)的预测,集成电路的集成度的速度增长为每18个月翻一倍,目前单芯片的晶体管数已接近十亿个,工作频率高达数GHz。VLSI工艺的发展提供了丰富片上资源,为处理器体系结构的发展提供动力,同时也带来挑战。提高片上单处理器性能一直是传统处理器体系结构的设计方向。然而传统的依靠开发指令级并行(InstructionLevelParallelism,ILP)和提高处理器频率来提高处理器性能的方式导致流水线越来越深,处理器频率越来越高。随着集成电路工艺向深亚微米发展,物理上功耗和散热的增加限制了性能的提高,导致可靠性下降,频率也很难像以前那样快速提高,4GHz的频率成为处理器厂商难以逾越的关口。工艺、材料和功耗的限制使得摩尔定律中描述的性能翻倍时间加长,性能提升遭遇瓶颈。
多核革命(multi-corerevolution)趋势的出现克服了单处理器性能提升的物理限制,体系结构设计方向转向发展在单芯片上集成大量并行执行的计算单元,即多核/众核处理器(multi-core/many-coreprocessor)[7]。多核/众核处理器在单片上集成了多个处理器核一起并行工作,不仅能开发单核传统的指令级并行,更能开发核间的数据级和任务级并行,可以在更低的频率下提供相比单核处理器高得多的性能。充分利用大量的片上资源,在提高性能的同时又满足了功耗和散热的限制,而且相对简单的处理器核降低了设计难度,提高了设计效率。因此,几乎所有微处理器厂商都转而研发多核/众核处理器。自从2005年Intel和AMD正式推出双核CPU,此后各大厂商都陆续推出4核、8核、12核等的通用多核CPU。以Intel芯片为例,目前SandyBridge和IvyBridge都是其高端处理器体系结构。
1.2.2众核加速器
为了改善通用处理器的低能效问题,新型加速器不断出现。加速器的特点是仅面向特定的某一类或者某几类应用,如媒体处理、图形图像处理等①。这些工作负载的特点突出,如流式应用、计算密集等[8],因此体系结构可以不使用或者少部分使用Cache,而采用软件管理的存储,增加向量单元提供定点/浮点计算能力,简化控制逻辑等方法来提高处理器能效[9]。
典型的加速器有流处理器、GPU、Tile64、MIC(其芯片称为XeonPhi)等,其中GPU和MIC是主流的商用加速器体系结构。
2007年NVIDIA公司推出了全新统一计算设备架构(ComputeUnifiedDeviceArchitecture,CUDA)的面向通用计算的GPU众核处理器,在单芯片上集成了数百个计算核,以CPU协处理器的方式工作,相比通用多核CPU,其更加强大的浮点计算能力使之成为天然的加速器。目前NVIDIA新款的GPU已经在单片上集成了2880个计算核,双精度浮点性能为1.43Tflops②。
2012年Intel公司推出了新一代MIC架构的众核协处理器XeonPhi,单片50+的计算核,支持200+的硬件线程,双精度浮点峰值性能超过1Tflops。
众核加速器在性能功耗比方面比通用处理器更有优势,从根据实测Linpack的性能功耗比进行排名的Green500全球超级计算机*近几期榜单就可以看出:2012年11月的榜单头名是美国田纳西大学国家计算科学研究院的Beacon阵列,48节点,每节点配有4个IntelXeonPhi5110PMIC加速器,全系统性能功耗比为2.5Gflops/W;2013年6月的榜单[10]中,前3名都是基于GPU或者MIC的系统;而2013年11月的榜单上[11],前10名全是基于GPU的系统,第*名是日本东京工业大学(TITech)的TSUBAME-KFC阵列,40个节点,单节点配有4个NVIDIAK20xGPU作为加速器,全系统性能功耗比达到4.5Gflops/W,同时TSUBAME-KFC也获得了衡量大数据计算功耗效率的GreenGraph500同期榜单的第*名[12]。
目前,从巨型机的高性能计算到普通PC的桌面计算,多核/众核处理器已经被广泛使用于各个领域,计算技术发展已经全面进入多核/众核时代。特别是在高性能计算领域,GPU与MIC作为众核加速器的典型代表,以较高的性能功耗比,有力地推动了高性能计算的发展。基于通用多核处理器+众核加速器(称为加速器增强型)的异构并行计算,已经成为高性能计算的重要发展方向。
1.2.3加速器增强型异构系统
图1.2所示结构为一个异构节点,节点间通过InfiniBand[13]、定制网络(THExp-ress-2)[14]或其他高速网络互连,形成节点内异构,节点间同构的基于加速器的大规模异构计算机阵列系统,称为加速器增强型异构系统,也是全书关注的计算平台。
图1.2单节点异构系统示意图
TOP500组织[15]每半年发布一次全球高性能计算机Linpack[16]计算性能前500排行榜,代表了全世界高性能计算机研制的*高水平,反映了各个国家的高性能计算实力以及高性能计算机的发展趋势。
图1.3是根据*近6年12次的TOP500榜单统计得到的异构系统数量变化趋势。从图中可以发现,基于加速器的异构系统总数量总体上呈逐年增长的趋势。其中基于NVIDIAGPU的系统占有了几乎统治性的比例,特别是在2012年6月达到*高峰的53台。基于Cell的系统起步*早,但已经消失。而基于ATI和AMD公司的GPU系统数量一直较少。从2012年6月出现基于MIC的异构系统后,其呈现逐年快速增长的趋势。因此,可以预见未来的异构系统还是主要以NVIDIAGPU和IntelMIC为主要加速设备,并且后者具有新的活力。从2013年11月的*新榜单看,虽然总计53台异构系统只占到500台机器的10%左右,然而在排名前10的机器中,有4台是异构系统(2台基于NVIDIAGPU、2台基于IntelMIC),并且排名1、2名的都是异构系统。这也说明了基于GPU和MIC的异构系统以其高性能、低功耗的优势已经并将继续**高性能计算机的发展趋势。正如NVIDIA前首席架构设计师Scott所说:“同时考虑性能、能源效率和成本效率,加速运算是未来十年使Exascale性能级别得以达成的*好而且*现实的方式”[17]。图1.3*近6年TOP500榜单中的异构系统数量变化趋势
下面介绍几个典型的加速器增强型异构集群。
1.天河-1A
2010年11月由我国研制的天河-1A[18]是全世界**个基于CPU/GPU异构节点搭建获得TOP500排行榜**名的超级计算机系统,也是我国计算机**次位列**名。天河-1A理论峰值性能4.7Pflops,Linpack实测持续性能2.56Pflops,性能功耗比为635.15Mflops/W[16],主要由7168个计算节点组成,每个节点包括2片6核Nehalem架构的IntelXeonX5670CPU,以及1块448核的NVIDIAFermi系列的TeslaM2050GPU[19]。天河-1A的出现使得基于GPU加速的异构计算成为高性能计算领域的焦点,极大地推动了全世界基于GPU并行计算的研究,标志着GPU异构计算已经成为高性能计算的重要发展方向。
2.天河2号
2013年6月由我国研制的天河2号[20]是全世界**个基于CPU/MIC异构节点搭建并获得TOP500排行榜**名的超级计算机系统,并且在2013年11月发布的TOP500排行榜再夺首位①。天河2号理论峰值性能54.9Pflops,Linpack实测持续性能33.8Pflops[14],性能功耗比为1901.54Mflops/W[21],主要由16000个计算节点组成,每个节点包括2片12核IvyBridge架构的IntelXeonE5-2692CPU,以及3块57核的IntelMIC协处理器(KnightsCorner子架构,型号:IntelXeonPhi31S1P)。天河2号的出现使得基于MIC加速的异构计算成为继GPU异构计算之后高性能计算领域的另一个