This is an automated email from the ASF dual-hosted git repository.
yongwww 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 a21e0df4b3 [FFI][ABI] Bump version ffi to latest (#18332)
a21e0df4b3 is described below
commit a21e0df4b3e7a364d199f79d60994cc6154c8662
Author: Tianqi Chen <[email protected]>
AuthorDate: Tue Sep 23 22:50:16 2025 -0400
[FFI][ABI] Bump version ffi to latest (#18332)
This PR bumps the version of tvm-ffi to latest, which involves an ABI
change.
---
3rdparty/tvm-ffi | 2 +-
apps/android_rpc/app/src/main/jni/tvm_runtime.h | 2 +-
include/tvm/runtime/logging.h | 2 +-
python/tvm/relax/transform/transform.py | 2 +-
src/target/target.cc | 18 +++++++++---------
src/tir/schedule/error.h | 2 +-
web/emcc/wasm_runtime.cc | 2 +-
7 files changed, 15 insertions(+), 15 deletions(-)
diff --git a/3rdparty/tvm-ffi b/3rdparty/tvm-ffi
index 3e07df45af..b03cc7845a 160000
--- a/3rdparty/tvm-ffi
+++ b/3rdparty/tvm-ffi
@@ -1 +1 @@
-Subproject commit 3e07df45afbc8ea968ef03c34d84dc348ba6dfb0
+Subproject commit b03cc7845ae92060881e14c4f50a4b6da4d9f982
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 6bda78cef0..a522f0e996 100644
--- a/apps/android_rpc/app/src/main/jni/tvm_runtime.h
+++ b/apps/android_rpc/app/src/main/jni/tvm_runtime.h
@@ -34,6 +34,7 @@
#define TVM_LOG_CUSTOMIZE 1
#define TVM_FFI_USE_LIBBACKTRACE 0
+#include "../3rdparty/tvm-ffi/src/ffi/backtrace.cc"
#include "../3rdparty/tvm-ffi/src/ffi/container.cc"
#include "../3rdparty/tvm-ffi/src/ffi/dtype.cc"
#include "../3rdparty/tvm-ffi/src/ffi/error.cc"
@@ -45,7 +46,6 @@
#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 "../3rdparty/tvm-ffi/src/ffi/traceback.cc"
#include "../src/runtime/cpu_device_api.cc"
#include "../src/runtime/device_api.cc"
#include "../src/runtime/file_utils.cc"
diff --git a/include/tvm/runtime/logging.h b/include/tvm/runtime/logging.h
index e9482a9907..f39a07b3d9 100644
--- a/include/tvm/runtime/logging.h
+++ b/include/tvm/runtime/logging.h
@@ -206,7 +206,7 @@ class InternalError : public Error {
*/
InternalError(std::string file, int lineno, std::string message)
: Error(DetectKind(message), DetectMessage(message),
- TVMFFITraceback(file.c_str(), lineno, "", 0)) {}
+ TVMFFIBacktrace(file.c_str(), lineno, "", 0)) {}
private:
// try to detect the kind of error from the message when the error type
diff --git a/python/tvm/relax/transform/transform.py
b/python/tvm/relax/transform/transform.py
index c945732a6d..b3c4e71101 100644
--- a/python/tvm/relax/transform/transform.py
+++ b/python/tvm/relax/transform/transform.py
@@ -219,7 +219,7 @@ def Gradient(
# return value: (orig_return_values, tuple(adjoints))
return ((lv1, lv2), (x_adjoint, y_adjoint))
"""
- if require_grads is not None and not isinstance(require_grads, list):
+ if require_grads is not None and not isinstance(require_grads, (list,
tvm_ffi.Array)):
require_grads = [require_grads]
return _ffi_api.Gradient(func_name, require_grads, target_index) # type:
ignore
diff --git a/src/target/target.cc b/src/target/target.cc
index c23b8bd757..23ee76fc89 100644
--- a/src/target/target.cc
+++ b/src/target/target.cc
@@ -404,7 +404,7 @@ Any TargetInternal::ParseType(const std::string& str, const
TargetKindNode::Valu
result.push_back(parsed);
} catch (const Error& e) {
std::string index = "[" + std::to_string(result.size()) + "]";
- throw Error(e.kind(), e.message() + index, e.traceback());
+ throw Error(e.kind(), e.message() + index, e.backtrace());
}
}
return ffi::Array<ObjectRef>(result);
@@ -450,7 +450,7 @@ Any TargetInternal::ParseType(const Any& obj, const
TargetKindNode::ValueTypeInf
result.push_back(TargetInternal::ParseType(e, *info.key));
} catch (const Error& e) {
std::string index = '[' + std::to_string(result.size()) + ']';
- throw Error(e.kind(), index + e.message(), e.traceback());
+ throw Error(e.kind(), index + e.message(), e.backtrace());
}
}
return ffi::Array<Any>(result);
@@ -463,14 +463,14 @@ Any TargetInternal::ParseType(const Any& obj, const
TargetKindNode::ValueTypeInf
try {
key = TargetInternal::ParseType(kv.first, *info.key);
} catch (const Error& e) {
- throw Error(e.kind(), e.message() + ", during parse key of map",
e.traceback());
+ throw Error(e.kind(), e.message() + ", during parse key of map",
e.backtrace());
}
try {
val = TargetInternal::ParseType(kv.second, *info.val);
} catch (const Error& e) {
std::ostringstream os;
os << ", during parseing value of map[\"" << key << "\"]";
- throw Error(e.kind(), e.message() + os.str(), e.traceback());
+ throw Error(e.kind(), e.message() + os.str(), e.backtrace());
}
result[key] = val;
}
@@ -579,7 +579,7 @@ Target::Target(const ffi::String&
tag_or_config_or_target_str) {
} catch (const Error& e) {
std::ostringstream os;
os << ". Target creation from string failed: " <<
tag_or_config_or_target_str;
- throw Error("ValueError", e.message() + os.str(), e.traceback());
+ throw Error("ValueError", e.message() + os.str(), e.backtrace());
}
data_ = std::move(target);
}
@@ -591,7 +591,7 @@ Target::Target(const ffi::Map<ffi::String, ffi::Any>&
config) {
} catch (const Error& e) {
std::ostringstream os;
os << ". Target creation from config dict failed: " << config;
- throw Error("ValueError", std::string(e.message()) + os.str(),
e.traceback());
+ throw Error("ValueError", std::string(e.message()) + os.str(),
e.backtrace());
}
data_ = std::move(target);
}
@@ -810,7 +810,7 @@ ObjectPtr<TargetNode> TargetInternal::FromRawString(const
ffi::String& target_st
iter += ParseKVPair(RemovePrefixDashes(options[iter]), s_next, &key,
&value);
} catch (const Error& e) {
throw Error(e.kind(), e.message() + ", during parsing target `" +
target_str + "`",
- e.traceback());
+ e.backtrace());
}
try {
// check if `key` has been used
@@ -820,7 +820,7 @@ ObjectPtr<TargetNode> TargetInternal::FromRawString(const
ffi::String& target_st
config[key] = TargetInternal::ParseType(value,
TargetInternal::FindTypeInfo(kind, key));
} catch (const Error& e) {
throw Error(e.kind(), std::string(e.message()) + ", during parsing
target[\"" + key + "\"]",
- e.traceback());
+ e.backtrace());
}
}
return TargetInternal::FromConfig(config);
@@ -927,7 +927,7 @@ ObjectPtr<TargetNode>
TargetInternal::FromConfig(ffi::Map<ffi::String, ffi::Any>
attrs[key] = TargetInternal::ParseType(value, info);
} catch (const Error& e) {
throw Error(e.kind(), std::string(e.message()) + ", during parsing
target[\"" + key + "\"]",
- e.traceback());
+ e.backtrace());
}
}
diff --git a/src/tir/schedule/error.h b/src/tir/schedule/error.h
index 093e5519db..39c9cc203f 100644
--- a/src/tir/schedule/error.h
+++ b/src/tir/schedule/error.h
@@ -31,7 +31,7 @@ class ScheduleError : public tvm::runtime::Error {
public:
/*! \brief Base constructor */
ScheduleError()
- : tvm::runtime::Error("ScheduleError", "", TVMFFITraceback(nullptr, 0,
nullptr, 0)) {}
+ : tvm::runtime::Error("ScheduleError", "", TVMFFIBacktrace(nullptr, 0,
nullptr, 0)) {}
/*! \brief The error occurred in this IRModule */
virtual IRModule mod() const = 0;
/*! \brief The locations of interest that we want to point out */
diff --git a/web/emcc/wasm_runtime.cc b/web/emcc/wasm_runtime.cc
index 35f3a4dc4d..31547269e1 100644
--- a/web/emcc/wasm_runtime.cc
+++ b/web/emcc/wasm_runtime.cc
@@ -48,6 +48,7 @@
#include "src/runtime/tensor.cc"
#include "src/runtime/workspace_pool.cc"
// relax setup
+#include "3rdparty/tvm-ffi/src/ffi/backtrace.cc"
#include "3rdparty/tvm-ffi/src/ffi/container.cc"
#include "3rdparty/tvm-ffi/src/ffi/dtype.cc"
#include "3rdparty/tvm-ffi/src/ffi/error.cc"
@@ -58,7 +59,6 @@
#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 "3rdparty/tvm-ffi/src/ffi/traceback.cc"
#include "src/runtime/memory/memory_manager.cc"
#include "src/runtime/nvtx.cc"
#include "src/runtime/vm/attn_backend.cc"