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


Reply via email to