Problem - RPC server on ZCU104

When running the start_rpc_server.sh script i get the following error:

Traceback (most recent call last): File "/usr/lib/python3.6/runpy.py", line 183, in _run_module_as_main mod_name, mod_spec, code = _get_module_details(mod_name, _Error) File "/usr/lib/python3.6/runpy.py", line 109, in _get_module_details __import__(pkg_name) File "/home/xilinx/tvm/vta/python/vta/__init__.py", line 25, in <module> from .autotvm import module_loader File "/home/xilinx/tvm/vta/python/vta/autotvm.py", line 21, in <module> from . import rpc_client File "/home/xilinx/tvm/vta/python/vta/rpc_client.py", line 22, in <module> from .environment import get_env File "/home/xilinx/tvm/vta/python/vta/environment.py", line 296, in <module> @register_intrin_lowering("tir.vta.coproc_sync", "default") File "/home/xilinx/tvm/python/tvm/ir/op.py", line 151, in _register _ffi_api.RegisterOpLowerIntrinsic(op_name, f, target, level) AttributeError: module 'tvm.ir._ffi_api' has no attribute 'RegisterOpLowerIntrinsic'

Found a similar issue in Problem:start RPC server in Pynq-Z1 but looking at the fix I can’t find a simmilar solution.

Using a ZCU104 board and running pynq image 2.6 but found the same issue with 2.5 as well.

Actually a similar thing as in the linked post did solve it. Moving

`@register_intrin_lowering(“tir.vta.coproc_sync”, “default”) def coproc_sync(op): _ = op return tvm.tir.call_extern( “int32”, “VTASynchronize”, get_env().dev.command_handle, tvm.runtime.const(1 << 31, dtype=“uint32”), )

@register_intrin_lowering(“tir.vta.coproc_dep_push”, “default”) def coproc_dep_push(op): return tvm.tir.call_extern( “int32”, “VTADepPush”, get_env().dev.command_handle, op.args[0], op.args[1] )

@register_intrin_lowering(“tir.vta.coproc_dep_pop”, “default”) def coproc_dep_pop(op): return tvm.tir.call_extern( “int32”, “VTADepPop”, get_env().dev.command_handle, op.args[0], op.args[1] )
`

From vta/python/vta/environment.py to vta/python/vta/build_module.py seems to be working.

Hi Bliipie,

I’m using a zcu104 and PYNQ boards also and I can successfully connect my pynq but the zcu104 board shows the same problem just like yours.

I followed your recommendation and the error with “RegisterOpLowerIntrinsic” is now gone but there’s this new error “No module named ‘cloudpickle’”.

Installing cloudpickle with pip does not solve the problem. Did you encounter any of these problems?

Thanks,

you have to install cloudpickle on you board using sudo pip3 install cloudpickle. if your board cannot connect to internet you have to download the whl file on pypi then install it manually.

yes I did both pip and pip3 and installed cloudpickle on both python2 and python3 versions. Doesn’t work :slight_smile:

check where you install cloudpickle by pip3 list -v and see if the path is in PYTHONPATH.

1 Like

Doesn’t work for me. I just copied and pasted tvm stack that I downloaded on another board about a month ago and it’s solved for both ZCU and PYNQ. (New tvm stack didn’t work on the PYNQ either and made same error) Thanks anyways.

(for anyone who runs into this problem) - I ran into what I believe is the problem where I couldn’t import cloudpickle when calling ./start_rpc_server.sh. Realised this was due to the sudo requirement needed to use the rpc server and “pip3 install clouldpickle” didn’t install cloudpickle for the sudo user. You can check if it is the same problem by running "sudo python3 -c “import cloudpickle”. Fixed problem by simply “sudo python3 -c “import cloudpickle””