[autotvm]Error at inference evaluation after autotuning (android, opencl)


#1

Hi,
after autotuning for opencl on android device, I get the following error:

Compile...
WARNING:autotvm:Cannot find config for target=opencl -device=mali, workload=('dense', (1, 512, 'float32'), (1000, 512, 'float32'), 0, 'float32'). A fallback configuration is used, which may bring great performance regression.
WARNING:autotvm:Cannot find config for target=opencl -device=mali, workload=('conv2d', (1, 3, 224, 224, 'float32'), (64, 3, 7, 7, 'float32'), (2, 2), (3, 3), (1, 1), 'NCHW', 'float32'). A fallback configuration is used, which may bring great performance regression.
[15:29:21] /home/SERILOCAL/n.perto/Documents/tvm/src/pass/vectorize_loop.cc:365: Detect vector condition in Vectorized Loop, scalarizing...
[15:29:21] /home/SERILOCAL/n.perto/Documents/tvm/src/pass/vectorize_loop.cc:365: Detect vector condition in Vectorized Loop, scalarizing...
Upload...
Evaluate inference time cost...
Traceback (most recent call last):
  File "tutorials/autotvm/tune_relay_mobile_gpu.py", line 358, in <module>
    tune_and_evaluate(tuning_option)
  File "tutorials/autotvm/tune_relay_mobile_gpu.py", line 351, in tune_and_evaluate
    prof_res = np.array(ftimer().results) * 1000  # convert to millisecond
  File "/home/SERILOCAL/n.perto/Documents/tvm/python/tvm/module.py", line 194, in evaluator
    blob = feval(*args)
  File "/home/SERILOCAL/n.perto/Documents/tvm/python/tvm/_ffi/_ctypes/function.py", line 209, in __call__
    raise get_last_ffi_error()
tvm._ffi.base.TVMError: Traceback (most recent call last):
  [bt] (3) /home/SERILOCAL/n.perto/Documents/tvm/build/libtvm.so(TVMFuncCall+0x61) [0x7f039832c511]
  [bt] (2) /home/SERILOCAL/n.perto/Documents/tvm/build/libtvm.so(+0x9f25ab) [0x7f039836f5ab]
  [bt] (1) /home/SERILOCAL/n.perto/Documents/tvm/build/libtvm.so(+0x9e7af7) [0x7f0398364af7]
  [bt] (0) /home/SERILOCAL/n.perto/Documents/tvm/build/libtvm.so(+0x173c82) [0x7f0397af0c82]
  File "/home/SERILOCAL/n.perto/Documents/tvm/src/runtime/rpc/rpc_session.cc", line 962
TVMError: Check failed: code == RPCCode: :kReturn: code=4

I just ran the tutorial example with lower n_trial.
Thanks in advance for your help.


#2

The output looks strange; why is the first conv2d layer omitted from tuning (the cannot find config warning)?


#3

I am sorry I can’t replicate it at the moment, for some reasons I cannot upload anything to the device (with tvm.rpc.RPCSession.upload), it blocks since yesterday.
I pulled and recompiled the library, it might come from that, although I don’t see any recent commit related to RPC.
Any idea on this?