@vinx13
I modified reset_global_scope() in env.py into the following: import tvm def reset_global_scope(global_scope): """Reset global autotvm state. This is needed to initialize PopenPool workers.""" global GLOBAL_SCOPE GLOBAL_SCOPE.deep_copy(global_scope) AutotvmGlobalScope.current = global_scope # Defition of the custom datatype and a few operators tvm.target.datatype.register("cmpl", 150) tvm.target.datatype.register_op( tvm.target.datatype.create_lower_func({(32, 64): "Float32ToComplex64"}), "Cast", "llvm", "float", "cmpl", ) tvm.target.datatype.register_op( tvm.target.datatype.create_lower_func({64: "Complex64Add"}), "Add", "llvm", "cmpl", ) tvm.target.datatype.register_op( tvm.target.datatype.create_lower_func({64: "Complex64Sub"}), "Sub", "llvm", "cmpl", ) tvm.target.datatype.register_op( tvm.target.datatype.create_lower_func({64: "Complex64Mul"}), "Mul", "llvm", "cmpl", ) tvm.target.datatype.register_op( tvm.target.datatype.create_lower_func({64: "Complex64Div"}), "Div", "llvm", "cmpl", ) tvm.target.datatype.register_op( tvm.target.datatype.lower_call_pure_extern, "Call", "llvm", "cmpl", intrinsic_name="tir.call_pure_extern", ) tvm.target.datatype.register_op( tvm.target.datatype.create_lower_func({(64, 32): "Complex64ToFloat32"}), "Cast", "llvm", "cmpl", "float", ) But I still get the same error message: Traceback (most recent call last): File "/usr/lib/python3.6/runpy.py", line 193, in _run_module_as_main "__main__", mod_spec) File "/usr/lib/python3.6/runpy.py", line 85, in _run_code exec(code, run_globals) File "/home/victor/hpc/tvm-build/tvmgpucopy2/python/tvm/exec/popen_worker.py", line 105, in <module> main() File "/home/victor/hpc/tvm-build/tvmgpucopy2/python/tvm/exec/popen_worker.py", line 77, in main fn, args, kwargs, timeout = cloudpickle.loads(reader.read(bytes_size)) File "/home/victor/hpc/tvm-build/tvmgpucopy2/python/tvm/runtime/object.py", line 93, in __setstate__ self.__init_handle_by_constructor__(_ffi_node_api.LoadJSON, handle) File "/home/victor/hpc/tvm-build/tvmgpucopy2/python/tvm/_ffi/_ctypes/object.py", line 136, in __init_handle_by_constructor__ handle = __init_by_constructor__(fconstructor, args) File "/home/victor/hpc/tvm-build/tvmgpucopy2/python/tvm/_ffi/_ctypes/packed_func.py", line 260, in __init_handle_by_constructor__ raise get_last_ffi_error() tvm._ffi.base.TVMError: Traceback (most recent call last): 9: TVMFuncCall 8: tvm::runtime::PackedFuncObj::Extractor<tvm::runtime::PackedFuncSubObj<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}> >::Call(tvm::runtime::PackedFuncObj const*, tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*) 7: tvm::LoadJSON(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >) 6: tvm::JSONAttrSetter::Set(tvm::runtime::ObjectPtr<tvm::runtime::Object>*, tvm::JSONNode*) 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: tvm::runtime::PackedFuncObj::Extractor<tvm::runtime::PackedFuncSubObj<tvm::datatype::{lambda(tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*)#2}> >::Call(tvm::runtime::PackedFuncObj 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/tvmgpucopy2/src/target/datatype/registry.cc", line 59 TVMError: --------------------------------------------------------------- An error occurred during the execution of TVM. For 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. Elements in type registration list: 0 Note that I extended the error message a bit by also printing name_to_code_.size() in Registry::GetTypeCode in the file registery.cc. And indeed the length of that std::unordered_map is equal to 0. So indeed it seems as if type registrations are not properly done. Do you have any suggestions? --- [Visit Topic](https://discuss.tvm.apache.org/t/custom-datatypes-in-autoscheduler/12377/5) to respond. You are receiving this because you enabled mailing list mode. To unsubscribe from these emails, [click here](https://discuss.tvm.apache.org/email/unsubscribe/afa96fa700b2f77c1ec2232ba06750f0deae65f13c3ecc3d86ecbc74f995bf38).