ARM Compute Library

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来实现硬件的加速,直接调用这个库中的接口就可以,对于开发计算机视觉类的应用但是不太了解硬件加速编程的工程师来说十分有利。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值