This is an automated email from the ASF dual-hosted git repository.
jroesch pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/tvm.git
The following commit(s) were added to refs/heads/main by this push:
new 49756a5 Allow rust tvm build configuration through cargo features
(#8665)
49756a5 is described below
commit 49756a5e341217d186cf1e6ac9171539088ada42
Author: Schell Carl Scivally <[email protected]>
AuthorDate: Sat Aug 7 05:53:22 2021 +1200
Allow rust tvm build configuration through cargo features (#8665)
---
rust/tvm-rt/Cargo.toml | 48 ++++++++++++++++
rust/tvm-sys/Cargo.toml | 49 +++++++++++++++-
rust/tvm-sys/build.rs | 144 +++++++++++++++++++++++++++++++++++++++++++++++-
rust/tvm/Cargo.toml | 46 ++++++++++++++++
4 files changed, 284 insertions(+), 3 deletions(-)
diff --git a/rust/tvm-rt/Cargo.toml b/rust/tvm-rt/Cargo.toml
index 8e69dcd..24d9061 100644
--- a/rust/tvm-rt/Cargo.toml
+++ b/rust/tvm-rt/Cargo.toml
@@ -33,7 +33,55 @@ default = ["dynamic-linking"]
dynamic-linking = ["tvm-sys/dynamic-linking"]
static-linking = ["tvm-sys/static-linking"]
standalone = ["tvm-sys/runtime-only"]
+runtime-only = ["tvm-sys/runtime-only"]
blas = ["ndarray/blas"]
+# Enabling any of the following features is like setting the value to "ON" in
config.cmake.
+use-cuda = ["tvm-sys/use-cuda"]
+use-opencl = ["tvm-sys/use-opencl"]
+use-vulkan = ["tvm-sys/use-vulkan"]
+use-metal = ["tvm-sys/use-metal"]
+use-rocm = ["tvm-sys/use-rocm"]
+use-hexagon-device = ["tvm-sys/use-hexagon-device"]
+use-rpc = ["tvm-sys/use-rpc"]
+use-threads = ["tvm-sys/use-threads"]
+use-llvm = ["tvm-sys/use-llvm"]
+use-stackvm-runtime = ["tvm-sys/use-stackvm-runtime"]
+use-graph-runtime = ["tvm-sys/use-graph-runtime"]
+use-graph-runtime-debug = ["tvm-sys/use-graph-runtime-debug"]
+use-openmp = ["tvm-sys/use-openmp"]
+use-relay-debug = ["tvm-sys/use-relay-debug"]
+use-rtti = ["tvm-sys/use-rtti"]
+use-mscv-mt = ["tvm-sys/use-mscv-mt"]
+use-micro = ["tvm-sys/use-micro"]
+use-install-dev = ["tvm-sys/use-install-dev"]
+hide-private-symbols = ["tvm-sys/hide-private-symbols"]
+use-fallback-stl-map = ["tvm-sys/use-fallback-stl-map"]
+use-ethosn = ["tvm-sys/use-ethosn"]
+use-index-default-i64 = ["tvm-sys/use-index-default-i64"]
+use-tf-tvmdsoop = ["tvm-sys/use-tf-tvmdsoop"]
+use-byodt-posit = ["tvm-sys/use-byodt-posit"]
+use-mkl = ["tvm-sys/use-mkl"]
+use-mkldnn = ["tvm-sys/use-mkldnn"]
+use-dnnl-codegen = ["tvm-sys/use-dnnl-codegen"]
+use-cudnn = ["tvm-sys/use-cudnn"]
+use-cublas = ["tvm-sys/use-cublas"]
+use-thrust = ["tvm-sys/use-thrust"]
+use-miopen = ["tvm-sys/use-miopen"]
+use-rocblas = ["tvm-sys/use-rocblas"]
+use-sort = ["tvm-sys/use-sort"]
+use-nnpack = ["tvm-sys/use-nnpack"]
+use-random = ["tvm-sys/use-random"]
+use-micro-standalone-runtime = ["tvm-sys/use-micro-standalone-runtime"]
+use-cpp-rpc = ["tvm-sys/use-cpp-rpc"]
+use-tflite = ["tvm-sys/use-tflite"]
+use-coreml = ["tvm-sys/use-coreml"]
+use-target-onnx = ["tvm-sys/use-target-onnx"]
+use-arm-compute-lib = ["tvm-sys/use-arm-compute-lib"]
+use-arm-compute-lib-graph-runtime =
["tvm-sys/use-arm-compute-lib-graph-runtime"]
+use-tensorrt-codegen = ["tvm-sys/use-tensorrt-codegen"]
+use-tensorrt-runtime = ["tvm-sys/use-tensorrt-runtime"]
+use-vitis-ai = ["tvm-sys/use-vitis-ai"]
+build-static-runtime = ["tvm-sys/build-static-runtime"]
[dependencies]
thiserror = "^1.0"
diff --git a/rust/tvm-sys/Cargo.toml b/rust/tvm-sys/Cargo.toml
index 1daa308..ccc104b 100644
--- a/rust/tvm-sys/Cargo.toml
+++ b/rust/tvm-sys/Cargo.toml
@@ -28,6 +28,53 @@ default = ["dynamic-linking"]
static-linking = []
dynamic-linking = []
runtime-only = []
+# Enabling any of the following features is like setting the value to "ON" in
config.cmake.
+use-cuda = []
+use-opencl = []
+use-vulkan = []
+use-metal = []
+use-rocm = []
+use-hexagon-device = []
+use-rpc = []
+use-threads = []
+use-llvm = []
+use-stackvm-runtime = []
+use-graph-runtime = []
+use-graph-runtime-debug = []
+use-openmp = []
+use-relay-debug = []
+use-rtti = []
+use-mscv-mt = []
+use-micro = []
+use-install-dev = []
+hide-private-symbols = []
+use-fallback-stl-map = []
+use-ethosn = []
+use-index-default-i64 = []
+use-tf-tvmdsoop = []
+use-byodt-posit = []
+use-mkl = []
+use-mkldnn = []
+use-dnnl-codegen = []
+use-cudnn = []
+use-cublas = []
+use-thrust = []
+use-miopen = []
+use-rocblas = []
+use-sort = []
+use-nnpack = []
+use-random = []
+use-micro-standalone-runtime = []
+use-cpp-rpc = []
+use-tflite = []
+use-coreml = []
+use-target-onnx = []
+use-arm-compute-lib = []
+use-arm-compute-lib-graph-runtime = []
+use-tensorrt-codegen = []
+use-tensorrt-runtime = []
+use-vitis-ai = []
+build-static-runtime = []
[dependencies]
thiserror = "^1.0"
@@ -38,4 +85,4 @@ enumn = "^0.1"
[build-dependencies]
bindgen = { version="0.57", default-features = false, features = ["runtime"] }
anyhow = "^1.0"
-tvm-build = "0.1"
+tvm-build = "0.2.1"
diff --git a/rust/tvm-sys/build.rs b/rust/tvm-sys/build.rs
index 5990f0d..930ee59 100644
--- a/rust/tvm-sys/build.rs
+++ b/rust/tvm-sys/build.rs
@@ -19,10 +19,10 @@
extern crate bindgen;
-use std::path::{Path, PathBuf};
+use std::{path::{Path, PathBuf}, str::FromStr};
use anyhow::{Context, Result};
-use tvm_build::BuildConfig;
+use tvm_build::{BuildConfig, CMakeSetting};
/// The necessary information for detecting a TVM installation.
struct TVMInstall {
@@ -59,6 +59,146 @@ fn find_using_tvm_build() -> Result<TVMInstall> {
let mut build_config = BuildConfig::default();
build_config.repository =
Some("https://github.com/apache/tvm".to_string());
build_config.branch =
Some(option_env!("TVM_BRANCH").unwrap_or("main").into());
+
+ if cfg!(feature = "use-cuda") {
+ build_config.settings.use_cuda = CMakeSetting::from_str("on").ok();
+ }
+ if cfg!(feature = "use-opencl") {
+ build_config.settings.use_opencl = CMakeSetting::from_str("on").ok();
+ }
+ if cfg!(feature = "use-vulkan") {
+ build_config.settings.use_vulkan = CMakeSetting::from_str("on").ok();
+ }
+ if cfg!(feature = "use-rocm") {
+ build_config.settings.use_rocm = CMakeSetting::from_str("on").ok();
+ }
+ if cfg!(feature = "use-metal") {
+ build_config.settings.use_metal = CMakeSetting::from_str("on").ok();
+ }
+ if cfg!(feature = "use-hexagon-device") {
+ build_config.settings.use_hexagon_device = Some(true);
+ }
+ if cfg!(feature = "use-rpc") {
+ build_config.settings.use_rpc = Some(true);
+ }
+ if cfg!(feature = "use-threads") {
+ build_config.settings.use_threads = Some(true);
+ }
+ if cfg!(feature = "use-llvm") {
+ build_config.settings.use_llvm = CMakeSetting::from_str("on").ok();
+ }
+ if cfg!(feature = "use-stackvm-runtime") {
+ build_config.settings.use_stackvm_runtime = Some(true);
+ }
+ if cfg!(feature = "use-graph-runtime") {
+ build_config.settings.use_graph_runtime = Some(true);
+ }
+ if cfg!(feature = "use-graph-runtime-debug") {
+ build_config.settings.use_graph_runtime_debug = Some(true);
+ }
+ if cfg!(feature = "use-openmp") {
+ build_config.settings.use_openmp = Some(true);
+ }
+ if cfg!(feature = "use-relay-debug") {
+ build_config.settings.use_relay_debug = Some(true);
+ }
+ if cfg!(feature = "use-rtti") {
+ build_config.settings.use_rtti = Some(true);
+ }
+ if cfg!(feature = "use-mscv-mt") {
+ build_config.settings.use_mscv_mt = Some(true);
+ }
+ if cfg!(feature = "use-micro") {
+ build_config.settings.use_micro = Some(true);
+ }
+ if cfg!(feature = "use-install-dev") {
+ build_config.settings.use_install_dev = Some(true);
+ }
+ if cfg!(feature = "hide_private-symbols") {
+ build_config.settings.hide_private_symbols = Some(true);
+ }
+ if cfg!(feature = "use-fallback-stl-map") {
+ build_config.settings.use_fallback_stl_map = Some(true);
+ }
+ if cfg!(feature = "use-ethosn") {
+ build_config.settings.use_ethosn = Some(true);
+ }
+ if cfg!(feature = "use-index_default-i64") {
+ build_config.settings.use_index_default_i64 = Some(true);
+ }
+ if cfg!(feature = "use-tf-tvmdsoop") {
+ build_config.settings.use_tf_tvmdsoop = Some(true);
+ }
+ if cfg!(feature = "use-byodt-posit") {
+ build_config.settings.use_byodt_posit = Some(true);
+ }
+ if cfg!(feature = "use-mkl") {
+ build_config.settings.use_mkl = CMakeSetting::from_str("on").ok();
+ }
+ if cfg!(feature = "use-mkldnn") {
+ build_config.settings.use_mkldnn = CMakeSetting::from_str("on").ok();
+ }
+ if cfg!(feature = "use-dnnl-codegen") {
+ build_config.settings.use_dnnl_codegen = Some(true);
+ }
+ if cfg!(feature = "use-cudnn") {
+ build_config.settings.use_cudnn = Some(true);
+ }
+ if cfg!(feature = "use-cublas") {
+ build_config.settings.use_cublas = Some(true);
+ }
+ if cfg!(feature = "use-thrust") {
+ build_config.settings.use_thrust = Some(true);
+ }
+ if cfg!(feature = "use-miopen") {
+ build_config.settings.use_miopen = Some(true);
+ }
+ if cfg!(feature = "use-rocblas") {
+ build_config.settings.use_rocblas = Some(true);
+ }
+ if cfg!(feature = "use-sort") {
+ build_config.settings.use_sort = Some(true);
+ }
+ if cfg!(feature = "use-nnpack") {
+ build_config.settings.use_nnpack = Some(true);
+ }
+ if cfg!(feature = "use-random") {
+ build_config.settings.use_random = Some(true);
+ }
+ if cfg!(feature = "use-micro-standalone-runtime") {
+ build_config.settings.use_micro_standalone_runtime = Some(true);
+ }
+ if cfg!(feature = "use-cpp-rpc") {
+ build_config.settings.use_cpp_rpc = Some(true);
+ }
+ if cfg!(feature = "use-tflite") {
+ build_config.settings.use_tflite = Some(true);
+ }
+ if cfg!(feature = "use-coreml") {
+ build_config.settings.use_coreml = Some(true);
+ }
+ if cfg!(feature = "use-target-onnx") {
+ build_config.settings.use_target_onnx = Some(true);
+ }
+ if cfg!(feature = "use-arm-compute-lib") {
+ build_config.settings.use_arm_compute_lib = Some(true);
+ }
+ if cfg!(feature = "use-arm-compute-lib-graph-runtime") {
+ build_config.settings.use_arm_compute_lib_graph_runtime =
CMakeSetting::from_str("on").ok();
+ }
+ if cfg!(feature = "use-tensorrt-codegen") {
+ build_config.settings.use_tensorrt_codegen = Some(true);
+ }
+ if cfg!(feature = "use-tensorrt-runtime") {
+ build_config.settings.use_tensorrt_runtime =
CMakeSetting::from_str("on").ok();
+ }
+ if cfg!(feature = "use-vitis-ai") {
+ build_config.settings.use_vitis_ai = Some(true);
+ }
+ if cfg!(any(feature = "static-linking", feature = "build-static-runtime"))
{
+ build_config.settings.build_static_runtime = Some(true);
+ }
+
let build_result = tvm_build::build(build_config)?;
let source_path = build_result.revision.source_path();
let build_path = build_result.revision.build_path();
diff --git a/rust/tvm/Cargo.toml b/rust/tvm/Cargo.toml
index ca32226..8d9b23f 100644
--- a/rust/tvm/Cargo.toml
+++ b/rust/tvm/Cargo.toml
@@ -34,6 +34,52 @@ dynamic-linking = ["tvm-rt/dynamic-linking"]
static-linking = ["tvm-rt/static-linking"]
blas = ["ndarray/blas"]
python = ["pyo3"]
+# Enabling any of the following features is like setting the value to "ON" in
config.cmake.
+use-cuda = ["tvm-rt/use-cuda"]
+use-opencl = ["tvm-rt/use-opencl"]
+use-vulkan = ["tvm-rt/use-vulkan"]
+use-metal = ["tvm-rt/use-metal"]
+use-rocm = ["tvm-rt/use-rocm"]
+use-hexagon-device = ["tvm-rt/use-hexagon-device"]
+use-rpc = ["tvm-rt/use-rpc"]
+use-threads = ["tvm-rt/use-threads"]
+use-llvm = ["tvm-rt/use-llvm"]
+use-stackvm-runtime = ["tvm-rt/use-stackvm-runtime"]
+use-graph-runtime = ["tvm-rt/use-graph-runtime"]
+use-graph-runtime-debug = ["tvm-rt/use-graph-runtime-debug"]
+use-openmp = ["tvm-rt/use-openmp"]
+use-relay-debug = ["tvm-rt/use-relay-debug"]
+use-rtti = ["tvm-rt/use-rtti"]
+use-mscv-mt = ["tvm-rt/use-mscv-mt"]
+use-micro = ["tvm-rt/use-micro"]
+use-install-dev = ["tvm-rt/use-install-dev"]
+hide-private-symbols = ["tvm-rt/hide-private-symbols"]
+use-fallback-stl-map = ["tvm-rt/use-fallback-stl-map"]
+use-ethosn = ["tvm-rt/use-ethosn"]
+use-index-default-i64 = ["tvm-rt/use-index-default-i64"]
+use-tf-tvmdsoop = ["tvm-rt/use-tf-tvmdsoop"]
+use-byodt-posit = ["tvm-rt/use-byodt-posit"]
+use-mkl = ["tvm-rt/use-mkl"]
+use-mkldnn = ["tvm-rt/use-mkldnn"]
+use-dnnl-codegen = ["tvm-rt/use-dnnl-codegen"]
+use-cudnn = ["tvm-rt/use-cudnn"]
+use-cublas = ["tvm-rt/use-cublas"]
+use-thrust = ["tvm-rt/use-thrust"]
+use-miopen = ["tvm-rt/use-miopen"]
+use-rocblas = ["tvm-rt/use-rocblas"]
+use-sort = ["tvm-rt/use-sort"]
+use-nnpack = ["tvm-rt/use-nnpack"]
+use-random = ["tvm-rt/use-random"]
+use-micro-standalone-runtime = ["tvm-rt/use-micro-standalone-runtime"]
+use-cpp-rpc = ["tvm-rt/use-cpp-rpc"]
+use-tflite = ["tvm-rt/use-tflite"]
+use-coreml = ["tvm-rt/use-coreml"]
+use-target-onnx = ["tvm-rt/use-target-onnx"]
+use-arm-compute-lib = ["tvm-rt/use-arm-compute-lib"]
+use-arm-compute-lib-graph-runtime =
["tvm-rt/use-arm-compute-lib-graph-runtime"]
+use-tensorrt-codegen = ["tvm-rt/use-tensorrt-codegen"]
+use-tensorrt-runtime = ["tvm-rt/use-tensorrt-runtime"]
+use-vitis-ai = ["tvm-rt/use-vitis-ai"]
[dependencies.tvm-rt]
version = "0.1.0-alpha"