@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).

Reply via email to