GPGPU前世今生

来源:互联网 发布:最佳适应算法例题 编辑:程序博客网 时间:2024/04/20 01:10

版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
http://hirose.blogbus.com/logs/61884993.html

GPGPU,最近Nvidia喜欢大家叫她GPU Computing。

这是我道听途说的一些东西,后面有主要原文网址,主要是关于GPGPU是怎么被炒热的。

Nvidia可能有%99.999....的钱不是从GPGPU赚来。科研领域Make Sense的东西不一定在商业领域成功,比如现在有一款协处理器,就和GPU一样,插上去能做所有的事情,无比厉害。但如果是没有足够的人用,马上就会消失。GPU现在最大的商业优势之一,居然是每个电脑上都有一块这玩意儿。这块芯片当然是为了图形加速用的,但就是因为大家都有一块,所有的热情都被投射在其上。


好吧,我们回到历史年代去找找GPGPU的前身。正所谓,历史无新事,在GPU上做一些通用计算早就开始了。当时的主要问题是没有标准的API。所以,开发者就必须把自己领域的程序用OpenGL或者DirectX的API写出来,非常痛苦。为了解决这个问题,一些人开始在原始的图形API上加了一层API来帮助编程。

斯坦福的BrookGPU和Waterloo Computer Graphic Lab的Lib Sh是最重要的两个工作。

先说说BrookGPU。这是Stanford University Graphics Group的工作。他们当时提出了Stream Programming的概念。数据被打包成Set,形成一个stream,而不是individual的。执行数据的是kernel,可以是一个单独的kernel,或者是一个kernel链,就好像一般的pipeline一样。并行过程被kernel所隐藏,你不用指定一个循环什么的,而是告诉kernel一个保存数据的纹理。Brook后面的主要科研人员是Ian Buck,这是他的PhD毕业论文内容。2004年开始,其间中断过,2007年停止。


Lib Sh是CGL的几个家伙想出来的,2006年停止维护,有一个叫RapidMind的公司负责商业化。

Nvidia决定进入GPGPU战场是在2005年。他们当时雇了Ian Buck,Brook后面的推手,让他来负责设计Cuda语言。CUDA是Compute Unified Device Architecture的缩写,是Nvidia为通用计算提供的方案。籍此,Nvidia能够更加有底气的设计自己的GPU架构来适应未来的通用计算。Nvidia还提供了一些并非建立在图形API上的接口,让整个计算模型更加好用。当然Nvidia还做了很多其他的事情,比如把一直由CPU做的物理也弄到GPU里面去了。

这个时候,我要是CPU供应商,我一定会非常紧张。通用计算本来就是CPU的天下,这样下去大家都跑过去用GPU了,岂不是末日不远了。特别是摩尔定律失效的这几年,每次大家讲个什么,都会把CPU和GPU的Peak Performance的图拿出来对比一下。最新的CPU比GPU慢了已经100倍了。

所以,无论用什么办法,CPU的生产商,Intel,AMD之流的是挤破脑袋也要一起来玩这个游戏的。然后AMD收购了ATI,为了赶上Nvidia,ATI也从Brook中吸取营养,搞了一套自己的系统,叫做Brook+,依然有Stanford维护。

当这些都在进行的如火如荼的时候,Apple公司为了让MacOS更好的支持未来的多核体系结构,搞出了一套叫做Grand Central的东西。Apple未雨绸缪,是有道理的,因为自从CPU撞墙之后,唯一靠谱的大大提高程序运行速度的方法就是并行了。而Grand Central就是要让程序员从各种多线程编程任务中解脱出来。Apple的某人碰巧就发现,这个东西也符合GPGPU领域的需求。于是Apple就把这套东西包装成了一个API标准,叫做OpenCL(Open Compute Language)。

你也知道,大家在这个GPGPU领域打得晕天暗地,突然发现了一把利器,马上都聚了过来。既得利益者,不想失去江山,其他的公司又害怕被置之度外,失去这个机会。Khronos的团队集合到的人马有Intel, AMD, ATI, Nvidia, RapidMind, ClearSpeed, Apple, IBM, Texas Instruments, Toshiba, Los Alamos Nation Laboratory, Motorola, QNX等等。大家一起制定了1.0版本的协议。

OpenCL的协议中,并行程序不仅适用多核的CPU,还能利用有很多核的GPU。令人鼓舞的是,OpenCL的协议现在被IBM Cell,ATI GPU,Nivida GPU,AMD CPU,Intel CPU写成了了驱动。

好吧,故事就到这里结束了,从此OpenCL和王子们过着美好的生活。

然后呢?Intel的目的是想让自己X86的基因到处存在。Nvidia的目的是让GPU吞噬CPU。。。大家都不想死。

http://gpgpu-computing.blogspot.com/2009/08/gpgpu-historical-perspective.html
原创粉丝点击