使用 C++ API 部署 TVM 模块

使用 C++ API 部署 TVM 模块#

apps/howto_deploy 中提供了关于如何部署 TVM 模块的示例。

要运行该示例,您可以使用以下命令

cd apps/howto_deploy
./run_example.sh

获取 TVM 运行时库#

唯一需要的是在您的目标平台上链接到 TVM 运行时。TVM 提供了最小运行时,其大小约为 300K 到 600K,具体取决于使用的模块数量。在大多数情况下,可以使用构建时附带的 libtvm_runtime.so

如果您发现构建 libtvm_runtime 很困难,请查看 tvm_runtime_pack.cc。这是包含 TVM 运行时的单文件示例。您可以使用您的构建系统编译此文件并将其包含到您的项目中。

您还可以查看 apps 以获取在 iOS、Android 和其他平台上使用 TVM 构建的示例应用程序。

动态库与系统模块#

TVM 提供了两种使用编译库的方式。您可以查看 prepare_test_libs.py 了解如何生成库,以及 cpp_deploy.cc 了解如何使用它们。

  • 将库存储为共享库,并动态加载到您的项目中。

  • 以系统模块模式将编译后的库捆绑到您的项目中。

动态加载更加灵活,可以动态加载新模块。系统模块是一种更“静态”的方法。可以在禁止动态库加载的地方使用系统模块。