- 基本的運算, 數學與布林運算函式 (Basic arithmetic, mathematical, and binary operator functions)
- 色彩操作, 包含轉換, 頻道擷取與其他 (Color manipulation (conversion, channel extraction, and more))
- 捲積濾波器 (Convolution filters (Sobel, Gaussian, and more))
- Canny Edge, Harris corners, optical flow, and more
- Pyramids (such as Laplacians)
- HOG (Histogram of Oriented Gradients)
- SVM (Support Vector Machines)
- 半/全精準 通用矩陣乘法 (H/SGEMM (Half and Single precision General Matrix Multiply))
- 捲積類神經網路建構功能區塊 (Convolutional Neural Networks building blocks (Activation, Convolution, Fully connected, Locally connected, Normalization, Pooling, Soft-max))
首先 ARM Compute Library 其 github 位置為 https://github.com/ARM-software/ComputeLibrary , 而相關的原文文件在 source 與網站上各有一份
以目錄結構來說下列為主要較重要的目錄:
- arm_compute/ - 放置所有 Compute Libraray 的 Headers
- core/ - Core library 是由底層演算法的實作所組成
- 基本共用資料型別 (Types, Window, Coordinates, Iterator, 等等)
- 基本通用介面 (ITensor, IImage, 等等)
- 物件 metadata 型別 (ImageInfo, TensorInfo, MultiImageInfo)
- backend 目錄
- runtime/ - Runtime library 是用來快速 prototyping 用途非常基本的 Core Library 的 wrapper (由於 CL/NEON 的 Programming Model, 這裡提供對應不同的 execution interface)
- 基本通用物件介面的實作(Array, Image, Tensor, etc.)
- 以上兩者, 內各自有 CL/CPP/NEON backedn 目錄, 提供對應 backend 定義的 kernel headers
- documentation/ - Doxygen 所產生的文件
- examples/ - 內有提供的 4 個範例程式
- include/ - 基本上只放置 OpenCL 1.2 的 Headers
- CL/
- src/
- core/ - 於 arm_compute/core/ 中定義的型別/介面的實作
- runtime/ - 於 arm_compute/runtime/ 中定義的型別/介面的實作
- 以上兩者, 內各自有 CL/CPP/NEON 目錄, 即為該 backend 實作相關原始碼
而值得一提的是在 Compute Library 中提供的功能中, 這些 Kernel 演算所使用的定義規範為 OpenVX 1.1 所制定的
以下為目前提供的 Kernel 列表, 若了解 image processing, DNN 該 function 名稱應解釋了其功用, 即不在此冗文解釋: (注明 NEON-only 表示目前尚未有 CL 實作)
AbsoluteDifferenceKernel
AccumulateKernel
ActivationLayerKernel
ArithmeticAdditionKernel
ArithmeticSubtractionKernel
BitwiseAndKernel
BitwiseNotKernel
BitwiseOrKernel
BitwiseXorKernel
Box3x3Kernel
CannyEdgeKernel
ChannelCombineKernel
ChannelExtractKernel
Col2ImKernel
ColorConvertKernel
ConvolutionKernel
ConvolutionLayerWeightsReshapeKernel
CumulativeDistributionKernel (NEON-only)
DepthConvertKernel
DerivativeKernel
DilateKernel
ErodeKernel
FastCornersKernel
FillArrayKernel (NEON-only)
FillBorderKernel
FillInnerBorderKernel (NEON-only)
Gaussian3x3Kernel
Gaussian5x5Kernel
GaussianPyramidKernel
GEMMInterleave4x4Kernel
GEMMLowpMatrixMultiplyKernel
GEMMMatrixAccumulateBiasesKernel
GEMMMatrixAdditionKernel
GEMMMatrixMultiplyKernel
GEMMTranspose1xWKernel
HarrisCornersKernel
HistogramKernel
HOGDescriptorKernel (NEON-only)
HOGDetectorKernel (NEON-only)
HOGNonMaximaSuppressionKernel (NEON-only)
Im2ColKernel
IntegralImageKernel
LKTrackerKernel
MagnitudePhaseKernel
MeanStdDevKernel
Median3x3Kernel
MinMaxLocationKernel
NonLinearFilterKernel
NonMaximaSuppression3x3Kernel
NormalizationLayerKernel
PixelWiseMultiplicationKernel
PoolingLayerKernel
RemapKernel
ScaleKernel
Scharr3x3Kernel
Sobel3x3Kernel
Sobel5x5Kernel
Sobel7x7Kernel
SoftmaxLayerKernel
TableLookupKernel
ThresholdKernel
TransposeKernel
WarpKernel (CL 細分為 WarpAffine, WarpPerspective 兩種)
下一篇將會介紹 Compute Library 中使用所需了解的基本型別, 介面, 執行方式以及範例
沒有留言:
張貼留言