This is an automated email from the ASF dual-hosted git repository. tqchen pushed a commit to branch tirx/standalone-package-cleanup in repository https://gitbox.apache.org/repos/asf/tvm.git
commit 9f9c9fe550f5d6d18c5b5527d0f74341b62de785 Author: Tianqi Chen <[email protected]> AuthorDate: Thu Oct 15 01:37:32 2026 +0000 [REFACTOR][Native] Export core declarations and retain parent runtime consumers --- apps/android_rpc/app/src/main/jni/Android.mk | 2 +- apps/android_rpc/app/src/main/jni/tvm_runtime.h | 20 ++++++++++---------- include/tvm/runtime/vm/executable.h | 2 +- include/tvm/runtime/vm/tensor_cache_support.h | 8 ++++---- src/runtime/extra/contrib/clml/clml_runtime.h | 2 +- src/runtime/extra/contrib/cublas/cublas.cc | 2 +- src/runtime/extra/contrib/hipblas/hipblas.cc | 2 +- src/runtime/extra/contrib/sort/sort.cc | 2 +- src/runtime/rpc/rpc_socket_impl.cc | 4 ++-- src/runtime/vm/tensor_cache_support.cc | 4 ++-- tirx/include/tvm/codegen/codegen.h | 6 +++--- tirx/include/tvm/codegen/intrin_rule.h | 4 ++-- tirx/include/tvm/runtime/base.h | 19 +++++++++++++------ web/Makefile | 4 ++-- web/emcc/wasm_runtime.cc | 16 ++++++++-------- web/emcc/webgpu_runtime.cc | 2 +- 16 files changed, 53 insertions(+), 46 deletions(-) diff --git a/apps/android_rpc/app/src/main/jni/Android.mk b/apps/android_rpc/app/src/main/jni/Android.mk index b7540521c2..f38d54224a 100644 --- a/apps/android_rpc/app/src/main/jni/Android.mk +++ b/apps/android_rpc/app/src/main/jni/Android.mk @@ -36,7 +36,7 @@ include $(config) LOCAL_SRC_FILES := org_apache_tvm_native_c_api.cc LOCAL_LDFLAGS := -L$(SYSROOT)/usr/lib/ -llog -LOCAL_C_INCLUDES := $(ROOT_PATH)/include \ +LOCAL_C_INCLUDES := $(ROOT_PATH)/include $(ROOT_PATH)/tirx/include \ $(ROOT_PATH)/3rdparty/tvm-ffi/include \ $(ROOT_PATH)/3rdparty/tvm-ffi/3rdparty/dlpack/include \ $(ROOT_PATH)/3rdparty/OpenCL-Headers diff --git a/apps/android_rpc/app/src/main/jni/tvm_runtime.h b/apps/android_rpc/app/src/main/jni/tvm_runtime.h index 40f1b76e56..fa5784e0d7 100644 --- a/apps/android_rpc/app/src/main/jni/tvm_runtime.h +++ b/apps/android_rpc/app/src/main/jni/tvm_runtime.h @@ -43,11 +43,11 @@ #include "../3rdparty/tvm-ffi/src/ffi/function.cc" #include "../3rdparty/tvm-ffi/src/ffi/object.cc" #include "../3rdparty/tvm-ffi/src/ffi/tensor.cc" -#include "../src/runtime/cpu_device_api.cc" -#include "../src/runtime/device_api.cc" -#include "../src/runtime/logging.cc" -#include "../src/runtime/memory_scope.cc" -#include "../src/runtime/metadata.cc" +#include "../tirx/src/runtime/cpu_device_api.cc" +#include "../tirx/src/runtime/device_api.cc" +#include "../tirx/src/runtime/logging.cc" +#include "../tirx/src/runtime/memory_scope.cc" +#include "../tirx/src/runtime/metadata.cc" #include "../src/runtime/registry.cc" #include "../src/runtime/rpc/rpc_channel.cc" #include "../src/runtime/rpc/rpc_endpoint.cc" @@ -57,12 +57,12 @@ #include "../src/runtime/rpc/rpc_server_env.cc" #include "../src/runtime/rpc/rpc_session.cc" #include "../src/runtime/rpc/rpc_socket_impl.cc" -#include "../src/runtime/tensor.cc" -#include "../src/runtime/thread_pool.cc" -#include "../src/runtime/threading_backend.cc" -#include "../src/runtime/timer.cc" +#include "../tirx/src/runtime/tensor.cc" +#include "../tirx/src/runtime/thread_pool.cc" +#include "../tirx/src/runtime/threading_backend.cc" +#include "../tirx/src/runtime/timer.cc" #include "../src/runtime/vm/params.cc" -#include "../src/runtime/workspace_pool.cc" +#include "../tirx/src/runtime/workspace_pool.cc" #ifdef TVM_OPENCL_RUNTIME #include "../src/runtime/opencl/opencl_device_api.cc" diff --git a/include/tvm/runtime/vm/executable.h b/include/tvm/runtime/vm/executable.h index 5d4ff4aed3..6b1eecd1f2 100644 --- a/include/tvm/runtime/vm/executable.h +++ b/include/tvm/runtime/vm/executable.h @@ -85,7 +85,7 @@ struct VMFuncInfo { * The executable contains information (e.g. data in different memory regions) * to run in a virtual machine. */ -class TVM_RUNTIME_DLL VMExecutable : public ffi::ModuleObj { +class TVM_RUNTIME_EXTRA_DLL VMExecutable : public ffi::ModuleObj { public: /*! \brief Get the property of the runtime module .*/ int GetPropertyMask() const final { return ffi::Module::kBinarySerializable; }; diff --git a/include/tvm/runtime/vm/tensor_cache_support.h b/include/tvm/runtime/vm/tensor_cache_support.h index a02532124a..d5b1546e96 100644 --- a/include/tvm/runtime/vm/tensor_cache_support.h +++ b/include/tvm/runtime/vm/tensor_cache_support.h @@ -46,7 +46,7 @@ struct TensorCacheMetadata { * \param staging_buffer The buffer to be used to avoid extra OpenCL copies. Pass in a nullptr * in other cases */ - TVM_RUNTIME_DLL ffi::Tensor Load(Device device, const std::string* raw_data, + TVM_RUNTIME_EXTRA_DLL ffi::Tensor Load(Device device, const std::string* raw_data, ffi::Optional<ffi::Tensor>* staging_buffer = nullptr) const; /*! \brief Name of the parameter */ @@ -64,7 +64,7 @@ struct TensorCacheMetadata { }; /*! \brief Load a FileRecord into memory */ - TVM_RUNTIME_DLL ffi::Array<ffi::Tensor> Load( + TVM_RUNTIME_EXTRA_DLL ffi::Array<ffi::Tensor> Load( Device device, // const std::string& path_prefix, // std::string* raw_data_buffer, // @@ -85,9 +85,9 @@ struct TensorCacheMetadata { std::string path; /*! \brief Load the metadata from a specific directory */ - TVM_RUNTIME_DLL static TensorCacheMetadata Load(const std::string& path); + TVM_RUNTIME_EXTRA_DLL static TensorCacheMetadata Load(const std::string& path); /*! \brief Load the metadata from a given JSON string */ - TVM_RUNTIME_DLL static TensorCacheMetadata LoadFromStr(const std::string& json_str, + TVM_RUNTIME_EXTRA_DLL static TensorCacheMetadata LoadFromStr(const std::string& json_str, const std::string& path); }; diff --git a/src/runtime/extra/contrib/clml/clml_runtime.h b/src/runtime/extra/contrib/clml/clml_runtime.h index df0b19b276..986088aaa0 100644 --- a/src/runtime/extra/contrib/clml/clml_runtime.h +++ b/src/runtime/extra/contrib/clml/clml_runtime.h @@ -50,7 +50,7 @@ #ifdef TVM_GRAPH_EXECUTOR_CLML #include <CL/cl_qcom_ml_ops.h> -#include "../../../../backend/opencl/runtime/opencl_common.h" +#include "backend/opencl/runtime/opencl_common.h" #define CAT_I(a, b) a##b #define CAT(a, b) CAT_I(a, b) diff --git a/src/runtime/extra/contrib/cublas/cublas.cc b/src/runtime/extra/contrib/cublas/cublas.cc index 461bbee1f8..5c293fcd4b 100644 --- a/src/runtime/extra/contrib/cublas/cublas.cc +++ b/src/runtime/extra/contrib/cublas/cublas.cc @@ -27,7 +27,7 @@ #include <tvm/ffi/function.h> #include <tvm/ffi/reflection/registry.h> -#include "../../../../../3rdparty/compiler-rt/builtin_fp16.h" +#include "builtin_fp16.h" #include "../cblas/gemm_common.h" #include "cublas_utils.h" diff --git a/src/runtime/extra/contrib/hipblas/hipblas.cc b/src/runtime/extra/contrib/hipblas/hipblas.cc index 18e136b0fd..f1e8f890ca 100644 --- a/src/runtime/extra/contrib/hipblas/hipblas.cc +++ b/src/runtime/extra/contrib/hipblas/hipblas.cc @@ -26,7 +26,7 @@ #include <tvm/ffi/function.h> #include <tvm/ffi/reflection/registry.h> -#include "../../../../../3rdparty/compiler-rt/builtin_fp16.h" +#include "builtin_fp16.h" #include "../cblas/gemm_common.h" #include "hipblas_utils.h" diff --git a/src/runtime/extra/contrib/sort/sort.cc b/src/runtime/extra/contrib/sort/sort.cc index 6e3a99f935..8ef00c51f3 100644 --- a/src/runtime/extra/contrib/sort/sort.cc +++ b/src/runtime/extra/contrib/sort/sort.cc @@ -31,7 +31,7 @@ #include <algorithm> #include <vector> -#include "../../../../../3rdparty/compiler-rt/builtin_fp16.h" +#include "builtin_fp16.h" namespace tvm { namespace contrib { diff --git a/src/runtime/rpc/rpc_socket_impl.cc b/src/runtime/rpc/rpc_socket_impl.cc index 7f7486d26c..cff92a17eb 100644 --- a/src/runtime/rpc/rpc_socket_impl.cc +++ b/src/runtime/rpc/rpc_socket_impl.cc @@ -115,8 +115,8 @@ ffi::Module RPCClientConnect(std::string url, int port, std::string key, bool en return CreateRPCSessionModule(CreateClientSession(endpt)); } -// TVM_RUNTIME_DLL needed for MSVC -TVM_RUNTIME_DLL void RPCServerLoop(int sockfd) { +// TVM_RUNTIME_EXTRA_DLL needed for MSVC +TVM_RUNTIME_EXTRA_DLL void RPCServerLoop(int sockfd) { support::TCPSocket sock(static_cast<support::TCPSocket::SockType>(sockfd)); RPCEndpoint::Create(std::make_unique<SockChannel>(sock), "SockServerLoop", "")->ServerLoop(); } diff --git a/src/runtime/vm/tensor_cache_support.cc b/src/runtime/vm/tensor_cache_support.cc index d28b68bf7a..0c7559bcd6 100644 --- a/src/runtime/vm/tensor_cache_support.cc +++ b/src/runtime/vm/tensor_cache_support.cc @@ -109,7 +109,7 @@ TensorCacheMetadata TensorCacheMetadata::LoadFromStr(const std::string& json_str return result; } -TVM_RUNTIME_DLL TensorCacheMetadata TensorCacheMetadata::Load(const std::string& path) { +TVM_RUNTIME_EXTRA_DLL TensorCacheMetadata TensorCacheMetadata::Load(const std::string& path) { std::string json_str = support::ReadBytesFromFile(path + "/tensor-cache.json"); ffi::String err; json::Value json_info = json::Parse(json_str, &err); @@ -169,7 +169,7 @@ ffi::Tensor TensorCacheMetadata::FileRecord::ParamRecord::Load( return arr; } -TVM_RUNTIME_DLL ffi::Array<ffi::Tensor> TensorCacheMetadata::FileRecord::Load( +TVM_RUNTIME_EXTRA_DLL ffi::Array<ffi::Tensor> TensorCacheMetadata::FileRecord::Load( Device device, const std::string& path_prefix, // std::string* raw_data_buffer, // diff --git a/tirx/include/tvm/codegen/codegen.h b/tirx/include/tvm/codegen/codegen.h index 2261b18290..6e2925a9cf 100644 --- a/tirx/include/tvm/codegen/codegen.h +++ b/tirx/include/tvm/codegen/codegen.h @@ -41,7 +41,7 @@ namespace codegen { * \param target The target to be built. * \return The generated module. */ -TVM_DLL ffi::Module Build(IRModule mod, Target target); +TVM_TIRX_DLL ffi::Module Build(IRModule mod, Target target); /*! * \brief Pack imported device library to a C file. @@ -54,7 +54,7 @@ TVM_DLL ffi::Module Build(IRModule mod, Target target); * \param c_symbol_prefix Optional symbol prefix of the blob symbol. * \return cstr The C string representation of the file. */ -TVM_DLL std::string PackImportsToC(const ffi::Module& m, bool system_lib, +TVM_TIRX_DLL std::string PackImportsToC(const ffi::Module& m, bool system_lib, const std::string& c_symbol_prefix = ""); /*! @@ -69,7 +69,7 @@ TVM_DLL std::string PackImportsToC(const ffi::Module& m, bool system_lib, * \param file_name Output path; its extension selects the object format. * \param c_symbol_prefix Optional blob symbol prefix, valid only for system libraries. */ -TVM_DLL void PackImportsToObjectFile(const ffi::Module& mod, bool system_lib, +TVM_TIRX_DLL void PackImportsToObjectFile(const ffi::Module& mod, bool system_lib, const std::string& llvm_target_string, const std::string& file_name, const std::string& c_symbol_prefix = ""); diff --git a/tirx/include/tvm/codegen/intrin_rule.h b/tirx/include/tvm/codegen/intrin_rule.h index d3d196f7d7..4d0f866d88 100644 --- a/tirx/include/tvm/codegen/intrin_rule.h +++ b/tirx/include/tvm/codegen/intrin_rule.h @@ -101,14 +101,14 @@ inline PrimExpr DispatchPureExtern(const PrimExpr& e) { * The expansion clamps the input to [-4, 4] and evaluates numerator and * denominator polynomials using the input element width; other types are rejected. */ -TVM_DLL PrimExpr DispatchFastErf(const PrimExpr& e); +TVM_TIRX_DLL PrimExpr DispatchFastErf(const PrimExpr& e); /*! * \brief Lower a unary floating-point tanh call using sign-dependent exponential formulas. * The expansion avoids the large-positive-input overflow of the symmetric formula; * accuracy follows the floating-point arithmetic and exponential lowering in use. */ -TVM_DLL PrimExpr DispatchNumericallyStableTanh(const PrimExpr& e); +TVM_TIRX_DLL PrimExpr DispatchNumericallyStableTanh(const PrimExpr& e); } // namespace intrin } // namespace codegen diff --git a/tirx/include/tvm/runtime/base.h b/tirx/include/tvm/runtime/base.h index 09ec0917f5..aa9c527d38 100644 --- a/tirx/include/tvm/runtime/base.h +++ b/tirx/include/tvm/runtime/base.h @@ -32,7 +32,7 @@ // passes the setuptools_scm-resolved version through CMake). The literal below is the // fallback for a bare build with no override. #ifndef TVM_VERSION -#define TVM_VERSION "0.28.dev0" +#define TVM_VERSION "0.1.0a0" #endif // The compiler, core runtime and runtime-extra libraries expose independent @@ -77,12 +77,19 @@ #define TVM_DLL_EXPORT __attribute__((visibility("default"))) #endif -// Core IR, TIRx and shared compiler infrastructure are currently linked into -// libtvm_compiler. Keep their ownership explicit while inheriting the compiler -// export policy, including downstream TVM_DLL overrides. Embedders may override -// TVM_TIRX_DLL independently. +// Core IR, TIRx and shared compiler infrastructure live in libtvm_tirx. #ifndef TVM_TIRX_DLL -#define TVM_TIRX_DLL TVM_DLL +#if defined(__EMSCRIPTEN__) +#define TVM_TIRX_DLL EMSCRIPTEN_KEEPALIVE +#elif defined(_MSC_VER) +#ifdef TVM_TIRX_EXPORTS +#define TVM_TIRX_DLL __declspec(dllexport) +#else +#define TVM_TIRX_DLL __declspec(dllimport) +#endif +#else +#define TVM_TIRX_DLL __attribute__((visibility("default"))) +#endif #endif // --- TVM_RUNTIME_DLL family (libtvm_runtime) --- diff --git a/web/Makefile b/web/Makefile index 7f802b5a21..12ab22f471 100644 --- a/web/Makefile +++ b/web/Makefile @@ -17,10 +17,10 @@ TVM_ROOT=$(realpath $(shell dirname $(firstword $(MAKEFILE_LIST))))/../ -INCLUDE_FLAGS = -I$(TVM_ROOT) -I$(TVM_ROOT)/include\ +INCLUDE_FLAGS = -I$(TVM_ROOT) -I$(TVM_ROOT)/include -I$(TVM_ROOT)/tirx/include\ -I$(TVM_ROOT)/3rdparty/tvm-ffi/include\ -I$(TVM_ROOT)/3rdparty/tvm-ffi/3rdparty/dlpack/include\ - -I$(TVM_ROOT)/3rdparty/compiler-rt + -I$(TVM_ROOT)/tirx/3rdparty/compiler-rt .PHONY: clean all rmtypedep preparetest diff --git a/web/emcc/wasm_runtime.cc b/web/emcc/wasm_runtime.cc index 07a52235ef..02948f145e 100644 --- a/web/emcc/wasm_runtime.cc +++ b/web/emcc/wasm_runtime.cc @@ -35,21 +35,21 @@ #include <cstring> #include <limits> -#include "src/runtime/cpu_device_api.cc" -#include "src/runtime/device_api.cc" +#include "tirx/src/runtime/cpu_device_api.cc" +#include "tirx/src/runtime/device_api.cc" #include "src/runtime/extra/contrib/sort/sort.cc" -#include "src/runtime/logging.cc" -#include "src/runtime/metadata.cc" +#include "tirx/src/runtime/logging.cc" +#include "tirx/src/runtime/metadata.cc" #include "src/runtime/rpc/rpc_channel.cc" #include "src/runtime/rpc/rpc_endpoint.cc" #include "src/runtime/rpc/rpc_event_impl.cc" #include "src/runtime/rpc/rpc_local_session.cc" #include "src/runtime/rpc/rpc_module.cc" #include "src/runtime/rpc/rpc_session.cc" -#include "src/runtime/tensor.cc" -#include "src/runtime/timer.cc" +#include "tirx/src/runtime/tensor.cc" +#include "tirx/src/runtime/timer.cc" #include "src/runtime/vm/params.cc" -#include "src/runtime/workspace_pool.cc" +#include "tirx/src/runtime/workspace_pool.cc" // relax setup #include "3rdparty/tvm-ffi/src/ffi/backtrace.cc" #include "3rdparty/tvm-ffi/src/ffi/container.cc" @@ -69,7 +69,7 @@ #include "3rdparty/tvm-ffi/src/ffi/tensor.cc" #include "3rdparty/tvm-ffi/src/ffi/testing/testing.cc" // Enum registration requires the FFI type-attribute registry above. -#include "src/runtime/memory_scope.cc" +#include "tirx/src/runtime/memory_scope.cc" #include "src/runtime/vm/attn_backend.cc" #include "src/runtime/vm/builtin.cc" #include "src/runtime/vm/bytecode.cc" diff --git a/web/emcc/webgpu_runtime.cc b/web/emcc/webgpu_runtime.cc index 780ac8824e..fb93db920c 100644 --- a/web/emcc/webgpu_runtime.cc +++ b/web/emcc/webgpu_runtime.cc @@ -38,7 +38,7 @@ #include <mutex> #include <string> -#include "../../src/runtime/metadata.h" +#include "../../tirx/src/runtime/metadata.h" namespace tvm { namespace runtime {
