Open MPI logo

Hardware Locality Development Mailing List Archives

  |   Home   |   Support   |   FAQ   |   all Hardware Locality Development mailing list

Subject: [hwloc-devel] Something lighter-weight than XML?
From: Jeff Squyres (jsquyres_at_[hidden])
Date: 2011-09-01 11:30:38


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
jsquyres_at_[hidden]
For corporate legal information go to:
http://www.cisco.com/web/about/doing_business/legal/cri/


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


  • application/xml attachment: foo.xml