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来实现硬件的加速,直接调用这个库中的接口就可以,对于开发计算机视觉类的应用但是不太了解硬件加速编程的工程师来说十分有利。
我最近研究了一下它的源码,主要看了针对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来实现硬件的加速,直接调用这个库中的接口就可以,对于开发计算机视觉类的应用但是不太了解硬件加速编程的工程师来说十分有利。
相关文章推荐
- 如何通过ARM Compute Library写深度学习模型
- 通过ARM Compute Library写的VGG16的模型
- Detect ARM MOVW/MOVT relocations in shared library links
- embOS ARM and Cortex Library Object and Symbol List
- Extending sparklyr to Compute Cost for K-means on YARN Cluster with Spark ML Library
- The ARM Computer Vision and Machine Learning library
- 64位Ubuntu12.04下安装arm-linux-gdb,以及解决no termcap library found的方法
- Compute library compile
- findlibrary returned null产生的联想,Android ndk开发打包时我们应该怎样注意平台的兼容(x86,arm,arm-v7a)
- Alexnet在android手机中的tensorflow和arm compute libraray的性能对比
- findlibrary returned null产生的联想,Android ndk开发打包时我们应该如何注意平台的兼容(x86,arm,arm-v7a)
- findlibrary returned null产生的联想,Android ndk开发打包时我们应该如何注意平台的兼容(x86,arm,arm-v7a)
- 写ARM汇编程序的一个注意事项
- HJCache: iPhone cache library for asynchronous image loading and caching(上)
- Memory Notification: Library Cache Object loaded into SGA
- linux下的APK反编译软件及过程介绍 . 分类: arm-linux-Ubuntu 2014-06-18 17:51 400人阅读 评论(0) 收藏
- Can not find the tag library descriptor for "http://java.sun.com/jsp/jstl/core"
- ARM与x86之3--蝶变ARM
- (Linux Issue) Library corruption error during apt-get update
- ARM的下一步战略(三)