CUDA是NVIDIA针对GPU的C语言开发环境开发的通用计算平台标准,全称是Compute Unified Device Architecture统一计算设备架构。CUDA可以充分应用GeForce 8/9系列 GPU 流处理单元的浮点运算能力,解决复杂的科学运算问题,诸如地质勘探,生物学,流体力学,金融建模等等。根据NVIDIA的测试,8800显卡在CUDA架构中的峰值运算能力可达520GFlops,因此如果构建SLI双卡系统,可以达到1TFlops(即每秒运算1万亿次)的强大运算能力。
CUDA能否成为GPU通用计算的标准
在过去的时间里,NVIDIA已经讨论过关于硬件支持double precision(双精度浮点运算)带来的优势,特别是当Tesla系统发布时,但当时并没有GPUs硬件可以硬件支持,G9x系列GPUs是通过技术模拟的方式支持的。 针对这个疑问,David向我们确认了这个事实,“我们为软件开发开发了双精度模拟库,这并不是用来运行实际的应用程序,而是用来在我们下一代支持双精度产品面提前做软件开发。” 笔者询问David他所说的下一代产品是否就是NVIDIA CEO黄仁勋在近期的财务分析年会上所提及过得Tesla 2代,“没错,就是它”David 回答,“Tesla 2代将会支持double precision,软件开发人员可以使用它来开发double precision的相关软件产品。” 双倍精度浮点运算可以表示范围极大的数据,但是,个人消费者并不需要双倍精度浮点运算的超强能力,因此Tesla 2代的主要会为用户的HPC(高性能电脑)去改善运算速度。现在Tesla的主要潜在客户还是HPC这样的商业用户,而什么消费领域什么时候会产生双精度的需求,而有这种需求的应用会是什么?现在都很难想象描绘 “尽管未来的市场前景还没法预测,但我预计未来NVIDIA的所有产品将可以支持double precision。而且,如果商业用户要求加入一些其它的技术比如ECC内存,那我可以告诉你它预计会只有专业系列产品(包括Quadro and Tesla系列)能够支持。” 顺着这个话题,我们把问题转向了CUDA。既然CUDA是作为一种GPU的通用计算平台标准,那CUDA是否对其它GPU厂商,例如ATI的硬件产品开放呢?David谈及了CUDA对其它硬件产品的开放性和扩展性,CUDA要求GPU硬件组建必须支持C语言编程,而ATI目前的产品不能运行C语言的代码,因此刚才的问题变成了,“NVIDIA是否与竞争对手(ATI)讨论过其产品支持C语言的问题?” “关于NVIDIA与合作伙伴及竞争对手的对话内容,我这里不方便评论。我只想说的是,我们为每个对CUDA感兴趣的厂商创造了一个机会,一起坐下来探讨其产品运行CUDA的可能性。CUDA不完全是一个开放的标准(an open standard),硬件产品能否基于C语言编程是运行CUDA平台的关键。” 我们为对CUDA感兴趣的用户提供了一系列开放套件工具,但令人遗憾的事实是,其它厂商更多是把CUDA看成是一种竞争而不是一个大家共赢的机会——我认为,那将是他们的失误。这也是我在之气回答“NVIDIA是否会将CUDA作为一个业界标准?”的问题时反复提到的,我们不会单独去开发CUDA,但它是一个我们开发的标准,而有些厂商也许也必须要接受。 在GPU上运行C语言编写的通用计算任务,毕竟,NVIDIA已经讨论过CUDA在PhysX(物理仿真运算)和RapiHD(高速视频编码)两项“杀手级”应用,但是,David先生有没有注意到,对手的catalysts产品也可目标转向了大规模并行计算。 “我觉得,GPU在加速视频编码(video encoding)方面的应用将会改变很多人的看法,其它像 Photoshop 插件(plugins),和其它一些应用的实际效果,人们会乐意使用GPU来加速运算。”David说道。 在去年Intel IDF Fall 2007上,笔者注意到Intel在介绍SSE4指令集时,其中一张幻灯片展示了SSE4指令集的一个主要要点就是增强改善视频编码性能,记得当时我曾经问自己,这个工作为什么不能交由GPU来完成呢?GPU拥有极大的潜在性能去更快地完成同样的视频编码工作,NVIDIA今年财报分析大会上的演示很好地证明了这一点。 “的确如此,确切地说,GPU加速的话将比CPU更快速、更容易,处理器图片也同样如此,本质说来和处理视频没多少区别,只不过视频是动态图像,而图片是静态的。”David开玩笑地说到,“如果不信的话,你可以问一下CPU厂商到底GPU和CPU谁处理图片会更快?!”





ATI未来的Radeon、FireGL和FireStream能否加入对C语言和CUDA的支持?

