原文地址:Smile to the camera, it’s OpenCL!
最近,华为发布了最新的旗舰级智能手机 — 荣耀 7。和今年很多旗舰机型一样,手机摄像头的开发和营销是该款手机关注的重点。除了物理硬件之外,后期处理也是决定最终图像质量的重要因素。在 ARM 生态系统团队的支持下,华为利用芯片上的 ARM Mali GPU,从根本上对其最先进的图像处理算法进行了优化。
为此,华为采用了 OpenCL™ 行业标准 API。该框架旨在支持程序跨多个异构平台执行代码,以及更加高效地将任务分配至最适合的处理单元。通过 OpenCL,华为能够将最严苛的图像处理任务分配给最适合的处理器来执行。对于本款手机而言,这个处理器就是ARM Mali GPU。
它们有何区别
传统的摄像模块拥有自己的图像信号处理 (ISP) 逻辑,这些逻辑负责处理从传感器收集而来的数据,如降噪、锐化或修色。现代应用处理器通常也会嵌入一个或多个 ISP。而在某些情况下,则会使用 DSP。
这一经过验证和测试的硬件设置充分发挥了自身的用处,通常能够实现成本、性能、面积和功率之间的平衡,而这些全都是设计移动设备时需要考虑的要点。
HiSilicon 的 Kirin 移动 SoC 以 ARM CPU 和 GPU 技术为基础。
然而,硬件却存在一个关键限制:一旦固定到硅片上,便无法再更改,并且在客户拿到最终设备之前,此种情况很长一段时间都会存在。
在 GPU 上使用 OpenCL 的主要优势之一就是,开发人员可以轻松地更新和改进自己的图像处理算法。如果采用传统方式,则在将 ISP 嵌入产品后,制造商便很难再对 ISP 进行重新编程,这意味着设计必须要提前完成,并且合理的软件改进也难以实施。改用 OpenCL 意味着,当硬件实施被锁定时,我们可以在后期进行额外的软件补丁和更新。
华为和 ARM 都因采用基于 OpenCL 的开发而受益匪浅,因为这种方式让他们能在开发流程的后期继续调整自己的算法。不仅如此,OpenCL的实施还改进了智能手机的拍摄性能。
GPU 加速和性能
您可能已经注意到,ARM 在异构概念中占据着举足轻重的地位,它会将特定的计算任务分配给最高效的处理器。荣耀 7 内部所采用的华为海思麒麟935芯片就是这类处理器设计的一个最佳示例,它拥有两个速度不同的四核 ARM® Cortex®-A53 内核群集以及一个 ARM Mali-T628 MP4 GPU。
当提及图像处理时,会有很多复杂的计算任务需要执行,这些任务分布在多个流水线阶段中,并且通常并行运行。即使是相对简单的声音处理,如降噪,也包含很多步骤(从检测到模糊再到修饰)。这些类型的滤镜在移动设备中发挥了重要作用,不但可以弥补小尺寸图像传感器的不足,还能对弱光环境中的噪点进行补偿。大多数照片都是在光照条件不佳的环境中拍摄的,移动设备应能就此进行处理,以确保提供出色的最终用户体验。
在荣耀 7 的发布会中对 OpenCL 进行了介绍,现在,我们对它已经有了全面的了解。
高分辨率的图像有大量数据需要处理,如果想获得实时输出,就必须非常快速地完成。而拥有较高内存带宽的图形处理单元非常适合执行这项任务,该单元常会用于为各种功能(如 UI 绘图和游戏)处理大量像素数据。
ARM 和华为强强联手,一同优化了 GPU 加速处理流水线,对 CPU 和 GPU 之间的交互操作进行了微调,并将这些全都融入到了现有摄像头硬件中。虽然我们不知道他们是如何实现的,但显然最终结果是通过使用 GPU 将性能提高了一倍。
多种其他用途
异构处理和 GPU 计算还拥有很多其他的潜在用例和优势,此类处理的开发也在顺利推进中。
异构处理涉及的不只是更多硬件而已,它还关乎从您的现有设备中挑选最适合的设备。
ARM 针对各种目标应用程序进行了预想,从计算摄影到计算机视觉、深度学习以及全新的多媒体编码和算法。除了 ARM 之外,其他公司也已经开始将自己的技术与 OpenCL 以及 Mali GPU 结合起来。其中包括 eyeSight Technologies 的手势和面部追踪应用程序、Omnivision 为 Mali 实施的 OpenCL 图像处理库、ArcSoft 和 ThunderSoft 的摄像头中间件以及 Ittiam Systems 的 HEVC 和 VP9 解码器等等。
目前,我们只是刚开始触及到异构计算的潜能。预计很多 OEM 都将实施类似或全新的功能,以便混合搭配各种硬件,这将有助于进一步改进我们的设备和用户体验。在此项技术的运用方面,华为荣耀 7 是一款振奋人心的里程碑式产品,它的影响力毋庸置疑,必定会使 GPU 计算在关键的视觉计算用例和应用程序中得到更为广泛的采用。