OpenCL释放物理游戏洪流 跨平台通用计算终于实现

2009-9-27 作者: Tales 来源: 家用电脑

关键字: OpenCL 物理引擎 通用计算 

  如果你比较熟悉硬件技术的发展,那么一定知道GPU通用计算。不过,就像英特尔和NVIDIA在物理技术中各自为战一样,GPU通用计算也分成互不兼容的两派。然而近期,一个名为OpenCL的工业标准的出炉,却有望在一定程度上改变这样的格局。作为一个统一的编程环境,利用OpenCL工具,可以编写出适用于不同平台、不同硬件(处理器、显卡等)的通用计算软件。

  令人关注的是,除了微软以外,几乎所有的IT业界有影响力的厂商都是Khronos(制定OpenCL标准的组织)中支持OpenCL的成员。在这份名单中,既有生产电脑芯片的厂商,也有手持设备厂商,还有提供网络、多媒体服务的厂商,例如英特尔、苹果、AMD、NVIDIA、谷歌、戴尔、诺基亚、杜比、IBM、三星和ARM等,它们都是各个子行业内的领袖厂商,其中不乏一言九鼎的角色。OpenCL受到的拥戴显而易见,而OpenCL也将免费提供给这些厂商使用。

  “开放”的物理加速

  从本质上来说,OpenCL就是一个相当于Windows平台中DirectX那样的技术。或者说,它是一个连接硬件和软件的API接口。在这一点上,它和OpenGL类似,不过OpenCL的涉及范围要比OpenGL大得多,它不仅是用来作用于3D图形。如果用一句话描述,OpenCL的作用就是通过调用处理器和GPU的计算资源,释放硬件潜力,让程序运行得更快更好。

  而值得注意的是,OpenCL 特别加强了对显卡物理计算方面的优化。在谈及OpenCL的意义时,AMD的技术营销总监就声称,如果有了OpenCL,就可以放弃目前需要技术授权才能使用的物理加速技术了。当然这只是一家之言,但玩家应该对OpenCL很有期待。理论上,所有显卡厂商和游戏软件厂商都可以免费使用OpenCL,这对拓展物理游戏的数量,尽早普及物理游戏有利。而且,OpenCL对众核处理器进行了优化,这无疑可以扭转目前游戏对处理器核心数量“不敏感”的尴尬。

  与目前的GPU通用可以“共享”

  在OpenCL发布之后,AMD与NVIDIA马上站出来,称OpenCL可以与它们正在推广的GPU通用计算共处。

  不过,OpenCL毕竟是不同的技术,它其实有点像AMD提出来的“融合”概念,只不过“融合”是基于硅片的,而OpenCL是通过软件实现的。而关于OpenCL与CUDA之间的技术区别,主要体现在实现方法上。基于C语言的CUDA被包装成一种容易编写的代码,因此即使是不熟悉芯片构造的科研人员,也可能利用CUDA工具编写出实用的程序。而OpenCL虽然句法上与CUDA接近,但是它更加强调底层操作,因此难度较高,但正因为如此,OpenCL才能跨平台运行。事实上,OpenCL编写的应用程序可以通过某种方式进行移植,使一个程序被共享。

  微软沉默,英特尔暧昧,OpenCL命运尚待观察

  从酝酿到最终完成,OpenCL的定稿只用了半年时间。作为一个行业规范,这样的效率是非常惊人的。而据悉,在2009年1月份,目前还是白皮书的OpenCL将有演示平台出现。在这之前,Khronos的工作是协调组织成员的利益,确保OpenCL中的内容不会损害成员的专利。

  而对于所有电脑用户、数码产品用户、DIY玩家、乃至网友来说,OpenCL将始终成为2009年的一个话题,因为它很有可能在我们身边的任何一个电子产品中出现。当然,微软方面始终是一个问题,如果Windows 7真的不支持OpenCL,那么OpenCL会失分许多,毕竟在桌面和移动领域,Windows仍然呈现垄断之势,而如果要将其它平台上的OpenCL程序移植进来,前提也是Windows提供方便。当然,这不意味着就一定不能在Windows平台上执行OpenCL应用程序,只是需要安装一个解释器。当年Windows 98对JAVA的处理就是一个前车之鉴。除此之外,英特尔对OpenCL的态度其实也很微妙,因为OpenCL可能削弱处理器的作用。不管怎么说,微软和英特尔的态度将决定OpenCL的命运。(501201)

  厂商观点:OpenCL为CUDA提供了一个新的开发环境

  CUDA是一个并行计算的架构,包含有一个指令集架构和相应的硬件引擎。OpenCL是一个并行计算的应用程序编程接口(API),在NVIDIA CUDA架构上OpenCL是除了C for CUDA外新增的一个CUDA程序开发途径。OpenCL标准的出台,对于CUDA架构来说,多了一个非常好的开发环境,使得开发人员多了一种他们更得心应手的开发方式。除了OpenCL外,CUDA架构上还有其他语言或者API,不同的开发人员可以根据自己的编程习惯或者需求选择不同的开发工具针对CUDA进行程序开发。不管是哪一种途径开发的程序,用户都可以从支持CUDA的GPU中得到巨大的并行计算的能力。



责任编辑:熊东旭