We're (finally) bringing full hwloc services up in Open MPI. One of the things we want to do is send server topologies from back-end compute nodes to the front-end node. The XML export/import functionality would work for this, but a) it's a bit heavyweight, and b) it seems weird to require XML to build MPI.
Is there any chance that a lighter-weight, simple string parsing module could be added to hwloc? I'm guessing that we could save a modest amount of string space (SWAG: 20%?), but we wouldn't need a dependency on libxml, which would be good. I took a lstopo --no-io foo.xml output on an older xeon machine and, while sitting on a boring teleconf, I manually converted it in emacs to a (slightly) simpler text format. I attached the two files. There's a modest space savings (about 17%). But libxml clearly would not be necessary. Do you think this would be easy to implement? -- Jeff Squyres [email protected] For corporate legal information go to: http://www.cisco.com/web/about/doing_business/legal/cri/
foo.xml
Description: XML document
topology version=1.2.1 object type=Machine os_level=-1 os_index=0 cpuset=cpuset=0x000000ff complete_cpuset=0x000000ff online_cpuset=0x000000ff allowed_cpuset=0x000000ff local_memory=4136591360 page_type size=4096 count=1009910 end page_type size=2097152 count=0 end info name=Backend value=Linux end info name=OSName value=Linux end info name=OSRelease value=2.6.18-164.el5 end info name=OSVersion value=#1 SMP Tue Aug 18 15:51:48 EDT 2009 end info name=HostName value=svbu-mpi.cisco.com end info name=Architecture value=x86_64 end object type=Socket os_level=-1 os_index=0 cpuset=0x00000055 complete_cpuset=0x00000055 online_cpuset=0x00000055 allowed_cpuset=0x00000055 end object type=Cache os_level=-1 cpuset=0x00000011 complete_cpuset=0x00000011 online_cpuset=0x00000011 allowed_cpuset=0x00000011 cache_size=2097152 depth=2 cache_linesize=64 cache_associativity=8 end object type=Cache os_level=-1 cpuset=0x00000011 complete_cpuset=0x00000011 online_cpuset=0x00000011 allowed_cpuset=0x00000011 cache_size=16384 depth=1 cache_linesize=64 cache_associativity=8 end object type=Core os_level=-1 os_index=0 cpuset=0x00000011 complete_cpuset=0x00000011 online_cpuset=0x00000011 allowed_cpuset=0x00000011 end object type=PU os_level=-1 os_index=0 cpuset=0x00000001 complete_cpuset=0x00000001 online_cpuset=0x00000001 allowed_cpuset=0x00000001 end object type=PU os_level=-1 os_index=4 cpuset=0x00000010 complete_cpuset=0x00000010 online_cpuset=0x00000010 allowed_cpuset=0x00000010 end end end end object type=Cache os_level=-1 cpuset=0x00000044 complete_cpuset=0x00000044 online_cpuset=0x00000044 allowed_cpuset=0x00000044 cache_size=2097152 depth=2 cache_linesize=64 cache_associativity=8 end object type=Cache os_level=-1 cpuset=0x00000044 complete_cpuset=0x00000044 online_cpuset=0x00000044 allowed_cpuset=0x00000044 cache_size=16384 depth=1 cache_linesize=64 cache_associativity=8 end object type=Core os_level=-1 os_index=1 cpuset=0x00000044 complete_cpuset=0x00000044 online_cpuset=0x00000044 allowed_cpuset=0x00000044 end object type=PU os_level=-1 os_index=2 cpuset=0x00000004 complete_cpuset=0x00000004 online_cpuset=0x00000004 allowed_cpuset=0x00000004 end object type=PU os_level=-1 os_index=6 cpuset=0x00000040 complete_cpuset=0x00000040 online_cpuset=0x00000040 allowed_cpuset=0x00000040 end end end end end object type=Socket os_level=-1 os_index=1 cpuset=0x000000aa complete_cpuset=0x000000aa online_cpuset=0x000000aa allowed_cpuset=0x000000aa end object type=Cache os_level=-1 cpuset=0x00000022 complete_cpuset=0x00000022 online_cpuset=0x00000022 allowed_cpuset=0x00000022 cache_size=2097152 depth=2 cache_linesize=64 cache_associativity=8 end object type=Cache os_level=-1 cpuset=0x00000022 complete_cpuset=0x00000022 online_cpuset=0x00000022 allowed_cpuset=0x00000022 cache_size=16384 depth=1 cache_linesize=64 cache_associativity=8 end object type=Core os_level=-1 os_index=0 cpuset=0x00000022 complete_cpuset=0x00000022 online_cpuset=0x00000022 allowed_cpuset=0x00000022 end object type=PU os_level=-1 os_index=1 cpuset=0x00000002 complete_cpuset=0x00000002 online_cpuset=0x00000002 allowed_cpuset=0x00000002 end object type=PU os_level=-1 os_index=5 cpuset=0x00000020 complete_cpuset=0x00000020 online_cpuset=0x00000020 allowed_cpuset=0x00000020 end end end end object type=Cache os_level=-1 cpuset=0x00000088 complete_cpuset=0x00000088 online_cpuset=0x00000088 allowed_cpuset=0x00000088 cache_size=2097152 depth=2 cache_linesize=64 cache_associativity=8 end object type=Cache os_level=-1 cpuset=0x00000088 complete_cpuset=0x00000088 online_cpuset=0x00000088 allowed_cpuset=0x00000088 cache_size=16384 depth=1 cache_linesize=64 cache_associativity=8 end object type=Core os_level=-1 os_index=1 cpuset=0x00000088 complete_cpuset=0x00000088 online_cpuset=0x00000088 allowed_cpuset=0x00000088 end object type=PU os_level=-1 os_index=3 cpuset=0x00000008 complete_cpuset=0x00000008 online_cpuset=0x00000008 allowed_cpuset=0x00000008 end object type=PU os_level=-1 os_index=7 cpuset=0x00000080 complete_cpuset=0x00000080 online_cpuset=0x00000080 allowed_cpuset=0x00000080 end end end end end end end
