服务器进入异构并行时代

行业观察

去年11月,NVIDIA就公布了基于Fermi(费米)架构、面向高性能计算领域的Tesla 20系列计算处理器和计算系统,随着现在其合作伙伴推出相关服务器产品,人们对异构并行服务器的关注度再度提升。何为异构系统?CPU和GPU对大型行业计算各有什么用处?异构系统会给HPC带来什么变革,最新的HPC TOP500榜里有多少采用了异构系统呢?异构系统对推动HPC小型化,对推动行业计算和企业信息化有何作用呢?

解读异构并行计算系统

●并行计算是主流

并行计算是目前计算机技术发展的主流趋势。而究竟什么是并行计算呢?从词义上可知,并行计算就是用计算机同时对多个任务进行数据处理,N台计算机应能够提供N倍计算能力,不论当前计算机的速度如何,都可以期望被求解的问题在1/N的时间内完成。能实现并行计算或具备并行计算特性的系统被称为并行计算系统。并行计算是提高计算机系统计算速度和处理能力的一种有效手段,从其技术特点来看,它可以是数个到数千个CPU和GPGPU构成的异构系统,也可以是由数个到数万个CPU构成的同构计算机集群,或是以某种方式互联的若干台独立计算机构成的集群。

并行计算的兴起与前沿领域日益增强的计算需求密不可分。在分布式体系结构的超级计算机中,要求所选系统具有较高的扩展性,可以从较低的入门系统建设开始,通过增加节点,在未来随着应用程序需求的增加,轻松扩展到更大的计算规模,这既是并行计算系统的优势所在,也是并行计算方兴未艾的主因。

●异构系统是趋势

而异构系统则是并行计算向前发展的推动力。什么是异构系统呢?对此先来简单了解一下传统的并行计算系统的工作模式,传统的并行计算系统一般采用多台同类型的高性能计算节点组成计算集群,同构并行用于运算大量分布式的应用程序,计算节点中的CPU一般采用相同厂家的相同架构处理器,集群根据处理器数目按需求配置内存,计算节点间采用Infiniband等高带宽低延迟的互联设备安全高效地进行网络互联。从具体产品特性上来看,像Intel、AMD、IBM、Sun等CPU厂商的传统处理器都是典型的多核多线程同构并行结构。欧洲目前运算速度最快的“尤金”巨型计算机甚至通过使用292000个性能并不是很高的同构处理器芯片,使其整体运算速度也能达到每秒825万亿次。

异构系统在不同的领域有不同的解释。例如,在处理器方面,有异构处理器或异构通用处理器,典型的如Intel最新的集成显示核心的32nm酷睿系列处理器就是这样的产品,而传说中的Larrabee也将集成CPU和图形芯片。当然,受限于目前的技术水平,还难以出现集成GPU或集成CPU且性能可比肩高性能独立CPU/GPU的产品,所以目前这种异构系统尚处在较低的入门应用水准,难以担当异构超级计算机中高性能计算的重任。

在服务器方面,有别于传统的由相同的CPU组成一个同构的计算环境的多路服务器,异构服务器多采用CPU+GPU模式,这是目前异构并行计算系统最热门的应用。当然,有读者或许会有疑问,例如塔式服务器中都有独立的显示芯片,这也是异构系统吗?显然这不是,这类显示芯片只是充当2D图形显示之用,并不能完成高性能的图形实时渲染甚至通用GPU所能完成的任务,它只是整个系统中的一个普通附属件,不具备对等性,难以被称为GPU或异构系统。并且,目前的异构系统中使用的GPU已开始向AMD提出的GPGPU(General Purpose Computation on GPU,通用GPU)理论发展,CPU+GPGPU是组成当代异构系统的主要特征。而在曙光6000中甚至会用“龙芯”处理器进行加速运算。

在集群系统方面,可由不同类型的服务器组成异构并行计算集群。如著名的超级计算机“Roadrunner(走鹃)”,便由一台Opteron刀片处理I/O,由两台附加的Cell刀片完成计算加速,三台刀片组成一个异构并行集群节点来构成最终的异构系统。

这三种类型的异构系统都是目前异构并行计算及技术发展的方向,随着相关技术的不断突破,未来采用这三类异构系统的超级计算机会越来越多。NVIDIA公司首席科学家Bill Dally甚至表示,未来我们使用的各种运算设备都将采用“异构计算”的理念,由一颗传统的CPU来负责处理日常工作,而大量复杂任务将由GPU核心完成,从智能手机到笔记本再到服务器,所有IT或数码设备都将由异构处理器或异构系统组成。

25-企业01-01.jpg
系统异构化是大势所趋

采用异构系统对HPC的意义

在计算机中其实有两大处理器,一为CPU,一为GPU。CPU和GPU的设计目标的不同决定了两者在架构和性能上的巨大差异,相对于仅能以很少线程同时工作的多核CPU而言,GPU可以同时执行数千个线程,这让CPU+GPU的异构系统能处理更多的信息流。CPU对延迟更敏感,而GPU更侧重于提高整体的数据吞吐量,在协同计算、并行计算领域,CPU主要用于通用程序的运行,负责执行顺序型任务,如运行操作系统和数据库,GPU主要承担并行计算任务,用于密集型程序的计算,这将成为未来发展的趋势。

对于越来越注重浮点运算能力的服务器或HPC(高性能计算机)来说,显然,要想获得更高的浮点运算性能,组成CPU+GPU的异构系统,也更容易在这方面获得优势,也能更好地顺应图形渲染需求日益增强的应用潮流。当前的高端GPU一般有多达上千个单元在同时运行,一个GPU集群内则可超过1万个单元,尽管GPU的运行频率低于CPU,但更多的执行单元数量使GPU在浮点运算能力上远强于CPU,主流GPU的浮点运算能力可以达到同时期主流CPU性能的10倍甚至100倍以上,这让普通的多核CPU相形见绌。1989年全球最快的超级计算机Cray 2的浮点运算能力为每秒39亿次,而目前主流CPU的浮点运算能力可达每秒百亿次,高端的GPU则可达万亿次。计算机技术在不断进步的同时,也让行业用户看到GPU在浮点运算能力方面的天然优势。

从目前的全球HPC TOP500排行榜来看,已有近十分之一的系统使用了CPU+GPU的异构系统。其中最有名的此类代表系统是“走鹃(Roadrunner)”,走鹃是一款具备完整异构特征的超级计算机。走鹃采用了一系列专门针对游戏和商业的技术,包括用于PS3游戏机的Cell宽带引擎和AMD X86处理器。为此在走鹃拥有的130536个计算核心中,包括12960颗Cell引擎的116640个PPE和SPE核心,以及6948颗双核AMD Opteron处理器。Cell引擎用途十分广泛,能用于各种不同的层面,最强悍的是其强大的浮点运算能力,其早期产品每秒也能进行2560亿次浮点计算,这让走鹃的运算速度可轻松达到1Petaflop/s,即每秒钟可进行1000万亿次浮点运算。

而目前在HPC TOP500榜中排行第七的HPC是来自国内的异构系统“天河一号”。“天河一号”全系统包含6144个通用处理器(CPU,3072×2 Intel Quad Core Xeon E5540 2.53GHz/E5540 3.0GHz)和5120个加速处理器(GPU,2560 ATI Radeon 4870×2 575MHz),这让“天河一号”的系统峰值性能达每秒1206万亿次,Linpack实测性能为每秒563万亿次。

去年在全球HPC TOP500排行榜上采用NVIDIA Tesla的异构系统最好成绩排名第29位。这套名为“TSUBAME”的系统由NEC和Sun公司联合研制,采用了CPU+GPU的混合架构,由3万多颗AMD Opteron和英特尔Xeon处理器内核以及170台Tesla S1070 1U服务器组成。其配备的单台S1070便内置4块Tesla GPU显卡,每个GPU处理器拥有240个流处理单元,也就是说1台S1070总共拥有960个内核,内核频率为1.296GHz~1.44GHz,可以并行执行成千上万的线程,带来整体性能的提升。如今这个记录已被HPC TOP500排行榜上排行第二的来自曙光公司的“星云(Nebulae)”所打破,它由近9280颗通用CPU和4640颗GPGPU(NVIDIA Tesla C2050)组成,性能令人注目。

一些曾困扰CPU+GPU走向普及的问题也正在被解决。例如,科学研究对运算精度要求非常高,双精度浮点运算使用率越来越高,在对精度要求很高的科学研究和勘探方面,单精度(32bit)的价值越来越小,所有计算几乎都需要双精度(64bit),AMD Stream技术的产品在这方面表现较好,AMD的GPU架构天生就拥有很强的浮点运算能力,尤其是拥有令对手汗颜的双精度浮点运算能力,2007年AMD推出的FireStream 9170卡成为全球首款采用双精度浮点技术的流处理GPU,它主要面向科学和工程计算应用领域。先前的NVIDIA GPU虽然单精度性能很高,但双精度性能很低(大约只有双精度性能的1/8),而随着NVIDIA在Fermi架构中对双精度运算单元的改进,在2010年采用NVIDIA Tesla GPU构建的超级计算机“星云”一举杀入全球高性能计算机TOP500排行榜的前三强。这表明未来的异构系统在各种运行需求下都能有更佳表现,未来相关高性能计算机只需要着重关注能效和能耗问题,就能实现完美的异构解决方案,让异构系统更全面地在HPC运算中发挥作用。

此外,相关软件对异构系统的支持正逐步完善。IBM的采用“X86 CPU+Cell”的异构计算机走鹃虽然实现了千万亿次性能,却“非常难用”,因为其多核编程、超大规模编程非常困难。而AMD及NVIDIA的新一代GPGPU则在这方面要好得多,它们广泛支持通用的OpenCL(开放运算语言)和DirectCompute标准,允许相关系统更好地利用GPU资源来为应用程序加速,NVIDIA的产品在自家的CUDA环境中更具备优势,这让现在的异构HPC在兼具更强大的运算性能的同时变得更加易用。

25-企业01-02.jpg
具备更多运算单元的GPU在某些领域具备更强的运算能力
25-企业01-03.jpg
GPU卡成为构建异构系统的关键

异构系统推动HPC小型化

GPU在高密度并行计算方面拥有得天独厚的优势,这让以前需要很多服务器组成集群才能完成的计算任务,现在小型化HPC(也常被称为桌面高性能计算机)也能轻松完成。在很多领域,GPU的计算能力都能超过传统的计算机,让许多原来无法解决的问题现在可以通过CPU+GPU异构计算机来轻松解决。在NVIDIA提供的一些实例中,我们可以清楚看到这种改变带来的变化:美国国家癌症研究所通过GPU计算,将模拟速度提升了12倍,等待结果的时间从原来的2个小时缩短到了10分钟;美国国家大气研究中心的气象研究和预报模型(WRF)尽管仅仅将1%的计算任务通过CUDA来实现,但其总体速度却提升了20%,节省了一个星期的分析时间;在评估整个美国期权市场时,Hanweck原来计划用价值26.2万美元的CPU集群来处理,而采用三台Tesla S870后,机架占用空间为原来的1/9,硬件成本为原来的1/6。

位于全球HPC TOP500榜前10强的“美洲豹”超级计算机由18万颗CPU核心组成(4.5万颗4核CPU),如果改用Tesla的话,只要1.5万个GPU就可以实现同样的性能。超级计算机的运算量主要用双精度浮点运算能力来衡量,例如用1.8万颗3GHz的CPU来实现100Teraflop/s的运算量,如想实现10Petaflop/s的运算量就需要180万颗CPU,这对于超级计算机制造者来说,几乎是不可能完成的任务。目前要想单纯依靠CPU来实现超级计算机性能的飞跃正变得越来越困难,而GPU的加入则可让这种计算变得更简单。目前的小型化HPC已完全能实现5年前超级计算机所能实现的运算性能,CPU+GPU的异构系统也完全有能力让超级计算机走向桌面。

虽然CPU运算和GPU加速并非解决计算问题的万能钥匙,但正是这种密集运算性能的飞速提升,让小型化HPC被服务器厂商广泛关注,相关的高性能桌面HPC产品也层出不穷。Appro的1U Tera GPU服务器,包括“1326G4”、“1426G4”两种型号,分别采用两颗AMD Opteron 6100八/十二核心处理器和两颗Intel Xeon 5500/5600四/六核心处理器,均配备了四块Fermi Tesla M2050,拥有1792个流处理器、12GB ECC GDDR5显存,双精度浮点性能超过2Teraflop/s。操作系统可选Windows、Linux,电源额定功率为1400W。

浪潮“倚天”桌面超级计算机业采用了CPU+GPU的协同计算加速架构,创新性地引入了GPU计算单元,突破了传统单一的计算单元,采用Intel最新的Nehalem处理器核心与NVIDIA Tesla加速计算技术协同,让CPU和GPU各司其职,CPU主要承担更加擅长的逻辑选择、判断跳转和I/O通信方面的职责,而GPU则专职计算密集型、高度并行的计算工作,使得计算资源被合理地分配,计算力被充分释放,实现了计算性能从几倍到几百倍的增长。支持CUDA通用并行计算架构使GPU能够解决复杂的计算问题,它包含了CUDA指令集架构(ISA)以及GPU内部的并行计算引擎,开发人员现在可以使用C语言来为CUDA架构编写程序,所编写出的程序可以在支持CUDA的处理器上以超高性能运行。浪潮“倚天”桌面超级计算机的大小只和普通PC差不多,但它的性能相当于200台PC或40台服务器,其峰值计算能力达到了每秒4万亿次,售价为5万元左右,在生命科学、工程科学、石油天然气勘探、金融、医学成像以及视频与音频处理等高性能计算领域有着广阔的应用前景。

25-企业01-04.jpg
在异构系统的推动下,小型HPC正走向办公室

编后:目前全球HPC TOP500榜中的绝大多数超级计算机仍基于CPU同构集群的方式搭建,但这并不影响CPU+GPU的异构HPC在未来展露锋芒,因为在某些领域这种架构确实可实现几十倍乃至几百倍的性能提升,未来的超级计算机市场也因此将形成同构并行计算和异构并行计算共存的局面,这样的趋势能更好地满足不同用户及不同计算环境对高性能计算的需求。而随着新一代通用并行计算架构及API的不断市场化,未来基于GPGPU的软件将会越来越多,异构并行计算系统在这方面的局限将被“扫除”。