mirror of
https://github.com/bytecodealliance/wasm-micro-runtime.git
synced 2025-02-12 09:55:27 +00:00
![ayakoakasaka](/assets/img/avatar_default.png)
Add VX delegation as an external delegation of TFLite, so that several NPU/GPU (from VeriSilicon, NXP, Amlogic) can be controlled via WASI-NN. Test Code can work with the X86 simulator.
100 lines
3.1 KiB
Docker
100 lines
3.1 KiB
Docker
# Copyright (C) 2019 Intel Corporation. All rights reserved.
|
|
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
|
|
|
FROM ubuntu:20.04 AS base
|
|
|
|
ENV DEBIAN_FRONTEND=noninteractive
|
|
|
|
|
|
RUN apt-get update && apt-get install -y \
|
|
cmake build-essential git curl libssl-dev python3
|
|
|
|
|
|
# Build TensorFlow Lite VX delegate default built for x86-64 simulator
|
|
WORKDIR /tmp
|
|
RUN git clone https://github.com/VeriSilicon/TIM-VX.git tim-vx
|
|
RUN git clone https://github.com/VeriSilicon/tflite-vx-delegate.git
|
|
RUN git clone https://github.com/tensorflow/tensorflow.git
|
|
|
|
|
|
# Build TIM-VX
|
|
WORKDIR /tmp/tim-vx/host_build
|
|
RUN cmake -DCMAKE_INSTALL_PREFIX=/usr/local ../
|
|
RUN make -j$(grep -c ^processor /proc/cpuinfo)
|
|
RUN make install
|
|
|
|
WORKDIR /tmp/tim-vx
|
|
#RUN mkdir -p prebuilt-sdk/x86_64_linux/lib/include
|
|
#RUN cp prebuilt-sdk/x86_64_linux/include/CL prebuilt-sdk/x86_64_linux/lib/include -fr
|
|
|
|
|
|
# Build TensorFlow Lite
|
|
WORKDIR /tmp/tensorflow/build
|
|
RUN cmake \
|
|
-DBUILD_SHARED_LIBS=ON=on \
|
|
-DTFLITE_ENABLE_RUY=on \
|
|
-DTFLITE_ENABLE_NNAPI=off \
|
|
-DTFLITE_ENABLE_XNNPACK=on \
|
|
-DTFLITE_ENABLE_EXTERNAL_DELEGATE=on \
|
|
../tensorflow/lite/
|
|
RUN make -j$(grep -c ^processor /proc/cpuinfo)
|
|
RUN make install
|
|
RUN cp --no-preserve=ownership -d lib*.so* /usr/local/lib
|
|
RUN cp -r --no-preserve=ownership -d flatbuffers/include/flatbuffers /usr/local/include
|
|
# install header files
|
|
RUN install -d /usr/local/include/tensorflow/lite && \
|
|
cd /tmp/tensorflow/tensorflow/lite && \
|
|
cp --parents \
|
|
$(find . -name "*.h*") \
|
|
/usr/local/include/tensorflow/lite
|
|
# install version.h from core
|
|
RUN install -d /usr/local/include/tensorflow/core/public && \
|
|
cp /tmp/tensorflow/tensorflow/core/public/version.h /usr/local/include/tensorflow/core/public
|
|
|
|
|
|
# Build Vx Delegate default built for x86-64 simulator
|
|
WORKDIR /tmp/tflite-vx-delegate/build
|
|
RUN cmake \
|
|
-DBUILD_SHARED_LIBS=ON \
|
|
-DFETCHCONTENT_SOURCE_DIR_TENSORFLOW=/tmp/tensorflow \
|
|
-DTFLITE_LIB_LOC=/usr/local/lib/libtensorflow-lite.so \
|
|
-DTIM_VX_INSTALL=/usr/local \
|
|
-DCMAKE_INSTALL_PREFIX=/usr/ \
|
|
../
|
|
RUN make vx_delegate -j$(grep -c ^processor /proc/cpuinfo)
|
|
RUN make install
|
|
RUN cp --no-preserve=ownership -d lib*.so* /usr/lib
|
|
# install header files
|
|
RUN install -d /usr/local/include/tensorflow-lite-vx-delegate && \
|
|
cd /tmp/tflite-vx-delegate/ && \
|
|
cp --parents \
|
|
$(find . -name "*.h*") \
|
|
/usr/local/include/tensorflow-lite-vx-delegate
|
|
|
|
ENV VIVANTE_SDK_DIR=/tmp/tim-vx/prebuilt-sdk/x86_64_linux/
|
|
ENV VSIMULATOR_CONFIG=czl
|
|
|
|
ENV LD_LIBRARY_PATH=/tmp/tim-vx/prebuilt-sdk/x86_64_linux/lib:/usr/local/lib:/lib/x86_64-linux-gnu/:/lib64/:/usr/lib:$LD_LIBRARY_PATH
|
|
|
|
|
|
# Build WASI-NN
|
|
WORKDIR /home/wamr
|
|
|
|
COPY . .
|
|
|
|
WORKDIR /home/wamr/core/iwasm/libraries/wasi-nn/test/build
|
|
|
|
RUN cmake \
|
|
-DCMAKE_LIBRARY_PATH=${CMAKE_LIBRARY_PATH}:/usr/local/lib/ \
|
|
-DCMAKE_INCLUDE_PATH=${CMAKE_INCLUDE_PATH}:/usr/local/include/ \
|
|
-DWAMR_BUILD_WASI_NN=1 \
|
|
-DWAMR_BUILD_WASI_NN_ENABLE_EXT=1 \
|
|
-DWASI_NN_EXT_DELEGATE_PATH="/usr/lib/libvx_delegate.so" \
|
|
..
|
|
|
|
RUN make -j $(grep -c ^processor /proc/cpuinfo)
|
|
|
|
RUN cp /home/wamr/core/iwasm/libraries/wasi-nn/test/build/iwasm /run/iwasm
|
|
|
|
ENTRYPOINT [ "/run/iwasm" ]
|