GPU通用计算“暗战”
编辑视线
10月23日,微软正式发布了Windows 7(以下简称Win 7)操作系统,新系统带来了许多新看点,其中最大的改变是它首次将GPU计算当作系统核心组成部分,即利用GPU的高并行计算能力,给我们带来更愉悦的视觉享受,比如视频转码、照片快速处理、逼真的游戏体验……这些正是GPU通用计算的重要表现。目前在通用计算领域,软硬件厂商都在摩拳擦掌,争夺话语权。Win 7时代,到底谁能笑到最后?
GPU通用计算,NVIDIA唱主角
GPU(图形处理单元)的快速发展带来的并不只是速度的提高,还产生了很多全新的图形硬件技术,使GPU具有流处理、高密集并行运算、可编程流水线等特性,从而极大地拓展了GPU的处理能力和应用范围。正是由于GPU具有高效的并行性和灵活的可编程性等特点,利用GPU完成一些非图形绘制方面的科学运算,正成为一个炙手可热的研究领域。
对GPU通用计算推动最卖力的是NVIDIA。2007年,NVIDIA开发了一套基于C语言的软件平台,以替代复杂的OpenGL和Direct 3D等API(应用程序接口),这个平台就是今天大家所熟知的CUDA(统一计算设备架构)。在CUDA之前,传统的GPGPU(通用计算处理)应用必须将问题转换成为图形计算送到GPU中完成,软件开发人员往往需要了解OpenGL编程或者DirectX编程,而这显然是一个较高的门槛,大部分软件开发人员对图形API不熟悉,GPGPU的发展遇到了很大的阻碍。因此,CUDA诞生后受到软件开发人员的热捧,很快就“入侵”医学、财务、化学、生物等诸多领域,并表现得很出色。
和NVIDIA大张旗鼓地宣扬CUDA不同的是,另一家图形芯片厂商AMD则显得比较沉闷,它所推出的Stream平台在先进性与支持率上远不如CUDA。眼看NVIDIA就要凭借CUDA的优势在GPU市场横扫千军,半路上又杀出一个OpenCL(开放式计算语言)。去年底,OpenCL 1.0问世,这是一套兼容性很强的通用计算API,支持的厂商也更多,尚未在通用计算领域有所建树的AMD自然也是OpenCL的大力支持者。尽管OpenCL与CUDA并不冲突,而且还相互兼容,但OpenCL的出现多少影响了CUDA的关注度。
在通用计算领域,NVIDIA依靠CUDA取得先机,既有成功的经验,也能在接纳OpenCL后做得更好,而AMD的GPU有着更适合通用计算的架构,自然也不甘示弱。就在OpenCL很有可能成为通用计算的事实标准时,软件巨头微软的加入让这一切都更加扑朔迷离,因为微软针对通用计算拿出了自己的API——DirectCompute。


DirectCompute要改变战局
Win 7上市以后,新一代的DirectX 11也伴随而来。DirectX 11加入了一项针对通用计算的新特性——Compute Shader(运算着色器)。在Compute Shader的帮助下,程序员可直接把GPU当作并行处理器来用,GPU不仅拥有3D渲染能力,还能进行诸如物理加速、AI(人工智能)等非图形运算,GPU的高并行运算性能可以得到充分的利用。
该特性是基于DirectCompute编程接口的,后者是微软全新的GPU通用计算API。众所周知,Win 7之前的操作系统中的各种运算都完全基于CPU,而Windows 7中首次将GPU也作为了操作系统的核心“成员”之一,与CPU组成了一个协同处理体系。DirectComput可以让软件开发人员利用GPU强大的并行计算能力,为用户提供愉悦的视觉体验和互动体验,比如高质量视频播放、照片处理、快速与设备“互动”、逼真的游戏效果等。值得一提的是,它还能大大减少程序开发人员的工作量。
DirectCompute进一步推动了GPU通用计算的发展,同时也将对该领域产生微妙的影响,表现比较活跃的GPU厂商要算AMD了。AMD一直未能成功建造属于自己的通用计算平台,它提出的Steam在这一领域的表现比CUDA差多了。而在DirectCompute介入之后,这种局势将有所改变,AMD有可能扭转被动局面。因此,AMD比NVIDIA更需要DirectCompute。就在前不久,AMD宣布和CyberLink公司携手合作,在CyberLink所推出的软件中采用完整支持DirectCompute的Stream技术,实现加速许多计算密集的任务,比如视频转码、自动面部识别和标记、视频编辑等运算。
相比之下,NVIDIA对微软介入通用计算领域是喜忧参半,喜的是NVIDIA的CUDA平台也将获得来自DirectCompute的强大推力,因为后者的市场号召力显然要更大。NVIDIA前不久表示,它将在年底推出的CUDA 3.0中对DirectX 11的Computer Shader提供支持。让NVIDIA不开心的地方则是自己“独霸”通用计算市场的梦想更难实现了,从CUDA 2.0支持OpenCL,再到CUDA 3.0支持DirectCompute,NVIDIA逐渐从一个标准制造者“演变”成为技术领先者,不过NVIDIA的CUDA平台已经在开发环境、编程应用和实际市场中具有全方位的优势,AMD、Intel等竞争对手在短时间内是无法赶超的。
至于OpenCL,前景就不容乐观了。虽然目前微软并没有流露出抵触OpenCL的态度,可微软至始至终都没有参与OpenCL的开发,就算Win 7可以支持OpenCL,也不代表OpenCL就能在微软的操作系统里稳定地生存下去。大家一定还记得DirectX是如何一步步打败OpenGL和3dfx Glide,最终“垄断”3D图形API市场的。面对通用计算这一块“香喷喷”的大蛋糕,所有软、硬件厂商都不会轻言放弃的。


欲“称霸”通用,微软须翻三座山
了解硬件历史的朋友应该记得,DirectX能战胜OpenGL和3dfx Glide,成为3D加速API领域的“统治者”,很大程度上得益于视窗操作系统的霸主地位,“逼迫”软件厂商与硬件厂商都必须支持微软标准才能生存和发展。在未来的日子里,DirectCompute能否帮助微软击败所有竞争者,再度垄断通用计算领域?就目前看来,微软要想重续辉煌,至少还要跨越三座山。
第一座山便是微软自己。Win 7能否再度垄断操作系统市场,这依旧是个未解之谜。由于Win XP仍然被大范围使用,因此操作系统市场对新产品存在着很大的需求,Vista的失败导致这种需求被压抑已久。目前整个业界对Win 7的评价比较积极,有的甚至赞不绝口。但上述表象并不能百分之百地保证Win 7就能像Win XP取代前作一样顺利地垄断市场,因为结果出来之前,什么都可能发生。万一Win 7未能如愿地全面取代Win XP,那么DirectCompute则和DirectX 11一起被市场边缘化,眼睁睁看到OpenCL和CUDA在Win XP上运转如飞。如果那样,微软就输给了自己。
第二座山是微软的“死对头”——苹果。虽然苹果目前在PC市场的份额仅为7.2%,但在基数庞大的PC市场,1%也是一个巨大的数字。凭借iPod和iPhone的巨大成功,以及近两年几款苹果笔记本的出彩,苹果的品牌影响力得到了大幅度的提升,苹果电脑与苹果操作系统自然也会从中受益。既然是苹果操作系统,OpenCL是必然之选,微软通用计算的触角是无法延伸到苹果体系当中的。
第三座山是日益强大的NVIDIA。虽然在10年前,NVIDIA的全力支持是微软打败3dfx的一个重要因素,但这并不意味着NVIDIA今天就能把自己的命运完全交给微软了。10年前,硬件厂商的话语权很小,与API完全不沾边,微软怎么说,自己就得怎么做。而到了今天,NVIDIA的CUDA平台已经发展了三年,从技术角度讲完全走在了微软的前面。如果NVIDIA就此放弃大力开发CUDA,转而将更多的工作交给微软来做,肯定不甘心。NVIDIA完全可以在支持微软的同时,继续大力发展自家的CUDA,包括OpenCL,在专业领域攻城掠地,不让微软一家独大。
除此之外,谷歌操作系统的冲击、互联网和云计算对PC应用方式的变革,都让微软垄断的难度越来越大。更激烈的竞争、更多厂商的参与,其实更有利于通用计算的发展和普及,对于广大用户来说,通用计算的优点已经毋庸置疑,随着微软与各大硬件厂商的努力,通用计算的普及必然让我们的PC应用更加精彩纷呈。