tree: 751527dc31afd94637bc8b0c208d086ffc5fa08b [path history] [tgz]
  1. CMakeLists.txt
  2. README.md
apps/hexagon_api/README.md

Hexagon API app

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.

Configuration

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.

Build

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.