OpenCL
概述OpenCL(全称Open Computing Language,开放运算语言)是第一个面向异构系统通用目的并行编程的开放式、免费标准,也是一个统一的编程环境,便于软件开发人员为高性能计算服务器、桌面计算系统、手持设备编写高效轻便的代码,而且广泛适用于多核心处理器(CPU)、图形处理器(GPU)、Cell类型架构以及数字信号处理器(DSP)等其他并行处理器,在游戏、娱乐、科研、医疗等各种领域都有广阔的发展前景。
OpenCL 1.0主要由一个并行计算API和一种针对此类计算的编程语言组成,此外还特别定义了:
1、C99编程语言并行扩展子集;
2、适用于各种类型异构处理器的坐标数据和基于任务并行计算API;
3、基于IEEE 754标准的数字条件;
4、与OpenGL、OpenGL ES和其他图形类API高效互通。
OpenCL工作组成员OpenCL工作组的成员包括:3Dlabs、AMD、苹果、ARM、Codeplay、爱立信、飞思卡尔、Graphic Remedy、IBM、Imagination Technologies、Intel、诺基亚、NVIDIA、摩托罗拉、QNX、高通,三星、Seaweed、德州仪器和瑞典Ume大学等。
像Intel、NVIDIA和AMD都是这个标准的支持者,不过微软并不在其列。
历史2008年6月的WWDC大会上,苹果提出了OpenCL规范,旨在提供一个通用的开放API,在此基础上开发GPU通用计算软件。随后,Khronos Group宣布成立GPU通用计算开放行业标准工作组,以苹果的提案为基础创立OpenCL行业规范。
仅仅半年后,标准就已经完工。Khronos工作组总裁,NVIDIA副总裁NeilTrevett对OpenCL的定稿速度相当自豪:“如果你去看看其他的大型行业标准,制定过程花上5年都是相当普遍的事情。要把这一过程缩短到18个月都相当困难,我们之前的纪录是12个月。但这一次,我们只用了6个月。”
如此赶工的目的正是为了赶上Mac OS X 10.6 Snow Leopard的发布日程。Intel公司TimMattson在发布会上表示:“当时情况就是这样,如果我们能够赶上苹果这个近乎不可能实现的时间表,就能够得到SnowLeopard的支持,那对我们将是一个巨大的推动。为了实现这个目标,我忙得都快离婚了,每周两次电话会议,面对面会议不计其数,我都不知道我在这活上花了多少个小时了。我已经精疲力竭,都快挂了。在最初的会议上,我就是那个认为这个时间不可能达成的人。但是我错了,我们办到了,而且标准定义的相当完整。对此我相当自豪。”
发布会上,Neil Trevett、Tim Mattson以及来自AMD公司的BenGaster都进行了演讲,展示了OpenCL的功能和代码范例,但并没有对该API的具体实现进行演示。因为目前该标准正在工作组各成员企业的法律顾问手中进行检查,确保不会触及公司的知识产权或专利。30天的法律问题考察期结束后,各成员将最终签字令标准生效。届时OpenCL标准的具体规格和Demo演示就将公开。而随着明年Snow Leopard的发布,OpenCL也将正式进入实用。
Neil Trevett表示,如果苹果将OpenCL嵌入SnowLeopard的工作能够顺利完成,图像处理、视频处理软件商将迎来巨大的商机:“每台Mac中都封禁了一台超级计算机,只是很难将其释放出来。OpenCL就将解放GPU强悍的运算能力。”除此之外,OpenCL还将在GPU物理加速等领域施展拳脚。更重要的是,它并不限制底层硬件。无论NVIDIA还是AMD显卡,在Snow Leopard下都能使用同样的代码实现通用计算,未来甚至iPhone等掌上设备也有可能实现支持。
OpenCL支持现状2009年6月NVIDIA首家发布了支持OpenCL 1.0通用计算规范的驱动程序,支持Windows和Linux操作系统。
2009年8月初AMD首次发布了可支持X86处理器的OpenCL SDK——ATI Stream SDK v2.0Beta,立即交由业界标准组织KHRONOS进行审核。
使用OpenCL目前,NVIDIA显卡对OpenCL技术支持得比较到位,所以这里仅用NVIDIA的Geforve(精视)系列显卡作解释。
中国用户可以登录英伟达中文官方网站上下载到最新的驱动程序,只要您下载的驱动是195.62版本或更高,就可以在Geforce(精视)8系列或更高级的显卡中开启OpenCL,在安装好新版本的显卡驱动程序并重新启动后,OpenCL就自动开启了。当有需要使用CPU来完成的工作如转换视频时,GPU就会帮助CPU进行运算,以提高转换速度。但是在3D游戏中应该是不会调用OpenCL的,因为显卡有自己的硬件加速功能以及物理引擎,所以Geforce(精视)8系列及以上的显卡就不需要CPU辅助进行渲染了。这时候,您就可以一边玩游戏,一边进行消耗CPU的工作了。
当然同样,在NVIDIA的Quadro系列专业显卡中,同样能够使用OpenCL技术。只要您的显卡能够达到CUDA的要求,就能够正常使用OpenCL,以获得优异的CPU运算效率。
在AMD-ATI的Stream技术中,已经为日常使用、办公、游戏等提供物理加速。原理与OpenCL基本相同,但是,目前AMD-ATI还没有进行推广,但是官方承诺,在日后会逐渐增多Stream支持的游戏。但是Stream使用的显卡平台还是比较高,而性能非常优异的显卡无疑带来更高昂的价格,我们也同样希望AMD能够做到像NVIDIA那样,只需要支持DirectX10的显卡就能开启OpenCL(Geforce 8系列显卡基本能完美支持DirectX10,所以官方将开启OpenCL的显卡最低定为8系列),以方便更多的AMD-ATI用户。