This is an automated email from the ASF dual-hosted git repository. tqchen pushed a commit to branch refactor-s2 in repository https://gitbox.apache.org/repos/asf/tvm.git
commit b68e4b239f3f2a110832f05ae8155573cb337943 Author: tqchen <[email protected]> AuthorDate: Sat May 3 09:29:44 2025 -0400 Followup testcase fixes --- ffi/src/ffi/traceback_win.cc | 15 +++++------ ffi/tests/cpp/test_tuple.cc | 2 +- src/arith/analyzer.cc | 5 ++-- src/relax/backend/contrib/clml/codegen.cc | 2 +- src/relax/backend/contrib/cudnn/codegen.cc | 2 +- src/runtime/contrib/cudnn/conv_backward.cc | 36 ++++++++++++------------- src/runtime/contrib/cudnn/conv_forward.cc | 30 ++++++++++----------- src/runtime/contrib/cudnn/cudnn_json_runtime.cc | 2 +- src/runtime/contrib/cudnn/cudnn_utils.cc | 2 +- src/runtime/contrib/dnnl/dnnl.cc | 5 ++-- src/runtime/contrib/tflite/tflite_runtime.cc | 9 ++++--- src/topi/transform.cc | 5 ++-- tests/cpp-runtime/hexagon/run_all_tests.cc | 2 +- tests/cpp-runtime/hexagon/run_unit_tests.cc | 2 +- 14 files changed, 61 insertions(+), 58 deletions(-) diff --git a/ffi/src/ffi/traceback_win.cc b/ffi/src/ffi/traceback_win.cc index 1de4c88681..166b7eb242 100644 --- a/ffi/src/ffi/traceback_win.cc +++ b/ffi/src/ffi/traceback_win.cc @@ -23,23 +23,22 @@ */ #ifdef _MSC_VER +#include <dbghelp.h> +#include <windows.h> +#pragma comment(lib, "DbgHelp.lib") + #include <tvm/ffi/c_api.h> #include <tvm/ffi/error.h> +#include <iostream> +#include <vector> + #include "./traceback.h" namespace tvm { namespace ffi { namespace { -#include <dbghelp.h> -#include <windows.h> - -#include <iostream> -#include <vector> - -#pragma comment(lib, "DbgHelp.lib") - std::string Traceback() { TracebackStorage traceback; HANDLE process = GetCurrentProcess(); diff --git a/ffi/tests/cpp/test_tuple.cc b/ffi/tests/cpp/test_tuple.cc index 1fe9ca74e8..02a258522c 100644 --- a/ffi/tests/cpp/test_tuple.cc +++ b/ffi/tests/cpp/test_tuple.cc @@ -78,7 +78,7 @@ TEST(Tuple, AnyConvert) { Any any0 = view0; // trigger a copy due to implict conversion - auto tuple2 = any0.cast<Tuple<TPrimExpr, TInt>>() ; + auto tuple2 = any0.cast<Tuple<TPrimExpr, TInt>>(); EXPECT_TRUE(!tuple0.same_as(tuple2)); EXPECT_EQ(tuple2.get<0>()->value, 1); EXPECT_EQ(tuple2.get<1>()->value, 2); diff --git a/src/arith/analyzer.cc b/src/arith/analyzer.cc index 3304ce7959..1edbaed08b 100644 --- a/src/arith/analyzer.cc +++ b/src/arith/analyzer.cc @@ -312,8 +312,9 @@ TVM_REGISTER_GLOBAL("arith.CreateAnalyzer").set_body_packed([](TVMArgs args, TVM *ret = self->canonical_simplify(args[0].cast<PrimExpr>()); }); } else if (name == "int_set") { - return PackedFunc( - [self](TVMArgs args, TVMRetValue* ret) { *ret = self->int_set(args[0].cast<Var>()); }); + return PackedFunc([self](TVMArgs args, TVMRetValue* ret) { + *ret = self->int_set(args[0].cast<PrimExpr>(), args[1].cast<Map<Var, IntSet>>()); + }); } else if (name == "bind") { return PackedFunc([self](TVMArgs args, TVMRetValue* ret) { if (auto opt_range = args[1].as<Range>()) { diff --git a/src/relax/backend/contrib/clml/codegen.cc b/src/relax/backend/contrib/clml/codegen.cc index 7d3d243fc9..3c87079f99 100644 --- a/src/relax/backend/contrib/clml/codegen.cc +++ b/src/relax/backend/contrib/clml/codegen.cc @@ -317,7 +317,7 @@ Array<runtime::Module> OpenCLMLCompiler(Array<Function> functions, Map<String, A const auto pf = tvm::ffi::Function::GetGlobalRequired("runtime.clml_runtime_create"); std::string func_name = GetExtSymbol(func); VLOG(1) << "Creating clml runtime::Module for '" << func_name << "'"; - compiled_functions.push_back(pf(func_name, graph_json, constant_names)); + compiled_functions.push_back(pf(func_name, graph_json, constant_names).cast<runtime::Module>()); } return compiled_functions; } diff --git a/src/relax/backend/contrib/cudnn/codegen.cc b/src/relax/backend/contrib/cudnn/codegen.cc index e183dadc26..43933c7d2a 100644 --- a/src/relax/backend/contrib/cudnn/codegen.cc +++ b/src/relax/backend/contrib/cudnn/codegen.cc @@ -143,7 +143,7 @@ Array<runtime::Module> cuDNNCompiler(Array<Function> functions, Map<String, ffi: auto constant_names = serializer.GetConstantNames(); const auto pf = tvm::ffi::Function::GetGlobalRequired("runtime.cuDNNJSONRuntimeCreate"); auto func_name = GetExtSymbol(func); - compiled_functions.push_back(pf(func_name, graph_json, constant_names)); + compiled_functions.push_back(pf(func_name, graph_json, constant_names).cast<runtime::Module>()); } return compiled_functions; diff --git a/src/runtime/contrib/cudnn/conv_backward.cc b/src/runtime/contrib/cudnn/conv_backward.cc index f387183c33..be5ebdfbbf 100644 --- a/src/runtime/contrib/cudnn/conv_backward.cc +++ b/src/runtime/contrib/cudnn/conv_backward.cc @@ -192,9 +192,9 @@ TVM_REGISTER_GLOBAL("tvm.contrib.cudnn.conv2d.backward_data") int algo = args[2].cast<int>(); int pad_v[2], stride_v[2], dilation_v[2]; for (int i = 0; i < 2; i++) { - pad_v[i] = args[3 + i]; - stride_v[i] = args[5 + i]; - dilation_v[i] = args[7 + i]; + pad_v[i] = args[3 + i].cast<int>(); + stride_v[i] = args[5 + i].cast<int>(); + dilation_v[i] = args[7 + i].cast<int>(); } auto dy = args[9].cast<DLTensor*>(); auto w = args[10].cast<DLTensor*>(); @@ -210,12 +210,12 @@ TVM_REGISTER_GLOBAL("tvm.contrib.cudnn.conv.backward_data_find_algo") .set_body_packed([](TVMArgs args, TVMRetValue* ret) { int format = args[0].cast<int>(); int dims = args[1].cast<int>(); - int* pad = static_cast<int*>(static_cast<void*>(args[2])); - int* stride = static_cast<int*>(static_cast<void*>(args[3])); - int* dilation = static_cast<int*>(static_cast<void*>(args[4])); - int* dy_dim = static_cast<int*>(static_cast<void*>(args[5])); - int* w_dim = static_cast<int*>(static_cast<void*>(args[6])); - int* dx_dim = static_cast<int*>(static_cast<void*>(args[7])); + int* pad = static_cast<int*>(args[2].cast<void*>()); + int* stride = static_cast<int*>(args[3].cast<void*>()); + int* dilation = static_cast<int*>(args[4].cast<void*>()); + int* dy_dim = static_cast<int*>(args[5].cast<void*>()); + int* w_dim = static_cast<int*>(args[6].cast<void*>()); + int* dx_dim = static_cast<int*>(args[7].cast<void*>()); auto data_dtype = args[8].cast<std::string>(); auto conv_dtype = args[9].cast<std::string>(); int groups = args[10].cast<int>(); @@ -232,9 +232,9 @@ TVM_REGISTER_GLOBAL("tvm.contrib.cudnn.conv2d.backward_filter") int algo = args[2].cast<int>(); int pad_v[2], stride_v[2], dilation_v[2]; for (int i = 0; i < 2; i++) { - pad_v[i] = args[3 + i]; - stride_v[i] = args[5 + i]; - dilation_v[i] = args[7 + i]; + pad_v[i] = args[3 + i].cast<int>(); + stride_v[i] = args[5 + i].cast<int>(); + dilation_v[i] = args[7 + i].cast<int>(); } auto dy = args[9].cast<DLTensor*>(); auto x = args[10].cast<DLTensor*>(); @@ -250,12 +250,12 @@ TVM_REGISTER_GLOBAL("tvm.contrib.cudnn.conv.backward_filter_find_algo") .set_body_packed([](TVMArgs args, TVMRetValue* ret) { int format = args[0].cast<int>(); int dims = args[1].cast<int>(); - int* pad = static_cast<int*>(static_cast<void*>(args[2])); - int* stride = static_cast<int*>(static_cast<void*>(args[3])); - int* dilation = static_cast<int*>(static_cast<void*>(args[4])); - int* dy_dim = static_cast<int*>(static_cast<void*>(args[5])); - int* x_dim = static_cast<int*>(static_cast<void*>(args[6])); - int* dw_dim = static_cast<int*>(static_cast<void*>(args[7])); + int* pad = static_cast<int*>(args[2].cast<void*>()); + int* stride = static_cast<int*>(args[3].cast<void*>()); + int* dilation = static_cast<int*>(args[4].cast<void*>()); + int* dy_dim = static_cast<int*>(args[5].cast<void*>()); + int* x_dim = static_cast<int*>(args[6].cast<void*>()); + int* dw_dim = static_cast<int*>(args[7].cast<void*>()); auto data_dtype = args[8].cast<std::string>(); auto conv_dtype = args[9].cast<std::string>(); int groups = args[10].cast<int>(); diff --git a/src/runtime/contrib/cudnn/conv_forward.cc b/src/runtime/contrib/cudnn/conv_forward.cc index c330162729..1c2e815110 100644 --- a/src/runtime/contrib/cudnn/conv_forward.cc +++ b/src/runtime/contrib/cudnn/conv_forward.cc @@ -160,9 +160,9 @@ TVM_REGISTER_GLOBAL("tvm.contrib.cudnn.conv2d.forward") int algo = args[2].cast<int>(); int pad_v[2], stride_v[2], dilation_v[2]; for (int i = 0; i < 2; i++) { - pad_v[i] = args[3 + i]; - stride_v[i] = args[5 + i]; - dilation_v[i] = args[7 + i]; + pad_v[i] = args[3 + i].cast<int>(); + stride_v[i] = args[5 + i].cast<int>(); + dilation_v[i] = args[7 + i].cast<int>(); } auto x = args[9].cast<DLTensor*>(); auto w = args[10].cast<DLTensor*>(); @@ -181,9 +181,9 @@ TVM_REGISTER_GLOBAL("tvm.contrib.cudnn.conv2d+bias+act.forward") int algo = args[2].cast<int>(); int pad_v[2], stride_v[2], dilation_v[2]; for (int i = 0; i < 2; i++) { - pad_v[i] = args[3 + i]; - stride_v[i] = args[5 + i]; - dilation_v[i] = args[7 + i]; + pad_v[i] = args[3 + i].cast<int>(); + stride_v[i] = args[5 + i].cast<int>(); + dilation_v[i] = args[7 + i].cast<int>(); } int act = args[9].cast<int>(); double coef = args[10].cast<double>(); @@ -205,9 +205,9 @@ TVM_REGISTER_GLOBAL("tvm.contrib.cudnn.conv3d.forward") int algo = args[2].cast<int>(); int pad_v[3], stride_v[3], dilation_v[3]; for (int i = 0; i < 3; i++) { - pad_v[i] = args[3 + i]; - stride_v[i] = args[6 + i]; - dilation_v[i] = args[9 + i]; + pad_v[i] = args[3 + i].cast<int>(); + stride_v[i] = args[6 + i].cast<int>(); + dilation_v[i] = args[9 + i].cast<int>(); } auto x = args[12].cast<DLTensor*>(); auto w = args[13].cast<DLTensor*>(); @@ -223,12 +223,12 @@ TVM_REGISTER_GLOBAL("tvm.contrib.cudnn.conv.forward_find_algo") .set_body_packed([](TVMArgs args, TVMRetValue* ret) { int format = args[0].cast<int>(); int dims = args[1].cast<int>(); - int* pad = static_cast<int*>(static_cast<void*>(args[2])); - int* stride = static_cast<int*>(static_cast<void*>(args[3])); - int* dilation = static_cast<int*>(static_cast<void*>(args[4])); - int* x_dim = static_cast<int*>(static_cast<void*>(args[5])); - int* w_dim = static_cast<int*>(static_cast<void*>(args[6])); - int* y_dim = static_cast<int*>(static_cast<void*>(args[7])); + int* pad = static_cast<int*>(args[2].cast<void*>()); + int* stride = static_cast<int*>(args[3].cast<void*>()); + int* dilation = static_cast<int*>(args[4].cast<void*>()); + int* x_dim = static_cast<int*>(args[5].cast<void*>()); + int* w_dim = static_cast<int*>(args[6].cast<void*>()); + int* y_dim = static_cast<int*>(args[7].cast<void*>()); auto data_dtype = args[8].cast<std::string>(); auto conv_dtype = args[9].cast<std::string>(); int groups = args[10].cast<int>(); diff --git a/src/runtime/contrib/cudnn/cudnn_json_runtime.cc b/src/runtime/contrib/cudnn/cudnn_json_runtime.cc index 3f4b659275..3811a0788f 100644 --- a/src/runtime/contrib/cudnn/cudnn_json_runtime.cc +++ b/src/runtime/contrib/cudnn/cudnn_json_runtime.cc @@ -156,7 +156,7 @@ class cuDNNJSONRuntime : public JSONRuntimeBase { input_dims.data(), kernel_dims.data(), output_dims.data(), conv_dtype, conv_dtype, false, &best_algo); - int algo = best_algo.operator int(); + int algo = best_algo.cast<int>(); std::function<void()> op_exec = [=]() { auto stream = static_cast<cudaStream_t>(GetCUDAStream()); CUDNN_CALL(cudnnSetStream(entry_ptr->handle, stream)); diff --git a/src/runtime/contrib/cudnn/cudnn_utils.cc b/src/runtime/contrib/cudnn/cudnn_utils.cc index fa27c55211..191fb9af32 100644 --- a/src/runtime/contrib/cudnn/cudnn_utils.cc +++ b/src/runtime/contrib/cudnn/cudnn_utils.cc @@ -102,7 +102,7 @@ const void* CuDNNDataType::GetConst<1>(cudnnDataType_t type) { CuDNNThreadEntry::CuDNNThreadEntry() { auto stream = runtime::CUDAThreadEntry::ThreadLocal()->stream; auto func = tvm::ffi::Function::GetGlobalRequired("device_api.cuda"); - void* ret = func(); + void* ret = func().cast<void*>(); cuda_api = static_cast<runtime::DeviceAPI*>(ret); // If no CuDNN-capable device is present, allow the CuDNNThreadEntry diff --git a/src/runtime/contrib/dnnl/dnnl.cc b/src/runtime/contrib/dnnl/dnnl.cc index 822e8ac376..7fca0d6b26 100644 --- a/src/runtime/contrib/dnnl/dnnl.cc +++ b/src/runtime/contrib/dnnl/dnnl.cc @@ -352,8 +352,9 @@ TVM_REGISTER_GLOBAL("tvm.contrib.dnnl.conv2d").set_body_packed([](TVMArgs args, auto input = args[0].cast<DLTensor*>(); auto weights = args[1].cast<DLTensor*>(); auto output = args[2].cast<DLTensor*>(); - int p_Ph0_ = args[3], p_Pw0_ = args[4], p_Ph1_ = args[5], p_Pw1_ = args[6], p_Sh_ = args[7], - p_Sw_ = args[8], p_G_ = args[9]; + int p_Ph0_ = args[3].cast<int>(), p_Pw0_ = args[4].cast<int>(), p_Ph1_ = args[5].cast<int>(), + p_Pw1_ = args[6].cast<int>(), p_Sh_ = args[7].cast<int>(), p_Sw_ = args[8].cast<int>(), + p_G_ = args[9].cast<int>(); bool channel_last = args[10].cast<bool>(); bool pre_cast = args[11].cast<bool>(); bool post_cast = args[12].cast<bool>(); diff --git a/src/runtime/contrib/tflite/tflite_runtime.cc b/src/runtime/contrib/tflite/tflite_runtime.cc index 82257e2a82..09669ac370 100644 --- a/src/runtime/contrib/tflite/tflite_runtime.cc +++ b/src/runtime/contrib/tflite/tflite_runtime.cc @@ -156,11 +156,12 @@ PackedFunc TFLiteRuntime::GetFunction(const String& name, const ObjectPtr<Object return PackedFunc([sptr_to_self, this](TVMArgs args, TVMRetValue* rv) { int in_idx = args[0].cast<int>(); ICHECK_GE(in_idx, 0); - this->SetInput(in_idx, args[1]); + this->SetInput(in_idx, args[1].cast<DLTensor*>()); }); } else if (name == "get_output") { - return PackedFunc( - [sptr_to_self, this](TVMArgs args, TVMRetValue* rv) { *rv = this->GetOutput(args[0]); }); + return PackedFunc([sptr_to_self, this](TVMArgs args, TVMRetValue* rv) { + *rv = this->GetOutput(args[0].cast<int>()); + }); } else if (name == "invoke") { return PackedFunc([sptr_to_self, this](TVMArgs args, TVMRetValue* rv) { this->Invoke(); }); } else if (name == "set_num_threads") { @@ -181,7 +182,7 @@ Module TFLiteRuntimeCreate(const std::string& tflite_model_bytes, Device dev) { } TVM_REGISTER_GLOBAL("tvm.tflite_runtime.create").set_body_packed([](TVMArgs args, TVMRetValue* rv) { - *rv = TFLiteRuntimeCreate(args[0], args[1]); + *rv = TFLiteRuntimeCreate(args[0].cast<std::string>(), args[1].cast<Device>()); }); TVM_REGISTER_GLOBAL("target.runtime.tflite").set_body_typed(TFLiteRuntimeCreate); diff --git a/src/topi/transform.cc b/src/topi/transform.cc index fdd2af0573..2ab39be95c 100644 --- a/src/topi/transform.cc +++ b/src/topi/transform.cc @@ -42,7 +42,7 @@ TVM_REGISTER_GLOBAL("topi.expand_dims").set_body_packed([](TVMArgs args, TVMRetV }); TVM_REGISTER_GLOBAL("topi.transpose").set_body_packed([](TVMArgs args, TVMRetValue* rv) { - *rv = transpose(args[0].cast<te::Tensor>(), args[1].cast<Array<Integer>>()); + *rv = transpose(args[0].cast<te::Tensor>(), args[1].cast<Optional<Array<Integer>>>()); }); TVM_REGISTER_GLOBAL("topi.flip").set_body_packed([](TVMArgs args, TVMRetValue* rv) { @@ -108,7 +108,8 @@ TVM_REGISTER_GLOBAL("topi.take").set_body_packed([](TVMArgs args, TVMRetValue* r int batch_dims = args[2].cast<int>(); int axis = args[3].cast<int>(); auto mode = args[4].cast<std::string>(); - *rv = take(args[0].cast<te::Tensor>(), args[1].cast<te::Tensor>(), batch_dims, axis, mode); + *rv = take(args[0].cast<te::Tensor>(), args[1].cast<ffi::Variant<te::Tensor, PrimExpr>>(), + batch_dims, axis, mode); } }); diff --git a/tests/cpp-runtime/hexagon/run_all_tests.cc b/tests/cpp-runtime/hexagon/run_all_tests.cc index 5187277dcb..0f9c1cb7b5 100644 --- a/tests/cpp-runtime/hexagon/run_all_tests.cc +++ b/tests/cpp-runtime/hexagon/run_all_tests.cc @@ -41,7 +41,7 @@ namespace hexagon { TVM_REGISTER_GLOBAL("hexagon.run_all_tests").set_body_packed([](TVMArgs args, TVMRetValue* rv) { // gtest args are passed into this packed func as a singular string // split gtest args using <space> delimiter and build argument vector - std::vector<std::string> parsed_args = tvm::support::Split(args[0], ' '); + std::vector<std::string> parsed_args = tvm::support::Split(args[0].cast<std::string>(), ' '); std::vector<char*> argv; // add executable name diff --git a/tests/cpp-runtime/hexagon/run_unit_tests.cc b/tests/cpp-runtime/hexagon/run_unit_tests.cc index 37a521457a..59059fc803 100644 --- a/tests/cpp-runtime/hexagon/run_unit_tests.cc +++ b/tests/cpp-runtime/hexagon/run_unit_tests.cc @@ -83,7 +83,7 @@ class GtestPrinter : public testing::EmptyTestEventListener { TVM_REGISTER_GLOBAL("hexagon.run_unit_tests").set_body_packed([](TVMArgs args, TVMRetValue* rv) { // gtest args are passed into this packed func as a singular string // split gtest args using <space> delimiter and build argument vector - std::vector<std::string> parsed_args = tvm::support::Split(args[0], ' '); + std::vector<std::string> parsed_args = tvm::support::Split(args[0].cast<std::string>(), ' '); std::vector<char*> argv; // add executable name
