图形硬件处理标准-OpenCL
2013-08-13 09:54:43 阿炯

OpenCL全称Open Computing Language,是第一个面向异构系统通用目的并行编程的开放式、免费标准,也是一个统一的编程环境,便于软件开发人员为高性能计算服务器、桌面计算系统、手持设备编写高效轻便的代码,而且广泛适用于多核心处理器(CPU)、图形处理器(GPU)、Cell类型架构以及数字信号处理器(DSP)等其他并行处理器,在游戏、娱乐、科研、医疗等各种领域都有广阔的发展前景。


OpenCL™ is the first open, royalty-free standard for cross-platform, parallel programming of modern processors found in personal computers, servers and handheld/embedded devices. OpenCL (Open Computing Language) greatly improves speed and responsiveness for a wide spectrum of applications in numerous market categories from gaming and entertainment to scientific and medical software.


OpenCL 1.0主要由一个并行计算API和一种针对此类计算的编程语言组成,此外还特别定义了:
1、C99编程语言并行扩展子集;

2、适用于各种类型异构处理器的坐标数据和基于任务并行计算API;

3、基于IEEE 754标准的数字条件;

4、与OpenGL、OpenGL ES和其他图形类API高效互通。

OpenCL是由苹果首次提出的,随后Khronos Group成立相关工作组,以苹果草案为基础,联合业界各大企业共同完成了标准制定工作。工作组的26个成员来自各行各业,且都是各自领域的领导者,具体包括3DLABS、 Activision Blizzard、AMD、苹果、ARM、Barco、博通、Codeplay、EA、爱立信、飞思卡尔、HI、IBM、Intel、 Imagination、Kestrel Institute、摩托罗拉、Movidia、诺基亚、NVIDIA、QNX、RapidMind、三星、Seaweed、TAKUMI、德州仪器、瑞 典于默奥大学。

标准倡导者苹果将是最先应用OpenCL技术的厂商之一,代号Snow Leopard的新版操作系统Mac OS X 10.6就会集成该标准。相比之下,微软没有参与OpenCL的制定工作,Windows 7自然也不会提供支持,不过DirectX 11将会带来类似的Computer Shader技术,很可能会重演DirectX与OpenGL之战。

同时,AMD Stream SDK、Codeplay Sieve C++等都正在准备进行改革,以便完全符合OpenCL 1.0标准,NVIDIA的CUDA技术也有望借机大展拳脚。

GPU原本是为图像处理做专门工作的,但随着GPU技术发展的越来越快,它们也能从事一些原本CPU才能做的通用计算工作。GPU特别设计用于并行任务的执行,这些对于类似游戏中液体模拟喷溅等数学计算非常有帮助。要将GPU用于通用计算的一大难点在于,软件的编写必须针对GPU和CPU同时进行,编程人员需要处理协调工作和对内存数据的取用。


OpenCL主席,兼显示芯片制造商Nvidia的移动副总裁以及 Khronos Group的主席Neil Trevett说:“OpenCL 2.0解决了瓶颈问题,并且能够实现更灵活的程序设计技巧。”OpenCL提供了一个抽象层,令程序员在执行任务时无需了解GPU本身的细节情况。显示芯 片制造商编写驱动软件,这其中就为特定的芯片构建了OpenCL本地命令。

在Khronos提出的标准中,除了OpenCL 外,OpenGL更有名。OpenGL发展已有数年,但在电子游戏领域,受制于内建在Windows中微软自家DirectX技术的发展。但现在情况已有 很大不同,苹果的OS X就采用OpenGL,而Android和iOS都采用其子集OpenGL ES。OpenGL ES在计算领域还有另外一个伙伴:WebGL。WebGL提供了令Web应用实现硬件3D加速的标准,谷歌、Opera和Mozilla都对其提供了支持。

Web版OpenCL名为WebCL,则还面临着更大的发展难度。Firefox对WebCL的支持还处于静止状态,而谷歌则由于安全问题也拒绝支持WebCL。


苹果弃用 OpenCL 和 OpenGL 或遭全面淘汰

随着 MacOS 10.14 Mojave 在2018年6月的发布,苹果悄然证实,他们已弃用 OpenGL 和 OpenCL 。

在 MacOS 10.14 的更新文档中,苹果表示使用 OpenGL 和 OpenCL 构建的应用可以继续在 macOS 10.14 中运行,但这些遗留技术在 macOS 10.14 中不推荐使用。现在使用 OpenGL 的游戏和应用应转向 Metal 。同样使用 OpenCL 进行计算任务的应用也应该采用 Metal 和 Metal Performance Shaders 。


苹果想要弃用 OpenCL 和 OpenGL 其实早有迹象,他们近几年一直在推动其 Metal API 在 MacOS 和 iOS 上的应用。苹果的 OpenGL Stack 多年来一直没有更新,已严重落后于 Khronos Group 的 OpenGL 4.x 。虽然苹果目前没有表示何时会删除实际的驱动程序支持,但时间应该不会持续太久。

OpenCL 最初由苹果公司开发,并拥有其商标权。就桌面应用的采用而言,OpenCL 并非一帆风顺。现在随着 macOS 的弃用,我们应该很难看到 OpenCL 未来出现在更多的桌面应用中。


最新版本:2.0
可为显示芯片提供更好的独立性,以便能为通用软件计算出更大的力。OpenCL是让显示芯片也能为通用软件提供计算能力的标准,标准制定者就是 Khronos Group。

项目主页:http://www.khronos.org/opencl/