Hi all,
I’m trying to use tvm/apps/bundle_deploy to compile and run the given Mobilenet model on gem5 with an Arm cross compilation target. However, although the ‘make demo_static’ runs without error, simulating with gem5 produces page fault errors relating to TVMLoadParams:
user@computer$ ~/gem5/build/ARM/gem5.opt --debug-flags=Exec --debug-start=7380000000 ~/gem5/configs/example/se.py -c ~/tvm/apps/bundle_deploy/build/demo_static -o ~/tvm/apps/bundle_deploy/build/cat.bin
7389272500: system.cpu: T0 : @TVMGraphRuntime_LoadParams+167 : b <TVMGraphRuntime_LoadParams+205> : IntAlu : Predicated False\
7389273500: system.cpu: T0 : @TVMGraphRuntime_LoadParams+169 : ldrd.w r6, r7, [r1, #0] : MemRead : A=0xa71cf
panic: Page table fault when accessing virtual address 0x600
Memory Usage: 712300 KBytes
Program aborted at tick 7389274000
For my llvm targets in build_model.py:
llvm --system-lib -device=arm_cpu -target=arm-linux-gnueabihf -mfloat-abi=hard
For my arm-linux-gnueabihf-gcc and arm-linux-gnueabihf-g++
flags in the Makefile:
-Wall -std=c++14 -O2 -fPIC -g -static -mfloat-abi=hard
-Wall -std=c99 -O2 -fPIC -g -static mfloat-abi=hard
running the executable demo_static
with qemu-arm-static
yields:
user@computer$ ~/tvm/apps/bundle_deploy$ build/demo_static build/cat.bin
The maximum position in output vector is: 1, with max-value 0.614223.
timing: 8.46 ms (create), 1.25 ms (set_input), 3818.98 ms (run), 0.10 ms (get_output), 0.30 ms (destroy)
This runs, but does have a different output than when I run natively on x86_64 architecture:
The maximum position in output vector is: 278, with max-value 0.590908.
timing: 0.66 ms (create), 0.23 ms (set_input), 4.32 ms (run), 0.00 ms (get_output), 0.02 ms (destroy)
Any help would be appreciated