服务器 频道

王道何在 ATI Stream凭什么撼动CUDA

    【IT168 专稿】前不久,AMD公司两位资深产品经理Terry Makedon 和Ed Buckingham在AMD中国总部介绍了ATI的流处理技术(Stream Computing),同时也透露了该公司"GPGPU(general purpose computation on GPU)"的开发计划。据Terry Makedon称,GPU的性能正以超越摩尔定律的速度不断发展,而通过"ATI Stream"这项技术,ATI可以让GPU和CPU联合起来进行通用计算,大大提高计算机的速度。

    1. AMD:CPU+GPU才是王道

    "The Future is Fusion"(融聚未来)是AMD下半年刚放出来的新企业品牌。而实际上,Fusion对于AMD来说有另一层意思。那就是AMD认为了未来的发展方向是CPU与GPU的某种融合。

    其实我们从AMD下决心收购ATI 就可以看出这种对未来的预见性。Terry Makedon是"Radeon"和"FireStream"等GPU产品的经理。他介绍到,近两年来,CPU都是以摩尔定律的速度发展,哪怕是到了多核时代仍然如此。但是从2003年开始,GPU的发展速度就开始越来越快,到了现在已经远远把CPU甩在了身后。

    这主要是由于CPU执行的是串行指令,而GPU的运行则是将任务分解为多分,并行执行。因此尽管人们为串行指令执行方式做了很多优化,加入了包括超标量,超流水线,高速缓存等技术,并用高频率来提升性能,但CPU仍然无法和采用并行架构的GPU相比。要知道在ATI HD4850/70系列显卡中,其并行流处理器的数量高达800个--你几乎可以理解为CPU领域里的800核处理器。

    那么,为什么CPU不改变一下自己的结构,像GPU一样并行处理呢?答案是,CPU是通用计算处理器,CPU的诞生就是为了简化程序设计,让程序员可以用汇编,进而用充满魅力的高级程序语言来编程。从原理上讲,因为人脑或者说人的思维逻辑是线性的,因此人在设计串行指令时会更加容易和简便,这种简便在最初的时候是非常有用的--要知道,那个年代还没有GPU。

    而之后,由于多媒体时代的到来,人们对图形图像和游戏的视觉需求越来越高,在计算诸多像素点和渲染的过程中,CPU的线性串行运算越来越力不从心。因此人们开始寻求更高效的架构,这就是并行处理--也就是流处理。这种架构将一个庞大的运算任务分割成很多小任务同时计算,之后将结果结合起来,很像众蚁食象的概念。

    因此,我们总结发现,GPU相对CPU具有着两方面的特性,一是具备庞大的并行运算能力,任务越复杂,越能体现其运算优势(AMD技术人员现场演示了一个地动波寻找石油的DEMO,在该DEMO中,GPU只用了1分钟左右的时间就完成了整个地动波的波形运算和结果显示,而CPU用了2分钟甚至还没有完成1/10的工作量。),另一个特性是因为GPU的并行能力,所以其编程环境和开发方法与CPU相比要有所不同。

    AMD意识到GPU的强大运算潜力并不一定只该应用在图形处理领域,在其他需要进行类似运算的领域里,GPU同样可以发挥作用。AMD认为,让CPU充当一个指令翻译或是将任务分解为很多小任务的工作,然后将这些任务交给GPU来运算,这会大大提高运算速度。于是有了Fusion的融合理念。

    Terry称,相比CUDA需要独立的编程环境来针对GPU编程,ATI的ATI Stream SDK则是开放的。也就是说,通过后面第三方开发的接口程序,用户甚至可以直接让CPU充当翻译的工作,只需要像以往一样编程,也可以调用GPU来做大规模运算。

    这就是AMD的CPU+GPU创意独到的地方,在这个概念里,我们不会看到GPU取代CPU的想法,也不会看到CPU仍然把持主要计算,而让GPU充当协处理器。实际上,GPU在某种程度上与CPU站在了一起--这很像CPU本身就是运算器和控制器的集合--CPU和GPU真正融合,互相发挥长处,弥补不足,发挥更大性能。

 

    2. ATI Stream的优势--OpenCL是未来

    AMD召开技术宣讲会并不是空穴来风,事实上AMD早先就已经推出了专门用于流处理并行计算的FireStream系列产品。而今年FirePro的新品,其最高性能的产品达到了1 teraFlops的计算能力。

    而除此之外,AMD在软件的支持上也做了充分的准备。首先是催化剂驱动,AMD在其最新的8.12版催化剂驱动中加入了ATI Stream的流处理通用计算支持,更是附送了包括视频转换软件在内的小工具。用户可以免费升级驱动,然后享受用GPU转换视频的迅捷速度。据AMD技术人员现场演示,用CPU转换一段1分半钟的高清视频需要5分钟左右的时间,而用GPU在48秒就完成了转换。但是目前该功能只支持Ati HD 4800或者HD4600以上的显卡启用流计算,AMD表示在明年推出的后续驱动里,会加入对HD 3870以上显卡的支持。

    可以看出,在Nvidia的CUDA凭借高性能计算领域的优势节节进攻的时候,ATI拿出的是兄有成竹的应对,甚至在一些地方有着超越CUDA的意识。

    最典型的例子,ATI Stream技术里用到的是开放性标准OpenCL,而Nvidia的CUDA则是私有标准。其实简单说来我们不用管开放性标准和私有标准有什么区别,我们所关心的就是哪一个更有前景,哪一个便于开发和好用。

    答案很简单,几乎所有曾经存在的私有标准都消亡了,目前还活着的私有标准几乎只剩下Nvidia的CUDA了,而同样是Nvidia的标准,其早先的Cg已经看不见身影。相对的,开放性标准中,DirectX、OpenGL都是为我们所熟知的,而DVI、CDP、JEDEC也都还确实存在着。ATI企业级计算的产品专家Ed Buckingham表示,他们认为未来的标准将必然倾向于开放式,而其中最有前途的就是OpenCL和DirectX。

    如果说这只是一家之言,那么笔者再举证两个消息。其一是微软宣布将在DirectX中提供对ATI Stream SDK的支持;另一个是Nvidia宣布自己的Tesla完全支持OpenCL标准。"这其实就是一种态度上的妥协。"Ed表示,"Nvidia显然也意识到了哪一个标准更有前途。因为OpenCL以及其他如DirectX可以应用在任何架构、任何平台上,而CUDA不行,CUDA只能用在符合其私有标准的平台上。"

    另一方面,CUDA的优势在于给程序员提供了一个类似C语言的编程环境,使应用人员可以很容易的对GPU编写程序。ATI Stream也提供了类似的工具,叫做Brook+。据透露,在最新的催化剂驱动中已经附带了ATI Stream CAL(计算提取层),对GPU编程的工作已经基本就序,程序员只需要等待正式版的Brook+和相应的SDK发布就行了。

    与Nvidia的CUDA有所区别,ATI Stream将迅速覆盖其所有产品线,从HPC到商业运算到消费类产品等等都将得到Stream技术的性能提升。在现场的演示中,AMD技术人员用Nvidia的CUDA转换一段高清视频用了118秒,而用ATI Stream技术却用了不到一半的时间。

    3. ATI Stream为高性能计算做好了准备

    "我不想说我们的硬件有多强大,我只说软件上我们为什么比对手强。"Ed Buckingham如是说,强大的自信显示了AMD在HD 4000系列领域击败Nvidia的荣耀。

    Brown Deer技术公司是一个通过地动波来勘测石油天然气的公司。在用到ATI Stream技术以后,该公司发现其地动波的实时运算比用CPU快了120多倍。而同样,在前不久刚结束的中国高性能计算年会上获得第二名的中国科学院的研究生用ATI Stream技术在HD 4870显卡上计算中型到大型规模的矩阵,在迭代次数达到3000以上的时候比CPU提升了至少27倍的效率。这都要归结于OpenCL的开放性标准带来的优势。

    与CUDA相比,OpenCL支持CPU+GPU的混合计算,而CUDA不支持;CUDA是Nvidia的标准,而OpenCL是AMD、Intel、IBM、甚至Nvidia自己都支持的标准;OpenCL是中立的标准,而CUDA显然不是。

    除了强大的软件架构优势,具体到数据中心ATI Stream还有什么优势?一个庞大的数据中心除了需要大量的计算资源外,还需要考虑什么?当然是节能。尤其是在经济危机笼罩之下,大家喊出了绿色数据中心的口号。ATI FireStream 9250就是符合节能的低功耗产品,其功耗只有90W,而流处理能力达到200GFlops。在AMD的实物展示中,我们看到了Aprius公司的一款服务器产品,其中由挡板分为两个部分,每部分可以插4块显卡。

 

    但是这就带来一个问题,即便功耗很小,体积也不大,那性能又是如何呢?在随后的问答时间里,笔者就此以及其他关于GPU计算的问题询问了有关专家。

 

    4.ATI Stream企业级市场专家答笔者问

    笔者:您好Buckingham先生,请问ATI Stream现在有应用案例么?效果怎么样?

    Ed:我们去加拿大的时候,有一个客户,他有一套100万美元的服务器机群,但是用我们的机器完成相同的运算,只用了8块显卡,只需要2万美元。

    笔者:那也就是你们用8块显卡完成了100万美元的服务器所做的相同的工作了是么?那么这是单一的一种任务应用,我意思是这可能恰巧是并行计算的复杂情况,在其他通用环境里GPU也能达到很高的计算密度么?比如与高密度的刀片服务器相比,GPU除了价格优势,有性能上的优势么?

    Ed:有的,我们都知道最高密度的刀片,目前是在一个刀片中集合16个核,也就是四路4核。而我们的一块显卡,拿HD4800系列来说,在一个GPU中包含了800个流处理器,也就是800个核,这种密度我想刀片无法与我们比。但是你前面说的在通用领域里,确实,因为程序上的关系,我们目前还无法铺开。不过很快你就会见到相关厂商推出基于ATI Stream显卡的服务器产品。

    笔者:好的,那既然ATI Stream具有更快,更便宜,更节能的特性,那这几乎是服务器领域的新宠儿了。请问您觉得它的缺点在哪里?

    Ed:我认为我们的产品最大的缺点在于编程。太多的程序员习惯在CPU环境下编程,而不习惯在GPU下编程,其一是因为GPU的并行编程门槛较高,其二是因为没有一个良好的环境支持。我们正在努力创造简单的编程环境让程序员更容易迁移他们已有的程序。实际上,现在程序员应用Brook+只需要改动原有程序的一小部分就可以享受GPU的速度了。

    笔者:那是不是未来的编程环境中,程序员只需要像平时一样编程,底层的CAL会自动将其编译分解成GPU可以运行的程序呢?

    Ed:这有些遥远,不过我认为以后应该不会存在GPU和CPU的变成差异,他们会统一起来。因为很显然,在多核时代,程序员也开始要考虑如何对多核心CPU进行并行编程,这就是趋势。另外,我们的竞争对手也在推动这一过程。

    笔者:说到竞争对手,想问一下您,为什么ATI Stream紧跟着CUDA推出,这是否是一种跟风?而尽管OpenCL有优势,但CUDA已经打出了自己的名气,ATI Stream的不少东西,比如类似高级语言的编程环境是否都对Nvidia CUDA有所借鉴。

    Ed:我再讲一个故事,有两个大学生是同学,他们很有想法,并且都拿到了博士学位。他们毕业后,一个创立了Nvidia,一个创立了ATI。我解释清楚了吧(笑)。

    笔者(笑):那么请您最后评价一下Intel的Larrabee,Intel也在强调相同的CPU+GPU概念。AMD怎么看这个产品。

    Ed:什么是Larrabee?(笔者惊!)好吧,这是个玩笑。我的意思是,它在哪?你今天看到的,我们带来了实物,驱动在网上已经供用户下载,开发包已经放出。但是Larrabee呢?我们听英特尔喊了1年多,Larrabee有多厉害,但是产品呢?在哪?

    我确信Larrabee会是一个好产品,但是和我们相比,英特尔还有很长的路要走(笔者心说:无比自信啊)。

    笔者:谢谢您。

0
相关文章