Having problems running benchmark on raspi


#1

Hello, I have currently setup my computer and raspi to run benchmarking through rpc. I am able to run the first three models squeezenet_v1.1, mobilenet, and resenet. However, my benchmark is failing at vgg16 consistently. Is this a timeout issue, if it is, where can i tune my timeout? Im running

python3 arm_cpu_imagenet_bench.py --model rasp3b --rpc-key rasp3b.

I am using llvm 4.0

Traceback (most recent call last):
File “arm_cpu_imagenet_bench.py”, line 90, in
evaluate_network(network, target, target_host, args.repeat)
File “arm_cpu_imagenet_bench.py”, line 49, in evaluate_network
module.set_input(**params)
File “~/tvm/python/tvm/contrib/graph_runtime.py”, line 139, in set_input
self._get_input(k).copyfrom(params[k])
File “~/tvm/python/tvm/_ffi/ndarray.py”, line 212, in copyfrom
source_array.copyto(self)
File “~/tvm/python/tvm/_ffi/ndarray.py”, line 279, in copyto
self.handle, target.handle, None))
File “~/tvm/python/tvm/_ffi/base.py”, line 72, in check_call
raise TVMError(py_str(_LIB.TVMGetLastError()))
tvm._ffi.base.TVMError: [14:42:09] ~/tvm/src/runtime/rpc/rpc_session.cc:967: Check failed: HandleUntilReturnEvent(&rv, true, nullptr) == RPCCode::kReturn

Stack trace returned 10 entries:
[bt] (0) ~/tvm/build/libtvm.so(+0x646bbd) [0x7f7371d70bbd]
[bt] (1) ~/tvm/build/libtvm.so(+0x647c8d) [0x7f7371d71c8d]
[bt] (2) ~/tvm/build/libtvm.so(+0xd3b490) [0x7f7372465490]
[bt] (3) ~/tvm/build/libtvm.so(+0xd4cc38) [0x7f7372476c38]
[bt] (4) ~/tvm/build/libtvm.so(tvm::runtime::NDArray::CopyFromTo(DLTensor*, DLTensor*, void*)+0xd3c) [0x7f737244df5c]
[bt] (5) ~/tvm/build/libtvm.so(TVMArrayCopyFromTo+0x6) [0x7f737244e286]
[bt] (6) /usr/lib/python3.5/lib-dynload/_ctypes.cpython-35m-x86_64-linux-gnu.so(ffi_call_unix64+0x4c) [0x7f7376b10e20]
[bt] (7) /usr/lib/python3.5/lib-dynload/_ctypes.cpython-35m-x86_64-linux-gnu.so(ffi_call+0x2eb) [0x7f7376b1088b]
[bt] (8) /usr/lib/python3.5/lib-dynload/_ctypes.cpython-35m-x86_64-linux-gnu.so(_ctypes_callproc+0x49a) [0x7f7376b0b01a]
[bt] (9) /usr/lib/python3.5/lib-dynload/_ctypes.cpython-35m-x86_64-linux-gnu.so(+0x9fcb) [0x7f7376afefcb]

Exception ignored in: <object repr() failed>
Traceback (most recent call last):
File “~/tvm/python/tvm/_ffi/_ctypes/ndarray.py”, line 62, in del
check_call(_LIB.TVMArrayFree(self.handle))
File “~/tvm/python/tvm/_ffi/base.py”, line 72, in check_call
raise TVMError(py_str(_LIB.TVMGetLastError()))
tvm._ffi.base.TVMError: [14:58:26] ~/tvm/src/runtime/rpc/rpc_session.cc:856: Check failed: code == RPCCode::kReturn code=4

Stack trace returned 10 entries:
[bt] (0) ~/tvm/build/libtvm.so(+0x646bbd) [0x7f09a4deebbd]
[bt] (1) ~/tvm/build/libtvm.so(+0x647c8d) [0x7f09a4defc8d]
[bt] (2) ~/tvm/build/libtvm.so(+0xd3ac8c) [0x7f09a54e2c8c]
[bt] (3) ~/tvm/build/libtvm.so(+0xd53042) [0x7f09a54fb042]
[bt] (4) ~/tvm/build/libtvm.so(TVMArrayFree+0x1c) [0x7f09a54c999c]
[bt] (5) /usr/lib/python3.5/lib-dynload/_ctypes.cpython-35m-x86_64-linux-gnu.so(ffi_call_unix64+0x4c) [0x7f09a9b8ee20]
[bt] (6) /usr/lib/python3.5/lib-dynload/_ctypes.cpython-35m-x86_64-linux-gnu.so(ffi_call+0x2eb) [0x7f09a9b8e88b]
[bt] (7) /usr/lib/python3.5/lib-dynload/_ctypes.cpython-35m-x86_64-linux-gnu.so(_ctypes_callproc+0x49a) [0x7f09a9b8901a]
[bt] (8) /usr/lib/python3.5/lib-dynload/_ctypes.cpython-35m-x86_64-linux-gnu.so(+0x9fcb) [0x7f09a9b7cfcb]
[bt] (9) python3(PyObject_Call+0x47) [0x5c20e7]


#2

If this is an end-to-end benchmark, then it should not be a timeout issue. However, VGG is very memory hungry, so it could be an out-of-memory issue if the board has other things using memory concurrently.


#3

Do you have any ideas how i can solve this issue? Is this a code or a hardware issue?


#4

Can you check the memory utilization of the board before and after running the benchmark?