CNET科技资讯网 3月15日 至顶网特稿(文/赵效民):如果说虚拟化是近年来服务器领域的一大热门,那么在高性能计算(HPC)领域中,通用图形处理器(GPGPU,General-purpose comPuting on Graphics Processing Units),或者说GPU通用计算(下文简称GPU计算)在这几年也越来越火热了,尤其是2009年中国研发的基于CPU+GPU混合计算架构的“天河一号”一举夺得了中国TOP100超级计算的排名的桂冠,闯入全球TOP500强的前五位,让人们见到了GPU计算的威力所在。完全可以说,GPU通用计算已经是一个不可阻挡的潮流,那么在2010年里,GPU通用计算又将如何发展呢?为此我们专访了在GPGPU方面走在业界前端的NVIDIA公司Tesla产品总监Sumit Gupata先生,就相关的热点话题进行了深入的交流。
NVIDIA公司Tesla产品总监Sumit Gupata先生,是一位来自印度的计算机博士,在任产品总监之前是Tesla产品工程师,对于GPGPU技术有很深的了解
NVIDIA公司在GPGPU方面可谓不遗余力,其自行开发的统一计算设备架构(CUDA,Compute Unified Device Architecture)以及在此基础上专门用于高性能计算的Tesla产品线已经成为了HPC领域中越来越不可忽视的力量,在2010年NVIDIA将推出新一代的基于Fermi架构的Tesla产品,而我们的话题也从GPU对HPC的影响开始展开。
HPC越来越需要GPU计算的介入——混合计算大趋势不可逆转
Sumit Gupata表示,人类的文明进步已经让人类对计算的需求越来越深入,很多科学领域的研究已经越来越微观化,比如生物学、流体力学、空气动力学,并且在数据展现时也越来越强调可视化处理,比如断层分析、气象绘图、石油勘探中的地震数据解释等等,而且人们对于计算的速度也要求越来越高——能实时的模拟现实中的演变是人们不变的最高追求,但以现有的阶段来看,离这个梦想还有很长的路要走,这就需要有一个强有力的计算工具介入,以加速运算能力的提高。
我们的生活越来越离不开计算,很多基础的、深层次的研究在驱动着我们人类文明的继续进步,但这种研究则需要强大的计算能力的支撑
在微观世界模拟方面,主要就是对数量重多的模拟对象进行演变计算,比如在设计汽车时,想知道汽车的外形所带来的空气阻力,就要对所涉及到的空气分子的流动状态根据相应的物理学算法进行分析然后再予以汇总,而空气中的分子数量之庞大是可想而知的,如果每一个空气分子(它是空气流动的基本单位)都是一个模拟对象的话,这样的计算数据量也将极为巨大。显然它需要一个极为庞大的并行处理架构以应付数量如此之多的计算对象,这也就是为什么HPC更多的是强调超并行计算能力与效率的原因。
另一方面,这类的计算对象所需要的更多的是浮点计算能力,因为要精确的计算出各微观对象的运动状态,整数计算是不可能完成的,例如计算100.0÷3,整数计算的结果是33,而浮点计算的结果则是33.33333333,你说哪个更精确呢?再比如圆周率,你就无法用一个整数去表达,而它在很多科学计算中可是一个太常用的参数了。反过来如果你愿意,一个整数则可以用浮点数来表达(比如整数5可表达为浮点数5.00)。所以,高效率的、高准确性的科学计算是与强大的浮点计算性能分不开的。尤其是双精度浮点性能,因为在很多场合,单精度浮点运算所产生的累计误差将让HPC失去可用性。
生物科学中还有很多的迷没有解开,而高性能将是解开这类迷团最重要的工具
目前,一个急需计算能力的显著例子就是生物领域的微观研究。在2006年时全球最顶级的HPC计算能力(当年TOP500最高水平是IBM的BlueGene/L系统,理论峰值性能是596TFLPOS,采用了212992个PowerPC 440核心)也只能对核糖体的做勉强的演算,而计算8个月才能模拟核糖体2ns时长的演变,但一个核糖体只有270万个原子组成,如果想研究拥有10亿个原子的细菌则需要10亿亿次的处理能力(1 EFLOPS)。而当前全球的TOP500的顶级水平也就是千万亿次的水平,可见差距还是十分明显的。这其中最主要的原因就是处理器的核心数量限制了基本的并行处理能力,虽然可以通过群集的手段,将多个计算节点联合起来,但这样做之后的成本与能耗也将是十分惊人的,所以HPC也一直给人一种“高贵”的感觉。即成本“高”,使用“贵”。
2009年6月份的TOP500的计算能力排列曲线,最后的一名所需要的成本也高达100万美元
如果采用GPU计算设备,那么在投资不变时,计算能力将是原来的4倍,达到68TFLPOS(TOP500的排名也将上升至第57位,若以2009年11月的排名计算则是74位),而在相同的计算能力,投资只也有原来的1/4
Sumit Gupata相信,GPU计算的加入将大大改变这一现状。它在迅速提高计算能力的同时,也大大降低了HPC系统的采购成本。而这一切都源于GPU的先天优势——数量更多的处理核心。
目前主流4核心处理器与NVIDIA即将推出的Fermi GPU的对比,后者有512个CUDA核心,双精度浮点性能超过了前者的10倍
GPU原来就是为了3D图形计算而设计的,而3D图像计算中的基本计算单位就是像素,以当前流行的1920X1080的分辨率来计算,就是207万多个像素,为此GPU设计了数量众多的处理核心,来提高像素的并行处理能力。而从这种计算模式中,我们可以看到与上面所讲到的微观科研计算很相像,所以GPU也具备了天生的高并行科学计算的能力,尤其是那些像像素这样的,彼此相对独立的微观体计算的领域,每个微观体的计算基本是自成一体的(除非有相互作用时),不需要那种串行计算必须等待上一个计算结果才能开始下一步运算的模式,也就非常适用于粒子科研计算领域。事实上也是如此,科学计算中的相互作用越少或者这个相互作用越有规律,GPU的并行处理能力也就体现得越充分。
相同的HPC应用下,GPU计算相对于CPU计算的加速比
目前GPGPU已经有不少的HPC应用软件投入了使用,并且都取得了不错的相对于传统CPU计算的加速比,最高达到了149倍(金融模拟)、最低也达到了18倍(视频转换),由此可见GPU计算的威力。
因此,当我问到如何看待未来CPU+GPU混合计算的趋势,它是否将最终替代传统的纯CPU解决方案时,Sumit Gupata坚定的回答到,“肯定的,但凡是HPC领域里的人,都不会否认这一趋势!”
NVIDIA的GPU计算产品家族——我们在革新,但对手没有!
NVIDIA在GPU计算方面的主力产品就是Tesla,它于2007年6月21日正式宣布。现在市面上所销售的基于NVIDIA的显卡,只要支持CUDA就可以用到GPU计算的能力,包括GeForce和Quadro,Tesla与这两者的主要区别就是它取消了显示输出的模块,从而只专注于GPU计算。
目前在市场上销售的Tesla产品线与解决方案,算是Tesla家族的第二代产品
Tesla产品线可分为两大部分,一个面向数据中心级机房应用的HPC系统,一个是面向基于工作站的人个HPC系统,在数据中心级产品方面又分为GPU模块与专用的GPU服务器,而工作站所使用的就是插卡形式的Tesla,当然它们不能用于显示输出。
Tesla的模块除了可装进机架服务器外,还可以被刀片服务器所采用,但由于刀片还没有像机架服务器那样标准化,所以这更多的是相关厂商的自己发挥,当然NVIDIA的协作是必不可少的。上图中就是法国著名的HPC厂商Bull所开发的采用TeslaM1060模块的7U刀片服务器,一个刀片有一个GPU模块和两个x86处理器(至强5500),Sumit Gupata表示,类似的产品将在今年大量出现,但现在还不便多说,等到第二季度会给大家一个惊喜
不过,NVIDIA今年推广的重点肯定是新一代的FermiTesla家族,也可称为第三代Tesla。当我问到在2009年11月的TOP500排名中,只有一套采用Tesla,那么在2010年时又会有多少时?Sumit Gupata笑到,“都在等Fermi。这个很难说,等11月份的TOP 500单子下来吧,预计会占25%(125套左右),但只是预测。不过你可以想一下,基于Fermi的GPU会让整个系统的性能提高10倍,对于500强公司来说,想都不用想,肯定会用Fermi。”
那么Fermi的亮点又有哪些呢?这方面其实有很多文章介绍过了,在此我们只做简要的提炼。
基于Fermi架构的GPU主要特点
Fermi的不少改进都可以看作是针对企业级GPU计算的,比如增加了L1与L2的数据缓存、内外部的内存ECC功能(这两点对于企业计算非常重要)以及最大可达1TB的内存寻址空间,并且它重点加强了双精度浮点运算的性能,较第二代Tesla有了巨大的提升。而最终的产品也与第二代的Tesla一样,分为数据中心与工作站用两个产品线。
Tesla数据中心产品线的路线图
Tesla工作站产品线的路线图
与去年NVIDIA所公布的路线图相比,基于Fermi的Tesla本来是最先亮相的Fermi产品,但现在却推迟到了第二季度,最高端的型号则要等到第三季度。这一现象也不得不让人再次提起那个敏感的问题:NVIDIA跟对手ATI相比,在GPU核心设计上走了两个不同的方向,NVIDIA在做一个功能比较全面的核心设计,性能强大,但比较复杂,核心数量也无法迅速的增加。AMD走的是一个比较轻量级的功能简化的核心设计,单核心性能并不强,但能够很方便的通过堆积核心数量来提升性能。因此NVIDIA这种更强大更复杂的核心设计理念,会不会给自己带来相对来说比较沉重的压力?比如设计的难度和制造的难度。从而最终影响了产品的上市进度?
对此,Sumit Gupata并没有正面的回答,但他强调,“ATI的产品是去年11月上市的,Fermi是今年正准备出货。但不管怎么样,相比之下,我们还是创造了历史记录,产品销售上相对来说还是非常好的。为什么这么说呢?首先游戏、图形市场已经发生了巨大的变化,它不仅仅是做一些简单的三角形或者数量的模拟。未来的游戏或者图形更多的会关注物理的模拟,一些真正的图形,还有光线的追踪。一些软件包可以帮助提供更好的解决方案。我们可以预测未来会有怎样的变化,这也是为什么我们正在采取一系列的步骤来应对未来的变化。但是AMD这方面还是跟以前一样,没什么太大的变化。”
的确,在DX11时代落后对手如此之久让业界对NVIDIA的状态和发展方向有了疑问,不过Sumit Gupata认为这是架构革新所必须要面对的一种代价。“我也读到一些媒体的文章,NVIDIA现在不关注游戏了,更多关注的是Fermi。实际上不是这样的,因为游戏本身也是一种运算。但大家可能没有意识到,光线追踪它用的是L1和L2的缓存。所以这个架构不仅仅是用于HPC,也是用于游戏的。相比之下,AMD的核心架构并没有革新。”
基于Fermi的Tesla与英特尔即将发布的Westmere-EP(至强5600)系统的性能对比
就性能方面,Fermi至少在计算性能方面有了长足的进展,与最新一代x86处理器Westmere-EP(至强5600)相比,双精度浮点性能超过了12.5倍,而第二代Tesla的双精度浮点性能只有Westmere-EP的2倍多。相信这也是众多HPC客户对Fermi翘首以待的一个重要原因吧。
另外,FermiTesla的延期还可能预示着新的功能与技术的加入,Sumit Gupata表示,NVIDIA已经找到了方便扩展内存的办法。我就此为问到是否会采用DIMM的形式来扩展内存?未来会不会考虑采用串行内存技术来代替现有的GDDR内存?Sumit Gupata只是淡淡一笑,“我现在还不便多说什么,相信很快就会有相关的信息透露出来,不过可以肯定的是我们仍将采用DDR内存,而不会使用串行内存技术。”
NVIDIA眼中的未来HPC平台——整合GPU的CPU没有前途!
谈到NVIDIA引以为荣的在GPU上的创新,相信也会有不少人会提到英特尔与AMD的将GPU融入CPU的计划,这其中可能最为抢眼的是AMD的APU(融聚技术的最终产物)。
AMD向我们展示 的未来的CPU与GPU物理融合的发向,CPU与GPU最终会在一个DIE上融合,GPU可以直接访问内存,从而更进一步的提高系统的性能,并且此时的GPU与CPU也将完全工作在OpenCL的体系下,来应付未来的应用。而AMD也对这种新的整合CPU与GPU核心的处理器起了个新名字——APU,即加速处理器(Accelerated Processing Unit)
因为从某种角度上讲,Tesla可以看作是一款HPC的协服务器,专用门用于浮点运算加速。而从CPU的历史来看,CPU以前也有一个专门用于浮点运算的外置协处理器,最后慢慢移植到了CPU内部。而按照AMD的说法,它的APU可以实现不同规模和数量的CPU与GPU核心的整合,那么这样产品对于NVIDIA又意味着什么呢?这种CPU和GPU融合的趋势对于NVIDIA是不是一种威胁?NVIDIA未来真的不会有自己的CPU平台吗?
Sumit Gupata一开始的回答看上去是似乎没理解我的问题,他拿出了NVIDIA的另一个产品表示——NVIDIA已经有这样的平台了,它就是Tegra。
NVIDIA面向便携移动终端所推的SoC解决方案Tegra
我当然这个东西是干什么的,它与英特尔与AMD的x86核心处理器完全不一回事。Tegra整合的是ARM架构处理器与NVIDIA的简化型GPU核心,其整合的ARM处理器的主频最高为800MHz(Tegra650),我指出这个SoC方案是给移动便携设备的轻量级集成产品,与AMD的APU并不是一个层面上的东西。Sumit Gupata表示同意,但他从另一个侧面来说明他为什么用Tegra来举例。
“没错,Tegra是一个Mobile与Netbook战略。这里要跟你讲一下为什么,假设这是CPU和GPU的大小,”Sumit Gupata开始用手比划,模仿一个CPU的尺寸与构成,“如果把GPU放进去的话,一半是CPU,一半是GPU。这个芯片尺寸不能够把它弄大,你要是把它的尺寸再加大,成本就会上去,所以在原来模具的尺寸里面,一半是CPU一半是GPU。这个是应用于笔记本电脑上的,所以它的大小都是固定的,这也就意味着CPU和GPU一样,功能都不会太强。但这样的设计对于某类产品是非常适用的。”
“你知道Tegra它是一个CPU与GPU的混合产品。现在已经有手机、MID(移动互联网设备)和PMP(便携媒体播放器)甚至是上网本在使用Tegra处理器,我们可以从这个混合的产品开始作为起点往上走,继续发展。”Sumit Gupata很清楚Tegra的定位,但它能上升到什么高度呢?为此我问到,“这明显是两条路线,一个是x86的路线,是通用计算中主流的重量级的架构。一个是ARM的路线,可以算是轻量级的架构。我们再把目光往后看,您认为这种基于ARM轻量级的架构未来PC领域里面会发挥多大的作用?反过来x86的CPU和GPU的混合很有可能在两三年后在HPC市场看到相关的产品。”
Sumit Gupata则仍然坚持自己的看法,“不管怎么样,在CPU里面放GPU也好,在GPU里面放CPU也好,所有的功能都会被削弱。很难解释这个问题,但是的确有这么一个问题。CPU和GPU发展的速度是不同的,具体什么样的发展速度没法预测,但我还是要试着预测一下。DX11GPU在CPU和GPU的整合上花了一到三年的时间,这样的整合并不是那么简单,非常复杂。”,而对于AMD可能会在三年左右拿出用于企业级的APU产品,Sumit Gupata表示了深切的怀疑,“一年半以前AMD还号称把云计算和GPU结合起来嘛,但现在呢?总之我并不看好”。
那么是不是可以就此认为,在NVIDIA看来,CPU+GPU混合的产品在台式机这儿就打住了,不会再往企业级方面发展,或者说类似于APU这类的产品不会在企业级市场上发挥多大作用?如果NVIDIA拥有自己的x86处理器,难道也不会往这个方向努力吗?
Sumit Gupata对此表示,“没错!我们觉得那样的一个发展方向不是正规的方向,这也是为什么我们现在还没有任何有关推出自有的x86核心,并与CUDA整合的计划,实际上Intel也没有那样的计划。”
Sumit Gupata的意思可以总结为,对于企业级计算市场,CPU与GPU合则两败,分则两利。CPU与GPU的整合与其说是为性能上着想,还不如说是为了成本与平台易用性着想,这就好比整合显卡与独立显卡在性能上的差别一样,前者的最高性能永远也达不到后者的最高性能,而整合有GPU的处理器,在相同的芯片面积下,也就意味着CPU核心数量的减少,这将直接影响CPU处理性能,比如英特尔最新的Westmere处理器,不整合GPU时有6个CPU核心(Gulftown),而整合GPU后CPU核心数量只有两个(Clarkdale),但这对于普通消费者或日常的办公用户已经够用了,反过来还能让电脑变得更为紧凑,这对于便携产品更为重要,可是对于企业级的HPC应用来讲,可能就是两边不讨好。
总之,在NVIDIA看来“术业有专攻”,CPU整合GPU的产品在企业级HPC领域没有前途。
虽然2009年中国研发的基于CPU+GPU混合计算架构的“天河一号”所采用的GPU并不是NVIDIA的产品,但这并不代表NVIDIA在GPU计算方面处于劣势,事实上从全球的范围来看NVIDIA的CUDA计算环境更受欢迎。这里要指出的是“天河一号”并不是采用专业的GPU计算产品,而是采用了AMD民用级GPU产品Radeon 4870X2,在不少业内人士看来,是一种基于发布时间与系统成本折中的解决方案。在世界范围内,基于专业的CUDA计算方案的部署数量明显更高。
在全球已经有超过1000个基于NVIDIAGPU的计算集群已经或将要部署
从全球来看,包括中北京大学、清华大学与中科院在内的许多大学和科研机构都部署了NVIDIA的GPU计算集群,而有关NVIDIA的CUDA编程的教育也在全球范围内如火如荼的展开着。Sumit Gupata指出,“现在全球有300多家大学在教授CUDA,而对于CUDA,我首先澄清一下,并不是一种语言,它实际上是我们GPU的一个编程架构,就像英特尔的IA架构一样。在CUDA本身的架构,上面各种语言,C、C++、Fortran,还有OpenCL。”
谈到这里,Sumit Gupata显然兴趣大增,“我先介绍一下我自己,我是一个工程师,是拿到计算机科学博士学位,在教编程的时候,第一件事情就是来解决数据排序,是一个并行的排序。比如在中国我们做个游戏,有两个桶,还有水,把水倒在桶里面,肯定在座的各位都一个接着一个去倒,这是我们固有的思维模式。所以这种模式实际上也是我们在教编程的时候的第一件事,就是改变人们固定的思维。没有什么选择,要不就是多核的的CPU,要不就是GPU,现在有300多家大学都在教授CUDA,比在大学里教授Intel SSE的还多。因为现在教授学生的时候,笔记本电脑里面用的是GPU,所以用GPU进行研究和教学时是非常简洁、非常方便的,还有一些相关的软件的支持。”
而在业界参加相关的研讨会时,Sumit Gupata也能感觉到全球对于GPU计算的热情。
NVIDIA所倡导的GPU计算在HPC领域已经成为热门话题
Sumit Gupata饶有兴趣的介绍到,“我们是在2007年发布CUDA的,接下来在2009年开始超级运算。在2007年的时候,我们参加超级计算大会,当时只有我一个人在倡导使用GPU进行超级计算,到了2009年的超级计算大会,有75个展台在宣传GPU的超级计算,其中有74个都在用NVIDIA的GPU进行演示,只有一个用的是ATI的,因为那个是ATI的展台。后来在我们自己的展示里面就请了很多很知名的演讲人来发言。在业界有个讲法,叫做“金棕奖”,每年都为超级运算进行一个颁发,今年的奖项是颁给了基于CUDA的天体物理学。”
“所以你可以回顾一下整个计算的历史,从来没有出现过这样的情况,在短短两年之内,一个架构、平台被如此广泛的采用。拿中国举个例子,中国的科学院就是我们进行大规模安装的案例,他们也是最早使用,并且非常了解它的价值的一个机构。”Sumit Gupata说到。
而来自业界第三方的声音也给NVIDIA的GPU计算战略提供了强大而有力的证词,这其中最重量级的人物莫过于鼎鼎大名的David Patterson。
David Patterson是RISC(简单指令集计算机)最早的提倡者之一。他创造了RISC一词,并定义了RISC的含义,是Sun公司SPARC处理器的主要顾问。此外,他还提出了RAID(廉价磁盘冗余阵列)概念,你可以理解为磁盘存储的并行化操作,可见这位老兄对于并行操作的痴迷。而他对于NVIDIA的Fermi则非常赞赏,“我相信历史将会标明Fermi是一个意义重大的里程碑”无疑是一句很有分量的评价。
全球采用NVIDIAGPU计算解决方案的机构,包括了美国橡树岭国家实验室(Oak Ridge)、美国国家计算科学中心(NCCS,National Center for Computational Sciences)、美国圣地亚哥超算中心(SDSC,San Diego Supercomputer Center)等等
另一个值得NVIDIA骄傲的则是全球知名科研机构对于NVIDIAGPU计算方案的信任与支持,“他们的选择就已经代表了这一点,”Sumit Gupata表示。
NVIDIA的GPU应用领域——紧随x86市场,未来让CPU当老二
我们如果仔细观察NVIDIA的Tesla的应该环境,只有两个:Windows与Linux(某些版本),均是在x86环境下。而在HPC领域还有一些虽然数量不多,但也实力超强的角色,比如IBM的POWER家族,基本上是TOP500前10名的常客,那么NVIDIA是否有可能为x86系统提供Tesla的支持呢?
“No,Only x86!”Sumit Gupata很坚定的回答,“x86是HPC系统平台的主流,我们也将紧随x86平台的发展,IBM的POWER的确很厉害,IBM也是一家令人敬畏的HPC厂商,但我们将帮助x86来对抗他们的POWER系统。”说到此,还真能让人有一种同仇敌忾的感觉,虽然NVIDIA与这些x86处理器厂商也存在着竞争关系。
除了传统的科学计算,Sumit Gupata认为GPU计算的应用领域正在不断的扩展,包括我们所熟悉的一些应该均可以从GPU上获得加速。而CPU的作用则在逐渐缩小,尤其是在Fermi推出之后。
“Fermi出现之后,那些以前无法转移的应用也能在GPU上执行了。人们通常习惯把它叫做GPU加速器,而在一些学术界,人们则把Fermi叫做CPU的减速器。什么概念呢?在GPU上运行一些非常核心的重要应用程序,但是在CPU上运行一些IO或者非核心的应用程序,另外在使用性上,GPU也可以支持C++等程序的编译器。CUDA是第一个在GPU上的多功能操作的编程架构,这意味着CPU经常执行一些小的工作或者小的任务,都可以在GPU上同时并行操作或者同时操作。”Sumit Gupata解释到,并接着举例说明。
“我们就拿Google作为例子介绍一下CPU、GPU的优势和劣势在哪儿。首先,你在搜索的时候输入一个东西,搜索引擎所发生的反应是基于IO的顺序计算反应,这就是CPU在起主要作用。但是当Google出现一个搜索目录的时候,即每一个具体网站把它信息拿出来成为一个目录页放起来的时候,在这个步骤中,这种数据挖掘方面是GPU所擅长的。”我们可以把它理解为对大量的离散数据的处理,而这种离散的不相关的数据处理的确是GPU的优势所在。
“再举另外一个例子,比如你用支付宝或者用其他的支付系统来在线支付的时候,输入你的信用卡号码,你点击确认之后,系统就会告诉你说信用卡已经接收了。但是这整个时间也就是很短很短的时间,大概只有亿分之一秒的时间,这么短的时间里,系统要进行防欺诈的检测。所谓的防欺诈检测就是根据你输入信用卡的号码进行一个对证,但现在人们发明了另外一种方法,就是有进一步防欺诈的检测,比如说你的消费模式一直是花了1000,又花了1000,但是这次一下就花了5000,之前这些记录在你的系统中都没有出现的,出现了异常就说明有问题了。所以消费模式发生变化的时候,也可以在亿分之一秒的时间里面做这样的检测。而且不要忘了,Google或者什么样的支付宝也好,有百万的用户同时使用,时间又这么短,所以运算的能力要求是非常高的。”因此,Sumit Gupata认为随着这些所谓的日常应用的巨量累积,需要HPC的领域也就越来越多,“你可以看到,高性能运算的应用需求是无所不在,刚才提到两个例子就证明了这一点。再举个例子,微软的Word文档的编辑可能用不到GPU,但它的Excel表格,如果涉及到非常复杂的表格计算的时候,就用到GPU了。”
至此,我们可以总结一下,随着GPU编程越来越向主流标准靠拢,也将使其在那些需要大规模的离散数据处理的应用中大显身手,这反过来也将对GPU计算的普及产生更大的推动力。比如,现在很火热的云计算,GPU也可以参与进来专门处理3D应用,它就是RealityServer。
以上两个均是RealityServer的云3D演示
有关RealityServer云3D技术,笔者早前已有专文介绍,不过,并没有见到现场的展示。这次Sumit Gupata很有兴致的让我见识了一下什么是云3D。他用自己的笔记本电脑通过无线网络登录到RealityServer的Demo网站,选择相应的3D模型进行了即时渲染的演示,比如对于人物模型,你可以选择相应的局部进行特写展示,而在F16模型中,可以选择不同的视角与背景。笔者大概计算了一下,最复杂的光线追踪从点击开始到最后呈现渲染结果也不过30秒大左右,这对于那些需要这种向客户进行实时演示以帮助客户了解自己产品的企业(家装、汽车、家具)有很大好处,相比于死板而单调的图片或Flash展示,这种3D渲染的Demo则有更强的感染力。另外,对于一些小型的游戏厂商,也可以借助这样的云来帮助自己设计3D游戏中的造型。
彭博新闻社所做的债券计价系统的成本核算
另一个例子则可以再次证明GPU计算所带来的成本优势。Sumit Gupata以彭博新闻社所部署的债券计价系统举例说到,“彭博想用这个程序做他的股价或者债券的计价。彭博是一家财讯服务公司,他为很多银行提供债券的计算。如果他们要想做这样的债券计价模型或者机制的话,首先要建立这样一个系统,而且费用非常高,是400万美元。但是他们不能说把这个成本转移到他的客户身上,让他们来付钱,因为太贵了。但你要是使用GPU之后,你的成本也下来了,而且整个规模和体积也有所下降。当然,这会导致一些人的抱怨,因为所采用的分析软件肯定要做基于CUDA的二次开发,以适用于GPU计算。但是通过这样的一个设计之后,你每年仅仅电耗就能省约120万美元,用这些钱你雇7到10个工程师都可以了,你可以把所有的应用在GPU上进行应用。节能是非常重要的,你要是访问一下任何一家拥有超级计算机的客户的话,对他们来说,电耗是最大的问题。”
一种新的计算系统与架构的出现,对于其发展与普及起到最关键作用的,并非是硬件的性能,它只是一个敲门砖,更重要的是整体的生态环境建设,说到底就是应用与开发环境。我们可以举一个典型的例子——HD DVD与BD之间的高清影碟的标准之争。熟悉这场于2008年年初结束的竞争大战的读者都知道,HD DVD标准最终战败的主要原因并不是硬件性能上的差距,相反在与传统DVD业界友好性和性价比方面,HD DVD仍然有较大的优势,虽然在存储容量上有劣势,真正让它走向灭亡的是好莱坞七大制片与发行商中只有两家支持它,另外五家都只采用BD格式发行自己的影片,影片对于光盘来说就是一种应用,所以应用环境是否能健康的发展,对于相应硬件与技术标准、架构的生存是至关重要的。
作为硬件与基础的技术规格,是客户能感兴趣的第一道坎,我们可以通过一些数据对比来看一看,第一代的Tesla(C870/D870/S870)在发布时基本上没有双精度浮点计算能力,因此它对于那些需要高精度的HPC应用来说,基本是不可用的。到了第二代才具备真正可用的双精度浮点计算能力,以C1060为例,双精度浮点计算能力峰值为78GFLOPS,而目前主流服务器用的CPU的双精度浮点运算能力则为48(英特尔Nehalem-EP)至63GFLPOS(AMD的伊斯坦布尔),所以在这方面相对于CPU的优势也并不十分明显,当然如这只是一个纯理论的比较,事实上GPU的优势还体现在强大的并行处理能力上,不过对于用户来讲,这似乎并不能迅速的量化为可比的性能数据。
到了第三代的Fermi,单GPU的双精度浮点运算性能为520GFLOPS,最高可达630GFLPOS,这是什么概念呢?AMD今年将要发布的新一代12核心的马尼-库尔处理器的理论浮点性能峰值为110GFLOPS,若是组成4插槽的MPP或是服务器节点的话,性能为440GFLOPS,也就是说一颗FermiGPU的浮点性能就已经超过了一台4插槽的马尼-库尔服务器,或者说1000多颗Fermi的GPU就可以达到使用10万多颗CPU的2006年TOP500冠军Blue Gene/L的浮点计算能力((Blue Gene/L所采用的是一个专门开发的ASIC,集成了两个PowerPC 440的核心,严格的说不算是一个CPU),这种明显的优势肯定能吸引不少客户的眼球。
所以,Fermi的确是非常吸引人,但当客户被吸引来之后,就会发现面向GPU的编程与CPU的编程是有很大差别的。在以前最古老的GPU计算时代,编程人员要将数据“像素化”,因为GPU当时就是用来做像素处理的,所以这就要求应用开发人员也要掌握丰富的图形处理的编程技术,把传统的计算应用映射为像素处理操作,再调用图形处理的API(OpenGL和Direct 3D),让GPU去“模拟”运算。所以,GPU编程就成为了GPU通用计算应用软件开发的一大挑战,也直接危及到GPU计算发展所需要的生态环境的建设,NVIDIA也清楚的看到了这一问题,所以他们推出了统一计算设备架构(CUDA,Compute Unified Device Architecture),它并不是一种编程语言而是一个编程环境/平台。
简单的说,CUDA将GPU计算应用程序的开发难度大大简化了,尽量做到了GPU面向开发人员的透明化。开发人员不需要去了解GPU具体的架构,它被CUDA所屏蔽,开发人员只需要使用CUDA所支持编程语言/API和CUDA所提供的开发库(与主流并行计算应用相关的基本运算库)、运行期环境(应用编程接口和运行期组件)和驱动(支持CUDA的硬件的抽象层)去编写自己的程序然后再调试和优化,即做到主流开发环境与GPU处理架构相隔离,开发人员不再需要额外掌握图形处理编程技术。
Sumit Gupata表示,现在在NVIDIA网站的CUDAZone上,每周有25000个点击和18万个CUDA2.3版本的下载。而在2009年11月已经发布了CUDA3.0Beta版本,计划今年3月将推出正式版本。这些下载的数量能够表明GPU它的应用目前的趋势还是非常火的。
目前基于CUDA的HPC应用开发库与工具软件正在逐步增多,也让CUDA的生态系统渐入佳境
伴随着生态环境的完善与良性发展,Tesla面向主流的HPC领域也将拥有越来越多的机会,其中有不少都是奖金投入较多的领域,包括大学/理论研究、生物科学、政府实验室、国防、地球科学以及金融等
作为自主开发的编程环境,NVIDIA对CUDA是非常看重并且自信的。Sumit Gupata强调,“AMD也有GPU,但仅仅是基于图像处理类的GPU,他们号称愿意用GPU进行计算,也愿意推行架构,但实际什么都不做,基本上也是跟风吧。NVIDIA和AMD的区别在于, NVIDIA在GPU上投入的资金和精力是非常大的,为什么呢?我们首先不仅仅要在硬件上,在软件上也要有投入。这是因为现在对很多消费者来说,他们在使用电脑的时候,更多倾向于视觉的感受,也就是电脑越来越倾向于视觉化了。”
他接着说到,“现在很多的电脑游戏会有真实的图形模拟,大家打游戏的时候,比如用手枪点击一杯水的话,能够模拟出水杯碎了的效果。所以打游戏的人希望越来越多游戏的体验是模拟真实的环境。实际上这样一个游戏模拟真实的程序,它也是高性能计算的应用。”
CUDA3.0相较以往的版本有了重大的改进,其中支持C++语言和支持Fermi架构是最大的亮点
而为了进一步完善CUDA的生态环境,以帮助自己的硬件平台更受欢迎。NVIDIA除了自己全力加强CUDA本身的能力之外,还联合全球知名的科学算法研究与开发机构、一流的系统厂商来为CUDA添砖加瓦。比如某些著名科学计算软件的CUDAAPI或插件,还有相关的调试与剖析工具、编译器、开发库等等。
NVIDIA为CUDA打造的并行计算应用开发生态环境
除此之外,NVIDIA还联合业界的力量组建了CUDA咨询与培训体系,全球超过300所大学都有CUDA编程方面的课程,这对于CUDA人才的培养显然极为有利。而在整体解决方案方面,NVIDIA也与著名的平台系统提供商合作,在OEM的基础上,更设立了Tesla首选供应商(TPP,Tesla Preferred Provider)的制度,让这个厂商也具备有帮助客户进行CUDA开发的能力,以更积极有效的推广CUDA+Tesla的HPC系统。
OpenCL与Direct Compute?——你愿意用我们支持,但CUDA更好!
谈到CUDA编程,想必就不能不提OpenCL与Direct Compute两个标准,它们同样也是利用GPU进行通用计算,AMD更将是这两个标准列为未来发展的重点。不过,Sumit Gupata对此有很多看法,先简单的总结一下:在NVIDIA眼中看来,第一与CUDA并不冲突,第二至少从目前来看,CUDA要比它们强大得多。
而如果你愿意使用新兴的DirectCompute与OpenCL标准来开发,那么CUDA也将完全支持
“包括AMD在内所推出的所有的OpenCL的编译器都是Beta版的,还没有新产品。他们可能最终还是会真正的发布一些产品,但是速度太慢。所以OpenCL媒体炒的比较热,但真正的用户很少。”Sumit Gupata先提出了OpenCL目前所面临的问题,“反观CUDA,已经发展五年了,产品非常成熟;而OpenCL只有一年半。从应用上,目前大家用的都是CUDA,没有用OpenCL,所有的应用都是在CUDA上应用的。对我们来说,NVIDIA利用CUDA这一创新平台,可以做CUDAC、CUDAC++的处理,每年我们都会发布三到四次新的应用。”
Sumit Gupata接着说到,“对于OpenCL来说,他的委员基本上每六个月要开一次会。我们每次有一些新的应用发布的时候,加入的新功能都会加入OpenCL未来的设计图或者设计方案里面。OpenCL自己进行新的升级发布的时候,也会把我们的功能加进去。但这样的过程对我们的客户来说,他觉得创新的过程太慢了。对于大多数的HPC的程序员来说,甚至包括消费领域的程序员来说,他们编程的时候都是用C、C++或者Fortran语言。”
CUDA所支持编程语言和API很丰富,为开发人员提供了很好的灵活性
“对我们来说,CUDA可以非常自然的支持这些语言。不过对于OpenCL来说,我都不是很了解,”Sumit Gupata强调,“我原来是做程序员,现在是做市场营销,但不要忘了,我有计算机的博士学位,我都看不懂OpenCL。所以OpenCL不是很容易理解。但不管怎么样,每个程序员有自己的选择,不论他选择任何一个平台上的任何一个语言,我们都会给他支持,我们的目标是在CUDA的平台上的语言。所以对我们来说,未来在CUDA平台上大力的发展C、C++还有Fortran,我们都会百分之百的投入,而所有新的Fermi的性能都是支持CUDAC语言的。”
Sumit Gupata接着把话题转回到竞争对手上来,“AMD最近刚刚宣布说它支持双精度的OpenCL的计算,这也是为什么现在Adobe的产品是CUDAC而不是OpenCL。AMD宣布的版本也是一个试运行的版本。OpenCL是这样的,你写了一次程序之后,到处都可以运行。但是和OpenGL一样,也需要一个固定的GPU进行程序的编写,比如AMD的,或者NVIDIA,要涉及到多核的GPU。对于GPU来说是非常复杂的,比如有很多内存,L1的缓存,AMD自己的架构是VIEW。看起来一个程序可以到处运行,但你需要把自己的GPU进行优化才能够用它。”Sumit Gupata最后强调,“但不管怎么样,OpenCL是非常好的一个平台,我们也希望推广我们的CUDA平台。我们的重点是让GPU变得更加成功,不管是用什么语言,也许有人用JAVA语言,我们也会支持。”
CUDA与Tesla在中国——GPU计算起步晚即是劣势也是优势!
我与Sumit Gupata最后讨论的话题落脚在了采访的地域——中国。NVIDIA在中国有一个庞大的研发团队,那么Tesla与CUDA在中国的发展状况如何呢?中国的研发团队在Tesla的发展过程中,又做出了哪些贡献呢?
GPU计算在中国已经不算新鲜事了,中国的相关研究领域已经开始普及GPU计算
Sumit Gupata表示,NVIDIA的研发中心,除了美国加利福尼亚之外最大的一个研发中心就是建立在中国,这个中心拥有700多人。“他们做各种各样的开发,包括VLSI(大规模电路),还有电路板的设计,主板的开发。哪部分是来自中国实际上很难说,因为或多或少会涉及到中国设计的因素在里面。我们团队分布的地理位置虽然不相同,但大家是紧密合作的关系。”
那么中国在Tesla或者GPU计算方面处在什么样的一个应用与开发水平或者什么样的阶段呢?
Sumit Gupata承认就目前的情况来看,还是欧美的GPU计算应用与开发水平更高,但中国在GPU运算上起步晚,所以在运用HPC上也是一个优势,因为会少走不少弯路。
“美国已经有25-30年的软件开发历史,所以很难重头再来。一个中科院的科研人员曾经对我说中国虽然是一个发展中国家,但这也使得我们可以更好的利用GPU这个平台迎头赶上。而且中国政府给予的支持比较多,不管怎么样,中国的环境比较好,有很多的优秀的公司,技术上也很好,一些私人投资者也在技术上进行大量的投资,所以现在对我们来说,是一个非常好的切入的时机。去年一年,中国科学院在GPU上投入的量也非常大,他们在20-30个下属单位里面布置了2000多台GPU。所以说,起步晚对我们说是一件好事,因为可以更好的去应用。”Sumit Gupata还通过举例来予以说明,“就像手机一样,在一些国家里,固定电话不是很发达的时候,他们手机发展可能更快,因为用无线要比在地下埋线简洁得多。”
曙光公司最新发布的GHPC1000系统,采用了类似于天河一号的CPU+GPU的混合计算架构,以不到1/10的价格提供了两倍于上一代的曙光5000系统的性能,相信在2010年我们还将看到更多的这类超级计算机
事实上,我们也能感觉到GPU计算以及CPU+GPU混合计算在中国HPC厂商中已经获得了普遍的认可,2010年肯定将是GPU计算的爆发之年,在此我们期望新的一代GPU与编程环境能为我们提供更为强大的计算能力!
用户评论