原文地址:Heterogeneous Multiprocessing Gets a Boost with the New OpenCL for NEON Driver
作者:stevesteele
作者简介:
Steve 2001年开始在ARM工作,参与过很多技术项目包括ARM的Java Program,软件产品, 数据引擎(DSP),PV Fast Modelling快速模型和Video IP。 Steve目前在Media Processing部门负责Mali-T604和Mali-T658系列GPU两款产品。在加入ARM之前,Steve曾就职于Thales Optronics主管一个为英国皇家空军设计制造光电侦查系统的项目。更早之前Steve还曾在Vitec工作过,拥有嵌入式硬件和软件设计,以及广播电视行业机器人系统设计和产品市场的经验。Steve本科主修电子物理学,毕业于巴斯大学,获得物理学学士学位。并在诺丁汉商科大学获得MBA学位。
我目前正在Santa Clara,准备参加明天揭幕的ARM TechCon,ARM TechCon是一个ARM自己和合作伙伴的技术展示活动。 本周将会有很多和ARM相关的发布活动,其中和我最有关联的是今天公开新产品,能支持在CPU和ARM Mali Midgard GPU上支持OpenCL的ARM NEON Technology。NEON是一种适应所有ARM Cortex-A处理器的128位SIMD(Single Instruction, Multiple Data,单指令、多数据)扩展结构,所以连同Mali GPU一起,已经能广泛被当前世代的设备使用,并能极好地适应和发挥OpenCL的优势。
首先,我觉得 有必要介绍一下为什么支持OpenCL计算应用程序接口(API)是非常重要的。因为对于软件开发者而言,太多的行业趋势会带来很多挑战。比如说,异构多处理能很好地解决性能和效率的问题,但是多样的指令设置会导致缺乏可移植性。另一个例子是并行计算能很快完成一个任务,但是众所周知,编写并行系统是非常难的。这就是OpenCL存在的价值。它是一种能在异构多处理平台上实现更简单,移植性更强,更高效编程的计算语言(OpenCL C), 并且也是一种能够在异构处理器上协调平行计算的应用程序接口(API).OpenCL可以在系统中的所有可使用的处理器中平衡分配任务;它甚至可以简化对多核NEON的编程,只需把他们当做一个简单的OpenCL设备进行处理即可。这就是我们能实现“把正确的任务交给正确的处理器”的有效匹配的基础。
图片1: OpenCL可以用于各种适合并行化的算法以及进行大量数据处理.
OpenCL可以用于各种适合并行化的算法以及进行大量数据处理。这种算法的使用例子可以在很多设备中找到,比如:
OpenCL支持两种形式
支持NEON驱动和Mali Midgard GPU驱动的OpenCL都是完整形式。因为传统OpenCL来自桌面系统,所以大部分现存的OpenCL软件算法已经是针对完整形式开发的。 这也使得ARM的完整形式支持对于那些能利用熟练工具进行桌面开发的编程者特别有吸引力,因为可以促进工作和加快产品问世速度。 另一个关键性好处是OpenCL完整形式的浮点运算符合IEEE-754标准,保证了结果的精度。
NEON的OpenCL和Mali Midgard GPU驱动的OpenCL是可以作为相同的OpenCL环境而共同操作的。这种驱动的配合使用能够使得他们发挥最大功效。比如他们可以解决内存一致性和队列托管的问题。 我们把这个版本的NEON的OpenCL认为是一种插件,能插入Mali Midgard GPU的OpenCL驱动中使用。
图片 2:将CPU和GPU置于同一CL环境的好处
另外针对Mali Utgard GPU,比如Mali-400MP和Mali-450MP还有一种“独立”版本NEON的OpenCL。 这些特殊的GPU主要用于高效支持图形API,而非用于计算类似OpenCL这样的API。因此,在NEON的CPU上加入OpenCL的支持就是一种增强系统计算能力的最好方法。 这种“独立”版本的OpenCL也非常适合没有GPU的系统。
除此之外,就像下面图片中所示,ARM OpenCL体系可以和其他的OpenCL体系相连并把NEON和Mali GPU的OpenCL扩展到其他的硬件设备上,比如那些用FPGA搭建的设备。要实现这个目的就需要使用到ARM OpenCL 体系支持的Khronos Installable Client Driver (ICD)
图片3: 使用Khronos ICD 连接ARM OpenCL环境和其他设备
我们已经知道NEON的OpenCL能让所有使用NEON的Cortex-A处理器平台增强运算处理性能。而且可以不论这个平台搭载的是Mali Midgard GPU还是Utgard GPU,亦或完全没有GPU。 但是,我们还是推荐使用Midgard GPU,只有这样才能发挥最强性能。
随着移动设备的算法越来越复杂,如果要达到成功,那么诸如NEON的OpenCL这样的技术会增加其重要性。目前NEON的OpenCL产品已经可以马上授权了,如果您需要进一步的信息,请您联系就近的ARM销售代表。
如果您需要了解更多有关OpenCL,计算和目前利用ARM生态系统正在开发的使用实例信息,请参考:
Realizing the Benefits of GPU Compute for Real Applications with Mali GPUs
Interested in GPU Compute? You have choices!
GPU Compute, OpenCL and RenderScript Tutorials on the Mali Developer Center
The Mali Ecosystem demonstrate GPU Compute solutions at the 2014 Multimedia Seminars
ARM是Khronos的正式采用者和OpenCL工作组的积极成员