新闻中心

EEPW首页 > 设计应用 > 多核时代:填补软硬件之间的鸿沟

多核时代:填补软硬件之间的鸿沟

——
作者:时间:2007-09-26来源:IT168收藏
        计算机硬件与软件之间的互动已经发展了50年之久。但在过去,双方的关系仍然保持一定的距离。往往是由硬件工程师研制出芯片之后,再扔给软件程序员。而随着的出现,硬件/软件之间的联系会变得更加紧密。芯片制造商们逐渐认识到,架构正在从根本上改变传统的软件生产模式——过去的软件通常都是单线程的,要对它们进行改编使之适合多线程、多内核技术非常困难。因此,如果芯片厂商要想推广自己的产品,就必须想方设法缩短硬件和应用之间的鸿沟。
 
        芯片厂商的共识
    
        事实的情况是正是如此。在某种程度上,英特尔、IBM、AMD、NVIDIA等芯片厂商都在跟ISV和研究机构加强广泛合作,提供早期的硬件样品、软件支持及相关培训。芯片制造商们已经通过编译器和接口库(processor interface libraries)等形式提供软件支持,来帮助工具开发商处理芯片上越来越多的内核。
   
         比如,IBM为其CELL提供软件开发套件(SDK)和其他工具(参见:Cell宽带引擎Linux扩展和软件开发工具发布:http://publish.it168.com/2005/1122/20051122046901.shtml),IBM 还启动了一个名为Octopiler的项目,使对Cell的编程更简单。
    
        AMD为其GPU编程引入名为“Close to Metal”的CTM技术,使开发者能够随意访问AMD流处理器中的原生指令集和大规模并行计算单元的内存。利用CTM,流处理器就能够像今天的中央处理器(CPU)一样成为功能强大的开放式可编程架构。通过开放架构,CTM使开发者能够对硬件进行低阶、确定和可重复的访问,这一能力是开发编译器、调试器、数学库和应用平台等基本工具所必需的(参见:AMD发布针对流运算的CTM技术:http://publish.it168.com/2006/1120/20061120041201.shtml)。 
 



       AMD 的CTM技术
    
       NVIDIA则为其GPU产品提供了CUDA平台,开发人员可运用Quadro系列解决方案的高速运算性能,以研发、设计原型以及解决复杂的可视化问题。在X86软件支持方面,英特尔更是拥有非常广泛的商业产品、软件工具和教育培训服务,来帮助开发人员更好地应对多核芯趋势。针对大量存在的行业ISV,为了帮助其尽快的实现从单线程应用向多线程应用的转变,英特尔投入大量资源,向业界提供编译器、应用程序分析和调试、数学函数库等软件工具。 
 


       NVIDIA CUDA技术架构辅助CPU进行运算功能
  
        在高性能计算领域,这一策略已经变得更加清晰。最近的例子就是围绕相对较新的IBM Cell BE和通用GPU处理器,涌现了许多开发工具。在这些芯片出厂之前,PeakStream和RapidMind等厂商就开始为新的加速器设备提供应用开发平台。如果这些产品获得成功,将在芯片厂商和软件开发商之间就有望实现非常重要和关键的协同机制。下面,我们就以CELL和GPU在HPC中的应用为例,来看看其软件开发方面存在的机遇和挑战。

       用GPU和CELL充当HPC加速器
    
       使用GPU和CELL处理器来充当流处理加速器(stream processing accelerator),这一做法已经在HPC业界引发了相当的关注。人们可以通过这些处理器来实现应用加速,其目标领域包括3D可视化、广播编码、医疗成像、多媒体内容创作、图像和信号处理、金融财务分析、地震资料处理、大规模数据库交易和企业科研,几乎适用于所有要求强劲计算性能的数据密集型应用。这些多核加速器在HPC领域里的广泛适用性,已经吸引了软件开发商的关注。
    
       早在去年9月份,Peaksteram公司就推出了一种“基于GPU显卡来构建超级计算机”的解决方案——该公司的C/C++程序接口、虚拟机处理任务调度和内存管理等工具软件,为程序员提供一种方便的途径,利用多内核x86或Cell处理器和GPU组成联合系统。编程人员可以象以往那样使用C/C++ 语言编写程序,PeakStream的软件负责硬件资源的分配。虽然客户必须根据PeakStream软件的接口对应用软件进行改编,但跟搞明白图形卡或其它硬件产品的内部原理来说,还是要简单得多。如其今年3月发布的PeakStream Workstation for Windows包含了一系列工具和库文件,可以方便开发者在微软的Visual Studio下为显卡开发多线程通用运算程序。 
 


       PeakStream软件架构
    
       RapidMind是加拿大的一家为多核平台(GPU/Cell等)提供编程环境的公司,近期也推出了类似的平台,宣称能够支持IBM CELL处理器以及最新的NVIDIA、 AMD/ATI GPU产品在HPC领域里的应用,并表示不久就会支持多核X86处理器。RapidMind提供C++的编程环境,对C++进行了一些扩展,比如特殊的数据类型,以及数字图像处理、游戏编程等库函数。目前来看,PeakStream使用的技术和RapidMind非常相似,都是C/C++和library方式,都是Array Programming Model,都是动态编译,都提供虚拟机。
   
        除了商业公司,科研人员也正在研究新的基于CELL的加速器技术。今年4月份,中国科学院(CAS)计算机网络信息中心和IBM在国内合作的第一台基于Cell BE(Broadband Engine, 宽带引擎)的刀片服务器系统开始投入运行。在早期的系统测试中,中国国家网格(CNGrid)和IBM联合组建的测试团队通过进行一系列优化软件和Cell BE的硬件潜力开发,将地震应用的计算速度提高了60倍。地震预报专家将可以在短短几分钟内得到以往需要数个小时才能得到的计算结果。(参见:国内首台Cell刀片服务器落户中科院http://publish.it168.com/2007/0416/20070416034401.shtml) 
  


       IBM的CELL刀片系统
    
       在美国的田纳西州大学,Jack Dongarra和他的小组在创新计算实验室(Innovative Computing Laboratory)中安装了基于IBM CELL 处理器的系统——跟中科院使用的刀片系统不同,这是一套由4个节点子系统组成的PlayStation3 (PS3)集群,用作科学计算的研究平台。仅仅花费了2400美元,他们就构建了这套可以提供600 Glops(单精度浮点运算)峰值性能的系统。尽管PS3从来都不是专门针对高性能计算机群节点来设计的,但其低廉的价格和可用性还是得到了一些正在寻求低成本FLOPS的HPC  FANS的青睐。值得一提的是,田纳西州大学小组正在评估PS3机群的编程模型,及该架构对HPC的某些限制。

       CELL处理器用于HPC的局限性
    
       在测试过程中,田纳西州大学的科研人员编撰了一份关于使用PlayStation 3作为HPC平台的技术报告——《A Rough Guide to Scientific Computing On the PlayStation 3》(感兴趣的读者可以从这里下载:http://www.netlib.org/utk/people/jackdon garra/papers/scop3.pdf)。对于那些对使用CELL处理器进行技术计算比较陌生的开发人员来说,这份报告有必要一读。 
 


       田纳西州大学科研人员用PS3搭建机群
    
       该报告描述了CELL芯片和PS3的硬件性能、可支持的系统软件,以及如何来组建一套实验室用的PS3机群。它还探讨了相关的编程技巧,并提供了一些实际的应用案例。最实用的一部分是,它讨论了针对CELL架构的许多商业和科研软件平台。尽管这份报告没有阐述跟CELL/PS3软件开发相关的全部细节,但它确实尽力给出了关于当前可用技术的总体框架性说明。下面这段引自该报告的引言部分:

       “用PS3来做科学计算,听起来很让人振奋,但其实却是坎坷之途。针对多核处理器的并行编程模型还只是处于襁褓阶段,标准的API甚至还没有出现。这导致的结果是,当前,我们只能通过手写代码来充分挖掘CELL处理器的硬件性能。[编者按:RapidMind公司可能会相当不同意这点。]总的来看,由于该处理器处理性能和互连通信速度之间极不平衡,从而严重削弱了PS3平台用做科学计算的适用性,详见9.1章节。不过,CELL处理器仍然是一个具有革命性的芯片,提供了突破性的强大性能,而且售价也不贵。我们希望这份报告能够让CELL的道路变得更平坦一些。”
   
        该报告对PS3用于科学计算的局限性进行了相当精彩的探讨,包括内存带宽和容量、网络连接速度以及浮点运算方面的缺陷。该报告的姊妹篇则进一步讨论了这些问题的更多技术细节——《Limitations of the PlayStation 3 for High Performance Cluster Computing》(感兴趣的读者可从这里下载:http://www.netlib.org/utk/people/jackdon garra/papers/ps3-summa-2007.pdf)。在下一代的处理器中,那些限制CELL用于科学计算的浮点运算方面的缺陷,可能会得到解决。根据田纳西州大学的报告,在下一代浮点运算方面,IBM公司正在计划将双精度性能(double-precision performance)从14Glops提升到102Glops,但没有说明IEEE 754浮点支持问题是否也会得到解决。

        GPU面临类似的问题
   
        GPU是另一个例子。跟主流的CPU相比,GPU的原始浮点性能要强劲得多。比如,3GHz的奔腾4运算能力大约为6GFLOP(10亿次浮点运算每秒),Woodcrest最高可达24GFLOP,四路双核安腾2系统运算速度可达45GFLOP。而GPU要领先的多,比如ATI高端的X1950 XTX处理器运算速度为375GFLOP,双显卡模式达到750GFLOP,相当于31个Xeon 5100处理器;Nvidia的Geforce 7950 GX2双GPU显卡也能达到384GFLOP。 
 



        GPU与CPU之间的性能对比
    
        当然,浮点性能只是一方面,GPU要完全取代CPU还有很大的距离。GPU可以在部分急需数学计算的领域表现出色,但是GPU内部缓存远小于CPU,因此,CPU可以存储预测和非预测指令,GPU则无法做到。AMD和NVIDIA都在准备新一代GPGPU产品,分别基于R600和G80,NVIDIA将G80用于GPU计算,AMD将R600用于流计算,这种产品在PCB上集成尽可能多的内存,而输出接口只有1个DVI。NVIDIA有可能在Computex 2007大会上发布GPGPU版的G80产品,同时发布正式版的CUDA SDK以配合GPGPU版的G80。
    
        而且,GPU也面临跟CELL类似的浮点运算局限性。如果NVIDIA和AMD想将GPU成功引入科学计算市场,它们就必须就相应设备的浮点问题做出某些决定。当前,这二者都无法提供任何双精度硬件(double precision hardware),IEEE 754兼容性问题也还没有得到完全解决。然而,NVIDIA最新的G80设备已经开始支持rounding modes、overflow和NaN。
    
        这里的问题是,为了支持GPU的科学浮点运算性能,NVIDIA和AMD在改进GPU架构方面会走多远?另外,GPU工程师还不得不考虑内存纠错、低功耗等方面的问题,以提供更强壮的HPC方案。
   
         综上所述,随着多核时代的到来,为了平衡应用需求和硬件性能之间的紧张关系,英特尔、IBM、AMD、NVIDIA等芯片厂商已经开始做更多的工作——编译器、接口库、软件工具等等,甚至通过GPU和CELL等“另类”的方法来提供HPC应用加速技术。一些软件厂商如PeakStream和RapidMind等,也企图借机填补多核硬件与并行软件之间的巨大鸿沟。


评论


相关推荐

技术专区

关闭