2021-05-25 09:48:49 +08:00
2021-08-26 16:33:33 +08:00
# TIM-VX - Tensor Interface Module
2021-10-20 17:20:47 +08:00


2021-01-11 18:16:03 +08:00
2021-08-26 16:33:33 +08:00
TIM-VX is a software integration module provided by VeriSilicon to facilitate deployment of Neural-Networks on Verisilicon ML accelerators. It serves as the backend binding for runtime frameworks such as Android NN, Tensorflow-Lite, MLIR, TVM and more.
2021-01-11 18:16:03 +08:00
Main Features
2021-08-26 16:33:33 +08:00
- Over [150 operators ](https://github.com/VeriSilicon/TIM-VX/blob/main/src/tim/vx/ops/README.md ) with rich format support for both quantized and floating point
- Simplified C++ binding API calls to create Tensors and Operations [Guide ](https://github.com/VeriSilicon/TIM-VX/blob/main/docs/Programming_Guide.md )
2021-06-03 12:10:24 +08:00
- Dynamic graph construction with support for shape inference and layout inference
2021-01-11 18:16:03 +08:00
- Built-in custom layer extensions
- A set of utility functions for debugging
2021-02-25 17:18:12 +08:00
## Framework Support
2021-08-03 12:27:09 +08:00
- [Tensorflow-Lite ](https://github.com/VeriSilicon/tflite-vx-delegate ) (External Delegate)
2021-02-26 13:21:55 +08:00
- [Tengine ](https://github.com/OAID/Tengine ) (Official)
2021-08-03 12:27:09 +08:00
- [TVM ](https://github.com/VeriSilicon/tvm ) (Fork)
2021-02-25 17:54:22 +08:00
- MLIR Dialect (In development)
2021-02-25 17:18:12 +08:00
2021-08-03 12:27:09 +08:00
Feel free to raise a github issue if you wish to add TIM-VX for other frameworks.
2021-01-11 18:16:03 +08:00
2021-10-11 18:47:39 +08:00
# Get started
2021-01-11 18:16:03 +08:00
2021-10-11 18:47:39 +08:00
## Build and Run
TIM-VX supports both [bazel ](https://bazel.build ) and cmake.
### Bazel
[Install bazel ](https://docs.bazel.build/versions/master/install.html ) to get started.
2021-01-11 18:16:03 +08:00
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.
2021-10-11 18:47:39 +08:00
To build TIM-VX:
2021-01-11 18:16:03 +08:00
```shell
bazel build libtim-vx.so
```
2021-10-11 18:47:39 +08:00
To run sample LeNet:
2021-01-11 18:16:03 +08:00
```shell
2021-01-26 22:50:26 +08:00
# set VIVANTE_SDK_DIR for runtime compilation environment
export VIVANTE_SDK_DIR=`pwd`/prebuilt-sdk/x86_64_linux
2021-01-11 18:16:03 +08:00
bazel build //samples/lenet:lenet_asymu8_cc
bazel run //samples/lenet:lenet_asymu8_cc
```
2021-10-11 18:47:39 +08:00
### Cmake
To build TIM-VX:
```shell
mkdir host_build
cd host_build
cmake ..
make -j8
2021-10-21 19:18:42 +08:00
make install
2021-10-11 18:47:39 +08:00
```
2021-10-21 19:18:42 +08:00
All install files (both headers and *.so) is located in : `host_build/install`
2021-10-11 18:47:39 +08:00
Cmake option:
`CONFIG` : Set Target Platform. Such as: `A311D` , `S905D3` , `vim3_android` , `YOCTO` . Default is `X86_64_linux` .
2021-10-12 13:42:04 +08:00
`TIM_VX_ENABLE_TEST` : Build the unit test. Default is OFF.
2021-10-11 18:47:39 +08:00
`TIM_VX_USE_EXTERNAL_OVXLIB` : Use external OVXLIB. Default is OFF.
2021-10-12 13:42:04 +08:00
`EXTERNAL_VIV_SDK` : use external VX driver libs. By default is OFF.
2021-10-11 18:47:39 +08:00
run unit test:
```shell
cd host_build/src/tim
export LD_LIBRARY_PATH=`pwd`/../../../prebuilt-sdk/x86_64_linux/lib:$LD_LIBRARY_PATH
./unit_test
```
## Other
2021-08-03 12:27:09 +08:00
To build and run Tensorflow-Lite with TIM-VX, please see [README ](https://github.com/VeriSilicon/tflite-vx-delegate#readme )
2021-08-26 16:33:33 +08:00
To build and run TVM with TIM-VX, please see [TVM README ](https://github.com/VeriSilicon/tvm/blob/vsi_npu/README.VSI.md )
2021-09-22 09:43:10 +08:00
# Support
create issue on github or email to ML_Support@verisilicon.com