MCPLive > 杂志文章 > 全角度解析OpenCL通用计算标准

全角度解析OpenCL通用计算标准

2009-02-18沈亮《微型计算机》2009年2月上

OpenCL:开放的高度通用的设计原则

为了保证通用计算,OpenCL从五个方面进行了规定,这其中既有硬件平台,也同样包含有软件平台。

1.系统调用全部的硬件资源

首先,OpenCL能够调用系统内全部计算资源,也就是说无论是CPU、GPU,还是今后额外加入的协处理器,全部都能够在公共计算平台上得到调用。今后用户在使用基于OpenCL标准编写的程序时,再也不会出现CPU占用率100%,而GPU占用率仅有1%这样的不平衡现象了。

在此基础上,OpenCL还要加快运算速度并提高运算效率,这个特点有点类似与现在的分布式计算(也称为“云计算”) ——不同的地方在于,云计算将庞大的运算任务分拆为很多小份,然后分配给互联网上的各台计算机;而OpenCL要做的事情是将电脑中的一个或者多个运行程序按运算量,平衡分配给系统中的各个运算部分。

OpenCL将系统中的存储器抽象成一个全局内存模型,例如我们使用的计算机有4GB内存、
1GB显存,但在OpenCL看来就是一个5GB存储器整体。

不光是PC系统,对于嵌入式设备中常见的ARM、DSP、MIPS等处理核心,OpenCL也能够提供良好支持。更令人激动的是,如果嵌入式处理器中集成有支持OpenCL规范的3D、视频加速模块,这些模块将扮演与ARM协处理器类似的角色,进一步加强系统性能。

为了达到各种处理器平台的集中调用,OpenCL会将系统中各个处理器或者处理核心看作一个个的处理单元。每个处理单元既能够自行处理数据,又可以通过OpenCL内核进行相互交流、提高工作效率。换句话讲,程序员在写程序的时候面向的是OpenCL内核,他不用去管这个程序需要调用CPU,又或者调用GPU,将这些事情甩给OpenCL内核去完成就可以了。

关于Khronos工作组


Khronos旗下的合作伙伴群

比起其它诸如VESA(显示器标准制定者)、JEDEC(内存标准制定者)来说,成立于2000年的“
Khronos”这个名字一直默默无闻,很多人甚至不知道它是做什么的。但如果说到OpenGL(图形)、
OpenAL(音效)等和计算机硬件加速息息相关的API,名气就要大很多了,其实这些都出自Khronos旗下。换句话说,几乎所有的电脑和数码厂商都是Khronos的成员。如现在的Apple和Google。

2.学会一种语言,走遍天下都不怕

对计算机编程有所了解的人都知道,现在的计算机语言种类繁多,基础的机器语言生涩难懂,所以程序员们多使用高级语言。在高级语言中,又以C语言用途广、历史也非常悠久,无论是微软的C++语言,又或者NVIDIA的CUDA API都基于C语言架构体系。因此OpenCL也将C语言作为并行程序模型的基础,这样能够让广大程序员轻松上手,并加快OpenCL程序的研发速度以及保证可移植性。

3.做到与现有软件体系的通用

OpenCL能否打开市场的关键因素就是能否实现与现有软件资源的对接,并迅速推出新的软件。举个明显的例子,能从OpenCL中获益大的当属GPU通用计算程序,一直以来GPU硬件的发展和OpenGL(及其它3D的API,如Di rectX)都是相辅相成的;因此,OpenGL虽然只是面向3D处理领域的程序接口,但其调用GPU资源的能力和效率是毋庸置疑的。在此基础之上,OpenCL在制定具体规范时,就可以充分利用OpenGL现有的一些特点,“依葫芦画瓢”,从而能够以更快的速度和更高的效率来完成GPU的通用计算程序。

4.高筑墙、广积粮、缓称王——实现硬件平台上的通用

正如文章开始时所说的那样,现在游戏开发商往往要针对多个平台开发同一款游戏。这样一来,参与开发的程序员就要吃透每一种硬件平台的结构和开发特性,这样才能做出发挥该平台特点的游戏产品。毫无疑问地说,这是一个痛苦的过程,不仅要极大提高游戏开发的成本,也会因为开发周期过长而失去市场先机,更严重的时候如果移植不成功,还会造成游戏性下降直接影响玩家的口碑。很多在游戏主机上非常吃香的游戏大作,移植到PC平台上其惨淡的“票房”就足以说明问题的严重性。反观PC平台上的游戏,高配置的PC能够在高分辨率的情况下,特效全开运行游戏,而配置较低的PC则可以通过适当降低分辨率以及游戏特效也能够玩游戏。

OpenCL就很好地考虑到这点,在未来融入OpenCL设计的游戏将大大提高其跨平台时的兼容性,不仅要在PC、游戏主机、服务器这样的大块头上实现通用,还要向下囊括掌上设备以及嵌入式平台,即各种便携游戏机、智能手机等等。我们可以设想一下,未来的程序开发人员只需要编写一套程序安装包,然后用用户自行对照自己的硬件条件,通过调整相关设置来实现不同体系平台、不同性能平台之间的程序通用性。


可以通过修改配置,让一款游戏运行在不同的平台之上

也许在未来我们会看到《GTAX》(侠盗飞车系列)中,PC安装时可以用FullHD分辨率,效果全开进行游戏;而在智能手机上,我们将分辨率调整到800×480,关闭各种特效后,用触摸屏来操作游戏。这样一来,OpenCL在实现通过计算的同时,也完成了在各个硬件平台上的跨平台运行。

5.承前启后,向上兼容的通用支持异常重要!

在PC(x86)平台上,各类软件可以说95%以上实现向上兼容,简而言之就是装有Pentium处理器的电脑能够安装DOS,酷睿2平台能够安装Windows 98;但在其它平台上软件之间的兼容性就没有那么乐观了,PS3架构不能够支持PS2游戏(除非加入PS2硬件芯片),诺基亚S60第三版系统不能运行第二版的软件等等,这种例子不胜枚举。

为了保证程序的延续性,OpenCL标准在制定之初就考虑了向上兼容的问题,这点相信也是从
x86架构上得到的启发。OpenCL的开发人员表示,通过可扩展的API以及通用的库文件来保证未来新的硬件平台也能够运行今天的软件。这样就让OpenCL有了更好的平台延续性,为将来的发展夯实了基础。

分享到:

用户评论

共有评论(3)

用户名:

密码: