Go to file
Kainan Cha 31969a7326 Add support for Android make
This change adds support for building TIM-VX under a
Android AOSP environment.

Instructions below based on Khadas VIMS system

* Add TIM-VX git repository to Android AOSP

  # cd vendor/amlogic/common/npu
  # git clone git@github.com:VeriSilicon/TIM-VX.git tim-vx

* Include tim-vx/Android.mk to AOSP build

  Edit vendor/amlogic/common/npu/Android.mak

    +TMP_PATH := $(LOCAL_PATH)
    +VIVANTE_SDK_DIR := $(LOCAL_PATH)/service/ovx_inc
    +include $(LOCAL_PATH)/tim-vx/Android.mk
    +LOCAL_PATH := $(TMP_PATH)

    ifeq ($(BOARD_NPU_SERVICE_ENABLE), true)

  Note VIVANTE_SDK_DIR needs to point to SDK header
  inclusion path

Signed-off-by: Kainan Cha <kainan.zha@verisilicon.com>
2021-05-06 18:53:51 +08:00
cmake Add support for S905D3 SoC 2021-04-06 13:30:16 +08:00
include/tim/vx add argmin and argmax op 2021-04-16 00:34:29 +08:00
prebuilt-sdk Add support for S905D3 SoC 2021-04-06 13:30:16 +08:00
samples/lenet Update linking style as static linking for sample 2021-02-08 14:47:37 +08:00
src/tim/vx Add support for Android make 2021-05-06 18:53:51 +08:00
toolchains support build for tensorflow A311D 2021-02-07 10:33:04 +08:00
.bazelrc Add support for S905D3 SoC 2021-04-06 13:30:16 +08:00
.bazelversion Support build for A311D 2021-01-29 00:11:41 -08:00
.clang-format Add .clang-format 2021-01-19 09:54:50 +08:00
.gitignore Update internal to REL/v1.1.30 2021-02-26 17:05:14 +08:00
Android.mk Add support for Android make 2021-05-06 18:53:51 +08:00
BUILD Rename BUILD.bazel to BUILD 2021-02-26 09:53:32 +08:00
CMakeLists.txt Add support for S905D3 SoC 2021-04-06 13:30:16 +08:00
LICENSE Initial Commit for VERSION 1.1.28 2021-01-11 18:27:48 +08:00
README.md Fix README typo 2021-02-26 15:29:38 +08:00
VERSION v1.1.30 2021-02-26 17:20:36 +08:00
WORKSPACE Add support for S905D3 SoC 2021-04-06 13:30:16 +08:00

README.md

TIM-VX - Tensor Interface Module for OpenVX

TIM-VX is a software integration module provided by VeriSilicon to facilitate deployment of Neural-Networks on OpenVX enabled ML accelerators. It serves as the backend binding for runtime frameworks such as Android NN, Tensorflow-Lite, MLIR, TVM and more.

Main Features

  • Over 130 internal operators with rich format support for both quantized and floating point
  • Simplified binding API calls to create Tensors and Operations
  • Dynamic graph construction and supports shape inferencing
  • Built-in custom layer extensions
  • A set of utility functions for debugging

Framework Support

Roadmap

Roadmap of TIM-VX will be updated here in the future.

Get started

Build and Run

TIM-VX uses bazel build system by default. Install bazel first to get started.

TIM-VX needs to be compiled and linked against VeriSilicon OpenVX SDK which provides related header files and pre-compiled libraries. A default linux-x86_64 SDK is provided which contains the simulation environment on PC. Platform specific SDKs can be obtained from respective SoC vendors.

To build TIM-VX

bazel build libtim-vx.so

To run sample LeNet

# set VIVANTE_SDK_DIR for runtime compilation environment
export VIVANTE_SDK_DIR=`pwd`/prebuilt-sdk/x86_64_linux

bazel build //samples/lenet:lenet_asymu8_cc
bazel run //samples/lenet:lenet_asymu8_cc

To build and run Tensorflow-Lite delegate on A311D platform

# clone and cross build VeriSilicon tensorflow fork with TFlite delegate support
git clone --single-branch --branch dev/vx-delegate git@github.com:VeriSilicon/tensorflow.git vx-delegate; cd vx-delegate
bazel build --config A311D //tensorflow/lite/tools/benchmark:benchmark_model

# push benchmark_model onto device and run
./benchmark_model --graph=mobilenet_v1_1.0_224_quant.tflite --use_vxdelegate=true