On Dec 16, 2009, at 9:03 PM, Jeff Squyres wrote:
> Ok, done. Please review:
>
> https://svn.open-mpi.org/trac/hwloc/changeset/1475
I definitely broke something. :-(
>From my embedding test, I make a trivial app that does the following:
----
mytest_hwloc_topology_init(&topology);
mytest_hwloc_topology_load(topology);
depth = mytest_hwloc_topology_get_depth(topology);
printf("Max depth: %u\n", depth);
-----
When I run it, it produces an assertion failure:
----
Assertion failed: (i = (unsigned) hwloc_get_type_depth(topology, obj->type) ||
HWLOC_TYPE_DEPTH_MULTIPLE == hwloc_get_type_depth(topology, obj->type)),
function mytest_hwloc_topology_check, file topology.c, line 1764.
Abort
-----
Here's the full output:
-----
[21:47] beezle:~/svn/hwloc/tests/embedded % ./main
2 procs
1 packages
2 threads per package
package 0 has cpuset 0x00000003
2 cores per package
core 0 has cpuset 0x00000001
core 1 has cpuset 0x00000002
caches 2(3932160kB) 1(32kB) 2(3072kB)
2 cache levels
node 0 has cpuset 0x00000003
L1cache 0 has cpuset 0x00000001
L1cache 1 has cpuset 0x00000002
L2cache 0 has cpuset 0x00000003
* CPU cpusets *
cpu 0 (os 0) has cpuset 0x00000001
cpu 1 (os 1) has cpuset 0x00000002
System(0KB HP=0*0kB )
0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff
NUMANode#0(3840MB) 0x00000003
Socket#0 0x00000003
L2Cache#0(3072KB) 0x00000003
L1Cache#0(32KB) 0x00000001
Core#0 0x00000001
P#0 0x00000001
L1Cache#1(32KB) 0x00000002
Core#1 0x00000002
P#1 0x00000002
Computing the system cpuset by ORing all Proc objects
-> 0x00000003
Adding it to the complete cpuset
0x0 -> 0x00000003
Limiting online cpuset to the complete cpuset
0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff
-> 0x00000003
Limiting allowed cpuset to the complete cpuset
0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff
-> 0x00000003
Removing unauthorized cpuset from system cpuset
0x00000003 -> 0x00000003
Removing offline cpuset from system cpuset
0x00000003 -> 0x00000003
Removing disallowed memory according to nodeset
0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff
Applying the system cpuset to all objects
System(0KB HP=0*0kB ) 0x00000003
NUMANode#0(3840MB) 0x00000003
Socket#0 0x00000003
L2Cache#0(3072KB) 0x00000003
L1Cache#0(32KB) 0x00000001
Core#0 0x00000001
P#0 0x00000001
L1Cache#1(32KB) 0x00000002
Core#1 0x00000002
P#1 0x00000002
Removing ignored objects
System(0KB HP=0*0kB ) 0x00000003
NUMANode#0(3840MB) 0x00000003
Socket#0 0x00000003
L2Cache#0(3072KB) 0x00000003
L1Cache#0(32KB) 0x00000001
Core#0 0x00000001
P#0 0x00000001
L1Cache#1(32KB) 0x00000002
Core#1 0x00000002
P#1 0x00000002
Removing empty objects except numa nodes and PCI devices
System(0KB HP=0*0kB ) 0x00000003
NUMANode#0(3840MB) 0x00000003
Socket#0 0x00000003
L2Cache#0(3072KB) 0x00000003
L1Cache#0(32KB) 0x00000001
Core#0 0x00000001
P#0 0x00000001
L1Cache#1(32KB) 0x00000002
Core#1 0x00000002
P#1 0x00000002
Removing objects whose type has HWLOC_IGNORE_TYPE_KEEP_STRUCTURE and have only
one child or are the only child
System(0KB HP=0*0kB ) 0x00000003
NUMANode#0(3840MB) 0x00000003
Socket#0 0x00000003
L2Cache#0(3072KB) 0x00000003
L1Cache#0(32KB) 0x00000001
Core#0 0x00000001
P#0 0x00000001
L1Cache#1(32KB) 0x00000002
Core#1 0x00000002
P#1 0x00000002
Ok, finished tweaking, now connect
System(0KB HP=0*0kB ) 0x00000003 arity 1
NUMANode#0(3840MB) 0x00000003 arity 1
Socket#0 0x00000003 arity 1
L2Cache#0(3072KB) 0x00000003 arity 2
L1Cache#0(32KB) 0x00000001 arity 1
Core#0 0x00000001 arity 1
P#0 0x00000001
L1Cache#1(32KB) 0x00000002 arity 1
Core#1 0x00000002 arity 1
P#1 0x00000002
--- NUMANode level has number 1
--- Socket level has number 2
--- Cache level depth 2 has number 3
--- Cache level depth 1 has number 4
--- Core level has number 5
--- Proc level has number 6
Assertion failed: (i = (unsigned) hwloc_get_type_depth(topology, obj->type) ||
HWLOC_TYPE_DEPTH_MULTIPLE == hwloc_get_type_depth(topology, obj->type)),
function mytest_hwloc_topology_check, file topology.c, line 1764.
Abort
------
--
Jeff Squyres
[email protected]