likwid
likwid copied to clipboard
Runtime error on AMRv7l
I succeeded in compiling LIKWID (latest checkout of the master branch) on my Tegra TK1 (uname -a
reports Linux tegra3 3.10.40 #1 SMP PREEMPT Thu Nov 13 11:48:25 UTC 2014 armv7l armv7l armv7l GNU/Linux
). However, running any of the binaries yields the following error:
./likwid-topology
--------------------------------------------------------------------------------
CPU name: ARMv7 Processor rev 3 (v7l)
CPU type: ARM 7l architecture
CPU stepping: 0
********************************************************************************
Hardware Thread Topology
********************************************************************************
Sockets: 1
Cores per socket: 1
Threads per core: 1
--------------------------------------------------------------------------------
HWThread Thread Core Socket Available
0 0 0 0 *
--------------------------------------------------------------------------------
Socket 0: ( 0 )
--------------------------------------------------------------------------------
********************************************************************************
Cache Topology
********************************************************************************
********************************************************************************
NUMA Topology
********************************************************************************
No NUMA
*** Error in `/home/staff/matthias/gismo/extensions/gsCompFlow/tools/external/likwid/bin/likwid-lua': free(): invalid next size (fast): 0x00046bb0 ***
Aborted
Before considering this to be a 'bug' in LIKWID I first wanted to ask if the ARMv7l (!) platform is supported or not? The number of sockets is reported correctly but the cores per socket seem to be incorrect according to
cat /proc/cpuinfo
processor : 0
model name : ARMv7 Processor rev 3 (v7l)
Features : swp half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt
CPU implementer : 0x41
CPU architecture: 7
CPU variant : 0x3
CPU part : 0xc0f
CPU revision : 3
processor : 1
model name : ARMv7 Processor rev 3 (v7l)
Features : swp half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt
CPU implementer : 0x41
CPU architecture: 7
CPU variant : 0x3
CPU part : 0xc0f
CPU revision : 3
processor : 2
model name : ARMv7 Processor rev 3 (v7l)
Features : swp half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt
CPU implementer : 0x41
CPU architecture: 7
CPU variant : 0x3
CPU part : 0xc0f
CPU revision : 3
processor : 3
model name : ARMv7 Processor rev 3 (v7l)
Features : swp half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt
CPU implementer : 0x41
CPU architecture: 7
CPU variant : 0x3
CPU part : 0xc0f
CPU revision : 3
Hardware : jetson-tk1
Revision : 0000
Serial : 0177000003450000
Processor : ARMv7 Processor rev 3 (v7l)
I am more than happy to help debugging the problem and/or contributing to supporting the ARMv7l architecture.
Hi,
I have access to an ARMv7 platform (also some Jetson board) but only through complicated ways, so it's not as tested as ARMv8. It worked but that's quite some time ago. It would be great if you could help debugging this. Here are some starting points.
First output:
This looks like some runtime problems with Lua. likwid-lua
is the common Lua runtime interpreter that ships with LIKWID. I saw similar problems related to wrong compilation flags, so I would first check make/include_GCCARMv7.mk
. I assume you have changed the COMPILER
setting to GCCARMv7
in config.mk
. Are simple Lua scripts (like helloworld) working. If yes, it is some problem in the LIKWID library and probably more complicated. I would try switching on DEBUG
in config.mk
and use gdb
to hunt the bug:
$ gdb <PATH_TO_LIKWID>/likwid-lua
[...]
r <PATH_TO_LIKWID>/likwid-topology
Second output:
LIKWID uses hwloc to get the main system topology but reads some values from /proc/cpuinfo
itself. It might be some missing __ARM_ARCH_7A__
in hwloc_init_nodeTopology
in src/topology_hwloc.c
. There are some sections only defined for ARMv8 but they might be needed for ARMv7 as well. The stepping is also not read correctly (parse_cpuinfo()
). LIKWID should use the revision value from cpuinfo.
Thanks for offering help. I hope the pointer are somehow helpful and don't lead in a wrong direction.
Did you have any success in finding the problem on ARMv7?