I have created a custom datatype in a model that I can compile and run. So far so good.
Now I would like to optimize the execution of this model by using the AutoScheduler. However, each of the child processes that are started by the Autoscheduler errors out with the following error:
No: 31 GFLOPS: 0.00 / 0.00 results: MeasureResult(error_type:CompileHostError, error_msg:TVMError('Traceback (most recent call last):
File "/home/victor/hpc/tvm-build/tvmgpucopy/python/tvm/exec/popen_worker.py", line 87, in main
result = fn(*args, **kwargs)
File "/home/victor/hpc/tvm-build/tvmgpucopy/python/tvm/auto_scheduler/measure.py", line 660, in local_build_worker
return _local_build_worker(inp, build_func, verbose)
File "/home/victor/hpc/tvm-build/tvmgpucopy/python/tvm/auto_scheduler/measure.py", line 601, in _local_build_worker
inp = MeasureInput.deserialize(inp_serialized)
File "/home/victor/hpc/tvm-build/tvmgpucopy/python/tvm/auto_scheduler/measure.py", line 148, in deserialize
deserialize_workload_registry_entry(data[1])
File "/home/victor/hpc/tvm-build/tvmgpucopy/python/tvm/auto_scheduler/workload_registry.py", line 249, in deserialize_workload_registry_entry\n
value = LoadJSON(value)
File "/home/victor/hpc/tvm-build/tvmgpucopy/python/tvm/_ffi/_ctypes/packed_func.py", line 237, in __call__
raise get_last_ffi_error()\ntvm._ffi.base.TVMError: Traceback (most recent call last):
10: TVMFuncCall
9: std::_Function_handler<void (tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*), tvm::runtime::TypedPackedFunc<tvm::runtime::ObjectRef (std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)>::AssignTypedLambda<tvm::runtime::ObjectRef (*)(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)>(tvm::runtime::ObjectRef (*)(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >), std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)::{lambda(tvm::runtime::TVMArgs const&, tvm::runtime::TVMRetValue*)#1}>::_M_invoke(std::_Any_data const&, tvm::runtime::TVMArgs&&, tvm::runtime::TVMRetValue*&&)\n
8: tvm::LoadJSON(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)
7: tvm::JSONAttrSetter::Set(tvm::runtime::ObjectPtr<tvm::runtime::Object>*, tvm::JSONNode*)
6: tvm::ReflectionVTable::VisitAttrs(tvm::runtime::Object*, tvm::AttrVisitor*) const
5: tvm::JSONAttrSetter::Visit(char const*, tvm::runtime::DataType*)
4: tvm::runtime::String2DLDataType(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)
3: tvm::runtime::ParseCustomDatatype(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, char const**)
2: tvm::runtime::GetCustomTypeCode(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)
1: std::_Function_handler<void (tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*), tvm::datatype::{lambda(tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*)#2}>::_M_invoke(std::_Any_data const&, tvm::runtime::TVMArgs&&, tvm::runtime::TVMRetValue*&&)
0: tvm::datatype::Registry::GetTypeCode(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)
File "/home/victor/hpc/tvm-build/tvmgpucopy/src/target/datatype/registry.cc", line 59
TVMError:
---------------------------------------------------------------
An error occurred during the execution of TVM.\nFor more information, please see: https://tvm.apache.org/docs/errors.html
---------------------------------------------------------------
Check failed: (name_to_code_.find(type_name) != name_to_code_.end()) is false: Type name cmpl not registered\n',), all_cost:15.00, Tstamp:1647511127.09)
As the error shows, it cannot find my custom dataype named “cmpl”, whereas I am very sure I did register this data type. [Also proven by the fact that I am able to compile and run my model, without using the AutoScheuler.]
Could this have anything to do with this error + fix? https://discuss.tvm.apache.org/t/autoscheduler-and-autotvm-measure-measure-methods-set-cuda-target-arch/10939/3 https://github.com/apache/tvm/pull/8913