服务热线:
您当前的位置:首页 > 世纪星月刊 > 第7期 (2010年7月)

【技术前沿】CUDA领跑未来处理器市场

2011/10/11 10:55:57

 

作者:研发部 杨盛海

 

  怎样盖房子才能盖得高?答:在青藏高原上盖房子就能盖得高。怎样让算法算得快,答:使用GPU运行算法就能算得快!

  考你一个简单的问题,虽然简单,但是不容易答对:你的电脑里什么东西跑得最快?大多数人脱口而出:当然是CPU了!错了,是GPU。

  现在大多数电脑的显卡都配备有GPU,GPU(GraphicProcessUnit)就是图形处理器了,现今,高清画质的电影、绚烂多彩的3D游戏已经使CPU越来越不堪重负,于是GPU适时地出现了,分担了CPU很大一块重负,使CPU可以有更多的时间去处理和图形无关的任务了。

  GPU一开始时当然是不如CPU快的,而且它的任务仅限于图形处理,功能也非常简单,硬件的升级速度总是出乎人们意料,之后,随着图形处理任务复杂化(人们总是追求高品质的画面和超炫的游戏效果),GPU的速度一路飞涨,目前市场上主流的GPU速度已经数倍以至数十倍于主流CPU了!

  现在看看为什么GPU会这么猛,搞计算机的都知道,CPU一般由一个计算单元(ALU)、一个逻辑控制单元和一些个寄存器组成的,现在双核的就会有两个ALU,还有多核的就更多了。CPU和GPU的性能都是由ALU决定的,看看GPU有多少个ALU吧,某款比较低端的GPU就有128个ALU!每个ALU的性能再低,那么多个ALU放在一起并行计算,其效果也是可想而知的。

  慢慢地有公司就发现了一个问题,不是速度的问题,是效率的问题,GPU是为了处理日益复杂的图形任务而生的,而一旦用户不需要处理图形任务时,GPU就几乎是闲置了,比方说一台电脑卖给爱玩游戏的小伙,GPU就适得其所,如果卖给搞科研的老科学家,GPU就几乎没什么用了。对于大部分人的大部分时间来说,GPU实际上就是闲置着,这无异于资源的巨大浪费。于是该公司就想,能不能让GPU代替CPU做一部分运算呢,反正闲着也是闲着。这个想法成就了该公司后来开发的GPU运算平台,也就是CUDA。

  CUDA(ComputeUnifiedDeviceArchitecture),是该公司开发的并行运算架构平台,它可以看一个基于GPU的操作系统,就像我们平常用的操作系统是基于CPU的一样。这个公司则刚开始研究这个系统时只是基于本公司的GPU,后来,就有其它公司(基本上都是显卡公司)看到它的广阔市场,把这个框架移植到自己的GPU上了。

  可以看到,很多具备复杂计算任务的领域,都将是CUDA发挥自我潜能的舞台,如科研领域、生物制药领域、金融分析领域等等。这些领域的一些计算工作,如果用CPU计算的话,也许会花上几天或者几个星期。如果改为用GPU计算的话,也就几个小时搞定,大大提升了工作效率。当然如果用GPU计算,必然离不开CUDA。值得一提的是CUDA对于最终用户来说是一个完全免费的开发平台,这对于那些忙于搞科研,同时经费又不是很充足的同学,无疑是一个非常爽的消息。

  我们现在来看看CUDA的结构,CUDA从体系结构上分为三层,从底向上来说包括驱动层、运行时环境和开发库。驱动层负责和硬件通讯,它要兼容很多种不同型号以及将来的不同品牌的显卡设备。相当于Windows操作系统的设备抽象层,提供硬件设备的抽象访问接口。运行时环境提供了应用程序开发接口和运行时组件,包括基本数据类型的定义和各类计算、类型转换、内存管理、设备访问和执行调度等函数。基于CUDA开发的程序代码在实际执行中分为两种,一种是运行在CPU上的宿主代码(HostCode),一种是运行在GPU上的设备代码(DeviceCode)。不同类型的代码由于其运行的物理位置不同,能够访问到的资源不同,因此对应的运行时组件也分为公共组件、宿主组件和设备组件三个部分,开发人员可以通过运行时环境的编程接口实现各种类型的计算。开发库就相当于VC++中的MFC、ATL等类库,应用程序可以使用开发库中的各种算法,包括一些复杂的大规模并行数据计算等。开发人员可以在开发库的基础上快速、方便地建立起计算应用程序,也可以根据工作的性质开发出自己使用的开发库。

  再来看看CUDA支持的语言,最早的CUDA仅支持C语言(自己的C编译器),后来又提供了Fortran的接口(是因为Fortran语言在科学计算领域应用比较广泛),而到目前,CUDA又加入了对C++以及OpenCL等其它语言和API的支持接口,在可以预见的将来,CUDA将会加入对更多语言的支持。

  CUDA广阔的市场前景引来了众商家的注目,MS的WindowsVista和Windows7操作系统都提供了可以访问CUDA框架的组件DirectCompute,它号称是可以使用GPU来进行计算。

  实际上,它也是运行在CUDA架构之上的,只不过是对其做了进一步封装而已。大名鼎鼎的图形处理软件PhotoShop也提供了使用CUDA加速某些处理过程的功能。

  除了商用软件瞄准了CUDA的商机,很多自由软件作者也纷纷使用该平台来加速自己软件中的算法,举个例子来说,世界上有很多对MD5算法(一个著名的Hash算法)进行验证的工具,该算法只能进行单向计算,也就是只能从一个输入数据计算得到结果数据,而不能从结果推出输入数据,所有的算法也只能是使用计算过程来验证结果。目前世界上最快的验证工具就是使用CUDA对算法进行并行优化,从而达到极快的运算速度。感兴趣的同学可以去搜一下,这个验证工具全名为BarsWF_CUDA_x32.exe。

  可以看出,CPU独占处理器市场的时代已经一去不复返了,GPU运算时代已经开始,识时务者为俊杰,充分把握技术发展脉络,深刻洞察市场需求的变化,顺应时代潮流走向,方能在诸强相争中立于不败之地,软件及互联网产业尤其是这样。■

 


企业邮箱  |  法律公告  |  隐私保护  |  联系我们  |