GPU的新舞台 通用计算领域大展拳脚
自诞生之日起,GPU的高速发展就一直没有停歇过。GPU的出现将CPU从繁重的图形运算中解放出来,大大提高了计算机图形处理的速度和质量,为用户带来了更真实、更绚丽的画面。到了今天,主流GPU的图形处理能力已经满足并超越了大部分电脑用户的需求,而且电脑也不可能每时每刻都在运行三维程序和游戏。于是越来越多的人开始关注一个问题:拥有强大浮点运算能力的GPU还能做些什么?
通用计算,GPU大展拳脚
GPU的迅速发展带来的并不只是频率的提高,还产生了很多全新的图形硬件技术,使GPU具有流处理、高密集并行运算、可编程流水线等特性,从而极大地拓展了GPU的处理能力和应用范围。正是由于GPU具有高效的并行性和灵活的可编程性等特点,越来越多的研究人员和商业组织开始利用GPU完成一些非图形绘制方面的计算,并开创了一个新的研究领域——GPGPU(通用计算图形处理单元),其主要研究内容是在图形处理之外的其他领域,如何利用GPU进行更为广泛的科学计算。
将GPU用于通用计算的主要目的是为了加速计算,加速的动力来自于GPU在高性能计算方面所具有的优势:1.高效的并行性(这一功能主要是通过GPU多条绘制流水线的并行计算来实现);2.高密集的运算(GPU具有128bit/256bit或更大的显存位宽);3.超长图形流水线(以数据吞吐量的最大化为目标,在并行处理大规模数据流方面具有明显优势)。
目前,GPGPU已成功应用于代数计算、流体模拟、数据库应用、频谱分析等非图形应用领域,甚至包括智能信息处理系统和数据挖掘工具等商业化应用。同时,也产生了一些针对GPU开发的通用计算工具包,能够基于GPU平台排序及线性方程组求解等科学计算进行优化实现。
软硬兼施,应用更高效
光看GPGPU超越CPU的浮点运算能力的确令人兴奋,但真正的应用却难以实现。这是因为图形API限制太大,要通过DirectX、OpenGL等API来执行其他应用,不仅算法和程序会变得很复杂,还有大量的额外运算开销。随着GPU进入DX10时代,统一渲染架构在可编程性上更加灵活。而要充分发挥GPU通用计算性能,必须“抛弃”传统的图形API,NVIDIA适时推出了CUDA(统一计算设备架构)。
从GeForce 8系列产品开始,NVIDIA的GPU全部支持CUDA技术。软件开发人员可以基于CUDA平台开发计算软件,借助这些软件和GPU,用户可以用比以往少得多的时间完成很多计算任务。
目前,CUDA已经在游戏、图形动画、科学计算、地质、生物、物理模拟等领域显示出了威力。例如,以前将一系列2D X光图像合成为3D图像需要耗费5个小时,而通过CUDA和GPU可以将这个过程缩短为5分钟。在模拟电脑波、视觉和嗅觉感官计算领域,CUDA让CPU和GPU协同工作获得了130倍的性能提升。在金融行业,NVIDIA和财务分析软件厂商Hanweek合作,在其股票和期权分析软件中加入GPU加速功能,结果不到1秒钟就完成对美国所有上市股票的期权分析。
乳癌超声波检测采用GPU加速及CUDA编程,处理时间由几小时缩短至15分钟
另外,Adobe最近发布的Photoshop CS4也支持GPU加速,Photoshop CS4里打开一个2GB大小、4.42亿像素的图片只需几秒钟,而对图片进行缩放、旋转也不再“卡壳”。以往令人头痛的全景图拼合,在GPU的帮助下也能在瞬间完成。
Photoshop CS4加入了对CUDA的支持 #p#page_title#e#
并行计算时代的竞争
从上面可以看出,由于GPU架构非常适用于需要高并行量的计算任务,所以它在执行金融分析、气象预报、数据库分析及人工智能等计算任务时具有很强的优势,图形市场似乎面临新的发展机遇。不过,看准这个市场的除了NVIDIA之外,还有Intel和AMD两个老牌芯片厂商和软件巨头微软。
Intel计划在2009年推出一款特殊的处理器——Larrabee。具有32个内核的Larrabee不但能完成高质量的图形渲染,还能同时进行大量的计算任务,其浮点运算性能可媲美顶尖的GPU。除了运算能力出众以外,Larrabee还带来了一套基于x86的标准指令集。而作为GPU通用计算概念的另一个支持者,AMD虽然没有拿出相应的开发环境,但它提供的CTM瘦硬件接口,允许开发者直接访问GPU的原生指令集和存储器。另外,微软也计划在DX10.1中加入开发高并行计算程序所需的功能函数,以便降低开发难度。
可以看到,由CUDA引发的市场和类似的技术正在启动,随着以这类技术为代表的可编程GPU技术的不断成熟,未来的相关产品将变得无所不能,而并行计算时代的竞争也将异常激烈。
新技术让生活更愉悦。
高端访谈
随着技术的不断发展,GPU的性能和功能越来越强,特别是强大的浮点运算能力让CPU也汗颜。不过,好马也须配好鞍,硬件再强,也要软件扶持。近期比较热门的CUDA就是NVIDIA为GPU量身定做的“马鞍”。为了揭开CUDA的神秘面纱,本报记者采访了NVIDIA亚太区市场总监庄海鸥先生(以下简称庄):
记:GPU发展到今天,尤其是统一渲染架构的实现,其性能已经远远超出了现有3D图形计算领域的要求,GPU在通用计算方面的优势似乎没有得到充分的发挥,对此您是怎么看的?
庄:是这样的。回顾GPU的发展过程我们不难发现,GPU就是为了计算而生的。不过早期的GPU的发展比较“单纯”,仅仅针对3D图形计算领域。随着技术的发展,GPU的可编程性越来越强,特别是在GPU进入DX10时代以后,统一渲染架构在编程灵活性上获得了进一步的提升,GPU强大的浮点计算能力和数据流吞吐量使得人们希望用GPU来实现加速运算。这样一来,不但可以提升整个PC平台的计算性能,还可以大大拓展电脑的应用领域和范围。
记:CUDA能给我们日常生活或工作带来什么样的帮助?
庄:目前CUDA在许多领域已经开始发挥重要的作用。比如在消费级领域,如果对一部两小时的电影进行视频转码,单纯依靠CPU可能需要6个小时甚至更长的时间,而借助一款针对GPU加速的Badaboom软件,就可以在几分钟内完成。此外,在医疗行业,借助CUDA和GPU的加速功能,医生对一些重大疾病的诊断速度也将大大加快。
记:您怎么看待CUDA的市场发展前景?它是否会成为一种行业标准?
庄:虽然目前许多浮点密集型应用大多集中在高端科学领域,普通用户只能从Photoshop、PowerDVD、Matlab等软件中感受到GPU的威力,但随着越来越多的研究人员致力于借助GPU完成视频编码、音频处理等应用,也许过不了多久,就会有越来越多的应用程序加入到通用计算的行列。我认为CUDA今后会成为高性能电脑的一个重要组成部分。从某种意义上说,CUDA已经超越了一种行业标准的范畴。
记:前两年业界曾经提出过GPGPU的概念,现在NVIDIA又倡导CUDA平台,请问这两者之间有什么区别?
庄:传统GPGPU仍然把GPU当作一块显卡,使用DirectX或OpenGL之类的图形API实现计算目的。而CUDA是专用于GPU计算的开发环境,它打破了图形API的限制,普通编程人员在CUDA的帮助下,只要学习一点点GPU架构知识,就能释放出GPU强大的浮点运算能力。换句话说,CUDA的开发门槛大大降低了。
记:在CUDA在的推广和发展方面,NVIDIA采取了哪些具体措施和方法?
庄:虽然现在很多人还不完全了解CUDA,但我们已经采取了很多措施来加快CUDA的推广和普及步伐。具体有以下几个方面:一是联合全球一些著名高校和研究机构,开设关于CUDA的教程;二是与许多科研机构合作,帮助他们开发基于CUDA平台的高性能软件或程序;三是举办CUDA编程大赛,激发程序开发人员的热情。目前仅从官方网站下载CUDA开发包的次数就达到了15万次之多,而基于CUDA平台进行程序开发的人数,据我们所知也有2万以上。
记:在未来,电脑形态可能会有很大的变化,或许和我们现在看到的电脑有很大的区别,那么其中GPU又会以一个什么样的形式存在?NVIDIA今后还会推出哪些更有利于我们生活的技术?
庄:你说的很对。在过去的这些年,人们使用电脑的方式发生了巨大的改变。以人机交流界面为例,早期是枯燥的字符(DOS)界面,后来随着以Window为代表的图形化操作系统的出现,人机交流界面变成了2D图形(Windows)。相信随着新技术、新材料的发展和运用,人机交流界面一定会朝着高清、3D的方向发展。至于5年或10年后GPU会以什么样的形态存在,现在还不好说。不过就NVIDIA来说,今后推出的新技术和新产品将从视觉体验上(3D界面和3D内容)给用户带来更多愉悦的享受。