您的位置:首页 > 其它

ARM Compute Library

2017-06-27 15:35 1786 查看
ARM Compute Library是ARM公司刚发布不久的开源工程,旨在为图像/视频/多媒体/计算机视觉等领域的开发者提供arm平台的硬件加速库。这个库中分别用OpenCL与NEON的方式实现了一些上述领域的基本算法,OpenCL主要是arm的Mali GPU加速,NEON是针对arm的A系列CPU。

我最近研究了一下它的源码,主要看了针对CNN的卷积运算需要用到的convolution过程。当然,其他的基本算法也都是同样的流程。工程中是把图像按照列的方式分割成子块,然后分别启动几个线程去处理这些子块。对于convolution来说,NEON方式实现了两种方法,一种是GEMM的方法,把输入图像先im2col,然后interleave操作,把weight进行transposed操作,之后进行矩阵乘法,之所以有interleave与transposed两步是为了矩阵乘法时NEON指令集load数据的连贯性与平顺性,并且不需要重复load,最大限度的发挥了neon指令集的能力。还一种方法是标准的卷积运算。当然其中也是运用了NEON的intrinsic函数调用方式。OpenCL调用GPU加速的方式我还没有细看,不过大体上看来主要流程与NEON的方式类似,也是按照线程数分割图像,然后并行处理子块。其中也是有shape,window,iterator的概念。只是真正的计算中与NEON的指令集不一样。

这个lib发布之后,开发者可以不用关心arm的cpu与gpu怎样通过NEON或OpenCL来实现硬件的加速,直接调用这个库中的接口就可以,对于开发计算机视觉类的应用但是不太了解硬件加速编程的工程师来说十分有利。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: