服务器 频道

CPU与GPU:战争才刚刚开始

  【IT168 专稿】近日,在湖南长沙2009年高性能计算学术年会上,国防科技大学发布了“天河一号”千万亿次超级计算机。该系统采用了6144颗最新英特尔至强5500系列CPU和5120颗ATI GPU,峰值性能为1206万亿次每秒,Linpack测试性能超过560.3万亿次每秒,在2009年中国TOP100排行榜中排行第一位。该系统将于2009年底至2010年全面部署于国家超级计算天津中心,届时我国将成为继美国之后可以研制和应用千万亿次超级计算机的国家。

  “天河一号”所采用的“CPU+GPU”混合计算架构引发了与会专家和各大厂商的强烈关注,尤其是针对这种架构的软件编程和应用问题。

  谁来当千万亿次机的加速器

  由于“天河一号”使用了“CPU+GPU”的混合架构,其中GPU作为加速计算单元存在,但这种结构这无疑会增加系统的使用难度,毕竟现在能够利用GPGPU的软件还比较少,需要用户自己去针对这一架构改编软件。对此,TOP100排行榜创始人、中科院软件所张云泉博士谈到,目前来看,GPGPU的应用对于普通用户而言确实比较难,但是“天河一号”在体系结构设计上也已经考虑到这一点,其CPU与GPU的比例是1:1,这样,即便只使用CPU,也可以实现200万亿次的计算性能,与上海超算的曙光5000A相当。

  曙光公司副总裁聂华在接受IT168记者采访时谈到,“GPU确实是高性能计算业内人士非常关注的热门技术,曙光也在提供采用Nvidia或AMD/ATI的GPU的服务器产品,但根据一线用户的反馈来看,喜忧参半。”一方面,GPU的并行计算性能很高,对于某些专业领域来说确实可以实现几十倍、上百倍的性能提升,比如石油勘探领域已经有证明,但另一方面,也有很多应用无法实现那么高的性能加速比。

  他分析说,跟CPU不同,GPU协同并行计算颠覆了传统的计算理念。对高性能计算来说,首要的是确保计算结果的正确无误,而GPU出身于图形处理卡,从设计结构上就是无法绝对保证计算结果的正确。而今天,我们的编程模型、算法模型都是传统的,因此只有按GPU的体系架构重新去编程才容易获得高性能,否则可能得不偿失。

  “CPU通用计算仍然是基础,同时我们更倾向于用龙芯来做协处理器。”聂华表示,根据计划,曙光公司将于2010年推出采用龙芯处理器的千万亿次超级计算机曙光6000,预计会落户于深圳的华南超算中心。与天河一号类似,曙光6000也将采用异构计算的结构,不同的是,天河一号用的是“英特尔CPU+ATI GPU”,而曙光6000将使用“普通CPU+国产龙芯处理器”。

  可见,在高性能计算加速单元上,过去的FPGA似乎正在被人遗忘,取而代之的是其他形形色色的协处理器,如IBM在“走鹃”用的CELL处理器,“天河一号”用的ATI GPU,以及未来曙光6000里会用到“龙芯”处理器……未来一段时间,将会是丛林竞争的时代。

  双精度性能:GPU首先要过的一道坎

  就GPU通用计算的话题,记者现场还采访了英特尔、Nvidia、AMD、宝德、联想、浪潮等多家厂商代表的看法。

  联想首席科学家祝明发教授表示,目前GPU的单精度性能很高,但双精度性能很小(大约是双精度性能的1/8-1/10,编者注),而高性能计算软件很多都要求双精度性能。

  实际上,国外TOP500和国内TOP100高性能计算机排行榜一般都按照双精度浮点计算性能来测试排序,按单精度性能算,“天河一号”的峰值性能高达1206万亿次每秒,但Linpack测试性能却只有560.3万亿次每秒,正是受到GPU的影响,使得整个系统的效率偏低。正可谓,遇到需要单精度性能的应用,GPU能以一挡十,如虎添翼,而一旦碰到要求双精度的场合,就未免有些英雄气短了。

  此外,GPU计算单元密度高,但数据吞吐受限,I/O瓶颈突出,缺少校验机制等也受到人们的诟病。不过,作为GPU通用计算领域的推动者,Nvidia公司没有知难而退。在此次年会上,Nvidia公司主要推介了其最新一代的“Fermi”GPU架构,具体产品预计要到明年1季度推出。据介绍,Fermi已经针对双精度性能、ECC校验等方面进行了“重大”的革新——引入L1、L2缓存机制,双精度性能是上一代产品的8倍,显存控制器支持ECC显存纠错技术等。Nvidia现场工程师告诉IT168记者:“Fermi的最大改进在于双精度方面,与上一代架构的CUDA通用计算相比,现在的双精度计算性能提高了8倍。而双精度在线性代数,数学模拟以及生物化学领域的高性能计算中发挥着重要作用。” [推荐阅读:7大改进NVIDIA第2代CUDA架构Fermi分析]

  软件才是关键 看CUDA和OpenCL之争

  不过,祝明发教授认为,CPU+GPU的混合架构,硬件并不是最主要的,关键还得看软件和编程环境。宝德公司产品经理陈齐旺也表示,CPU+GPU的方案比较大的挑战就是在程序优化和编程方面。

  由于绝大部分针对CPU编写的程序需要改编才能运行在GPU架构之下,需要软件人员重新学习,而现在Nvidia和AMD又分别主推CUDA和OpenCL(Open Computing Language)编程环境,没有统一的标准,各自的软件互不兼容,也增加了用户的投资风险。

  对于CUDA和OpenCL之争,曙光公司的李宁表示,从高性能计算发展的历史来看,专有技术的路会越走越窄,而标准化的技术会更有发展,如X86服务器取代RISC小型机,千兆以太网和Infiniband等商用网络取代了专有的网络,Linux取代了一些专有的UNIX操作系统等。目前曙光的服务器同时支持Nvidia和ATI的产品,但CUDA这个编程环境只适合Nvidia自己的产品,因此,“OpenCL会在众多厂商的支持下越走越好。”

  作为另一家重要的GPU通用计算厂商,AMD/ATI公司主推的正是OpenCL。该公司在此次年会上就展示了其最新HD5000系列显卡及相关GPU通用高性能计算应用案例。据介绍,已经有很多实验性算法是基于OpenCL标准,面向最新的HD 5000系列GPU架构制作。

  期待英特尔Larrabee+Ct加入战团

  浪潮目前是国内推广Nvidia GPU桌面超算产品力度最大的厂商,其倚天系列受到了众多高性能计算用户的关注。该公司高性能服务器产品部总经理刘军则表示,无论是谁的解决方案,ATI也好,Nvidia也罢,主要看使用环境,看编译环境好不好用,而他本人“更希望看到英特尔推出Larrabee,在桌面超算产品里希望是Larrabee+Ct的技术。”

  据了解,英特尔基于Larrabee的首款GPU产品预计将于2010年推出,主要面向个人电脑图形市场,可支持DirectX和OpenGL,能够运行目前的所有游戏和相关程序。同时,英特尔的研究人员还正在研究各种方法,以帮助编程人员应对在万亿级、并行计算处理器上运行类似的实时应用时所面临的挑战。其中的一个关键研究项目就是 Ct 编程语言,这种灵活的语言致力于帮助主流编程人员高效地开发高度并行化、高性能的软件,从而充分发挥出英特尔当前和未来许多内核处理器的优势。与其他并行编程语言相比,使用 Ct 作为编程语言可以让编程人员的工作效率得到明显提高,因为几乎不需要对源代码进行修改。Ct 编程语言不但适用于目前的硬件环境,还能升级到基于 Larrabee 和 AVX(高级向量扩展)指令集的系统开发,而无需编程人员的介入。

  英特尔中国服务器产品经理顾凡认为,“CPU与GPU之间最终是软件战争,谁能保护用户代码投资谁就能赢。”不过,目前英特尔还没有明确时间表将Larrabee用于高性能计算,“英特尔希望给用户的是一款成熟的产品。”而且,跟Nvidia和AMD不同,英特尔更多会通过“若干大内核+数百小内核”的异构多核CPU设计来集成类似GPU功能模块,以满足更大规模并行计算的需要。

  综上所述,GPU和CPU之间的竞争不仅仅是两种技术架构之间的竞争,也不只是Nvidia和英特尔或AMD两三家公司之间的竞争,而是标准之争,是包括硬件、软件、应用在内的两种产业生态链之间的竞争,涉及到很多软硬件厂商和用户。

  其实,这场战争才刚刚开始!

0
相关文章