OpenVX 1.2源碼解析 — 目錄結構

Kobe Yu
4 min readApr 1, 2018

--

Khronos 在制定OpenVX規範時不僅提供規格書,也提供了範例實作讓想實作或通過conformance 測試的廠商可以參考。

目前(2018/1)官方(https://www.khronos.org/registry/OpenVX/)提供的版本號1.2,更新日期是2018/1/17號,解壓縮後我們可以看到總共有13個資料夾與9個檔案:

.
├── Android.mk
├── BUILD_DEFINES
├── Build.py
├── CMakeLists.txt
├── cmake_utils/
├── concerto/
├── debug/
├── examples/
├── helper/
├── include/
├── kernels/
├── libraries/
├── LICENSE
├── Makefile
├── NEWKERNEL.txt
├── raw/
├── README
├── sample/
├── scripts/
├── tools/
├── utils/
└── VERSION

13 directories, 9 files

這些檔案可分為四大類:1.程式碼相關 2.編譯相關 3.影像檔案或測試資料 4.說明文件,以下將簡介相關檔案與作用:

  1. 程式碼相關:

include/ 標頭檔(.h)

sample/ 主要實作程式碼(framework/nn extension/target/test..etc)

kernel/ node在不同target(c_mode/opencl…etc)的實作

examples/ 一些範例程式介紹如何使用OpenVX API

libraries/ 提供額外功能的函式庫,例如讀寫檔案

helper/ 提供log相關功能(for developer)

debug/ 提供debug level相關設定,類似Android log level

scripts/ 提供簡便的shell scrip操作

utils/ 提供常用的操作function

2. 編譯相關

Buid.py 可以用python Build.py -help 查詢相關參數, 基本用法python Build.py -os=linux

Makefile

cmake_utils/ 相關的設定檔案都在此資料夾內

3.影像檔案或測試資料

raw/ 存放會用到的影像檔案

sample/cnn/resource 存放nn extension 會用到的檔案(weights/image…etc)

4.說明文件

README 主要說明文件,內容有6個章節依序說明

1.這個參考實作的目的與內容

2.如何編譯(CMAKE/Concerto)

3.單元測試(unit test)

4.如何設定debug flag與debug level

5.如何打包與安裝到系統

6.Bug回報方式

除了官方的參考實作外,下方是不同廠商的實作,有些有開放原始碼有些則是包裝程動態函式庫.

  1. Intel Computer Vision SDK : https://software.intel.com/en-us/computer-vision-sdk
  2. AMD OVX : https://github.com/GPUOpen-ProfessionalCompute-Libraries/amdovx-core
  3. TI OVX: http://processors.wiki.ti.com/index.php/Processor_SDK_TIOVX
  4. Nvidia Vision Works: https://developer.nvidia.com/embedded/visionworks

以上是有通過conformance test的廠商,另外ARM 也有類似的SDK(compute library)而且初期開發時在架構上也是參考OpenVX。

  1. ARM compute library: https://github.com/ARM-software/ComputeLibrary

雖然一開始OpenVX是針對電腦視覺運算設計的軟體框架,但由於類神經網路的編程模式(programming model)跟熱門程度讓Khronos OpenVX工作小組也特別訂定了Neural Network Extension(https://www.khronos.org/registry/OpenVX/extensions/neural_network_1.2/OpenVX_NN_Extension_1_2.pdf)使得OpenVX也加入了深度學習的戰場。

--

--