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 jsquy...@cisco.com