This is a meta-app that build the necessary binaries for use with the HexagonLauncher
utility from tvm.contrib.hexagon
.
It will build the TVM runtime for Android, the RPC server application for Android, and the RPC library for Hexagon with the TVM runtime for Hexagon built into it.
There is a set of configuration variables that are required for cmake:
ANDROID_ABI
: Set this to arm64-v8a
.ANDROID_PLATFORM
: This can be android-28
.USE_ANDROID_TOOLCHAIN
: The path to the Android toolchain file, i.e. android.toolchain.cmake
. This file is a part of the Android NDK.USE_HEXAGON_ARCH
: The version string of the Hexagon architecture to use, i.e. vNN. The typical setting would be v68
or later.USE_HEXAGON_SDK
: The path to the Hexagon SDK. Set this path in such a way that ${USE_HEXAGON_SDK}/setup_sdk_env.source
exists.USE_HEXAGON_TOOLCHAIN
: Path to Hexagon toolchain. It can be the Hexagon toolchain included in the SDK, for example ${USE_HEXAGON_TOOLCHAIN}/tools/HEXAGON_Tools/x.y.z/Tools
. The x.y.z
in the path is the toolchain version number, which is specific to the version of the SDK.Additionally, the variable USE_OUTPUT_BINARY_DIR
can be set to indicate the location where the generated binaries will be placed. If not set, it defaults to hexagon_rpc
subdirectory in the current build directory.
The build will generate the following binaries:
tvm_runtime.so
: TVM runtime for Android (shared library).tvm_rpc_android
: RPC server for Android.libhexagon_rpc_skel.so
: RPC library for Hexagon.libtvm_runtime.a
: TVM runtime for Hexagon (static library).The RPC library for Hexagon contains the TVM runtime, so the static TVM runtime for Hexagon is not strictly necessary.