GPU运算即将退潮 CPU浮点性能革命
《中无通讯》第68期 文︰ 世界网络 www.linkwan.com 林和安 小洛夫
看个笔者这个题目,大家也许会感到十分惊讶。因为近年来各大媒体均大力吹嘘GPU运算能力一日千里,加上各种支援GPGPU运算的软件陆续登场,超级计算机市场上早已是GPU的天下,而且在桌面计算机及智能手机市场也计划陆续支援GPU加速功能,使GPU在计算机重要性不亚于CPU,笔者凭甚么说CPU会反过来取代GPU呢? 原来,Intel与AMD针对于CPU架构不足,早于数年前已从事新一代指令集及微架构之研发,锐意提升CPU浮点性能,相关产品更已陆续登场,又会为市场带来怎样的改变呢?
回顾GPU走上巅峰的日子
GPU的主要应用是游戏市场,何以发展至今天无所不能呢?不如先让我们回顾一下GPU的发展进路。
GPU全名Graphics Processing Unit,中文解作图像处理单元,因为NVIDIA认为GPU提升强大,部份甚至是不依赖CPU的独立运算性能,非过往2D/3D图形芯片可比。公认的GPU始祖为NVIDIA于1999年推出的GeForce 256。这颗GPU最大的特点是整合了T & L(Transform and Lighting)功能,使GPU可以提供强大的几何并改进光影表现。而以往这些功能主要由CPU负责的,自此GPU的重要性大大提升。另一方面,NVIDIA是一家野心勃勃的公司,他们并不满足于游戏市场。在2001年发布的GeForce 3,改用编程的着色器(Programmable Shaders)设计,自此GPU具有一定的可编程功能而非过去固定设计,使用上更有弹性,只待合适的开发平台,即可开发出各种采用GPU加速软件。终于在2004年,由美国的史丹佛(Standford University)开发出Brook 这款为GPU而设的计算机语言。随后在2006年AMD及NVIDIA分开提供了CTM及CUDA开发平台,而2008年发布的OpenCL更是由多家IT巨擘提倡的跨平台API界面,自此GPU终于步入超级计算机的平台。2009年11月中国发布的天河一号超级计算机,即凭借5,120颗Radeon 4870 X2 GPUs的威力成功位列世界500超级计算机第5位(http://www.top500.org/lists/2009/11/),并于2010年11月凭借7,168颗NVIDIA Tesla M2050 GPUs的威力位列世界500超级计算机第1位(http://www.top500.org/lists/2010/11/),既向世界展示了GPU的威力也为我国之光。只是GPU的成功最终吸引了CPU的反击,此仍市场之必然定律。
公认GPU的始祖—NVIDIA GeForce 256
我国的天河一号及天河1A超级计算机让大家认识到GPU的威力
AMD SSE5指令集: 加入GPU功能的尝试
2006年AMD收购了ATI,自始致力于推动CPU与GPU的整合产品—APU。然而随了开发APU产品外,AMD也把GPU的技术尝试引入CPU去,这便是发布于2007年8月的SSE5指令集。
SSE5指令集虽然最后没取得成功,但其理念却被Intel AVX/2所吸收并加入新的优化。其中一项名为FMA (Fused Multiply-Add)技术,更可提供2倍峰值浮点性能。FMA即乘法及加法融合指令,以计算(a x b) +/- C为例,由于合并了乘法及加法指令,使原来需2次操作变为1次操作,令浮点性能得以提升一倍。FMA指令已随AMD在2011年发布Bulldozer核心的FX处理器而面世,名为FMA4指令。不过因为FX处理器采用单模块双核心设计,由两颗处理器共享一组资源而使性能强差人意,所以未受市场上太大的注意。不过随着Intel AVX2指令集支援FMA指令,并成为新一代Haswell架构处理器的标准功能,FMA技术再次获得市场注意。
Intel版的FMA指令名为FMA3,从功能来说,FMA(3)与FMA4相当,但以FMA4使用弹性较大,而FMA3更易在硬件层面上实现。以d = a + b x c为例,FMA4容许a,b,c及d使用不同的registers,在编程方面更有弹性,而FMA3要求d使用与a,b或c相用的register,可减少code的长度,从而更易在硬件上实现。所以从编程的角度来看FMA4无疑较佳,不过因为Intel的影响力远比AMD大,加上AMD已在新一代Piledriver加入FMA3功能,所以x86处理器目前主要使用FMA3指令为主。
AMD SSE5指令集虽然失败,但却提供浮点性能的理念却保存下来
Intel Haswell有望提供1TFOPS浮点性能
虽然AMD Bulldozer是第一个支援FMA指令集的CPU架构,但因为两个CPU核心共享一组256bit FMA,所以效能跟没有FMA指令的Intel Sandy Bridge/Ivy Bridge架构的256 bit AVX addition + multiplication不会有太大的分别。然而Intel新一代的Haswell已改用2组256bit FMA,有望刷新CPU浮点性能的新纪录。
现在让我们看看Intel新一代Haswell核心在配合含FMA3指令下可以提升多高的浮点性能。以下是Intel自Core 2到Haswell架构,FP性能的比较表,大家可以见到从Core 2/Nehalem架构到Sandy Bridge/Ivy Bridge架构,再到Haswell架构,每代均有2X FP性能的提升。假设是一颗8核心Haswell处理器,在4GHz工作时脉下会有 4000MHz x 8 cores x 32 SP FLOPs/cycle = 1.024 TFLOPS的Single Precision FP性能,即使是Double Precision FP也有4000MHz x 8 cores x 32 SP FLOPs/cycle = 512GFLOPS,十分可观。若果与Radeon HD 7970 GHz Edition的4.096 TFLOPS,相比的话,CPU仅及GPU的1/4,但算上Double Precision FP的话,Radeon HD 7970 GHz Edition只有1TFLOPS,CPU与GPU性能差距缩小至1/2。Double Precision FP因为提供更高的精度关系,目前重要性正不断提供,因为架构的不同,CPU的Double Precision FP一般是Single Precision FP的一半,而GPU只有高阶型号才能够提供Single Precision FP的1/3或1/4性能,主流型号仅有1/16性能,难对CPU维持绝对优势。
Intel Xeon Pil成为最新超级计算机第1名
虽然Intel新一代Haswell处理器并没有击败GPU,但Intel以x86技术打造的Xeon Pil协处理器,因使用多颗小型x86核心而使性能大大提升,最近成功击败GPU组合连续2季(2013年6月及11月)成为TOP500超级计算机第一名。
2013年6月公布TOP500超级计算机中(http://www.top500.org/lists/2013/6/),第一名的宝座由中国天河二号夺得。它采用了Intel Xeon E5-2692 处理器+ Intel Xeon Phi 31SP协处理器的组合,创下54,902.4 TFLOPS/s的浮点性能,领先第二名美国Titan-Cray XK7的27,112.5TFLOPS/s。而后者所采用的是AMD Opteron 6274处理器 + NVIDIA K20x GPU,很有CPU重新超越GPU的意味。不过问题是Intel把Xeon Pil造成一片独立的加速卡,它还算不算是CPU呢?另一方面,AMD与Intel最近为旗下的CPU整合GPU,这种名为APU的CPU还算不算是CPU呢?似乎CPU与GPU的分别越来越模糊呢?
当今第一超级计算机采用了Intel Xeon E5-2692 处理器+ Intel Xeon Phi 31SP协处理器的组合
第二名超级计算机是采用AMD Opteron 6274处理器 + NVIDIA K20x GPU的组合
Intel Xeon Pil协处理器外形有如显示卡,还算不算是CPU呢
AMD APU还算不算是CPU呢
结论︰GPU的优点及CPU所吸收了
本文的目前,并没有否定GPU的价值。相反GPU的优点正逐渐被CPU所吸收,这表现在新一代指令集仿傚了GPU的高浮点性能平衡运算,以及CPU整合GPU的APU产品。对于业界来说,GPU与CPU各有所长,互补不足,新一代的OpenGL 1.2, OpenGL 2.0以及NVIDIA CUDA 6,都加入了GPU + CPU同时运算功能。狭义的GPU正逐渐消失,广义的GPU有如旭日初升。