likwid icon indicating copy to clipboard operation
likwid copied to clipboard

Runtime error on AMRv7l

Open mmoelle1 opened this issue 5 years ago • 2 comments

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.

mmoelle1 avatar Jun 27 '19 15:06 mmoelle1

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.

TomTheBear avatar Jun 27 '19 18:06 TomTheBear

Did you have any success in finding the problem on ARMv7?

TomTheBear avatar Aug 10 '20 11:08 TomTheBear