Hello!

I am currently implementing Winograd conv2d through Relay.

    data_shape = (1,64,224,224)
    w_shape= (64,64,3,3)

    input_data = relay.var('input', relay.TensorType(data_shape, "float32") )
    p1 = relay.var('wgt', relay.TensorType(w_shape, "float32") )

    FIR = relay.nn.contrib_conv2d_winograd_weight_transform(p1,4)
    conv = relay.nn.contrib_conv2d_winograd_without_weight_transform( input_data
                                                                        ,FIR
                                                                        ,4 # 
Tile Size
                                                                        ,(1,1) 
# stride
                                                                        ,(1,1) 
# padding
                                                                        ,(1,1)  
# dilation
                                                                        
,channels=64
                                                                        
,kernel_size=(3,3))

    f = relay.Function( [input_data,p1], conv )
    mod = tvm.IRModule.from_expr(f)

    with relay.build_config(opt_level=3):
        with tvm.target.create('cuda'):
            gj, lib, params = tvm.relay.build_module.build(mod,'cuda')


When i compile the above code i get the below error.

    Traceback (most recent call last):

      File "RELAY_WINO.py", line 66, in <module>
        gj, lib, params = tvm.relay.build_module.build(mod,'cuda')

      File "/home/alpha930/Desktop/TVM/tvm/python/tvm/relay/build_module.py", 
line 251, in build
        graph_json, mod, params = bld_mod.build(mod, target, target_host, 
params)

      File "/home/alpha930/Desktop/TVM/tvm/python/tvm/relay/build_module.py", 
line 120, in build
        self._build(mod, target, target_host)

      File 
"/home/alpha930/Desktop/TVM/tvm/python/tvm/_ffi/_ctypes/packed_func.py", line 
213, in __call__
        raise get_last_ffi_error()

    tvm._ffi.base.TVMError: Traceback (most recent call last):
      [bt] (7) /home/alpha930/Desktop/TVM/tvm/build/libtvm.so(TVMFuncCall+0x65) 
[0x7f81cbe4b4b5]
      [bt] (6) 
/home/alpha930/Desktop/TVM/tvm/build/libtvm.so(std::_Function_handler<void 
(tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*), 
tvm::relay::backend::RelayBuildModule::GetFunction(std::__cxx11::basic_string<char,
 std::char_traits<char>, std::allocator<char> > const&, 
tvm::runtime::ObjectPtr<tvm::runtime::Object> 
const&)::{lambda(tvm::runtime::TVMArgs, 
tvm::runtime::TVMRetValue*)#3}>::_M_invoke(std::_Any_data const&, 
tvm::runtime::TVMArgs&&, tvm::runtime::TVMRetValue*&&)+0x17) [0x7f81cbcf66d7]
      [bt] (5) 
/home/alpha930/Desktop/TVM/tvm/build/libtvm.so(tvm::relay::backend::RelayBuildModule::GetFunction(std::__cxx11::basic_string<char,
 std::char_traits<char>, std::allocator<char> > const&, 
tvm::runtime::ObjectPtr<tvm::runtime::Object> 
const&)::{lambda(tvm::runtime::TVMArgs, 
tvm::runtime::TVMRetValue*)#3}::operator()(tvm::runtime::TVMArgs, 
tvm::runtime::TVMRetValue*) const+0x1b2) [0x7f81cbcf65e2]
      [bt] (4) 
/home/alpha930/Desktop/TVM/tvm/build/libtvm.so(tvm::relay::backend::RelayBuildModule::BuildRelay(tvm::IRModule,
 std::unordered_map<std::__cxx11::basic_string<char, std::char_traits<char>, 
std::allocator<char> >, tvm::runtime::NDArray, 
std::hash<std::__cxx11::basic_string<char, std::char_traits<char>, 
std::allocator<char> > >, std::equal_to<std::__cxx11::basic_string<char, 
std::char_traits<char>, std::allocator<char> > >, 
std::allocator<std::pair<std::__cxx11::basic_string<char, 
std::char_traits<char>, std::allocator<char> > const, tvm::runtime::NDArray> > 
> const&)+0xd2c) [0x7f81cbcf5dec]
      [bt] (3) 
/home/alpha930/Desktop/TVM/tvm/build/libtvm.so(tvm::build(tvm::Map<std::__cxx11::basic_string<char,
 std::char_traits<char>, std::allocator<char> >, 
tvm::Array<tvm::tir::LoweredFunc, void>, void, void> const&, tvm::Target 
const&, tvm::BuildConfig const&)+0x481) [0x7f81cb948cf1]
      [bt] (2) 
/home/alpha930/Desktop/TVM/tvm/build/libtvm.so(tvm::build(tvm::Map<tvm::Target, 
tvm::Array<tvm::tir::LoweredFunc, void>, void, void> const&, tvm::Target 
const&, tvm::BuildConfig const&)+0x228) [0x7f81cb947b18]
      [bt] (1) 
/home/alpha930/Desktop/TVM/tvm/build/libtvm.so(tvm::split_dev_host_funcs(tvm::Array<tvm::tir::LoweredFunc,
 void> const&, tvm::Target const&, tvm::Target const&, tvm::BuildConfig 
const&)+0xbeb) [0x7f81cb945f0b]
      [bt] (0) 
/home/alpha930/Desktop/TVM/tvm/build/libtvm.so(dmlc::LogMessageFatal::~LogMessageFatal()+0x43)
 [0x7f81cb5c69b3]
      File "/home/alpha930/Desktop/TVM/tvm/src/driver/driver_api.cc", line 192
    TVMError: Check failed: tir: :VerifyMemory(x, target->device_type): Direct 
host side access to device memory is detected in 
fused_nn_contrib_conv2d_winograd_weight_transform. Did you forget to bind?

As I remember, if I set a target when building, in the case of cuda, the bind 
is automatically performed, but the above code does not proceed.
Is there something I'm missing on the code?





---
[Visit 
Topic](https://discuss.tvm.ai/t/relay-winograd-conv2d-compile-error/6168/1) to 
respond.

You are receiving this because you enabled mailing list mode.

To unsubscribe from these emails, [click 
here](https://discuss.tvm.ai/email/unsubscribe/63c055b99881c436b97feb62fef1f3f61f61ef69b3b5e3658a49baac4283837a).

Reply via email to