[mpich2-commits] r7494 - in mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc: . config contrib/dist doc include include/hwloc include/private m4 src tests tests/embedded tests/linux tests/linux/gather tests/ports tests/ports/include tests/ports/include/sys tests/xml utils
balaji at mcs.anl.gov
balaji at mcs.anl.gov
Wed Nov 24 03:21:55 CST 2010
Author: balaji
Date: 2010-11-24 03:21:55 -0600 (Wed, 24 Nov 2010)
New Revision: 7494
Added:
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/include/hwloc/bitmap.h
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/include/hwloc/cuda.h
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/include/hwloc/cudart.h
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/include/hwloc/myriexpress.h
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/cuda.c
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/cudart.c
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/hwloc_bitmap_first_last_weight.c
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/hwloc_bitmap_singlify.c
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/hwloc_bitmap_string.c
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/128ia64-17n4s2c.output
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/128ia64-17n4s2c.tar.bz2
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16amd64-8n2c-cpusets.output
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16amd64-8n2c-cpusets.tar.bz2
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16amd64-8n2c-cpusets.xml.options
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16amd64-8n2c-cpusets.xml.output
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16amd64-8n2c-cpusets.xml.source
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16amd64-8n2c-cpusets_noadmin.options
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16amd64-8n2c-cpusets_noadmin.output
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16amd64-8n2c-cpusets_noadmin.source
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16amd64-8n2c.output
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16amd64-8n2c.tar.bz2
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-2m4c2t.output
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-2m4c2t.tar.bz2
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t-offlines.output
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t-offlines.tar.bz2
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t-offlines.xml.options
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t-offlines.xml.output
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t-offlines.xml.source
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t-offlines_noadmin.options
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t-offlines_noadmin.output
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t-offlines_noadmin.source
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t.output
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t.tar.bz2
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t.xml.options
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t.xml.output
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t.xml.source
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t_merge.options
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t_merge.output
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t_merge.source
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t_ncaches.options
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t_ncaches.output
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t_ncaches.source
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16ia64-8n2s.output
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16ia64-8n2s.tar.bz2
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/1alpha.output
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/1alpha.tar.bz2
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/256ia64-64n2s2c.output
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/256ia64-64n2s2c.tar.bz2
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/256ppc-8n8s4t-nocache.exclude
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/256ppc-8n8s4t-nocache.output
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/256ppc-8n8s4t-nocache.source
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/256ppc-8n8s4t-nosys.exclude
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/256ppc-8n8s4t-nosys.output
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/256ppc-8n8s4t-nosys.source
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/256ppc-8n8s4t.output
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/256ppc-8n8s4t.tar.bz2
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/2amd64-2n.output
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/2amd64-2n.tar.bz2
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/2ps3-2t.output
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/2ps3-2t.tar.bz2
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/2s390-2c.output
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/2s390-2c.tar.bz2
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/48amd64-4d2n6c-sparse.output
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/48amd64-4d2n6c-sparse.tar.bz2
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/4ia64-4s.output
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/4ia64-4s.tar.bz2
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/4ppc-4c.output
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/4ppc-4c.tar.bz2
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/4qs22-2s2t.output
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/4qs22-2s2t.tar.bz2
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/64fake-4n2s2ca2c2t.output
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/64fake-4n2s2ca2c2t.tar.bz2
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/8amd64-4n2c.output
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/8amd64-4n2c.tar.bz2
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/8em64t-2s2ca2c.output
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/8em64t-2s2ca2c.tar.bz2
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/8em64t-2s4c-heterogeneous.output
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/8em64t-2s4c-heterogeneous.tar.bz2
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/8em64t-4c2t.output
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/8em64t-4c2t.tar.bz2
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/8ia64-2n2s2c.output
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/8ia64-2n2s2c.tar.bz2
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/8ia64-2s2c2t.output
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/8ia64-2s2c2t.tar.bz2
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/8ia64-4s2c.output
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/8ia64-4s2c.tar.bz2
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/96em64t-4n4d3ca2co.output
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/96em64t-4n4d3ca2co.tar.bz2
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/gather/
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/gather/Makefile.am
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/gather/test-gather-topology.sh.in
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/hwloc-gather-topology.sh.in
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/myriexpress.c
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/xmlbuffer.c
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/utils/hwloc-ps.1in
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/utils/hwloc-ps.c
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/utils/misc.h
Removed:
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/hwloc_cpuset_first_last_weight.c
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/hwloc_cpuset_singlify.c
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/hwloc_cpuset_string.c
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16amd64-8n2c-cpusets.tar.gz
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16amd64-8n2c-cpusets.tar.gz.output
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16amd64-8n2c-cpusets.xml.tar.gz
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16amd64-8n2c-cpusets.xml.tar.gz.options
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16amd64-8n2c-cpusets.xml.tar.gz.output
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16amd64-8n2c-cpusets_noadmin.tar.gz
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16amd64-8n2c-cpusets_noadmin.tar.gz.options
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16amd64-8n2c-cpusets_noadmin.tar.gz.output
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16amd64-8n2c.tar.gz
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16amd64-8n2c.tar.gz.output
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-2m4c2t.tar.gz
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-2m4c2t.tar.gz.output
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t-offlines.tar.gz
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t-offlines.tar.gz.output
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t-offlines.xml.tar.gz
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t-offlines.xml.tar.gz.options
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t-offlines.xml.tar.gz.output
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t-offlines_noadmin.tar.gz
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t-offlines_noadmin.tar.gz.options
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t-offlines_noadmin.tar.gz.output
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t.tar.gz
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t.tar.gz.output
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t.xml.tar.gz
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t.xml.tar.gz.options
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t.xml.tar.gz.output
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t_merge.tar.gz
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t_merge.tar.gz.options
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t_merge.tar.gz.output
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t_ncaches.tar.gz
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t_ncaches.tar.gz.options
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t_ncaches.tar.gz.output
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16ia64-8n2s.tar.gz
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16ia64-8n2s.tar.gz.output
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/1alpha.tar.gz
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/1alpha.tar.gz.output
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/256ia64-64n2s2c.tar.gz
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/256ia64-64n2s2c.tar.gz.output
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/2amd64-2n.tar.gz
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/2amd64-2n.tar.gz.output
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/2ps3-2t.tar.gz
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/2ps3-2t.tar.gz.output
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/2s390-2c.tar.gz
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/2s390-2c.tar.gz.output
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/48amd64-4d2n6c.tar.gz
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/48amd64-4d2n6c.tar.gz.output
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/4ia64-4s.tar.gz
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/4ia64-4s.tar.gz.output
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/4ppc-4c.tar.gz
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/4ppc-4c.tar.gz.output
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/4qs22-2s2t.tar.gz
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/4qs22-2s2t.tar.gz.output
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/64fake-4n2s2ca2c2t.tar.gz
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/64fake-4n2s2ca2c2t.tar.gz.output
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/8amd64-4n2c.tar.gz
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/8amd64-4n2c.tar.gz.output
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/8em64t-2s2ca2c.tar.gz
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/8em64t-2s2ca2c.tar.gz.output
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/8em64t-2s4c-heterogeneous.tar.gz
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/8em64t-2s4c-heterogeneous.tar.gz.output
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/8em64t-4c2t.tar.gz
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/8em64t-4c2t.tar.gz.output
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/8ia64-2n2s2d.tar.gz
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/8ia64-2n2s2d.tar.gz.output
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/8ia64-4s2c.tar.gz
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/8ia64-4s2c.tar.gz.output
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/96em64t-4n4d3ca2co.tar.gz
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/96em64t-4n4d3ca2co.tar.gz.output
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/gather-topology.sh.in
Modified:
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/AUTHORS
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/COPYING
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/HACKING
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/Makefile.am
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/NEWS
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/README
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/VERSION
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/autogen.sh
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/config/distscript.csh
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/config/hwloc.m4
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/config/hwloc_check_attributes.m4
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/config/hwloc_check_visibility.m4
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/config/hwloc_internal.m4
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/configure.ac
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/contrib/dist/make_dist_tarball
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/doc/Makefile.am
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/doc/doxygen-config.cfg.in
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/doc/doxygen.cfg
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/doc/hwloc-hello.c
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/doc/hwloc.doxy
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/include/Makefile.am
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/include/hwloc.h
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/include/hwloc/config.h.in
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/include/hwloc/cpuset.h
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/include/hwloc/glibc-sched.h
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/include/hwloc/helper.h
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/include/hwloc/linux-libnuma.h
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/include/hwloc/linux.h
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/include/hwloc/openfabrics-verbs.h
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/include/hwloc/rename.h
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/include/private/cpuid.h
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/include/private/debug.h
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/include/private/misc.h
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/include/private/private.h
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/m4/decl.m4
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/src/Makefile.am
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/src/bind.c
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/src/cpuset.c
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/src/dolib.c
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/src/hwloc.dtd
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/src/misc.c
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/src/topology-aix.c
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/src/topology-darwin.c
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/src/topology-freebsd.c
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/src/topology-hpux.c
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/src/topology-linux.c
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/src/topology-osf.c
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/src/topology-solaris.c
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/src/topology-synthetic.c
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/src/topology-windows.c
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/src/topology-x86.c
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/src/topology-xml.c
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/src/topology.c
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/src/traversal.c
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/Makefile.am
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/embedded/do_test.c
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/embedded/main.c
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/embedded/run-embedded-tests.sh
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/glibc-sched.c
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/hwloc_bind.c
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/hwloc_get_cache_covering_cpuset.c
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/hwloc_get_closest_objs.c
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/hwloc_get_largest_objs_inside_cpuset.c
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/hwloc_get_next_obj_covering_cpuset.c
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/hwloc_get_obj_below_array_by_type.c
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/hwloc_get_obj_covering_cpuset.c
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/hwloc_get_obj_inside_cpuset.c
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/hwloc_get_shared_cache_covering_obj.c
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/hwloc_insert_misc.c
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/hwloc_is_thissystem.c
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/hwloc_object_userdata.c
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/hwloc_synthetic.c
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/hwloc_type_depth.c
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux-libnuma.c
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/Makefile.am
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/README
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/test-topology.sh.in
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/openfabrics-verbs.c
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/ports/Makefile.am
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/ports/include/cpuset.h
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/ports/include/kstat.h
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/ports/include/numa.h
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/ports/include/pthread_np.h
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/ports/include/radset.h
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/ports/include/sys/cpuset.h
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/ports/include/sys/lgrp_user.h
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/ports/include/sys/mpctl.h
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/ports/include/sys/processor.h
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/ports/include/sys/procset.h
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/ports/include/sys/rset.h
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/ports/include/sys/sysctl.h
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/ports/include/sys/thread.h
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/ports/include/windows.h
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/xml/16amd64-8n2c-cpusets.xml
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/xml/16em64t-4s2c2t-offlines.xml
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/xml/16em64t-4s2c2t.xml
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/xml/8em64t-2mi2ma2c.xml
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/xml/Makefile.am
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/xml/test-topology.sh.in
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/utils/Makefile.am
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/utils/hwloc-bind.1in
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/utils/hwloc-bind.c
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/utils/hwloc-calc.1in
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/utils/hwloc-calc.c
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/utils/hwloc-calc.h
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/utils/hwloc-distrib.1in
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/utils/hwloc-distrib.c
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/utils/hwloc.7in
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/utils/lstopo-cairo.c
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/utils/lstopo-color.c
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/utils/lstopo-draw.c
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/utils/lstopo-fig.c
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/utils/lstopo-text.c
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/utils/lstopo-windows.c
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/utils/lstopo-xml.c
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/utils/lstopo.1in
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/utils/lstopo.c
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/utils/lstopo.h
mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/utils/test-hwloc-distrib.sh.in
Log:
Updated hwloc version to 1.1rc3. MPICH2 specific patches to follow.
Modified: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/AUTHORS
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/AUTHORS 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/AUTHORS 2010-11-24 09:21:55 UTC (rev 7494)
@@ -5,3 +5,4 @@
Nathalie Furmento <Nathalie.Furmento at labri.fr>
Samuel Thibault <Samuel.Thibault at labri.fr>
Jeff Squyres <jsquyres at cisco.com>
+Alexey Kardashevskiy <aik at au1.ibm.com>
Modified: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/COPYING
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/COPYING 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/COPYING 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,5 +1,6 @@
-Copyright © 2009 CNRS, INRIA, Université Bordeaux 1
-All rights reserved.
+Copyright © 2009 CNRS
+Copyright © 2009 INRIA
+Copyright © 2009 Université Bordeaux 1
Copyright © 2009 Cisco Systems, Inc. All rights reserved.
Redistribution and use in source and binary forms, with or without
Modified: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/HACKING
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/HACKING 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/HACKING 2010-11-24 09:21:55 UTC (rev 7494)
@@ -18,10 +18,19 @@
flavor of "make dist" will fail if these tools are not available):
- doxygen with man, pdf and html support
- - help2man
- - fig2dev
- - w3m
+ - a latex distribution with pdflatex, and the usually recommended
+ package files (such as float.sty) and fonts (such as ptmr8t)
+ - fig2dev (transfig package)
+ - gs (ghostscript package)
+ - epstopdf
+ - w3m or lynx (to generate the README)
+ On Debian systems, the following packages should be enough:
+ doxygen ghostscript texlive-latex-base texlive-latex-recommended
+ texlive-fonts-recommended texlive-font-utils transfig w3m
+ On RedHat systems:
+ ghostscript doxygen transfig tetex tetex-latex w3m
+
- *** BEFORE MAKING AN OFFICIAL RELEASE TARBALL: the release manager
MUST update the VERSION file:
@@ -53,11 +62,12 @@
"make check".
- For the windows zipball, make sure you have Microsoft's lib tool in
- PATH, and remember to copy README and NEWS at the root of the zip into
- README.txt and NEWS.txt files with CRLF:
+ PATH, to pass --enable-static to ./configure, and remember to copy README and
+ NEWS at the root of the zip into README.txt and NEWS.txt files with CRLF:
sed -e 's/$/'$'\015'/ < README > $prefix/README.txt
sed -e 's/$/'$'\015'/ < NEWS > $prefix/NEWS.txt
+ sed -e 's/$/'$'\015'/ < COPYING > $prefix/COPYING.txt
- make maintainer-clean can be used to properly remove the generated
documentations.
Modified: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/Makefile.am
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/Makefile.am 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/Makefile.am 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,4 +1,5 @@
-# Copyright © 2009 INRIA, Université Bordeaux 1
+# Copyright © 2009 INRIA
+# Copyright © 2009 Université Bordeaux 1
# Copyright © 2009-2010 Cisco Systems, Inc. All rights reserved.
# Note that the -I directory must *exactly* match what was specified
Modified: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/NEWS
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/NEWS 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/NEWS 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,4 +1,6 @@
-Copyright © 2009 CNRS, INRIA, Université Bordeaux 1
+Copyright © 2009 CNRS
+Copyright © 2009-2010 INRIA
+Copyright © 2009-2010 Université Bordeaux 1
Copyright © 2009-2010 Cisco Systems, Inc. All rights reserved.
$COPYRIGHT$
@@ -14,6 +16,55 @@
0.9 (as initially released as "libtopology", then re-branded to "hwloc"
in v0.9.1).
+Version 1.1.0
+-------------
+
+* API
+ + Increase HWLOC_API_VERSION to 0x00010100 so that API changes may be
+ detected at build-time.
+ + Add a memory binding interface.
+ + The cpuset API (hwloc/cpuset.h) is now deprecated. It is replaced by
+ the bitmap API (hwloc/bitmap.h) which offers the same features with more
+ generic names since it applies to CPU sets, node sets and more.
+ Backward compatibility with the cpuset API and ABI is still provided but
+ it will be removed in a future release.
+ Old types (hwloc_cpuset_t, ...) are still available as a way to clarify
+ what kind of hwloc_bitmap_t each API function manipulates.
+ Upgrading to the new API only requires to replace hwloc_cpuset_ function
+ calls with the corresponding hwloc_bitmap_ calls, with the following
+ renaming exceptions:
+ - hwloc_cpuset_cpu -> hwloc_bitmap_only
+ - hwloc_cpuset_all_but_cpu -> hwloc_bitmap_allbut
+ - hwloc_cpuset_from_string -> hwloc_bitmap_sscanf
+ + Add an `infos' array in each object to store couples of info names and
+ values. It enables generic storage of things like the old dmi board infos
+ that were previously stored in machine specific attributes.
+ + Add linesize cache attribute.
+* Features
+ + Bitmaps (and thus CPU sets and node sets) are dynamically (re-)allocated,
+ the maximal number of CPUs (HWLOC_NBMAXCPUS) has been removed.
+ + Improve the distance-based grouping code to better support irregular
+ distance matrices.
+ + Add support for device-tree to get cache information (useful on Power
+ architectures).
+* Helpers
+ + Add NVIDIA CUDA helpers in cuda.h and cudart.h to ease interoperability
+ with CUDA Runtime and Driver APIs.
+ + Add Myrinet Express helper in myriexpress.h to ease interoperability.
+* Tools
+ + Add hwloc-ps to list process' bindings.
+ + Add --membind and --mempolicy options to hwloc-bind.
+ + Improve tools command-line options by adding a generic --input option
+ (and more) which replaces the old --xml, --synthetic and --fsys-root.
+ + Cleanup lstopo output configuration by adding --output-format.
+ + Add --intersect in hwloc-calc, and replace --objects with --largest.
+ + Add the ability to work on standard input in hwloc-calc.
+ + Add --from, --to and --at in hwloc-distrib.
+ + Add taskset-specific functions and command-line tools options to
+ manipulate CPU set strings in the format of the taskset program.
+ + Install hwloc-gather-topology.sh on Linux.
+
+
Version 1.0.2
-------------
Modified: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/README
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/README 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/README 2010-11-24 09:21:55 UTC (rev 7494)
@@ -23,7 +23,7 @@
hwloc supports the following operating systems:
* Linux (including old kernels not having sysfs topology information, with
- knowledge of cpusets, offline cpus, and Kerrighed support)
+ knowledge of cpusets, offline cpus, ScaleMP vSMP, and Kerrighed support)
* Solaris
* AIX
* Darwin / OS X
@@ -44,12 +44,12 @@
hwloc can display the topology in a human-readable format, either in graphical
mode (X11), or by exporting in one of several different formats, including:
-plain text, PDF, PNG, and FIG (see Examples below). Note that some of the
+plain text, PDF, PNG, and FIG (see CLI Examples below). Note that some of the
export formats require additional support libraries.
hwloc offers a programming interface for manipulating topologies and objects.
It also brings a powerful CPU bitmap API that is used to describe topology
-objects location on physical/logical processors. See the Programming interface
+objects location on physical/logical processors. See the Programming Interface
below. It may also be used to binding applications onto certain cores or memory
nodes. Several utility programs are also provided to ease command-line
manipulation of topology objects, binding of processes, and so on.
@@ -84,13 +84,15 @@
package can be found when hwloc is configured and build. Similarly, lstopo's
XML support requires the libxml2 development package.
-Examples
+CLI Examples
On a 4-socket 2-core machine with hyperthreading, the lstopo tool may show the
-following outputs:
+following graphic output:
dudley.png
+Here's the equivalent output in textual form:
+
Machine (16GB)
Socket #0 + L3 #0 (4096KB)
L2 #0 (1024KB) + L1 #0 (16KB) + Core #0
@@ -121,11 +123,80 @@
PU #14 (phys=7)
PU #15 (phys=15)
+Finally, here's the equivalent output in XML. Long lines were artificially
+broken for document clarity (in the real output, each XML tag is on a single
+line), and only socket #0 is shown for brevity:
+
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE topology SYSTEM "hwloc.dtd">
+<topology>
+ <object type="Machine" os_level="-1" os_index="0" cpuset="0x0000ffff"
+ complete_cpuset="0x0000ffff" online_cpuset="0x0000ffff"
+ allowed_cpuset="0x0000ffff"
+ dmi_board_vendor="Dell Computer Corporation" dmi_board_name="0RD318"
+ local_memory="16648183808">
+ <page_type size="4096" count="4064498"/>
+ <page_type size="2097152" count="0"/>
+ <object type="Socket" os_level="-1" os_index="0" cpuset="0x00001111"
+ complete_cpuset="0x00001111" online_cpuset="0x00001111"
+ allowed_cpuset="0x00001111">
+ <object type="Cache" os_level="-1" cpuset="0x00001111"
+ complete_cpuset="0x00001111" online_cpuset="0x00001111"
+ allowed_cpuset="0x00001111" cache_size="4194304" depth="3"
+ cache_linesize="64">
+ <object type="Cache" os_level="-1" cpuset="0x00000101"
+ complete_cpuset="0x00000101" online_cpuset="0x00000101"
+ allowed_cpuset="0x00000101" cache_size="1048576" depth="2"
+ cache_linesize="64">
+ <object type="Cache" os_level="-1" cpuset="0x00000101"
+ complete_cpuset="0x00000101" online_cpuset="0x00000101"
+ allowed_cpuset="0x00000101" cache_size="16384" depth="1"
+ cache_linesize="64">
+ <object type="Core" os_level="-1" os_index="0" cpuset="0x00000101"
+ complete_cpuset="0x00000101" online_cpuset="0x00000101"
+ allowed_cpuset="0x00000101">
+ <object type="PU" os_level="-1" os_index="0" cpuset="0x00000001"
+ complete_cpuset="0x00000001" online_cpuset="0x00000001"
+ allowed_cpuset="0x00000001"/>
+ <object type="PU" os_level="-1" os_index="8" cpuset="0x00000100"
+ complete_cpuset="0x00000100" online_cpuset="0x00000100"
+ allowed_cpuset="0x00000100"/>
+ </object>
+ </object>
+ </object>
+ <object type="Cache" os_level="-1" cpuset="0x00001010"
+ complete_cpuset="0x00001010" online_cpuset="0x00001010"
+ allowed_cpuset="0x00001010" cache_size="1048576" depth="2"
+ cache_linesize="64">
+ <object type="Cache" os_level="-1" cpuset="0x00001010"
+ complete_cpuset="0x00001010" online_cpuset="0x00001010"
+ allowed_cpuset="0x00001010" cache_size="16384" depth="1"
+ cache_linesize="64">
+ <object type="Core" os_level="-1" os_index="1" cpuset="0x00001010"
+ complete_cpuset="0x00001010" online_cpuset="0x00001010"
+ allowed_cpuset="0x00001010">
+ <object type="PU" os_level="-1" os_index="4" cpuset="0x00000010"
+ complete_cpuset="0x00000010" online_cpuset="0x00000010"
+ allowed_cpuset="0x00000010"/>
+ <object type="PU" os_level="-1" os_index="12" cpuset="0x00001000"
+ complete_cpuset="0x00001000" online_cpuset="0x00001000"
+ allowed_cpuset="0x00001000"/>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ <!-- ...other sockets listed here ... -->
+ </object>
+</topology>
+
On a 4-socket 2-core Opteron NUMA machine, the lstopo tool may show the
-following outputs:
+following graphic output:
hagrid.png
+Here's the equivalent output in textual form:
+
Machine (64GB)
NUMANode #0 (phys=0 8190MB) + Socket #0
L2 #0 (1024KB) + L1 #0 (64KB) + Core #0 + PU #0 (phys=0)
@@ -152,11 +223,62 @@
L2 #14 (1024KB) + L1 #14 (64KB) + Core #14 + PU #14 (phys=14)
L2 #15 (1024KB) + L1 #15 (64KB) + Core #15 + PU #15 (phys=15)
+And here's the equivalent output in XML. Similar to above, line breaks were
+added and only PU#0 is shown for brevity:
+
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE topology SYSTEM "hwloc.dtd">
+<topology>
+ <object type="Machine" os_level="-1" os_index="0" cpuset="0x000000ff"
+ complete_cpuset="0x000000ff" online_cpuset="0x000000ff"
+ allowed_cpuset="0x000000ff" nodeset="0x000000ff"
+ complete_nodeset="0x000000ff" allowed_nodeset="0x000000ff"
+ dmi_board_vendor="TYAN Computer Corp" dmi_board_name="S4881 ">
+ <page_type size="4096" count="0"/>
+ <page_type size="2097152" count="0"/>
+ <object type="NUMANode" os_level="-1" os_index="0" cpuset="0x00000003"
+ complete_cpuset="0x00000003" online_cpuset="0x00000003"
+ allowed_cpuset="0x00000003" nodeset="0x00000001"
+ complete_nodeset="0x00000001" allowed_nodeset="0x00000001"
+ local_memory="7514177536">
+ <page_type size="4096" count="1834516"/>
+ <page_type size="2097152" count="0"/>
+ <object type="Socket" os_level="-1" os_index="0" cpuset="0x00000003"
+ complete_cpuset="0x00000003" online_cpuset="0x00000003"
+ allowed_cpuset="0x00000003" nodeset="0x00000001"
+ complete_nodeset="0x00000001" allowed_nodeset="0x00000001">
+ <object type="Cache" os_level="-1" cpuset="0x00000001"
+ complete_cpuset="0x00000001" online_cpuset="0x00000001"
+ allowed_cpuset="0x00000001" nodeset="0x00000001"
+ complete_nodeset="0x00000001" allowed_nodeset="0x00000001"
+ cache_size="1048576" depth="2" cache_linesize="64">
+ <object type="Cache" os_level="-1" cpuset="0x00000001"
+ complete_cpuset="0x00000001" online_cpuset="0x00000001"
+ allowed_cpuset="0x00000001" nodeset="0x00000001"
+ complete_nodeset="0x00000001" allowed_nodeset="0x00000001"
+ cache_size="65536" depth="1" cache_linesize="64">
+ <object type="Core" os_level="-1" os_index="0"
+ cpuset="0x00000001" complete_cpuset="0x00000001"
+ online_cpuset="0x00000001" allowed_cpuset="0x00000001"
+ nodeset="0x00000001" complete_nodeset="0x00000001"
+ allowed_nodeset="0x00000001">
+ <object type="PU" os_level="-1" os_index="0" cpuset="0x00000001"
+ complete_cpuset="0x00000001" online_cpuset="0x00000001"
+ allowed_cpuset="0x00000001" nodeset="0x00000001"
+ complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+ </object>
+ </object>
+ </object>
+ <!-- ...more objects listed here ... -->
+</topology>
+
On a 2-socket quad-core Xeon (pre-Nehalem, with 2 dual-core dies into each
socket):
emmett.png
+Here's the same output in text form:
+
Machine (16GB)
Socket #0
L2 #0 (4096KB)
@@ -173,53 +295,148 @@
L1 #6 (32KB) + Core #6 + PU #6 (phys=3)
L1 #7 (32KB) + Core #7 + PU #7 (phys=7)
-Programming interface
+And the same output in XML (line breaks added, only PU#0 shown):
-The basic interface is available in hwloc.h. It mostly offers low-level
-routines for advanced programmers that want to manually manipulate objects and
-follow links between them. Developers should look at hwloc/helper.h, which
-provides good higher-level topology traversal examples.
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE topology SYSTEM "hwloc.dtd">
+<topology>
+ <object type="Machine" os_level="-1" os_index="0" cpuset="0x000000ff"
+ complete_cpuset="0x000000ff" online_cpuset="0x000000ff"
+ allowed_cpuset="0x000000ff" dmi_board_vendor="Dell Inc."
+ dmi_board_name="0NR282" local_memory="16865292288">
+ <page_type size="4096" count="4117503"/>
+ <page_type size="2097152" count="0"/>
+ <object type="Socket" os_level="-1" os_index="0" cpuset="0x00000055"
+ complete_cpuset="0x00000055" online_cpuset="0x00000055"
+ allowed_cpuset="0x00000055">
+ <object type="Cache" os_level="-1" cpuset="0x00000011"
+ complete_cpuset="0x00000011" online_cpuset="0x00000011"
+ allowed_cpuset="0x00000011" cache_size="4194304" depth="2"
+ cache_linesize="64">
+ <object type="Cache" os_level="-1" cpuset="0x00000001"
+ complete_cpuset="0x00000001" online_cpuset="0x00000001"
+ allowed_cpuset="0x00000001" cache_size="32768" depth="1"
+ cache_linesize="64">
+ <object type="Core" os_level="-1" os_index="0" cpuset="0x00000001"
+ complete_cpuset="0x00000001" online_cpuset="0x00000001"
+ allowed_cpuset="0x00000001">
+ <object type="PU" os_level="-1" os_index="0" cpuset="0x00000001"
+ complete_cpuset="0x00000001" online_cpuset="0x00000001"
+ allowed_cpuset="0x00000001"/>
+ </object>
+ </object>
+ <object type="Cache" os_level="-1" cpuset="0x00000010"
+ complete_cpuset="0x00000010" online_cpuset="0x00000010"
+ allowed_cpuset="0x00000010" cache_size="32768" depth="1"
+ cache_linesize="64">
+ <object type="Core" os_level="-1" os_index="1" cpuset="0x00000010"
+ complete_cpuset="0x00000010" online_cpuset="0x00000010"
+ allowed_cpuset="0x00000010">
+ <object type="PU" os_level="-1" os_index="4" cpuset="0x00000010"
+ complete_cpuset="0x00000010" online_cpuset="0x00000010"
+ allowed_cpuset="0x00000010"/>
+ </object>
+ </object>
+ </object>
+ <!-- ...more objects listed here ... -->
+</topology>
-Each object contains a cpuset describing the list of processing units that it
-contains. These cpusets may be used for Binding. hwloc offers an extensive
-cpuset manipulation interface in hwloc/cpuset.h.
+Programming Interface
-Moreover, hwloc also comes with additional helpers for interoperability with
-several commonly used environments. For Linux, some specific helpers are
-available in hwloc/linux.h, and hwloc/linux-libnuma.h if using libnuma. On
-glibc-based systems, additional helpers are available in hwloc/glibc-sched.h.
-For Linux systems with the OpenFabrics verbs library, some dedicated helpers
-are provided in hwloc/openfabrics-verbs.h (this helper file is not yet useful
-on non-Linux systems with the OpenFabrics verbs library).
+The basic interface is available in hwloc.h. It essentially offers low-level
+routines for advanced programmers that want to manually manipulate objects and
+follow links between them. Documentation for everything in hwloc.h are provided
+later in this document. Developers should also look at hwloc/helper.h (and also
+in this document, which provides good higher-level topology traversal examples.
To precisely define the vocabulary used by hwloc, a Terms and Definitions
section is available and should probably be read first.
-Further documentation is available in a full set of HTML pages, man pages, and
-self-contained PDF files (formatted for both both US letter and A4 formats) in
-the source tarball in doc/doxygen-doc/. If you are building from a Subversion
-checkout, you will need to have Doxygen and pdflatex installed -- the
-documentation will be built during the normal "make" process. The documentation
-is installed during "make install" to $prefix/share/doc/hwloc/ and your systems
-default man page tree (under $prefix, of course).
+Each hwloc object contains a cpuset describing the list of processing units
+that it contains. These bitmaps may be used for CPU binding and Memory binding.
+hwloc offers an extensive bitmap manipulation interface in hwloc/bitmap.h.
-The following section presents an example of API usage.
+Moreover, hwloc also comes with additional helpers for interoperability with
+several commonly used environments. See the Interoperability with other
+software section for details.
-API example
+The complete API documentation is available in a full set of HTML pages, man
+pages, and self-contained PDF files (formatted for both both US letter and A4
+formats) in the source tarball in doc/doxygen-doc/.
+NOTE: If you are building the documentation from a Subversion checkout, you
+will need to have Doxygen and pdflatex installed -- the documentation will be
+built during the normal "make" process. The documentation is installed during
+"make install" to $prefix/share/doc/hwloc/ and your systems default man page
+tree (under $prefix, of course).
+
+Portability (especially when using the API or XML)
+
+As shown in CLI Examples, hwloc can obtain information on a wide variety of
+hardware topologies. However, some platforms and/or operating system versions
+will only report a subset of this information. For example, on an PPC64-based
+system with 32 cores (each with 2 hardware threads) running a default
+2.6.18-based kernel from RHEL 5.4, hwloc is only able to glean information
+about NUMA nodes and processor units (PUs). No information about caches,
+sockets, or cores is available.
+
+Here's the graphic output from lstopo on this platform when Simultaneous
+Multi-Threading (SMT) is enabled:
+
+ ppc64-with-smt.png
+
+And here's the graphic output from lstopo on this platform when SMT is
+disabled:
+
+ ppc64-without-smt.png
+
+Notice that hwloc only sees half the PUs when SMT is disabled. PU#15, for
+example, seems to change location from NUMA node #0 to #1. In reality, no PUs
+"moved" -- they were simply re-numbered when hwloc only saw half as many.
+Hence, PU#15 in the SMT-disabled picture probably corresponds to PU#30 in the
+SMT-enabled picture.
+
+This same "PUs have disappeared" effect can be seen on other platforms -- even
+platforms / OSs that provide much more information than the above PPC64 system.
+This is an unfortunate side-effect of how operating systems report information
+to hwloc.
+
+Note that upgrading the Linux kernel on the same PPC64 system mentioned above
+to 2.6.34, hwloc is able to discover all the topology information. The
+following picture shows the entire topology layout when SMT is enabled:
+
+ ppc64-full-with-smt.png
+
+Developers using the hwloc API or XML output for portable applications should
+therefore be extremely careful to not make any assumptions about the structure
+of data that is returned. For example, per the above reported PPC topology, it
+is not safe to assume that PUs will always be descendants of cores.
+
+Additionally, future hardware may insert new topology elements that are not
+available in this version of hwloc. Long-lived applications that are meant to
+span multiple different hardware platforms should also be careful about making
+structure assumptions. For example, there may someday be an element "lower"
+than a PU, or perhaps a new element may exist between a core and a PU.
+
+API Example
+
The following small C example (named ``hwloc-hello.c'') prints the topology of
the machine and bring the process to the first logical processor of the second
core of the machine.
/* Example hwloc API program.
*
- * Copyright ? 2009 INRIA, Universit? Bordeaux 1
- * Copyright ? 2009 Cisco Systems, Inc. All rights reserved.
+ * Copyright ? 2009-2010 INRIA
+ * Copyright ? 2009-2010 Universit? Bordeaux 1
+ * Copyright ? 2009-2010 Cisco Systems, Inc. All rights reserved.
*
* hwloc-hello.c
*/
#include <hwloc.h>
+#include <errno.h>
+#include <stdio.h>
+#include <string.h>
static void print_children(hwloc_topology_t topology, hwloc_obj_t obj,
int depth)
@@ -237,7 +454,7 @@
int main(void)
{
int depth;
- unsigned i;
+ unsigned i, n;
unsigned long size;
int levels;
char string[128];
@@ -249,7 +466,7 @@
/* Allocate and initialize topology object. */
hwloc_topology_init(&topology);
- /* ... Optionally, put detection configuration here to e.g. ignore
+ /* ... Optionally, put detection configuration here to ignore
some objects types, define a synthetic topology, etc....
The default is to detect all the objects of the machine that
@@ -263,9 +480,11 @@
in case we need the topology depth later. */
topodepth = hwloc_topology_get_depth(topology);
- /* First example:
- * Walk the topology with an array style, from level 0 (always the
- * system level) to the lowest level (always the proc level). */
+ /*****************************************************************
+ * First example:
+ * Walk the topology with an array style, from level 0 (always
+ * the system level) to the lowest level (always the proc level).
+ *****************************************************************/
for (depth = 0; depth < topodepth; depth++) {
printf("*** Objects at level %d\n", depth);
for (i = 0; i < hwloc_get_nbobjs_by_depth(topology, depth);
@@ -277,13 +496,17 @@
}
}
- /* Second example:
- * Walk the topology with a tree style. */
+ /*****************************************************************
+ * Second example:
+ * Walk the topology with a tree style.
+ *****************************************************************/
printf("*** Printing overall tree\n");
print_children(topology, hwloc_get_root_obj(topology), 0);
- /* Third example:
- * Print the number of sockets. */
+ /*****************************************************************
+ * Third example:
+ * Print the number of sockets.
+ *****************************************************************/
depth = hwloc_get_type_depth(topology, HWLOC_OBJ_SOCKET);
if (depth == HWLOC_TYPE_DEPTH_UNKNOWN) {
printf("*** The number of sockets is unknown\n");
@@ -292,9 +515,11 @@
hwloc_get_nbobjs_by_depth(topology, depth));
}
- /* Fourth example:
- * Compute the amount of cache that the first logical processor has above it.
- */
+ /*****************************************************************
+ * Fourth example:
+ * Compute the amount of cache that the first logical processor
+ * has above it.
+ *****************************************************************/
levels = 0;
size = 0;
for (obj = hwloc_get_obj_by_type(topology, HWLOC_OBJ_PU, 0);
@@ -304,13 +529,16 @@
levels++;
size += obj->attr->cache.size;
}
- printf("*** Logical processor 0 has %u caches totaling %luKB\n", levels, size / 1024);
+ printf("*** Logical processor 0 has %d caches totaling %luKB\n",
+ levels, size / 1024);
- /* Fifth example:
+ /*****************************************************************
+ * Fifth example:
* Bind to only one thread of the last core of the machine.
*
* First find out where cores are, or else smaller sets of CPUs if
- * the OS doesn't have the notion of a "core". */
+ * the OS doesn't have the notion of a "core".
+ *****************************************************************/
depth = hwloc_get_type_or_below_depth(topology, HWLOC_OBJ_CORE);
/* Get last core. */
@@ -318,24 +546,47 @@
hwloc_get_nbobjs_by_depth(topology, depth) - 1);
if (obj) {
/* Get a copy of its cpuset that we may modify. */
- cpuset = hwloc_cpuset_dup(obj->cpuset);
+ cpuset = hwloc_bitmap_dup(obj->cpuset);
/* Get only one logical processor (in case the core is
SMT/hyperthreaded). */
- hwloc_cpuset_singlify(cpuset);
+ hwloc_bitmap_singlify(cpuset);
/* And try to bind ourself there. */
if (hwloc_set_cpubind(topology, cpuset, 0)) {
char *str;
- hwloc_cpuset_asprintf(&str, obj->cpuset);
- printf("Couldn't bind to cpuset %s\n", str);
+ int error = errno;
+ hwloc_bitmap_asprintf(&str, obj->cpuset);
+ printf("Couldn't bind to cpuset %s: %s\n", str, strerror(error));
free(str);
}
/* Free our cpuset copy */
- hwloc_cpuset_free(cpuset);
+ hwloc_bitmap_free(cpuset);
}
+ /*****************************************************************
+ * Sixth example:
+ * Allocate some memory on the last NUMA node, bind some existing
+ * memory to the last NUMA node.
+ *****************************************************************/
+ /* Get last node. */
+ n = hwloc_get_nbobjs_by_type(topology, HWLOC_OBJ_NODE);
+ if (n) {
+ void *m;
+ size_t size = 1024*1024;
+
+ obj = hwloc_get_obj_by_type(topology, HWLOC_OBJ_NODE, n - 1);
+ m = hwloc_alloc_membind_nodeset(topology, size, obj->nodeset,
+ HWLOC_MEMBIND_DEFAULT, 0);
+ hwloc_free_membind(topology, m, size);
+
+ m = malloc(size);
+ hwloc_set_area_membind_nodeset(topology, m, size, obj->nodeset,
+ HWLOC_MEMBIND_DEFAULT, 0);
+ free(m);
+ }
+
/* Destroy topology object. */
hwloc_topology_destroy(topology);
@@ -385,14 +636,26 @@
*** 2 socket(s)
shell$
-Questions and bugs
+Questions and Bugs
Questions should be sent to the devel mailing list (http://www.open-mpi.org/
community/lists/hwloc.php). Bug reports should be reported in the tracker (
https://svn.open-mpi.org/trac/hwloc/).
-History / credits
+If hwloc discovers an incorrect topology for your machine, the very first thing
+you should check is to ensure that you have the most recent updates installed
+for your operating system. Indeed, most of hwloc topology discovery relies on
+hardware information retrieved through the operation system (e.g., via the /sys
+virtual filesystem of the Linux kernel). If upgrading your OS or Linux kernel
+does not solve your problem, you may also want to ensure that you are running
+the most recent version of the BIOS for your machine.
+If those things fail, contact us on the mailing list for additional help.
+Please attach the output of lstopo after having given the --enable-debug option
+to ./configure and rebuilt completely, to get debugging output.
+
+History / Credits
+
hwloc is the evolution and merger of the libtopology (http://
runtime.bordeaux.inria.fr/libtopology/) project and the Portable Linux
Processor Affinity (PLPA) (http://www.open-mpi.org/projects/plpa/) project.
@@ -407,5 +670,5 @@
-------------------------------------------------------------------------------
-Generated on Sun Apr 4 13:48:12 2010 for Hardware Locality (hwloc) by doxygen
-1.6.3
+Generated on Fri Nov 5 2010 17:52:24 for Hardware Locality (hwloc) by doxygen
+1.7.1
Modified: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/VERSION
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/VERSION 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/VERSION 2010-11-24 09:21:55 UTC (rev 7494)
@@ -6,8 +6,8 @@
# <major>.<minor>.<release>. If release is zero, then it is omitted.
major=1
-minor=0
-release=2
+minor=1
+release=0
# greek is used for alpha or beta release tags. If it is non-empty,
# it will be appended to the version number. It does not have to be
@@ -50,4 +50,4 @@
# 2. Version numbers are described in the Libtool current:revision:age
# format.
-libhwloc_so_version=0:1:0
+libhwloc_so_version=1:0:1
Modified: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/autogen.sh
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/autogen.sh 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/autogen.sh 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,11 +1,2 @@
-#! /bin/sh
-
-if [ -n "$MPICH2_AUTOTOOLS_DIR" ] ; then
- libtoolize=${MPICH2_AUTOTOOLS_DIR}/libtoolize
- autoreconf=${MPICH2_AUTOTOOLS_DIR}/autoreconf
-else
- libtoolize=${LIBTOOLIZE:-libtoolize}
- autoreconf=${AUTORECONF:-autoreconf}
-fi
-
-$autoreconf -vif
+:
+autoreconf -ivf
Modified: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/config/distscript.csh
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/config/distscript.csh 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/config/distscript.csh 2010-11-24 09:21:55 UTC (rev 7494)
@@ -10,7 +10,8 @@
# University of Stuttgart. All rights reserved.
# Copyright (c) 2004-2005 The Regents of the University of California.
# All rights reserved.
-# Copyright © 2009 Cisco Systems, Inc. All rights reserved.
+# Copyright © 2010 INRIA
+# Copyright © 2009-2010 Cisco Systems, Inc. All rights reserved.
# $COPYRIGHT$
#
# Additional copyrights may follow
@@ -103,8 +104,8 @@
if ($vpath == 1 && ! -d $srcdir/doc/doxygen-doc) then
echo "*** This is a VPATH 'make dist', but the srcdir does not already"
echo "*** have a doxygen-doc tree built. hwloc's config/distscript.csh"
- echo "*** the docs to be built in the srcdir before executing 'make"
- echo "*** dist' in a VPATH build."
+ echo "*** requores the docs to be built in the srcdir before executing"
+ echo "*** 'make dist' in a VPATH build."
exit 1
endif
Modified: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/config/hwloc.m4
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/config/hwloc.m4 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/config/hwloc.m4 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,6 +1,7 @@
dnl -*- Autoconf -*-
dnl
-dnl Copyright 2009 INRIA, Université Bordeaux 1
+dnl Copyright (c) 2009 INRIA
+dnl Copyright (c) 2009 Université Bordeaux 1
dnl Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana
dnl University Research and Technology
dnl Corporation. All rights reserved.
@@ -8,6 +9,8 @@
dnl All rights reserved.
dnl Copyright (c) 2004-2008 High Performance Computing Center Stuttgart,
dnl University of Stuttgart. All rights reserved.
+dnl Copyright © 2010 INRIA
+dnl Copyright © 2010 Université of Bordeaux
dnl Copyright © 2006-2010 Cisco Systems, Inc. All rights reserved.
# Main hwloc m4 macro, to be invoked by the user
@@ -21,7 +24,6 @@
AC_DEFUN([HWLOC_SETUP_CORE],[
AC_REQUIRE([AC_CANONICAL_TARGET])
AC_REQUIRE([AC_PROG_CC])
- AC_REQUIRE([AM_PROG_CC_C_O])
AS_IF([test "x$4" != "x"],
[cat <<EOF
@@ -31,9 +33,6 @@
###
EOF])
- # We want new Libtool. None of that old stuff. Pfft.
- LT_PREREQ([2.2.6])
-
# If no prefix was defined, set a good value
m4_ifval([$1],
[m4_define([hwloc_config_prefix],[$1/])],
@@ -93,6 +92,12 @@
AS_IF([test "$hwloc_debug" = "" -a "$enable_debug" = "yes"],
[hwloc_debug=1
hwloc_debug_msg="enabled"])
+ AS_IF([test "$hwloc_debug" = "" -a "$enable_debug" = "" -a -d .svn],
+ [hwloc_debug=1
+ hwloc_debug_msg="enabled (SVN checkout default)"])
+ AS_IF([test "$hwloc_debug" = "" -a "$enable_debug" = "" -a -d .hg],
+ [hwloc_debug=1
+ hwloc_debug_msg="enabled (HG clone default)"])
AS_IF([test "$hwloc_debug" = ""],
[hwloc_debug=0
hwloc_debug_msg="disabled"])
@@ -108,11 +113,11 @@
AC_MSG_RESULT(m4_ifval([$1], hwloc_config_prefix, [(none)]))
# Note that private/config.h *MUST* be listed first so that it
- # becomes the "main" config header file. Any AM_CONFIG_HEADERs
+ # becomes the "main" config header file. Any AC_CONFIG_HEADERs
# after that (hwloc/config.h) will only have selective #defines
# replaced, not the entire file.
- AM_CONFIG_HEADER(hwloc_config_prefix[include/private/config.h])
- AM_CONFIG_HEADER(hwloc_config_prefix[include/hwloc/config.h])
+ AC_CONFIG_HEADER(hwloc_config_prefix[include/private/config.h])
+ AC_CONFIG_HEADER(hwloc_config_prefix[include/hwloc/config.h])
# What prefix are we using?
AC_MSG_CHECKING([for hwloc symbol prefix])
@@ -272,8 +277,6 @@
esac
esac
- _HWLOC_CHECK_DIFF_U
-
AC_CHECK_SIZEOF([unsigned long])
AC_DEFINE_UNQUOTED([HWLOC_SIZEOF_UNSIGNED_LONG], $ac_cv_sizeof_unsigned_long, [The size of `unsigned long', as computed by sizeof])
AC_CHECK_SIZEOF([unsigned int])
@@ -318,30 +321,6 @@
AC_DEFINE([HWLOC_HAVE_STDINT_H], [1], [Define to 1 if you have the <stdint.h> header file.])
])
- AC_CHECK_TYPES([wchar_t], [
- AC_CHECK_FUNCS([putwc])
- ], [], [[#include <wchar.h>]])
-
- AC_CHECK_HEADERS([locale.h], [
- AC_CHECK_FUNCS([setlocale])
- ])
- AC_CHECK_HEADERS([langinfo.h], [
- AC_CHECK_FUNCS([nl_langinfo])
- ])
- hwloc_old_LIBS="$LIBS"
- LIBS=
- AC_CHECK_HEADERS([curses.h], [
- AC_CHECK_HEADERS([term.h], [
- AC_SEARCH_LIBS([tparm], [termcap ncursesw ncurses curses], [
- AC_SUBST([HWLOC_TERMCAP_LIBS], ["$LIBS"])
- AC_DEFINE([HWLOC_HAVE_LIBTERMCAP], [1],
- [Define to 1 if you have a library providing the termcap interface])
- ])
- ], [], [[#include <curses.h>]])
- ])
- LIBS="$hwloc_old_LIBS"
- unset hwloc_old_LIBS
-
AC_CHECK_TYPES([KAFFINITY,
PROCESSOR_CACHE_TYPE,
CACHE_DESCRIPTOR,
@@ -374,12 +353,6 @@
AC_DEFINE([HAVE_LIBKSTAT], 1, [Define to 1 if we have -lkstat])])
])
- AC_CHECK_HEADERS([infiniband/verbs.h], [
- AC_CHECK_LIB([ibverbs], [ibv_open_device],
- [HWLOC_LIBS="-libverbs $HWLOC_LIBS"
- AC_DEFINE([HAVE_LIBIBVERBS], 1, [Define to 1 if we have -libverbs])])
- ])
-
AC_CHECK_DECLS([_SC_NPROCESSORS_ONLN,
_SC_NPROCESSORS_CONF,
_SC_NPROC_ONLN,
@@ -424,36 +397,32 @@
_HWLOC_CHECK_DECL([sched_setaffinity], [
AC_MSG_CHECKING([for old prototype of sched_setaffinity])
- AC_COMPILE_IFELSE(
+ AC_COMPILE_IFELSE([
AC_LANG_PROGRAM([[
#define _GNU_SOURCE
#include <sched.h>
static unsigned long mask;
- ]], [[ sched_setaffinity(0, (void*) &mask);
- ]]),
- AC_DEFINE([HWLOC_HAVE_OLD_SCHED_SETAFFINITY], [1], [Define to 1 if glibc provides the old prototype of sched_setaffinity()])
- AC_MSG_RESULT([yes]),
- AC_MSG_RESULT([no])
- )
+ ]], [[ sched_setaffinity(0, (void*) &mask); ]])],
+ [AC_DEFINE([HWLOC_HAVE_OLD_SCHED_SETAFFINITY], [1], [Define to 1 if glibc provides the old prototype of sched_setaffinity()])
+ AC_MSG_RESULT([yes])],
+ [AC_MSG_RESULT([no])])
], , [[
#define _GNU_SOURCE
#include <sched.h>
]])
AC_MSG_CHECKING([for working CPU_SET])
- AC_LINK_IFELSE(
+ AC_LINK_IFELSE([
AC_LANG_PROGRAM([[
#include <sched.h>
cpu_set_t set;
- ]], [[ CPU_ZERO(&set); CPU_SET(0, &set);
- ]]),
- AC_DEFINE([HWLOC_HAVE_CPU_SET], [1], [Define to 1 if the CPU_SET macro works])
- AC_MSG_RESULT([yes]),
- AC_MSG_RESULT([no])
- )
+ ]], [[ CPU_ZERO(&set); CPU_SET(0, &set);]])],
+ [AC_DEFINE([HWLOC_HAVE_CPU_SET], [1], [Define to 1 if the CPU_SET macro works])
+ AC_MSG_RESULT([yes])],
+ [AC_MSG_RESULT([no])])
AC_MSG_CHECKING([for working CPU_SET_S])
- AC_LINK_IFELSE(
+ AC_LINK_IFELSE([
AC_LANG_PROGRAM([[
#include <sched.h>
cpu_set_t *set;
@@ -462,15 +431,29 @@
CPU_ZERO_S(CPU_ALLOC_SIZE(1024), set);
CPU_SET_S(CPU_ALLOC_SIZE(1024), 0, set);
CPU_FREE(set);
- ]]),
- AC_DEFINE([HWLOC_HAVE_CPU_SET_S], [1], [Define to 1 if the CPU_SET_S macro works])
- AC_MSG_RESULT([yes]),
- AC_MSG_RESULT([no])
- )
+ ]])],
+ [AC_DEFINE([HWLOC_HAVE_CPU_SET_S], [1], [Define to 1 if the CPU_SET_S macro works])
+ AC_MSG_RESULT([yes])],
+ [AC_MSG_RESULT([no])])
- # check for kerrighed, but don't abort if not found
- HWLOC_PKG_CHECK_MODULES([KERRIGHED], [kerrighed >= 2.0], [], [], [:])
+ AC_MSG_CHECKING([for working _syscall3])
+ AC_LINK_IFELSE([
+ AC_LANG_PROGRAM([[
+ #include <linux/unistd.h>
+ #include <errno.h>
+ #define __NR_hwloc_test 123
+ _syscall3(int, hwloc_test, int, param1, int, param2, int, param3);
+ ]], [[ hwloc_test(1, 2, 3); ]])],
+ [AC_DEFINE([HWLOC_HAVE__SYSCALL3], [1], [Define to 1 if the _syscall3 macro works])
+ AC_MSG_RESULT([yes])],
+ [AC_MSG_RESULT([no])])
+ # Check for kerrighed, but don't abort if not found. It's illegal
+ # to pass in an empty 3rd argument, but we trust the output of
+ # pkg-config, so just give it a value that will always work:
+ # printf.
+ HWLOC_PKG_CHECK_MODULES([KERRIGHED], [kerrighed >= 2.0], [printf], [], [:])
+
AC_PATH_PROGS([HWLOC_MS_LIB], [lib])
AC_ARG_VAR([HWLOC_MS_LIB], [Path to Microsoft's Visual Studio `lib' tool])
@@ -516,10 +499,32 @@
])
AC_CHECK_FUNCS([openat], [hwloc_have_openat=yes])
-
- AC_CHECK_DECL([numa_bitmask_alloc], [hwloc_have_linux_libnuma=yes], [],
- [#include <numa.h>])
-
+
+ AC_CHECK_HEADERS([malloc.h])
+ AC_CHECK_FUNCS([getpagesize memalign posix_memalign])
+
+ AC_CHECK_HEADERS([sys/utsname.h])
+ AC_CHECK_FUNCS([uname])
+
+ # set_mempolicy and mbind support
+ AC_CHECK_HEADERS([numaif.h], [
+ AC_CHECK_LIB([numa], [set_mempolicy], [
+ enable_set_mempolicy=yes
+ AC_SUBST([HWLOC_LINUX_LIBNUMA_LIBS], ["-lnuma"])
+ AC_DEFINE([HWLOC_HAVE_SET_MEMPOLICY], [1], [Define to 1 if set_mempolicy is available.])
+ ])
+ AC_CHECK_LIB([numa], [mbind], [
+ enable_mbind=yes
+ AC_SUBST([HWLOC_LINUX_LIBNUMA_LIBS], ["-lnuma"])
+ AC_DEFINE([HWLOC_HAVE_MBIND], [1], [Define to 1 if mbind is available.])
+ ])
+ AC_CHECK_LIB([numa], [migrate_pages], [
+ enable_migrate_pages=yes
+ AC_SUBST([HWLOC_LINUX_LIBNUMA_LIBS], ["-lnuma"])
+ AC_DEFINE([HWLOC_HAVE_MIGRATE_PAGES], [1], [Define to 1 if migrate_pages is available.])
+ ])
+ ])
+
AC_CHECK_HEADERS([pthread_np.h])
AC_CHECK_DECLS([pthread_setaffinity_np],,[:],[[
#include <pthread.h>
@@ -538,8 +543,22 @@
AC_SEARCH_LIBS([pthread_getthrds_np], [pthread],
AC_DEFINE([HWLOC_HAVE_PTHREAD_GETTHRDS_NP], 1, `Define to 1 if you have pthread_getthrds_np')
)
-
+
+ # XML support
+ if test "x$enable_xml" != "xno"; then
+ HWLOC_PKG_CHECK_MODULES([XML], [libxml-2.0], [xmlNewDoc], [:], [enable_xml="no"])
+ fi
+ if test "x$enable_xml" != "xno"; then
+ HWLOC_REQUIRES="libxml-2.0 $HWLOC_REQUIRES"
+ AC_DEFINE([HWLOC_HAVE_XML], [1], [Define to 1 if you have the `xml' library.])
+ AC_SUBST([HWLOC_HAVE_XML], [1])
+ else
+ AC_SUBST([HWLOC_HAVE_XML], [0])
+ fi
+ HWLOC_CFLAGS="$HWLOC_CFLAGS $HWLOC_XML_CFLAGS"
+
# Setup HWLOC's C, CPP, and LD flags, and LIBS
+ AC_SUBST(HWLOC_REQUIRES)
HWLOC_CFLAGS="$hwloc_CC_c99_flags $HWLOC_CFLAGS"
AC_SUBST(HWLOC_CFLAGS)
HWLOC_CPPFLAGS='-I$(HWLOC_top_srcdir)/include -I$(HWLOC_top_builddir)/include'
@@ -564,7 +583,7 @@
AC_MSG_CHECKING([for cpuid])
old_CPPFLAGS="$CPPFLAGS"
CFLAGS="$CFLAGS -I$HWLOC_top_srcdir/include"
- AC_COMPILE_IFELSE(AC_LANG_PROGRAM([[
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
#include <stdio.h>
#include <private/cpuid.h>
]], [[
@@ -574,13 +593,11 @@
printf("highest cpuid %x\n", eax);
return 0;
}
- ]]), [
- AC_MSG_RESULT([yes])
- AC_DEFINE(HWLOC_HAVE_CPUID, 1, [Define to 1 if you have cpuid])
- hwloc_have_cpuid=yes
- ], [
- AC_MSG_RESULT([no])
- ])
+ ]])],
+ [AC_MSG_RESULT([yes])
+ AC_DEFINE(HWLOC_HAVE_CPUID, 1, [Define to 1 if you have cpuid])
+ hwloc_have_cpuid=yes],
+ [AC_MSG_RESULT([no])])
CPPFLAGS="$old_CPPFLAGS"
# Always generate these files
@@ -621,8 +638,17 @@
[test "x$hwloc_have_sched_setaffinity" = "xyes"])
AM_CONDITIONAL([HWLOC_HAVE_LIBIBVERBS],
[test "x$hwloc_have_libibverbs" = "xyes"])
+ AM_CONDITIONAL([HWLOC_HAVE_CUDA],
+ [test "x$hwloc_have_cuda" = "xyes"])
+ AM_CONDITIONAL([HWLOC_HAVE_MYRIEXPRESS],
+ [test "x$hwloc_have_myriexpress" = "xyes"])
+ AM_CONDITIONAL([HWLOC_HAVE_CUDART],
+ [test "x$hwloc_have_cudart" = "xyes"])
AM_CONDITIONAL([HWLOC_HAVE_CAIRO], [test "x$enable_cairo" != "xno"])
AM_CONDITIONAL([HWLOC_HAVE_XML], [test "x$enable_xml" != "xno"])
+ AM_CONDITIONAL([HWLOC_HAVE_SET_MEMPOLICY], [test "x$enable_set_mempolicy" != "xno"])
+ AM_CONDITIONAL([HWLOC_HAVE_MBIND], [test "x$enable_mbind" != "xno"])
+ AM_CONDITIONAL([HWLOC_HAVE_BUNZIPP], [test "x$BUNZIPP" != "xfalse"])
AM_CONDITIONAL([HWLOC_BUILD_DOXYGEN],
[test "x$hwloc_generate_doxs" = "xyes"])
Modified: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/config/hwloc_check_attributes.m4
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/config/hwloc_check_attributes.m4 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/config/hwloc_check_attributes.m4 2010-11-24 09:21:55 UTC (rev 7494)
@@ -10,7 +10,8 @@
# Copyright (c) 2004-2005 The Regents of the University of California.
# All rights reserved.
# and renamed for hwloc:
-# Copyright (c) 2009 INRIA, Université Bordeaux 1
+# Copyright (c) 2009 INRIA
+# Copyright (c) 2009 Université Bordeaux 1
# Copyright (c) 2010 Cisco Systems, Inc. All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
@@ -56,7 +57,11 @@
# Sun C++: skip
#
AC_DEFUN([_HWLOC_ATTRIBUTE_FAIL_SEARCH],[
- AC_REQUIRE([AC_PROG_GREP])
+ # Be safe for systems that have ancient Autoconf's (e.g., RHEL5)
+ m4_ifdef([AC_PROG_GREP],
+ [AC_REQUIRE([AC_PROG_GREP])],
+ [GREP=grep])
+
if test -s conftest.err ; then
for i in ignore skip ; do
$GREP -iq $i conftest.err
Modified: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/config/hwloc_check_visibility.m4
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/config/hwloc_check_visibility.m4 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/config/hwloc_check_visibility.m4 2010-11-24 09:21:55 UTC (rev 7494)
@@ -11,7 +11,8 @@
# All rights reserved.
# Copyright (c) 2006-2007 Cisco Systems, Inc. All rights reserved.
# and renamed for hwloc:
-# Copyright (c) 2009 INRIA, Université Bordeaux 1
+# Copyright (c) 2009 INRIA
+# Copyright (c) 2009 Université Bordeaux 1
# Copyright (c) 2010 Cisco Systems, Inc. All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
@@ -50,19 +51,30 @@
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
-
# _HWLOC_CHECK_VISIBILITY
# --------------------------------------------------------
AC_DEFUN([_HWLOC_CHECK_VISIBILITY],[
- AC_REQUIRE([AC_PROG_GREP])
+ # Be safe for systems that have ancient Autoconf's (e.g., RHEL5)
+ m4_ifdef([AC_PROG_GREP],
+ [AC_REQUIRE([AC_PROG_GREP])],
+ [GREP=grep])
- # Check if the compiler has support for visibility, like some versions of gcc, icc.
+ msg="whether to enable visibility"
+ # Check if the compiler has support for visibility, like some
+ # versions of gcc, icc.
AC_ARG_ENABLE(visibility,
AC_HELP_STRING([--enable-visibility],
[enable visibility feature of certain compilers/linkers (default: enabled)]))
+
+ case ${target} in
+ *-*-aix*|*-*-mingw*|*-*-cygwin*|*-*-hpux*)
+ enable_visibility=no
+ ;;
+ esac
+
if test "$enable_visibility" = "no"; then
- AC_MSG_CHECKING([enable symbol visibility])
- AC_MSG_RESULT([no])
+ AC_MSG_CHECKING([$msg])
+ AC_MSG_RESULT([no (disabled)])
have_visibility=0
else
CFLAGS_orig="$CFLAGS"
@@ -70,41 +82,40 @@
hwloc_add=
AC_CACHE_CHECK([if $CC supports -fvisibility],
[hwloc_cv_cc_fvisibility],
- [AC_TRY_LINK([
- #include <stdio.h>
+ [AC_LINK_IFELSE([AC_LANG_PROGRAM([[
__attribute__((visibility("default"))) int foo;
- void bar(void) { fprintf(stderr, "bar\n"); };
- ],[],
+ ]],[[int i;]])],
+ [hwloc_cv_cc_fvisibility=yes],
[if test -s conftest.err ; then
$GREP -iq "visibility" conftest.err
if test "$?" = "0" ; then
- hwloc_cv_cc_fvisibility="no"
+ hwloc_cv_cc_fvisibility=no
else
- hwloc_cv_cc_fvisibility="yes"
+ hwloc_cv_cc_fvisibility=yes
fi
else
- hwloc_cv_cc_fvisibility="yes"
+ hwloc_cv_cc_fvisibility=yes
fi],
- [hwloc_cv_cc_fvisibility="no"])
+ [hwloc_cv_cc_fvisibility=no])
])
if test "$hwloc_cv_cc_fvisibility" = "yes" ; then
hwloc_add=" -fvisibility=hidden"
have_visibility=1
- AC_MSG_CHECKING([enable symbol visibility])
- AC_MSG_RESULT([yes])
+ AC_MSG_CHECKING([$msg])
+ AC_MSG_RESULT([yes (via$hwloc_add)])
elif test "$enable_visibility" = "yes"; then
AC_MSG_ERROR([Symbol visibility support requested but compiler does not seem to support it. Aborting])
else
- AC_MSG_CHECKING([enable symbol visibility])
- AC_MSG_RESULT([no])
+ AC_MSG_CHECKING([$msg])
+ AC_MSG_RESULT([no (unsupported)])
have_visibility=0
fi
CFLAGS=$CFLAGS_orig
HWLOC_VISIBILITY_CFLAGS=$hwloc_add
unset hwloc_add
fi
+
AC_DEFINE_UNQUOTED([HWLOC_C_HAVE_VISIBILITY], [$have_visibility],
[Whether C compiler supports -fvisibility])
-
])
Modified: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/config/hwloc_internal.m4
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/config/hwloc_internal.m4 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/config/hwloc_internal.m4 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,6 +1,7 @@
dnl -*- Autoconf -*-
dnl
-dnl Copyright 2009 INRIA, Université Bordeaux 1
+dnl Copyright (c) 2009 INRIA
+dnl Copyright (c) 2009 Université Bordeaux 1
dnl Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana
dnl University Research and Technology
dnl Corporation. All rights reserved.
@@ -8,6 +9,7 @@
dnl All rights reserved.
dnl Copyright (c) 2004-2008 High Performance Computing Center Stuttgart,
dnl University of Stuttgart. All rights reserved.
+dnl Copyright © 2010 INRIA
dnl Copyright © 2006-2010 Cisco Systems, Inc. All rights reserved.
#-----------------------------------------------------------------------
@@ -39,7 +41,7 @@
# Doxygen?
AC_ARG_ENABLE([doxygen],
[AC_HELP_STRING([--enable-doxygen],
- [enable support for building Doxygen documentation (note that this option is ONLY relevant in developer builds; Doxygen documentation is pre-built for tarball builds and this option is therefore ignored)])],,[enable_doxygen=no])
+ [enable support for building Doxygen documentation (note that this option is ONLY relevant in developer builds; Doxygen documentation is pre-built for tarball builds and this option is therefore ignored)])])
# Picky?
AC_ARG_ENABLE(picky,
@@ -92,8 +94,14 @@
AC_ARG_VAR([FIG2DEV], [Location of the fig2dev program (required for building the hwloc doxygen documentation)])
AC_PATH_TOOL([FIG2DEV], [fig2dev])
+ AC_ARG_VAR([GS], [Location of the gs program (required for building the hwloc doxygen documentation)])
+ AC_PATH_TOOL([GS], [gs])
+
+ AC_ARG_VAR([EPSTOPDF], [Location of the epstopdf program (required for building the hwloc doxygen documentation)])
+ AC_PATH_TOOL([EPSTOPDF], [epstopdf])
+
AC_MSG_CHECKING([if can build doxygen docs])
- AS_IF([test "x$DOXYGEN" != "x" -a "x$PDFLATEX" != "x" -a "x$MAKEINDEX" != "x" -a "x$FIG2DEV" != "x"],
+ AS_IF([test "x$DOXYGEN" != "x" -a "x$PDFLATEX" != "x" -a "x$MAKEINDEX" != "x" -a "x$FIG2DEV" != "x" -a "x$GS" != "x" -a "x$EPSTOPDF" != "x"],
[hwloc_generate_doxs=yes], [hwloc_generate_doxs=no])
AC_MSG_RESULT([$hwloc_generate_doxs])
@@ -135,6 +143,9 @@
# specifically disabled by the user.
AC_MSG_CHECKING([whether to enable "picky" compiler mode])
hwloc_want_picky=0
+ AS_IF([test "$GCC" = "yes"],
+ [AS_IF([test -d "$srcdir/.svn" -o -d "$srcdir/.hg"],
+ [hwloc_want_picky=1])])
if test "$enable_picky" = "yes"; then
if test "$GCC" = "yes"; then
AC_MSG_RESULT([yes])
@@ -214,23 +225,32 @@
AC_DEFINE([HWLOC_HAVE_CAIRO], [1], [Define to 1 if you have the `cairo' library.])
fi
- # XML support
-
- if test "x$enable_xml" != "xno"; then
- HWLOC_PKG_CHECK_MODULES([XML], [libxml-2.0], [xmlNewDoc], [:], [enable_xml="no"])
- fi
-
- if test "x$enable_xml" != "xno"; then
- HWLOC_REQUIRES="libxml-2.0 $HWLOC_REQUIRES"
- AC_DEFINE([HWLOC_HAVE_XML], [1], [Define to 1 if you have the `xml' library.])
- AC_SUBST([HWLOC_HAVE_XML], [1])
- AC_CHECK_PROGS(XMLLINT, [xmllint])
- else
- AC_SUBST([HWLOC_HAVE_XML], [0])
- fi
- AC_SUBST(HWLOC_REQUIRES)
- HWLOC_CFLAGS="$HWLOC_CFLAGS $HWLOC_XML_CFLAGS"
+ AC_CHECK_TYPES([wchar_t], [
+ AC_CHECK_FUNCS([putwc])
+ ], [], [[#include <wchar.h>]])
+ AC_CHECK_HEADERS([locale.h], [
+ AC_CHECK_FUNCS([setlocale])
+ ])
+ AC_CHECK_HEADERS([langinfo.h], [
+ AC_CHECK_FUNCS([nl_langinfo])
+ ])
+ hwloc_old_LIBS="$LIBS"
+ LIBS=
+ AC_CHECK_HEADERS([curses.h], [
+ AC_CHECK_HEADERS([term.h], [
+ AC_SEARCH_LIBS([tparm], [termcap ncursesw ncurses curses], [
+ AC_SUBST([HWLOC_TERMCAP_LIBS], ["$LIBS"])
+ AC_DEFINE([HWLOC_HAVE_LIBTERMCAP], [1],
+ [Define to 1 if you have a library providing the termcap interface])
+ ])
+ ], [], [[#include <curses.h>]])
+ ])
+ LIBS="$hwloc_old_LIBS"
+ unset hwloc_old_LIBS
+
+ _HWLOC_CHECK_DIFF_U
+
# Only generate this if we're building the utilities
AC_CONFIG_FILES(
hwloc_config_prefix[utils/Makefile]
@@ -250,18 +270,78 @@
hwloc_build_tests=yes
+ # linux-libnuma.h testing requires libnuma with numa_bitmask_alloc()
+ AC_CHECK_DECL([numa_bitmask_alloc], [hwloc_have_linux_libnuma=yes], [],
+ [#include <numa.h>])
+
+ AC_CHECK_HEADERS([infiniband/verbs.h], [
+ AC_CHECK_LIB([ibverbs], [ibv_open_device],
+ [AC_DEFINE([HAVE_LIBIBVERBS], 1, [Define to 1 if we have -libverbs])
+ hwloc_have_libibverbs=yes])
+ ])
+
+ AC_CHECK_HEADERS([myriexpress.h], [
+ AC_MSG_CHECKING(if MX_NUMA_NODE exists)
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <myriexpress.h>]],
+ [[int a = MX_NUMA_NODE;]],
+ [AC_MSG_RESULT(yes)
+ AC_CHECK_LIB([myriexpress], [mx_get_info],
+ [AC_DEFINE([HAVE_MYRIEXPRESS], 1, [Define to 1 if we have -lmyriexpress])
+ hwloc_have_myriexpress=yes])],
+ [AC_MSG_RESULT(no)])])])
+
+ AC_CHECK_HEADERS([cuda.h], [
+ AC_MSG_CHECKING(if CUDA_VERSION >= 3020)
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+#include <cuda.h>
+#ifndef CUDA_VERSION
+#error CUDA_VERSION undefined
+#elif CUDA_VERSION < 3020
+#error CUDA_VERSION too old
+#endif]], [[int i = 3;]])],
+ [AC_MSG_RESULT(yes)
+ AC_CHECK_LIB([cuda], [cuInit],
+ [AC_DEFINE([HAVE_CUDA], 1, [Define to 1 if we have -lcuda])
+ hwloc_have_cuda=yes])],
+ [AC_MSG_RESULT(no)])])
+
+ AC_CHECK_HEADERS([cuda_runtime_api.h], [
+ AC_MSG_CHECKING(if CUDART_VERSION >= 3020)
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+#include <cuda_runtime_api.h>
+#ifndef CUDART_VERSION
+#error CUDART_VERSION undefined
+#elif CUDART_VERSION < 3020
+#error CUDART_VERSION too old
+#endif]], [[int i = 3;]])],
+ [AC_MSG_RESULT(yes)
+ AC_CHECK_LIB([cudart], [cudaGetDeviceCount],
+ [AC_DEFINE([HAVE_CUDART], 1, [Define to 1 if we have -lcudart])
+ hwloc_have_cudart=yes])],
+ [AC_MSG_RESULT(no)])])
+
+ if test "x$enable_xml" != "xno"; then
+ AC_CHECK_PROGS(XMLLINT, [xmllint])
+ fi
+
+ AC_CHECK_PROGS(BUNZIPP, bunzip2, false)
+
+ _HWLOC_CHECK_DIFF_U
+
# Only generate these files if we're making the tests
AC_CONFIG_FILES(
- hwloc_config_prefix[tests/Makefile ]
+ hwloc_config_prefix[tests/Makefile]
hwloc_config_prefix[tests/linux/Makefile]
+ hwloc_config_prefix[tests/linux/gather/Makefile]
hwloc_config_prefix[tests/xml/Makefile]
hwloc_config_prefix[tests/ports/Makefile]
- hwloc_config_prefix[tests/linux/gather-topology.sh]
+ hwloc_config_prefix[tests/linux/hwloc-gather-topology.sh]
+ hwloc_config_prefix[tests/linux/gather/test-gather-topology.sh]
hwloc_config_prefix[tests/linux/test-topology.sh]
hwloc_config_prefix[tests/xml/test-topology.sh]
hwloc_config_prefix[utils/test-hwloc-distrib.sh])
- AC_CONFIG_COMMANDS([chmoding-scripts], [chmod +x ]hwloc_config_prefix[tests/linux/test-topology.sh ]hwloc_config_prefix[tests/xml/test-topology.sh ]hwloc_config_prefix[tests/linux/gather-topology.sh ]hwloc_config_prefix[utils/test-hwloc-distrib.sh])
+ AC_CONFIG_COMMANDS([chmoding-scripts], [chmod +x ]hwloc_config_prefix[tests/linux/test-topology.sh ]hwloc_config_prefix[tests/xml/test-topology.sh ]hwloc_config_prefix[tests/linux/hwloc-gather-topology.sh ]hwloc_config_prefix[tests/linux/gather/test-gather-topology.sh ]hwloc_config_prefix[utils/test-hwloc-distrib.sh])
# These links are only needed in standalone mode. It would
# be nice to m4 foreach this somehow, but whenever I tried
@@ -281,6 +361,4 @@
hwloc_config_prefix[tests/ports/topology-freebsd.c]:hwloc_config_prefix[src/topology-freebsd.c]
hwloc_config_prefix[tests/ports/topology-hpux.c]:hwloc_config_prefix[src/topology-hpux.c])
])
-
- echo done setting up tests
])dnl
Modified: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/configure.ac
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/configure.ac 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/configure.ac 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,6 +1,8 @@
# -*- shell-script -*-
#
-# Copyright © 2009 CNRS, INRIA, Université Bordeaux 1
+# Copyright © 2009 CNRS
+# Copyright © 2009-2010 INRIA
+# Copyright © 2009 Université Bordeaux 1
# Copyright © 2009-2010 Cisco Systems, Inc. All rights reserved.
#
# See COPYING in top-level directory.
@@ -34,10 +36,13 @@
AM_INIT_AUTOMAKE([1.10 dist-bzip2 subdir-objects foreign tar-ustar -Wall -Werror])
m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
-# Libtool2 is needed
+# We want new Libtool. None of that old stuff. Pfft.
m4_ifdef([LT_PREREQ], [],
[m4_fatal([libtool version 2.2.6 or higher is required], [63])])
+LT_PREREQ([2.2.6])
+AC_LANG([C])
+
# Make configure depend on the VERSION file, since it's used in AC_INIT
AC_SUBST([CONFIGURE_DEPENDENCIES], ['$(top_srcdir)/VERSION'])
@@ -124,7 +129,7 @@
[HWLOC_BUILD_STANDALONE])])
# Setup the hwloc core
-HWLOC_SETUP_CORE([], [], [AC_MSG_ERROR([Cannot build hwloc])], [1])
+HWLOC_SETUP_CORE([], [], [AC_MSG_ERROR([Cannot continue])], [1])
# Setup hwloc's docs, utils, and tests
AS_IF([test "$hwloc_mode" = "standalone"],
@@ -142,8 +147,8 @@
# Setup libtool, but disable C++, F77, Java and Windows Resource
# Compiler support -- we don't need that stuff.
-AM_DISABLE_SHARED
-AM_ENABLE_STATIC
+AM_ENABLE_SHARED
+AM_DISABLE_STATIC
AM_PROG_LIBTOOL([win32-dll])
LT_LANG([C])
Modified: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/contrib/dist/make_dist_tarball
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/contrib/dist/make_dist_tarball 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/contrib/dist/make_dist_tarball 2010-11-24 09:21:55 UTC (rev 7494)
@@ -23,8 +23,8 @@
#
AM_TARGET_VERSION=1.11.1
-AC_TARGET_VERSION=2.65
-LT_TARGET_VERSION=2.2.6b
+AC_TARGET_VERSION=2.68
+LT_TARGET_VERSION=2.4
#
# First things first -- check that the auto versions that we have are
Modified: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/doc/Makefile.am
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/doc/Makefile.am 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/doc/Makefile.am 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,4 +1,5 @@
-# Copyright © 2009 INRIA, Université Bordeaux 1
+# Copyright © 2009-2010 INRIA
+# Copyright © 2009-2010 Université Bordeaux 1
# Copyright © 2009-2010 Cisco Systems, Inc. All rights reserved.
AM_CPPFLAGS = $(HWLOC_CPPFLAGS)
@@ -57,11 +58,14 @@
$(srcdir)/hwloc.doxy \
$(HWLOC_top_srcdir)/include/hwloc.h \
$(HWLOC_top_srcdir)/include/hwloc/helper.h \
- $(HWLOC_top_srcdir)/include/hwloc/cpuset.h \
+ $(HWLOC_top_srcdir)/include/hwloc/bitmap.h \
$(HWLOC_top_srcdir)/include/hwloc/glibc-sched.h \
$(HWLOC_top_srcdir)/include/hwloc/linux.h \
$(HWLOC_top_srcdir)/include/hwloc/linux-libnuma.h \
- $(HWLOC_top_srcdir)/include/hwloc/openfabrics-verbs.h
+ $(HWLOC_top_srcdir)/include/hwloc/cuda.h \
+ $(HWLOC_top_srcdir)/include/hwloc/cudart.h \
+ $(HWLOC_top_srcdir)/include/hwloc/openfabrics-verbs.h \
+ $(HWLOC_top_srcdir)/include/hwloc/myriexpress.h
#
# Create the images that we need for the PDF output and the HTML
@@ -251,54 +255,76 @@
$(DOX_MAN_DIR)/man3/HWLOC_TYPE_DEPTH_MULTIPLE.3 \
$(DOX_MAN_DIR)/man3/HWLOC_TYPE_DEPTH_UNKNOWN.3 \
$(DOX_MAN_DIR)/man3/hwloc_compare_types.3 \
- $(DOX_MAN_DIR)/man3/hwloc_cpubind_policy_t.3 \
- $(DOX_MAN_DIR)/man3/hwloc_cpuset_alloc.3 \
- $(DOX_MAN_DIR)/man3/hwloc_cpuset_free.3 \
- $(DOX_MAN_DIR)/man3/hwloc_cpuset_dup.3 \
- $(DOX_MAN_DIR)/man3/hwloc_cpuset_copy.3 \
- $(DOX_MAN_DIR)/man3/hwloc_cpuset_all_but_cpu.3 \
- $(DOX_MAN_DIR)/man3/hwloc_cpuset_and.3 \
- $(DOX_MAN_DIR)/man3/hwloc_cpuset_andnot.3 \
- $(DOX_MAN_DIR)/man3/hwloc_cpuset_clr.3 \
- $(DOX_MAN_DIR)/man3/hwloc_cpuset_clr_range.3 \
- $(DOX_MAN_DIR)/man3/hwloc_cpuset_compare.3 \
- $(DOX_MAN_DIR)/man3/hwloc_cpuset_compare_first.3 \
- $(DOX_MAN_DIR)/man3/hwloc_cpuset_fill.3 \
- $(DOX_MAN_DIR)/man3/hwloc_cpuset_first.3 \
- $(DOX_MAN_DIR)/man3/hwloc_cpuset_foreach_begin.3 \
- $(DOX_MAN_DIR)/man3/hwloc_cpuset_foreach_end.3 \
+ $(DOX_MAN_DIR)/man3/hwloc_cpubind_flags_t.3 \
+ $(DOX_MAN_DIR)/man3/hwloc_membind_flags_t.3 \
+ $(DOX_MAN_DIR)/man3/hwloc_membind_policy_t.3 \
+ $(DOX_MAN_DIR)/man3/hwloc_bitmap_alloc.3 \
+ $(DOX_MAN_DIR)/man3/hwloc_bitmap_alloc_full.3 \
+ $(DOX_MAN_DIR)/man3/hwloc_bitmap_free.3 \
+ $(DOX_MAN_DIR)/man3/hwloc_bitmap_dup.3 \
+ $(DOX_MAN_DIR)/man3/hwloc_bitmap_copy.3 \
+ $(DOX_MAN_DIR)/man3/hwloc_bitmap_allbut.3 \
+ $(DOX_MAN_DIR)/man3/hwloc_bitmap_and.3 \
+ $(DOX_MAN_DIR)/man3/hwloc_bitmap_andnot.3 \
+ $(DOX_MAN_DIR)/man3/hwloc_bitmap_clr.3 \
+ $(DOX_MAN_DIR)/man3/hwloc_bitmap_clr_range.3 \
+ $(DOX_MAN_DIR)/man3/hwloc_bitmap_compare.3 \
+ $(DOX_MAN_DIR)/man3/hwloc_bitmap_compare_first.3 \
+ $(DOX_MAN_DIR)/man3/hwloc_bitmap_fill.3 \
+ $(DOX_MAN_DIR)/man3/hwloc_bitmap_first.3 \
+ $(DOX_MAN_DIR)/man3/hwloc_bitmap_foreach_begin.3 \
+ $(DOX_MAN_DIR)/man3/hwloc_bitmap_foreach_end.3 \
$(DOX_MAN_DIR)/man3/hwloc_cpuset_from_glibc_sched_affinity.3 \
- $(DOX_MAN_DIR)/man3/hwloc_cpuset_from_ith_ulong.3 \
+ $(DOX_MAN_DIR)/man3/hwloc_bitmap_from_ith_ulong.3 \
+ $(DOX_MAN_DIR)/man3/hwloc_bitmap_sscanf.3 \
+ $(DOX_MAN_DIR)/man3/hwloc_bitmap_from_ulong.3 \
+ $(DOX_MAN_DIR)/man3/hwloc_bitmap_intersects.3 \
+ $(DOX_MAN_DIR)/man3/hwloc_bitmap_isequal.3 \
+ $(DOX_MAN_DIR)/man3/hwloc_bitmap_isfull.3 \
+ $(DOX_MAN_DIR)/man3/hwloc_bitmap_isincluded.3 \
+ $(DOX_MAN_DIR)/man3/hwloc_bitmap_isset.3 \
+ $(DOX_MAN_DIR)/man3/hwloc_bitmap_iszero.3 \
+ $(DOX_MAN_DIR)/man3/hwloc_bitmap_last.3 \
+ $(DOX_MAN_DIR)/man3/hwloc_bitmap_next.3 \
+ $(DOX_MAN_DIR)/man3/hwloc_bitmap_not.3 \
+ $(DOX_MAN_DIR)/man3/hwloc_bitmap_only.3 \
+ $(DOX_MAN_DIR)/man3/hwloc_bitmap_or.3 \
+ $(DOX_MAN_DIR)/man3/hwloc_bitmap_set.3 \
+ $(DOX_MAN_DIR)/man3/hwloc_bitmap_set_range.3 \
+ $(DOX_MAN_DIR)/man3/hwloc_bitmap_set_ith_ulong.3 \
+ $(DOX_MAN_DIR)/man3/hwloc_bitmap_singlify.3 \
+ $(DOX_MAN_DIR)/man3/hwloc_bitmap_snprintf.3 \
+ $(DOX_MAN_DIR)/man3/hwloc_bitmap_asprintf.3 \
+ $(DOX_MAN_DIR)/man3/hwloc_bitmap_t.3 \
+ $(DOX_MAN_DIR)/man3/hwloc_cpuset_to_nodeset.3 \
+ $(DOX_MAN_DIR)/man3/hwloc_cpuset_to_nodeset_strict.3 \
+ $(DOX_MAN_DIR)/man3/hwloc_cpuset_from_nodeset.3 \
+ $(DOX_MAN_DIR)/man3/hwloc_cpuset_from_nodeset_strict.3 \
+ $(DOX_MAN_DIR)/man3/hwloc_cpuset_to_glibc_sched_affinity.3 \
+ $(DOX_MAN_DIR)/man3/hwloc_bitmap_to_ith_ulong.3 \
$(DOX_MAN_DIR)/man3/hwloc_cpuset_from_linux_libnuma_bitmask.3 \
$(DOX_MAN_DIR)/man3/hwloc_cpuset_from_linux_libnuma_nodemask.3 \
$(DOX_MAN_DIR)/man3/hwloc_cpuset_from_linux_libnuma_ulongs.3 \
- $(DOX_MAN_DIR)/man3/hwloc_cpuset_from_string.3 \
- $(DOX_MAN_DIR)/man3/hwloc_cpuset_from_ulong.3 \
- $(DOX_MAN_DIR)/man3/hwloc_cpuset_intersects.3 \
- $(DOX_MAN_DIR)/man3/hwloc_cpuset_isequal.3 \
- $(DOX_MAN_DIR)/man3/hwloc_cpuset_isfull.3 \
- $(DOX_MAN_DIR)/man3/hwloc_cpuset_isincluded.3 \
- $(DOX_MAN_DIR)/man3/hwloc_cpuset_isset.3 \
- $(DOX_MAN_DIR)/man3/hwloc_cpuset_iszero.3 \
- $(DOX_MAN_DIR)/man3/hwloc_cpuset_last.3 \
- $(DOX_MAN_DIR)/man3/hwloc_cpuset_next.3 \
- $(DOX_MAN_DIR)/man3/hwloc_cpuset_not.3 \
- $(DOX_MAN_DIR)/man3/hwloc_cpuset_or.3 \
- $(DOX_MAN_DIR)/man3/hwloc_cpuset_set.3 \
- $(DOX_MAN_DIR)/man3/hwloc_cpuset_set_range.3 \
- $(DOX_MAN_DIR)/man3/hwloc_cpuset_singlify.3 \
- $(DOX_MAN_DIR)/man3/hwloc_cpuset_snprintf.3 \
- $(DOX_MAN_DIR)/man3/hwloc_cpuset_asprintf.3 \
- $(DOX_MAN_DIR)/man3/hwloc_cpuset_t.3 \
- $(DOX_MAN_DIR)/man3/hwloc_cpuset_to_glibc_sched_affinity.3 \
- $(DOX_MAN_DIR)/man3/hwloc_cpuset_to_ith_ulong.3 \
$(DOX_MAN_DIR)/man3/hwloc_cpuset_to_linux_libnuma_bitmask.3 \
$(DOX_MAN_DIR)/man3/hwloc_cpuset_to_linux_libnuma_nodemask.3 \
$(DOX_MAN_DIR)/man3/hwloc_cpuset_to_linux_libnuma_ulongs.3 \
- $(DOX_MAN_DIR)/man3/hwloc_cpuset_to_ulong.3 \
- $(DOX_MAN_DIR)/man3/hwloc_cpuset_weight.3 \
- $(DOX_MAN_DIR)/man3/hwloc_cpuset_xor.3 \
+ $(DOX_MAN_DIR)/man3/hwloc_nodeset_from_linux_libnuma_bitmask.3 \
+ $(DOX_MAN_DIR)/man3/hwloc_nodeset_from_linux_libnuma_nodemask.3 \
+ $(DOX_MAN_DIR)/man3/hwloc_nodeset_from_linux_libnuma_ulongs.3 \
+ $(DOX_MAN_DIR)/man3/hwloc_nodeset_to_linux_libnuma_bitmask.3 \
+ $(DOX_MAN_DIR)/man3/hwloc_nodeset_to_linux_libnuma_nodemask.3 \
+ $(DOX_MAN_DIR)/man3/hwloc_nodeset_to_linux_libnuma_ulongs.3 \
+ $(DOX_MAN_DIR)/man3/hwloc_bitmap_to_ulong.3 \
+ $(DOX_MAN_DIR)/man3/hwloc_bitmap_weight.3 \
+ $(DOX_MAN_DIR)/man3/hwloc_bitmap_xor.3 \
+ $(DOX_MAN_DIR)/man3/hwloc_cpuset_t.3 \
+ $(DOX_MAN_DIR)/man3/hwloc_const_cpuset_t.3 \
+ $(DOX_MAN_DIR)/man3/hwloc_nodeset_t.3 \
+ $(DOX_MAN_DIR)/man3/hwloc_const_nodeset_t.3 \
+ $(DOX_MAN_DIR)/man3/hwloc_cuda_get_device_cpuset.3 \
+ $(DOX_MAN_DIR)/man3/hwloc_cudart_get_device_cpuset.3 \
$(DOX_MAN_DIR)/man3/hwloc_distribute.3 \
+ $(DOX_MAN_DIR)/man3/hwloc_distributev.3 \
$(DOX_MAN_DIR)/man3/hwloc_get_closest_objs.3 \
$(DOX_MAN_DIR)/man3/hwloc_get_common_ancestor_obj.3 \
$(DOX_MAN_DIR)/man3/hwloc_get_cache_covering_cpuset.3 \
@@ -338,10 +364,11 @@
$(DOX_MAN_DIR)/man3/hwloc_get_type_or_below_depth.3 \
$(DOX_MAN_DIR)/man3/hwloc_ibv_get_device_cpuset.3 \
$(DOX_MAN_DIR)/man3/hwloc_linux_parse_cpumap_file.3 \
+ $(DOX_MAN_DIR)/man3/hwloc_mx_board_get_device_cpuset.3 \
+ $(DOX_MAN_DIR)/man3/hwloc_mx_endpoint_get_device_cpuset.3 \
$(DOX_MAN_DIR)/man3/hwloc_obj.3 \
$(DOX_MAN_DIR)/man3/hwloc_obj_attr_u.3 \
$(DOX_MAN_DIR)/man3/hwloc_obj_attr_u_hwloc_cache_attr_s.3 \
- $(DOX_MAN_DIR)/man3/hwloc_obj_attr_u_hwloc_machine_attr_s.3 \
$(DOX_MAN_DIR)/man3/hwloc_obj_attr_u_hwloc_group_attr_s.3 \
$(DOX_MAN_DIR)/man3/hwloc_obj_memory_s.3 \
$(DOX_MAN_DIR)/man3/hwloc_obj_cpuset_snprintf.3 \
@@ -353,15 +380,35 @@
$(DOX_MAN_DIR)/man3/hwloc_obj_type_of_string.3 \
$(DOX_MAN_DIR)/man3/hwloc_obj_type_string.3 \
$(DOX_MAN_DIR)/man3/hwloc_obj_type_t.3 \
+ $(DOX_MAN_DIR)/man3/hwloc_obj_get_info_by_name.3 \
$(DOX_MAN_DIR)/man3/hwloc_get_cpubind.3 \
$(DOX_MAN_DIR)/man3/hwloc_get_proc_cpubind.3 \
$(DOX_MAN_DIR)/man3/hwloc_get_thread_cpubind.3 \
$(DOX_MAN_DIR)/man3/hwloc_set_cpubind.3 \
$(DOX_MAN_DIR)/man3/hwloc_set_proc_cpubind.3 \
$(DOX_MAN_DIR)/man3/hwloc_set_thread_cpubind.3 \
+ $(DOX_MAN_DIR)/man3/hwloc_alloc.3 \
+ $(DOX_MAN_DIR)/man3/hwloc_alloc_membind.3 \
+ $(DOX_MAN_DIR)/man3/hwloc_alloc_membind_policy.3 \
+ $(DOX_MAN_DIR)/man3/hwloc_alloc_membind_nodeset.3 \
+ $(DOX_MAN_DIR)/man3/hwloc_alloc_membind_policy_nodeset.3 \
+ $(DOX_MAN_DIR)/man3/hwloc_free_membind.3 \
+ $(DOX_MAN_DIR)/man3/hwloc_get_membind.3 \
+ $(DOX_MAN_DIR)/man3/hwloc_get_membind_nodeset.3 \
+ $(DOX_MAN_DIR)/man3/hwloc_set_membind.3 \
+ $(DOX_MAN_DIR)/man3/hwloc_set_membind_nodeset.3 \
+ $(DOX_MAN_DIR)/man3/hwloc_get_area_membind.3 \
+ $(DOX_MAN_DIR)/man3/hwloc_get_area_membind_nodeset.3 \
+ $(DOX_MAN_DIR)/man3/hwloc_set_area_membind.3 \
+ $(DOX_MAN_DIR)/man3/hwloc_set_area_membind_nodeset.3 \
+ $(DOX_MAN_DIR)/man3/hwloc_get_proc_membind.3 \
+ $(DOX_MAN_DIR)/man3/hwloc_get_proc_membind_nodeset.3 \
+ $(DOX_MAN_DIR)/man3/hwloc_set_proc_membind.3 \
+ $(DOX_MAN_DIR)/man3/hwloc_set_proc_membind_nodeset.3 \
$(DOX_MAN_DIR)/man3/hwloc_topology_check.3 \
$(DOX_MAN_DIR)/man3/hwloc_topology_destroy.3 \
$(DOX_MAN_DIR)/man3/hwloc_topology_export_xml.3 \
+ $(DOX_MAN_DIR)/man3/hwloc_topology_export_xmlbuffer.3 \
$(DOX_MAN_DIR)/man3/hwloc_topology_insert_misc_object_by_cpuset.3 \
$(DOX_MAN_DIR)/man3/hwloc_topology_insert_misc_object_by_parent.3 \
$(DOX_MAN_DIR)/man3/hwloc_topology_flags_e.3 \
@@ -378,21 +425,27 @@
$(DOX_MAN_DIR)/man3/hwloc_topology_set_pid.3 \
$(DOX_MAN_DIR)/man3/hwloc_topology_set_synthetic.3 \
$(DOX_MAN_DIR)/man3/hwloc_topology_set_xml.3 \
+ $(DOX_MAN_DIR)/man3/hwloc_topology_set_xmlbuffer.3 \
$(DOX_MAN_DIR)/man3/hwloc_topology_support.3 \
$(DOX_MAN_DIR)/man3/hwloc_topology_discovery_support.3 \
$(DOX_MAN_DIR)/man3/hwloc_topology_cpubind_support.3 \
$(DOX_MAN_DIR)/man3/hwloc_topology_t.3 \
- $(DOX_MAN_DIR)/man3/hwlocality_binding.3 \
+ $(DOX_MAN_DIR)/man3/hwlocality_cpubinding.3 \
+ $(DOX_MAN_DIR)/man3/hwlocality_membinding.3 \
+ $(DOX_MAN_DIR)/man3/hwlocality_bitmap.3 \
$(DOX_MAN_DIR)/man3/hwlocality_configuration.3 \
$(DOX_MAN_DIR)/man3/hwlocality_conversion.3 \
- $(DOX_MAN_DIR)/man3/hwlocality_cpuset.3 \
$(DOX_MAN_DIR)/man3/hwlocality_creation.3 \
+ $(DOX_MAN_DIR)/man3/hwlocality_cuda.3 \
+ $(DOX_MAN_DIR)/man3/hwlocality_cudart.3 \
$(DOX_MAN_DIR)/man3/hwlocality_glibc_sched.3 \
$(DOX_MAN_DIR)/man3/hwlocality_helper_binding.3 \
+ $(DOX_MAN_DIR)/man3/hwlocality_helper_cpuset.3 \
$(DOX_MAN_DIR)/man3/hwlocality_helper_find_cache.3 \
$(DOX_MAN_DIR)/man3/hwlocality_helper_find_covering.3 \
$(DOX_MAN_DIR)/man3/hwlocality_helper_find_coverings.3 \
$(DOX_MAN_DIR)/man3/hwlocality_helper_find_inside.3 \
+ $(DOX_MAN_DIR)/man3/hwlocality_helper_nodeset.3 \
$(DOX_MAN_DIR)/man3/hwlocality_helper_traversal.3 \
$(DOX_MAN_DIR)/man3/hwlocality_helper_traversal_basic.3 \
$(DOX_MAN_DIR)/man3/hwlocality_helper_types.3 \
@@ -400,6 +453,8 @@
$(DOX_MAN_DIR)/man3/hwlocality_linux_libnuma_bitmask.3 \
$(DOX_MAN_DIR)/man3/hwlocality_linux_libnuma_nodemask.3 \
$(DOX_MAN_DIR)/man3/hwlocality_linux_libnuma_ulongs.3 \
+ $(DOX_MAN_DIR)/man3/hwlocality_openfabrics.3 \
+ $(DOX_MAN_DIR)/man3/hwlocality_myriexpress.3 \
$(DOX_MAN_DIR)/man3/hwlocality_objects.3 \
$(DOX_MAN_DIR)/man3/hwlocality_traversal.3 \
$(DOX_MAN_DIR)/man3/hwlocality_types.3
Modified: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/doc/doxygen-config.cfg.in
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/doc/doxygen-config.cfg.in 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/doc/doxygen-config.cfg.in 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,3 +1,4 @@
+# Copyright © 2010 INRIA
# Copyright © 2009 Cisco Systems, Inc. All rights reserved.
# See big comments in doxygen.cfg about the purpose of this file.
@@ -8,11 +9,14 @@
@top_srcdir@/doc/hwloc.doxy \
@top_srcdir@/include/hwloc.h \
@top_srcdir@/include/hwloc/helper.h \
- @top_srcdir@/include/hwloc/cpuset.h \
+ @top_srcdir@/include/hwloc/bitmap.h \
@top_srcdir@/include/hwloc/glibc-sched.h \
@top_srcdir@/include/hwloc/linux.h \
@top_srcdir@/include/hwloc/linux-libnuma.h \
- @top_srcdir@/include/hwloc/openfabrics-verbs.h
+ @top_srcdir@/include/hwloc/cuda.h \
+ @top_srcdir@/include/hwloc/cudart.h \
+ @top_srcdir@/include/hwloc/openfabrics-verbs.h \
+ @top_srcdir@/include/hwloc/myriexpress.h
EXAMPLE_PATH = @top_srcdir@/doc
Modified: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/doc/doxygen.cfg
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/doc/doxygen.cfg 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/doc/doxygen.cfg 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,3 +1,4 @@
+# Copyright © 2010 INRIA
# Copyright © 2009 Cisco Systems, Inc. All rights reserved.
# Doxyfile 1.5.9
Modified: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/doc/hwloc-hello.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/doc/hwloc-hello.c 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/doc/hwloc-hello.c 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,12 +1,16 @@
/* Example hwloc API program.
*
- * Copyright © 2009 INRIA, Université Bordeaux 1
+ * Copyright © 2009-2010 INRIA
+ * Copyright © 2009-2010 Université Bordeaux 1
* Copyright © 2009-2010 Cisco Systems, Inc. All rights reserved.
*
- * hwloc-hello.c
+ * hwloc-hello.c
*/
#include <hwloc.h>
+#include <errno.h>
+#include <stdio.h>
+#include <string.h>
static void print_children(hwloc_topology_t topology, hwloc_obj_t obj,
int depth)
@@ -24,7 +28,7 @@
int main(void)
{
int depth;
- unsigned i;
+ unsigned i, n;
unsigned long size;
int levels;
char string[128];
@@ -116,24 +120,47 @@
hwloc_get_nbobjs_by_depth(topology, depth) - 1);
if (obj) {
/* Get a copy of its cpuset that we may modify. */
- cpuset = hwloc_cpuset_dup(obj->cpuset);
+ cpuset = hwloc_bitmap_dup(obj->cpuset);
/* Get only one logical processor (in case the core is
SMT/hyperthreaded). */
- hwloc_cpuset_singlify(cpuset);
+ hwloc_bitmap_singlify(cpuset);
/* And try to bind ourself there. */
if (hwloc_set_cpubind(topology, cpuset, 0)) {
char *str;
- hwloc_cpuset_asprintf(&str, obj->cpuset);
- printf("Couldn't bind to cpuset %s\n", str);
+ int error = errno;
+ hwloc_bitmap_asprintf(&str, obj->cpuset);
+ printf("Couldn't bind to cpuset %s: %s\n", str, strerror(error));
free(str);
}
/* Free our cpuset copy */
- hwloc_cpuset_free(cpuset);
+ hwloc_bitmap_free(cpuset);
}
+ /*****************************************************************
+ * Sixth example:
+ * Allocate some memory on the last NUMA node, bind some existing
+ * memory to the last NUMA node.
+ *****************************************************************/
+ /* Get last node. */
+ n = hwloc_get_nbobjs_by_type(topology, HWLOC_OBJ_NODE);
+ if (n) {
+ void *m;
+ size_t size = 1024*1024;
+
+ obj = hwloc_get_obj_by_type(topology, HWLOC_OBJ_NODE, n - 1);
+ m = hwloc_alloc_membind_nodeset(topology, size, obj->nodeset,
+ HWLOC_MEMBIND_DEFAULT, 0);
+ hwloc_free_membind(topology, m, size);
+
+ m = malloc(size);
+ hwloc_set_area_membind_nodeset(topology, m, size, obj->nodeset,
+ HWLOC_MEMBIND_DEFAULT, 0);
+ free(m);
+ }
+
/* Destroy topology object. */
hwloc_topology_destroy(topology);
Modified: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/doc/hwloc.doxy
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/doc/hwloc.doxy 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/doc/hwloc.doxy 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,5 +1,7 @@
/*
- * Copyright © 2009 CNRS, INRIA, Université Bordeaux 1
+ * Copyright © 2009 CNRS
+ * Copyright © 2009-2010 INRIA
+ * Copyright © 2009-2010 Université Bordeaux 1
* Copyright © 2009-2010 Cisco Systems, Inc. All rights reserved.
* See COPYING in top-level directory.
*/
@@ -408,9 +410,9 @@
section is available and should probably be read first.
Each hwloc object contains a cpuset describing the list of processing
-units that it contains. These cpusets may be used for \ref
-hwlocality_binding. hwloc offers an extensive cpuset manipulation
-interface in hwloc/cpuset.h.
+units that it contains. These bitmaps may be used for \ref
+hwlocality_cpubinding and \ref hwlocality_membinding. hwloc offers an extensive
+bitmap manipulation interface in hwloc/bitmap.h.
Moreover, hwloc also comes with additional helpers for
interoperability with several commonly used environments.
@@ -428,7 +430,7 @@
$prefix/share/doc/hwloc/ and your systems default man page tree (under
$prefix, of course).
-\subsection portability Portability (especially when using the API or XML)
+\subsection portability Portability
As shown in \ref cli_examples, hwloc can obtain information on a wide
variety of hardware topologies. However, some platforms and/or
@@ -439,6 +441,17 @@
nodes and processor units (PUs). No information about caches,
sockets, or cores is available.
+Similarly, Operating System have varying support for CPU and memory binding,
+e.g. while some Operating Systems provide interfaces for all kinds of CPU and
+memory bindings, some others provide only interfaces for a limited number of
+kinds of CPU and memory binding, and some do not provide any binding interface
+at all. Hwloc's binding functions would then simply return the ENOSYS error
+(Function not implemented), meaning that the underlying Operating System
+does not provide any interface for them. \ref hwlocality_cpubinding and \ref
+hwlocality_membinding provide more information on which hwloc binding functions
+should be preferred because interfaces for them are usually available on the
+supported Operating Systems.
+
Here's the graphic output from lstopo on this platform when
Simultaneous Multi-Threading (SMT) is enabled:
@@ -581,6 +594,26 @@
in favor of hwloc, which is distributed as an Open MPI sub-project.
\htmlonly
+</div><div class="section" id="further_reading">
+\endhtmlonly
+\section further_read Further Reading
+
+The documentation chapters include
+
+<ul>
+<li> \ref termsanddefs
+<li> \ref tools
+<li> \ref envvar
+<li> \ref cpu_mem_bind
+<li> \ref interoperability
+<li> \ref threadsafety
+<li> \ref embed
+<li> \ref switchfromplpa
+</ul>
+
+Make sure to have had a look at those too!
+
+\htmlonly
</div>
\endhtmlonly
@@ -601,10 +634,24 @@
<dt>CPU set</dt>
<dd>The set of logical processors (or processing units) logically included in an object
(if it makes sense). They are always expressed using physical logical
- processor numbers (as announced by the OS). They are just masks, they do \em
- not have any relation with an operating system actual binding notion like
+ processor numbers (as announced by the OS). They are implemented as the
+ ::hwloc_bitmap_t opaque structure. hwloc CPU sets are just masks, they
+ do \em not have any relation with an operating system actual binding notion like
Linux' cpusets.</dd>
+<dt>Node set</dt>
+ <dd>The set of NUMA memory nodes logically included in an object
+ (if it makes sense). They are always expressed using physical node
+ numbers (as announced by the OS). They are implemented with the
+ ::hwloc_bitmap_t opaque structure.
+ as bitmaps.</dd>
+
+<dt>Bitmap</dt>
+ <dd>A possibly-infinite set of bits used for describing sets of objects
+ such as CPUs (CPU sets) or memory nodes (Node sets). They are implemented
+ with the ::hwloc_bitmap_t opaque structure.
+</dd>
+
<dt>Parent object</dt>
<dd>The object logically containing the current object, for example
because its CPU set includes the CPU set of the current object.</dd>
@@ -694,20 +741,20 @@
hwloc-bind binds processes to specific hardware objects through a
flexible syntax. A simple example is binding an executable to
-specific cores (or sockets or cpusets or ...). The hwloc-bind(1) man
+specific cores (or sockets or bitmaps or ...). The hwloc-bind(1) man
page provides much more detail on what is possible.
hwloc-bind can also be used to retrieve the current process' binding.
\section cli_hwloc_calc hwloc-calc
-hwloc-calc is generally used to create cpuset strings to pass to
+hwloc-calc is generally used to create bitmap strings to pass to
hwloc-bind. Although hwloc-bind accepts many forms of object
-specification (i.e., cpuset strings are one of many forms that
+specification (i.e., bitmap strings are one of many forms that
hwloc-bind understands), they can be useful, compact representations
in shell scripts, for example.
-hwloc-calc generates cpuset strings from given hardware objects with
+hwloc-calc generates bitmap strings from given hardware objects with
the ability to aggregate them, intersect them, and more. hwloc-calc
generally uses the same syntax than hwloc-bind, but multiple instances
may be composed to generate complex combinations.
@@ -718,14 +765,21 @@
\section cli_hwloc_distrib hwloc-distrib
-hwloc-distrib generates a set of cpuset strings that are uniformly
+hwloc-distrib generates a set of bitmap strings that are uniformly
distributed across the machine for the given number of processes.
These strings may be used with hwloc-bind to run processes to maximize
their memory bandwidth by properly distributing them across the
machine.
+\section cli_hwloc_ps hwloc-ps
+hwloc-ps is a tool to display the bindings of processes that are
+currently running on the local machine. By default, hwloc-ps only
+lists processes that are bound; unbound process (and Linux kernel
+threads) are not displayed.
+
+
\page envvar Environment variables
The behavior of the hwloc library and tools may be tuned thanks to the
@@ -772,6 +826,44 @@
+\page cpu_mem_bind CPU Binding and Memory Binding
+
+Some OSes do not systematically provide separate functions for CPU and Memory
+binding. This means that CPU binding functions may have have effects on the
+memory binding policy, and changing the memory binding policy may change the CPU
+binding of the current thread. This is often not a problem for the application,
+so by default hwloc will make use of these functions when they provide better
+binding support.
+
+If the application does not want any CPU binding change when changing the
+memory policy, it needs to use the HWLOC_MEMBIND_NOCPUBIND flag to prevent
+hwloc from using OS functions which would change the CPU binding. Conversely,
+HWLOC_CPUBIND_NOMEMBIND can be passed to cpu binding function to prevent hwloc
+form using OS functions woudl change the memory binding policy. Of course, this
+will thus reduce hwloc's support for binding, so their use is discouraged.
+
+One can however avoid using these flags but still closely control both memory
+and CPU binding, by allocating memory and touching it, and then changing the
+CPU binding. The already-really-allocated memory will not be migrated, thus
+even if the memory binding policy gets changed by the CPU binding order, the
+effect will have been achieved. On binding and allocating further memory, the
+CPU binding should be performed again in case the memory binding altered the
+previously-selected CPU binding.
+
+Not all OSes support the notion of a current memory binding policy for the
+current process but those often still provide a way to allocate data on a given
+node set. Conversely, some OSes support the notion of a current memory binding
+policy, and do not permit to allocate data on a given node set without just
+changing the current policy and allocate the data. Hwloc provides functions
+that set the current memory binding policies (if supported) as well as
+functions which allocat memory bound to given node set. By default, it
+does not use the former to achieve the latter, so that users can use both
+on OSes where they are both supported, and get both effects at the same time.
+For convenience, hwloc however also provides the hwloc_alloc_membind_policy
+and hwloc_alloc_membind_policy_nodeset helpers which are allowed to change the
+current memory binding policy of the process, in order to achieve memory binding
+even if that means having to change the current memory binding policy.
+
\page interoperability Interoperability with other software
Although hwloc offers its own portable interface, it still may have to
@@ -817,6 +909,32 @@
processors near an OpenFabrics device.
</dd>
+<dt>Myrinet Express</dt>
+ <dd>
+ hwloc/myriexpress.h offers interoperability with the Myrinet
+ Express interface. It can return the list of processors near
+ a Myrinet board managed by the MX driver.
+ </dd>
+
+<dt>NVIDIA CUDA</dt>
+ <dd>
+ hwloc/cuda.h and hwloc/cudart.h enable interoperability with
+ NVIDIA CUDA Driver and Runtime interfaces. For instance, it may
+ return the list of processors near NVIDIA GPUs.
+ </dd>
+
+<dt>Taskset command-line tool</dt>
+ <dd>
+ The taskset command-line tool is widely used for binding
+ processes. It manipulates CPU set strings in a format that
+ is slightly different from hwloc's one (it does not divide the
+ string in fixed-size subsets and separates them with commas).
+ To ease interoperability, hwloc offers routines to convert
+ hwloc CPU sets from/to taskset-specific string format.
+ Most hwloc command-line tools also support the --taskset
+ option to manipulate taskset-specific strings.
+ </dd>
+
</dl>
@@ -922,9 +1040,8 @@
to build, you can use hwloc's embedded m4 capabilities. We have
tested the embedded m4 with projects that use Autoconf 2.65, Automake
1.11.1, and Libtool 2.2.6b. Slightly earlier versions of may also
-work but are untested. Autoconf versions prior to 2.63 are almost
-certain to not work because hwloc uses macros that were introduced in
-2.63.
+work but are untested. Autoconf versions prior to 2.65 are almost
+certain to not work.
You can either copy all the config/hwloc*m4 files from the hwloc
source tree to the directory where your project's m4 files reside, or
@@ -933,22 +1050,46 @@
your Makefile.am's ACLOCAL_AMFLAGS).
The following macros can then be used from your configure script (only
-HWLOC_INIT <em>must</em> be invoked if using the m4 macros):
+HWLOC_SETUP_CORE <em>must</em> be invoked if using the m4 macros):
-- HWLOC_INIT(config-dir-prefix, action-upon-success,
- action-upon-failure): Invoke the hwloc configuration tests and setup
- the hwloc tree to build. The first argument is the prefix to use
- for AC_OUTPUT files -- it's where the hwloc tree is located relative
- to <tt>$top_srcdir</tt>. Hence, if your embedded hwloc is located
- in the source tree at contrib/hwloc, you should pass
- <tt>[contrib/hwloc]</tt> as the first argument. If HWLOC_INIT and
- the rest of <tt>configure</tt> completes successfully, then "make"
- traversals of the hwloc tree with standard Automake targets (all,
- clean, install, etc.) should behave as expected. For example, it is
- safe to list the hwloc directory in the SUBDIRS of a higher-level
- Makefile.am. <strong>NOTE: If the HWLOC_SET_SYMBOL_PREFIX macro is
- used, it must be invoked <em>before</em> HWLOC_INIT.</strong>
+- HWLOC_SETUP_CORE(config-dir-prefix, action-upon-success,
+ action-upon-failure, print_banner_or_not): Invoke the hwloc
+ configuration tests and setup the hwloc tree to build. The first
+ argument is the prefix to use for AC_OUTPUT files -- it's where the
+ hwloc tree is located relative to <tt>$top_srcdir</tt>. Hence, if
+ your embedded hwloc is located in the source tree at contrib/hwloc,
+ you should pass <tt>[contrib/hwloc]</tt> as the first argument. If
+ HWLOC_SETUP_CORE and the rest of <tt>configure</tt> completes
+ successfully, then "make" traversals of the hwloc tree with standard
+ Automake targets (all, clean, install, etc.) should behave as
+ expected. For example, it is safe to list the hwloc directory in
+ the SUBDIRS of a higher-level Makefile.am. The last argument, if
+ not empty, will cause the macro to display an announcement banner
+ that it is starting the hwloc core configuration tests.
+ HWLOC_SETUP_CORE will set the following environment variables and
+ AC_SUBST them: HWLOC_EMBEDDED_CFLAGS, HWLOC_EMBEDDED_CPPFLAGS, and
+ HWLOC_EMBEDDED_LIBS. These flags are filled with the values
+ discovered in the hwloc-specific m4 tests, and can be used in your
+ build process as relevant. The _CFLAGS, _CPPFLAGS, and _LIBS
+ variables are necessary to build libhwloc (or libhwloc_embedded)
+ itself.
+
+ HWLOC_SETUP_CORE also sets HWLOC_EMBEDDED_LDADD environment variable
+ (and AC_SUBSTs it) to contain the location of the
+ libhwloc_embedded.la convenience Libtool archive. It can be used in
+ your build process to link an application or other library against
+ the embedded hwloc library.
+
+ <strong>NOTE: If the HWLOC_SET_SYMBOL_PREFIX macro is used, it must
+ be invoked <em>before</em> HWLOC_SETUP_CORE.</strong>
+
+- HWLOC_BUILD_STANDALONE: HWLOC_SETUP_CORE defaults to building hwloc
+ in an "embedded" mode (described above). If HWLOC_BUILD_STANDALONE
+ is invoked *before* HWLOC_SETUP_CORE, the embedded definitions will
+ not apply (e.g., libhwloc.la will be built, not
+ libhwloc_embedded.la).
+
- HWLOC_SET_SYMBOL_PREFIX(foo_): Tells the hwloc to prefix all of
hwloc's types and public symbols with "foo_"; meaning that function
hwloc_init() becomes foo_hwloc_init(). Enum values are prefixed
@@ -963,23 +1104,36 @@
an external hwloc, you may get multiple symbol definitions when
linking your final library or application.
+- HWLOC_SETUP_DOCS, HWLOC_SETUP_UTILS, HWLOC_SETUP_TESTS: These three
+ macros only apply when hwloc is built in "standalone" mode (i.e.,
+ they should NOT be invoked unless HWLOC_BUILD_STANDALONE has already
+ been invoked).
+
- HWLOC_DO_AM_CONDITIONALS: If you embed hwloc in a larger project and
- build it conditionally (e.g., if HWLOC_INIT is invoked
- conditionally), you must unconditionally invoke
+ build it conditionally with Automake (e.g., if HWLOC_SETUP_CORE is
+ invoked conditionally), you must unconditionally invoke
HWLOC_DO_AM_CONDITIONALS to avoid warnings from Automake (for the
cases where hwloc is not selected to be built). This macro is
necessary because hwloc uses some AM_CONDITIONALs to build itself,
and AM_CONDITIONALs cannot be defined conditionally. Note that it
is safe (but unnecessary) to call HWLOC_DO_AM_CONDITIONALS even if
- HWLOC_INIT is invoked unconditionally.
+ HWLOC_SETUP_CORE is invoked unconditionally. If you are not using
+ Automake to build hwloc, this macro is unncessary (and will actually
+ cause errors because it invoked AM_* macros that will be undefined).
-NOTE: When using the HWLOC_INIT m4 macro, it may be necessary to
-explicitly invoke AC_CANONICAL_TARGET and/or AC_USE_SYSTEM_EXTENSIONS
-macros early in the configure script (e.g., after AC_INIT but before
+<strong>NOTE:</strong> When using the HWLOC_SETUP_CORE m4 macro, it may
+be necessary to explicitly invoke AC_CANONICAL_TARGET (which requires
+config.sub and config.guess) and/or AC_USE_SYSTEM_EXTENSIONS macros
+early in the configure script (e.g., after AC_INIT but before
AM_INIT_AUTOMAKE). See the Autoconf documentation for further
information.
+Also note that hwloc's top-level configure.ac script uses exactly the
+macros described above to build hwloc in a standalone mode (by
+default). You may want to examine it for one example of how these
+macros are used.
+
\section embedding_example Example Embedding hwloc
Here's an example of integrating with a larger project named sandbox
@@ -997,10 +1151,11 @@
Libtool convenience library that hwloc will generate. The latter
is any dependent support libraries that may be needed by
$(HWLOC_EMBEDDED_LDADD).
- 4. Add "$(HWLOC_EMBEDDED_CPPFLAGS)" to AM_CPPFLAGS
+ 4. Add "$(HWLOC_EMBEDDED_CFLAGS)" to AM_CFLAGS
+ 5. Add "$(HWLOC_EMBEDDED_CPPFLAGS)" to AM_CPPFLAGS
shell$ edit configure.ac
1. Add "HWLOC_SET_SYMBOL_PREFIX(sandbox_hwloc_)" line
- 2. Add "HWLOC_INIT([my-embedded-hwloc], [happy=yes], [happy=no])" line
+ 2. Add "HWLOC_SETUP_CORE([my-embedded-hwloc], [happy=yes], [happy=no])" line
3. Add error checking for happy=no case
shell$ edit sandbox.c
1. Add #include <hwloc.h>
@@ -1095,7 +1250,7 @@
But as mentioned above, we discourage the use of these conversion
methods for actual binding. Instead, hwloc offers its own binding
model using the \p cpuset field of objects. These cpusets may be
-duplicated, modified, combined, etc. (see hwloc/cpuset.h for details)
+duplicated, modified, combined, etc. (see hwloc/bitmap.h for details)
and then passed to hwloc_set_cpubind() for binding.
Modified: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/include/Makefile.am
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/include/Makefile.am 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/include/Makefile.am 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,5 +1,6 @@
-# Copyright 2009 INRIA, Université Bordeaux 1
-# Copyright 2009-2010 Cisco Systems, Inc. All rights reserved.
+# Copyright © 2009-2010 INRIA
+# Copyright © 2009-2010 Université Bordeaux 1
+# Copyright © 2009-2010 Cisco Systems, Inc. All rights reserved.
# Only install the headers if we're in standalone mode (meaning:
# *don't* install the headers if we're in embedded mode).
@@ -8,9 +9,13 @@
include_HEADERS = hwloc.h
include_hwlocdir = $(includedir)/hwloc
include_hwloc_HEADERS = \
+ hwloc/bitmap.h \
hwloc/cpuset.h \
hwloc/helper.h \
+ hwloc/myriexpress.h \
hwloc/openfabrics-verbs.h \
+ hwloc/cuda.h \
+ hwloc/cudart.h \
hwloc/rename.h
nodist_include_hwloc_HEADERS = hwloc/config.h
Added: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/include/hwloc/bitmap.h
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/include/hwloc/bitmap.h (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/include/hwloc/bitmap.h 2010-11-24 09:21:55 UTC (rev 7494)
@@ -0,0 +1,286 @@
+/*
+ * Copyright © 2009 CNRS
+ * Copyright © 2009-2010 INRIA
+ * Copyright © 2009-2010 Université Bordeaux 1
+ * Copyright © 2009-2010 Cisco Systems, Inc. All rights reserved.
+ * See COPYING in top-level directory.
+ */
+
+/** \file
+ * \brief The bitmap API, for use in hwloc itself.
+ */
+
+#ifndef HWLOC_BITMAP_H
+#define HWLOC_BITMAP_H
+
+#include <hwloc/config.h>
+#include <assert.h>
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/** \defgroup hwlocality_bitmap The bitmap API
+ *
+ * For use in hwloc itself, a hwloc_bitmap_t usually represents a set of
+ * objects, typically logical processors or memory nodes, indexed by OS
+ * physical number.
+ *
+ * A bitmap may be infinite.
+ * @{
+ */
+
+
+/** \brief
+ * Set of bits represented as an opaque pointer to an internal bitmap.
+ */
+typedef struct hwloc_bitmap_s * hwloc_bitmap_t;
+typedef const struct hwloc_bitmap_s * hwloc_const_bitmap_t;
+
+
+/*
+ * Bitmap allocation, freeing and copying.
+ */
+
+/** \brief Allocate a new empty bitmap.
+ *
+ * \returns A valid bitmap or NULL.
+ *
+ * The bitmap should be freed by a corresponding call to
+ * hwloc_bitmap_free(). */
+HWLOC_DECLSPEC hwloc_bitmap_t hwloc_bitmap_alloc(void) __hwloc_attribute_malloc;
+
+/** \brief Allocate a new full bitmap. */
+HWLOC_DECLSPEC hwloc_bitmap_t hwloc_bitmap_alloc_full(void) __hwloc_attribute_malloc;
+
+/** \brief Free bitmap \p bitmap */
+HWLOC_DECLSPEC void hwloc_bitmap_free(hwloc_bitmap_t bitmap);
+
+/** \brief Duplicate bitmap \p bitmap by allocating a new bitmap and copying \p bitmap contents */
+HWLOC_DECLSPEC hwloc_bitmap_t hwloc_bitmap_dup(hwloc_const_bitmap_t bitmap) __hwloc_attribute_malloc;
+
+/** \brief Copy the contents of bitmap \p src into the already allocated bitmap \p dst */
+HWLOC_DECLSPEC void hwloc_bitmap_copy(hwloc_bitmap_t dst, hwloc_const_bitmap_t src);
+
+
+/*
+ * Bitmap/String Conversion
+ */
+
+/** \brief Stringify a bitmap.
+ *
+ * Up to \p buflen characters may be written in buffer \p buf.
+ *
+ * \return the number of character that were actually written if not truncating,
+ * or that would have been written (not including the ending \\0).
+ */
+HWLOC_DECLSPEC int hwloc_bitmap_snprintf(char * __hwloc_restrict buf, size_t buflen, hwloc_const_bitmap_t bitmap);
+
+/** \brief Stringify a bitmap into a newly allocated string.
+ *
+ * \return the number of character that were actually written
+ * (not including the ending \\0).
+ */
+HWLOC_DECLSPEC int hwloc_bitmap_asprintf(char ** strp, hwloc_const_bitmap_t bitmap);
+
+/** \brief Parse a bitmap string and stores it in bitmap \p bitmap.
+ *
+ * Must start and end with a digit.
+ */
+HWLOC_DECLSPEC int hwloc_bitmap_sscanf(hwloc_bitmap_t bitmap, const char * __hwloc_restrict string);
+
+/** \brief Stringify a bitmap in the taskset-specific format.
+ *
+ * The taskset command manipulates bitmap strings that contain a single
+ * (possible very long) hexadecimal number starting with 0x.
+ */
+HWLOC_DECLSPEC int hwloc_bitmap_taskset_snprintf(char * __hwloc_restrict buf, size_t buflen, hwloc_const_bitmap_t bitmap);
+
+/** \brief Stringify a bitmap into a newly allocated taskset-specific string.
+ */
+HWLOC_DECLSPEC int hwloc_bitmap_taskset_asprintf(char ** strp, hwloc_const_bitmap_t bitmap);
+
+/** \brief Parse a taskset-specific bitmap string and stores it in bitmap \p bitmap.
+ */
+HWLOC_DECLSPEC int hwloc_bitmap_taskset_sscanf(hwloc_bitmap_t bitmap, const char * __hwloc_restrict string);
+
+
+/*
+ * Building bitmaps.
+ */
+
+/** \brief Empty the bitmap \p bitmap */
+HWLOC_DECLSPEC void hwloc_bitmap_zero(hwloc_bitmap_t bitmap);
+
+/** \brief Fill bitmap \p bitmap with all possible indexes (even if those objects don't exist or are otherwise unavailable) */
+HWLOC_DECLSPEC void hwloc_bitmap_fill(hwloc_bitmap_t bitmap);
+
+/** \brief Empty the bitmap \p bitmap and add bit \p index */
+HWLOC_DECLSPEC void hwloc_bitmap_only(hwloc_bitmap_t bitmap, unsigned index);
+
+/** \brief Fill the bitmap \p and clear the index \p index */
+HWLOC_DECLSPEC void hwloc_bitmap_allbut(hwloc_bitmap_t bitmap, unsigned index);
+
+/** \brief Setup bitmap \p bitmap from unsigned long \p mask */
+HWLOC_DECLSPEC void hwloc_bitmap_from_ulong(hwloc_bitmap_t bitmap, unsigned long mask);
+
+/** \brief Setup bitmap \p bitmap from unsigned long \p mask used as \p i -th subset */
+HWLOC_DECLSPEC void hwloc_bitmap_from_ith_ulong(hwloc_bitmap_t bitmap, unsigned i, unsigned long mask);
+
+
+/*
+ * Modifying bitmaps.
+ */
+
+/** \brief Add index \p index in bitmap \p bitmap */
+HWLOC_DECLSPEC void hwloc_bitmap_set(hwloc_bitmap_t bitmap, unsigned index);
+
+/** \brief Add indexess from \p begin to \p end in bitmap \p bitmap */
+HWLOC_DECLSPEC void hwloc_bitmap_set_range(hwloc_bitmap_t bitmap, unsigned begin, unsigned end);
+
+/** \brief Replace \p i -th subset of bitmap \p bitmap with unsigned long \p mask */
+HWLOC_DECLSPEC void hwloc_bitmap_set_ith_ulong(hwloc_bitmap_t bitmap, unsigned i, unsigned long mask);
+
+/** \brief Remove index \p index from bitmap \p bitmap */
+HWLOC_DECLSPEC void hwloc_bitmap_clr(hwloc_bitmap_t bitmap, unsigned index);
+
+/** \brief Remove index from \p begin to \p end in bitmap \p bitmap */
+HWLOC_DECLSPEC void hwloc_bitmap_clr_range(hwloc_bitmap_t bitmap, unsigned begin, unsigned end);
+
+/** \brief Keep a single index among those set in bitmap \p bitmap
+ *
+ * May be useful before binding so that the process does not
+ * have a chance of migrating between multiple logical CPUs
+ * in the original mask.
+ */
+HWLOC_DECLSPEC void hwloc_bitmap_singlify(hwloc_bitmap_t bitmap);
+
+
+/*
+ * Consulting bitmaps.
+ */
+
+/** \brief Convert the beginning part of bitmap \p bitmap into unsigned long \p mask */
+HWLOC_DECLSPEC unsigned long hwloc_bitmap_to_ulong(hwloc_const_bitmap_t bitmap) __hwloc_attribute_pure;
+
+/** \brief Convert the \p i -th subset of bitmap \p bitmap into unsigned long mask */
+HWLOC_DECLSPEC unsigned long hwloc_bitmap_to_ith_ulong(hwloc_const_bitmap_t bitmap, unsigned i) __hwloc_attribute_pure;
+
+/** \brief Test whether index \p index is part of bitmap \p bitmap */
+HWLOC_DECLSPEC int hwloc_bitmap_isset(hwloc_const_bitmap_t bitmap, unsigned index) __hwloc_attribute_pure;
+
+/** \brief Test whether bitmap \p bitmap is empty */
+HWLOC_DECLSPEC int hwloc_bitmap_iszero(hwloc_const_bitmap_t bitmap) __hwloc_attribute_pure;
+
+/** \brief Test whether bitmap \p bitmap is completely full */
+HWLOC_DECLSPEC int hwloc_bitmap_isfull(hwloc_const_bitmap_t bitmap) __hwloc_attribute_pure;
+
+/** \brief Compute the first index (least significant bit) in bitmap \p bitmap
+ *
+ * \return -1 if no index is set.
+ */
+HWLOC_DECLSPEC int hwloc_bitmap_first(hwloc_const_bitmap_t bitmap) __hwloc_attribute_pure;
+
+/** \brief Compute the next index in bitmap \p bitmap which is after index \p prev
+ *
+ * \return -1 if no index with higher index is bitmap.
+ */
+HWLOC_DECLSPEC int hwloc_bitmap_next(hwloc_const_bitmap_t bitmap, unsigned prev) __hwloc_attribute_pure;
+
+/** \brief Compute the last index (most significant bit) in bitmap \p bitmap
+ *
+ * \return -1 if no index is bitmap, or if the index bitmap is infinite.
+ */
+HWLOC_DECLSPEC int hwloc_bitmap_last(hwloc_const_bitmap_t bitmap) __hwloc_attribute_pure;
+
+/** \brief Compute the "weight" of bitmap \p bitmap (i.e., number of
+ * indexes that are in the bitmap).
+ *
+ * \return the number of indexes that are in the bitmap.
+ */
+HWLOC_DECLSPEC int hwloc_bitmap_weight(hwloc_const_bitmap_t bitmap) __hwloc_attribute_pure;
+
+/** \brief Loop macro iterating on bitmap \p bitmap
+ * \hideinitializer
+ *
+ * \p index is the loop variable; it should be an unsigned int. The
+ * first iteration will set \p index to the lowest index in the bitmap.
+ * Successive iterations will iterate through, in order, all remaining
+ * indexes that in the bitmap. To be specific: each iteration will return a
+ * value for \p index such that hwloc_bitmap_isset(bitmap, index) is true.
+ *
+ * The assert prevents the loop from being infinite if the bitmap is infinite.
+ */
+#define hwloc_bitmap_foreach_begin(index, bitmap) \
+do { \
+ assert(hwloc_bitmap_weight(bitmap) != -1); \
+ for (index = hwloc_bitmap_first(bitmap); \
+ (unsigned) index != (unsigned) -1; \
+ index = hwloc_bitmap_next(bitmap, index)) { \
+/** \brief End of loop. Needs a terminating ';'.
+ * \hideinitializer
+ *
+ * \sa hwloc_bitmap_foreach_begin */
+#define hwloc_bitmap_foreach_end() \
+ } \
+} while (0)
+
+
+/*
+ * Combining bitmaps.
+ */
+
+/** \brief Or bitmaps \p bitmap1 and \p bitmap2 and store the result in bitmap \p res */
+HWLOC_DECLSPEC void hwloc_bitmap_or (hwloc_bitmap_t res, hwloc_const_bitmap_t bitmap1, hwloc_const_bitmap_t bitmap2);
+
+/** \brief And bitmaps \p bitmap1 and \p bitmap2 and store the result in bitmap \p res */
+HWLOC_DECLSPEC void hwloc_bitmap_and (hwloc_bitmap_t res, hwloc_const_bitmap_t bitmap1, hwloc_const_bitmap_t bitmap2);
+
+/** \brief And bitmap \p bitmap1 and the negation of \p bitmap2 and store the result in bitmap \p res */
+HWLOC_DECLSPEC void hwloc_bitmap_andnot (hwloc_bitmap_t res, hwloc_const_bitmap_t bitmap1, hwloc_const_bitmap_t bitmap2);
+
+/** \brief Xor bitmaps \p bitmap1 and \p bitmap2 and store the result in bitmap \p res */
+HWLOC_DECLSPEC void hwloc_bitmap_xor (hwloc_bitmap_t res, hwloc_const_bitmap_t bitmap1, hwloc_const_bitmap_t bitmap2);
+
+/** \brief Negate bitmap \p bitmap and store the result in bitmap \p res */
+HWLOC_DECLSPEC void hwloc_bitmap_not (hwloc_bitmap_t res, hwloc_const_bitmap_t bitmap);
+
+
+/*
+ * Comparing bitmaps.
+ */
+
+/** \brief Test whether bitmaps \p bitmap1 and \p bitmap2 intersects */
+HWLOC_DECLSPEC int hwloc_bitmap_intersects (hwloc_const_bitmap_t bitmap1, hwloc_const_bitmap_t bitmap2) __hwloc_attribute_pure;
+
+/** \brief Test whether bitmap \p sub_bitmap is part of bitmap \p super_bitmap */
+HWLOC_DECLSPEC int hwloc_bitmap_isincluded (hwloc_const_bitmap_t sub_bitmap, hwloc_const_bitmap_t super_bitmap) __hwloc_attribute_pure;
+
+/** \brief Test whether bitmap \p bitmap1 is equal to bitmap \p bitmap2 */
+HWLOC_DECLSPEC int hwloc_bitmap_isequal (hwloc_const_bitmap_t bitmap1, hwloc_const_bitmap_t bitmap2) __hwloc_attribute_pure;
+
+/** \brief Compare bitmaps \p bitmap1 and \p bitmap2 using their lowest index.
+ *
+ * Smaller least significant bit is smaller.
+ * The empty bitmap is considered higher than anything.
+ */
+HWLOC_DECLSPEC int hwloc_bitmap_compare_first(hwloc_const_bitmap_t bitmap1, hwloc_const_bitmap_t bitmap2) __hwloc_attribute_pure;
+
+/** \brief Compare bitmaps \p bitmap1 and \p bitmap2 using their highest index.
+ *
+ * Higher most significant bit is higher.
+ * The empty bitmap is considered lower than anything.
+ */
+HWLOC_DECLSPEC int hwloc_bitmap_compare(hwloc_const_bitmap_t bitmap1, hwloc_const_bitmap_t bitmap2) __hwloc_attribute_pure;
+
+/** @} */
+
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+
+#endif /* HWLOC_BITMAP_H */
Modified: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/include/hwloc/config.h.in
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/include/hwloc/config.h.in 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/include/hwloc/config.h.in 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,5 +1,7 @@
/* -*- c -*-
- * Copyright © 2009 CNRS, INRIA, Université Bordeaux 1
+ * Copyright © 2009 CNRS
+ * Copyright © 2009-2010 INRIA
+ * Copyright © 2009-2010 Université Bordeaux 1
* Copyright © 2009 Cisco Systems, Inc. All rights reserved.
* See COPYING in top-level directory.
*/
@@ -95,8 +97,6 @@
/* Defined to 1 if the CPU_SET macro works */
#undef HWLOC_HAVE_CPU_SET
-#define HWLOC_NBMAXCPUS 1024
-
/* Defined to 1 if you have the <stdint.h> header file. */
#undef HWLOC_HAVE_STDINT_H
Modified: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/include/hwloc/cpuset.h
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/include/hwloc/cpuset.h 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/include/hwloc/cpuset.h 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,238 +1,75 @@
/*
- * Copyright © 2009 CNRS, INRIA, Université Bordeaux 1
+ * Copyright © 2009 CNRS
+ * Copyright © 2009-2010 INRIA
+ * Copyright © 2009-2010 Université Bordeaux 1
* Copyright © 2009-2010 Cisco Systems, Inc. All rights reserved.
* See COPYING in top-level directory.
*/
/** \file
- * \brief The Cpuset API, for use in hwloc itself.
+ * \brief The old deprecated Cpuset API.
+ * This interface should not be used anymore, it will be dropped in a later release.
+ *
+ * hwloc/bitmap.h should be used instead. Most hwloc_cpuset_foo functions are
+ * replaced with hwloc_bitmap_foo. The only exceptions are:
+ * - hwloc_cpuset_from_string -> hwloc_bitmap_sscanf
+ * - hwloc_cpuset_cpu -> hwloc_bitmap_only
+ * - hwloc_cpuset_all_but_cpu -> hwloc_bitmap_allbut
*/
#ifndef HWLOC_CPUSET_H
#define HWLOC_CPUSET_H
-#include <hwloc/config.h>
-
-
#ifdef __cplusplus
extern "C" {
#endif
+#include "hwloc/bitmap.h"
-/** \defgroup hwlocality_cpuset The Cpuset API
- *
- * For use in hwloc itself, a hwloc_cpuset_t represents a set of logical
- * processors.
- *
- * \note cpusets are indexed by OS logical processor number.
- * @{
- */
+static __hwloc_inline hwloc_bitmap_t __hwloc_attribute_deprecated hwloc_cpuset_alloc(void) { return hwloc_bitmap_alloc(); }
+static __hwloc_inline void __hwloc_attribute_deprecated hwloc_cpuset_free(hwloc_bitmap_t bitmap) { hwloc_bitmap_free(bitmap); }
+static __hwloc_inline hwloc_bitmap_t __hwloc_attribute_deprecated hwloc_cpuset_dup(hwloc_const_bitmap_t bitmap) { return hwloc_bitmap_dup(bitmap); }
+static __hwloc_inline void __hwloc_attribute_deprecated hwloc_cpuset_copy(hwloc_bitmap_t dst, hwloc_const_bitmap_t src) { hwloc_bitmap_copy(dst, src); }
+static __hwloc_inline int __hwloc_attribute_deprecated hwloc_cpuset_snprintf(char * __hwloc_restrict buf, size_t buflen, hwloc_const_bitmap_t bitmap) { return hwloc_bitmap_snprintf(buf, buflen, bitmap); }
+static __hwloc_inline int __hwloc_attribute_deprecated hwloc_cpuset_asprintf(char ** strp, hwloc_const_bitmap_t bitmap) { return hwloc_bitmap_asprintf(strp, bitmap); }
+static __hwloc_inline int __hwloc_attribute_deprecated hwloc_cpuset_from_string(hwloc_bitmap_t bitmap, const char * __hwloc_restrict string) { return hwloc_bitmap_sscanf(bitmap, string); }
+static __hwloc_inline void __hwloc_attribute_deprecated hwloc_cpuset_zero(hwloc_bitmap_t bitmap) { hwloc_bitmap_zero(bitmap); }
+static __hwloc_inline void __hwloc_attribute_deprecated hwloc_cpuset_fill(hwloc_bitmap_t bitmap) { hwloc_bitmap_fill(bitmap); }
+static __hwloc_inline void __hwloc_attribute_deprecated hwloc_cpuset_from_ulong(hwloc_bitmap_t bitmap, unsigned long mask) { hwloc_bitmap_from_ulong(bitmap, mask); }
+static __hwloc_inline void __hwloc_attribute_deprecated hwloc_cpuset_from_ith_ulong(hwloc_bitmap_t bitmap, unsigned i, unsigned long mask) { hwloc_bitmap_from_ith_ulong(bitmap, i, mask); }
+static __hwloc_inline unsigned __hwloc_attribute_deprecated long hwloc_cpuset_to_ulong(hwloc_const_bitmap_t bitmap) { return hwloc_bitmap_to_ulong(bitmap); }
+static __hwloc_inline unsigned __hwloc_attribute_deprecated long hwloc_cpuset_to_ith_ulong(hwloc_const_bitmap_t bitmap, unsigned i) { return hwloc_bitmap_to_ith_ulong(bitmap, i); }
+static __hwloc_inline void __hwloc_attribute_deprecated hwloc_cpuset_cpu(hwloc_bitmap_t bitmap, unsigned index) { hwloc_bitmap_only(bitmap, index); }
+static __hwloc_inline void __hwloc_attribute_deprecated hwloc_cpuset_all_but_cpu(hwloc_bitmap_t bitmap, unsigned index) { hwloc_bitmap_allbut(bitmap, index); }
+static __hwloc_inline void __hwloc_attribute_deprecated hwloc_cpuset_set(hwloc_bitmap_t bitmap, unsigned index) { hwloc_bitmap_set(bitmap, index); }
+static __hwloc_inline void __hwloc_attribute_deprecated hwloc_cpuset_set_range(hwloc_bitmap_t bitmap, unsigned begin, unsigned end) { hwloc_bitmap_set_range(bitmap, begin, end); }
+static __hwloc_inline void __hwloc_attribute_deprecated hwloc_cpuset_set_ith_ulong(hwloc_bitmap_t bitmap, unsigned i, unsigned long mask) { hwloc_bitmap_set_ith_ulong(bitmap, i, mask); }
+static __hwloc_inline void __hwloc_attribute_deprecated hwloc_cpuset_clr(hwloc_bitmap_t bitmap, unsigned index) { hwloc_bitmap_clr(bitmap, index); }
+static __hwloc_inline void __hwloc_attribute_deprecated hwloc_cpuset_clr_range(hwloc_bitmap_t bitmap, unsigned begin, unsigned end) { hwloc_bitmap_clr_range(bitmap, begin, end); }
+static __hwloc_inline int __hwloc_attribute_deprecated hwloc_cpuset_isset(hwloc_const_bitmap_t bitmap, unsigned index) { return hwloc_bitmap_isset(bitmap, index); }
+static __hwloc_inline int __hwloc_attribute_deprecated hwloc_cpuset_iszero(hwloc_const_bitmap_t bitmap) { return hwloc_bitmap_iszero(bitmap); }
+static __hwloc_inline int __hwloc_attribute_deprecated hwloc_cpuset_isfull(hwloc_const_bitmap_t bitmap) { return hwloc_bitmap_isfull(bitmap); }
+static __hwloc_inline int __hwloc_attribute_deprecated hwloc_cpuset_isequal(hwloc_const_bitmap_t bitmap1, hwloc_const_bitmap_t bitmap2) { return hwloc_bitmap_isequal(bitmap1, bitmap2); }
+static __hwloc_inline int __hwloc_attribute_deprecated hwloc_cpuset_intersects(hwloc_const_bitmap_t bitmap1, hwloc_const_bitmap_t bitmap2) { return hwloc_bitmap_intersects(bitmap1, bitmap2); }
+static __hwloc_inline int __hwloc_attribute_deprecated hwloc_cpuset_isincluded(hwloc_const_bitmap_t sub_bitmap, hwloc_const_bitmap_t super_bitmap) { return hwloc_bitmap_isincluded(sub_bitmap, super_bitmap); }
+static __hwloc_inline void __hwloc_attribute_deprecated hwloc_cpuset_or(hwloc_bitmap_t res, hwloc_const_bitmap_t bitmap1, hwloc_const_bitmap_t bitmap2) { hwloc_bitmap_or(res, bitmap1, bitmap2); }
+static __hwloc_inline void __hwloc_attribute_deprecated hwloc_cpuset_and(hwloc_bitmap_t res, hwloc_const_bitmap_t bitmap1, hwloc_const_bitmap_t bitmap2) { hwloc_bitmap_and(res, bitmap1, bitmap2); }
+static __hwloc_inline void __hwloc_attribute_deprecated hwloc_cpuset_andnot(hwloc_bitmap_t res, hwloc_const_bitmap_t bitmap1, hwloc_const_bitmap_t bitmap2) { hwloc_bitmap_andnot(res, bitmap1, bitmap2); }
+static __hwloc_inline void __hwloc_attribute_deprecated hwloc_cpuset_xor(hwloc_bitmap_t res, hwloc_const_bitmap_t bitmap1, hwloc_const_bitmap_t bitmap2) { hwloc_bitmap_xor(res, bitmap1, bitmap2); }
+static __hwloc_inline void __hwloc_attribute_deprecated hwloc_cpuset_not(hwloc_bitmap_t res, hwloc_const_bitmap_t bitmap) { hwloc_bitmap_not(res, bitmap); }
+static __hwloc_inline int __hwloc_attribute_deprecated hwloc_cpuset_first(hwloc_const_bitmap_t bitmap) { return hwloc_bitmap_first(bitmap); }
+static __hwloc_inline int __hwloc_attribute_deprecated hwloc_cpuset_last(hwloc_const_bitmap_t bitmap) { return hwloc_bitmap_last(bitmap); }
+static __hwloc_inline int __hwloc_attribute_deprecated hwloc_cpuset_next(hwloc_const_bitmap_t bitmap, unsigned prev) { return hwloc_bitmap_next(bitmap, prev); }
+static __hwloc_inline void __hwloc_attribute_deprecated hwloc_cpuset_singlify(hwloc_bitmap_t bitmap) { hwloc_bitmap_singlify(bitmap); }
+static __hwloc_inline int __hwloc_attribute_deprecated hwloc_cpuset_compare_first(hwloc_const_bitmap_t bitmap1, hwloc_const_bitmap_t bitmap2) { return hwloc_bitmap_compare_first(bitmap1, bitmap2); }
+static __hwloc_inline int __hwloc_attribute_deprecated hwloc_cpuset_compare(hwloc_const_bitmap_t bitmap1, hwloc_const_bitmap_t bitmap2) { return hwloc_bitmap_compare(bitmap1, bitmap2); }
+static __hwloc_inline int __hwloc_attribute_deprecated hwloc_cpuset_weight(hwloc_const_bitmap_t bitmap) { return hwloc_bitmap_weight(bitmap); }
+#define hwloc_cpuset_foreach_begin hwloc_bitmap_foreach_begin
+#define hwloc_cpuset_foreach_end hwloc_bitmap_foreach_end
-/** \brief
- * Set of CPUs represented as an opaque pointer to an internal bitmask.
- */
-typedef struct hwloc_cpuset_s * hwloc_cpuset_t;
-typedef const struct hwloc_cpuset_s * hwloc_const_cpuset_t;
-
-
-/*
- * CPU set allocation, freeing and copying.
- */
-
-/** \brief Allocate a new empty CPU set.
-
- \returns A valid CPU set or NULL.
-
- The CPU set should be freed by a corresponding call to
- hwloc_cpuset_free(). */
-HWLOC_DECLSPEC hwloc_cpuset_t hwloc_cpuset_alloc(void) __hwloc_attribute_malloc;
-
-/** \brief Free CPU set \p set */
-HWLOC_DECLSPEC void hwloc_cpuset_free(hwloc_cpuset_t set);
-
-/** \brief Duplicate CPU set \p set by allocating a new CPU set and copying \p set's contents */
-HWLOC_DECLSPEC hwloc_cpuset_t hwloc_cpuset_dup(hwloc_const_cpuset_t set) __hwloc_attribute_malloc;
-
-/** \brief Copy the contents of CPU set \p src into the already allocated CPU set \p dst */
-HWLOC_DECLSPEC void hwloc_cpuset_copy(hwloc_cpuset_t dst, hwloc_const_cpuset_t src);
-
-
-/*
- * Cpuset/String Conversion
- */
-
-/** \brief Stringify a cpuset.
- *
- * Up to \p buflen characters may be written in buffer \p buf.
- *
- * \return the number of character that were actually written if not truncating,
- * or that would have been written (not including the ending \\0).
- */
-HWLOC_DECLSPEC int hwloc_cpuset_snprintf(char * __hwloc_restrict buf, size_t buflen, hwloc_const_cpuset_t set);
-
-/** \brief Stringify a cpuset into a newly allocated string.
- *
- * \return the number of character that were actually written
- * (not including the ending \\0).
- */
-HWLOC_DECLSPEC int hwloc_cpuset_asprintf(char ** strp, hwloc_const_cpuset_t set);
-
-/** \brief Parse a cpuset string and stores it in CPU set \p set.
- *
- * Must start and end with a digit.
- */
-HWLOC_DECLSPEC int hwloc_cpuset_from_string(hwloc_cpuset_t set, const char * __hwloc_restrict string);
-
-
-/*
- * Primitives & macros for building, modifying and consulting "sets" of cpus.
- */
-
-/** \brief Empty the CPU set \p set */
-HWLOC_DECLSPEC void hwloc_cpuset_zero(hwloc_cpuset_t set);
-
-/** \brief Fill CPU set \p set with all possible CPUs (even if those CPUs don't exist or are otherwise unavailable) */
-HWLOC_DECLSPEC void hwloc_cpuset_fill(hwloc_cpuset_t set);
-
-/** \brief Setup CPU set \p set from unsigned long \p mask */
-HWLOC_DECLSPEC void hwloc_cpuset_from_ulong(hwloc_cpuset_t set, unsigned long mask);
-
-/** \brief Setup CPU set \p set from unsigned long \p mask used as \p i -th subset */
-HWLOC_DECLSPEC void hwloc_cpuset_from_ith_ulong(hwloc_cpuset_t set, unsigned i, unsigned long mask);
-
-/** \brief Convert the beginning part of CPU set \p set into unsigned long \p mask */
-HWLOC_DECLSPEC unsigned long hwloc_cpuset_to_ulong(hwloc_const_cpuset_t set) __hwloc_attribute_pure;
-
-/** \brief Convert the \p i -th subset of CPU set \p set into unsigned long mask */
-HWLOC_DECLSPEC unsigned long hwloc_cpuset_to_ith_ulong(hwloc_const_cpuset_t set, unsigned i) __hwloc_attribute_pure;
-
-/** \brief Empty the CPU set \p set and add CPU \p cpu */
-HWLOC_DECLSPEC void hwloc_cpuset_cpu(hwloc_cpuset_t set, unsigned cpu);
-
-/** \brief Empty the CPU set \p set and add all but the CPU \p cpu */
-HWLOC_DECLSPEC void hwloc_cpuset_all_but_cpu(hwloc_cpuset_t set, unsigned cpu);
-
-/** \brief Add CPU \p cpu in CPU set \p set */
-HWLOC_DECLSPEC void hwloc_cpuset_set(hwloc_cpuset_t set, unsigned cpu);
-
-/** \brief Add CPUs from \p begincpu to \p endcpu in CPU set \p set */
-HWLOC_DECLSPEC void hwloc_cpuset_set_range(hwloc_cpuset_t set, unsigned begincpu, unsigned endcpu);
-
-/** \brief Remove CPU \p cpu from CPU set \p set */
-HWLOC_DECLSPEC void hwloc_cpuset_clr(hwloc_cpuset_t set, unsigned cpu);
-
-/** \brief Remove CPUs from \p begincpu to \p endcpu in CPU set \p set */
-HWLOC_DECLSPEC void hwloc_cpuset_clr_range(hwloc_cpuset_t set, unsigned begincpu, unsigned endcpu);
-
-/** \brief Test whether CPU \p cpu is part of set \p set */
-HWLOC_DECLSPEC int hwloc_cpuset_isset(hwloc_const_cpuset_t set, unsigned cpu) __hwloc_attribute_pure;
-
-/** \brief Test whether set \p set is empty */
-HWLOC_DECLSPEC int hwloc_cpuset_iszero(hwloc_const_cpuset_t set) __hwloc_attribute_pure;
-
-/** \brief Test whether set \p set is completely full */
-HWLOC_DECLSPEC int hwloc_cpuset_isfull(hwloc_const_cpuset_t set) __hwloc_attribute_pure;
-
-/** \brief Test whether set \p set1 is equal to set \p set2 */
-HWLOC_DECLSPEC int hwloc_cpuset_isequal (hwloc_const_cpuset_t set1, hwloc_const_cpuset_t set2) __hwloc_attribute_pure;
-
-/** \brief Test whether sets \p set1 and \p set2 intersects */
-HWLOC_DECLSPEC int hwloc_cpuset_intersects (hwloc_const_cpuset_t set1, hwloc_const_cpuset_t set2) __hwloc_attribute_pure;
-
-/** \brief Test whether set \p sub_set is part of set \p super_set */
-HWLOC_DECLSPEC int hwloc_cpuset_isincluded (hwloc_const_cpuset_t sub_set, hwloc_const_cpuset_t super_set) __hwloc_attribute_pure;
-
-/** \brief Or sets \p set1 and \p set2 and store the result in set \p res */
-HWLOC_DECLSPEC void hwloc_cpuset_or (hwloc_cpuset_t res, hwloc_const_cpuset_t set1, hwloc_const_cpuset_t set2);
-
-/** \brief And sets \p set1 and \p set2 and store the result in set \p res */
-HWLOC_DECLSPEC void hwloc_cpuset_and (hwloc_cpuset_t res, hwloc_const_cpuset_t set1, hwloc_const_cpuset_t set2);
-
-/** \brief And set \p set1 and the negation of \p set2 and store the result in set \p res */
-HWLOC_DECLSPEC void hwloc_cpuset_andnot (hwloc_cpuset_t res, hwloc_const_cpuset_t set1, hwloc_const_cpuset_t set2);
-
-/** \brief Xor sets \p set1 and \p set2 and store the result in set \p res */
-HWLOC_DECLSPEC void hwloc_cpuset_xor (hwloc_cpuset_t res, hwloc_const_cpuset_t set1, hwloc_const_cpuset_t set2);
-
-/** \brief Negate set \p set and store the result in set \p res */
-HWLOC_DECLSPEC void hwloc_cpuset_not (hwloc_cpuset_t res, hwloc_const_cpuset_t set);
-
-/** \brief Compute the first CPU (least significant bit) in CPU set \p set
- *
- * \return -1 if no CPU is set.
- */
-HWLOC_DECLSPEC int hwloc_cpuset_first(hwloc_const_cpuset_t set) __hwloc_attribute_pure;
-
-/** \brief Compute the last CPU (most significant bit) in CPU set \p set
- *
- * \return -1 if no CPU is set.
- */
-HWLOC_DECLSPEC int hwloc_cpuset_last(hwloc_const_cpuset_t set) __hwloc_attribute_pure;
-
-/** \brief Compute the next CPU in CPU set \p set which is after CPU \p prev_cpu
- *
- * \return -1 if no CPU with higher index is set.
- */
-HWLOC_DECLSPEC int hwloc_cpuset_next(hwloc_const_cpuset_t set, unsigned prev_cpu) __hwloc_attribute_pure;
-
-/** \brief Keep a single CPU among those set in CPU set \p set
- *
- * May be useful before binding so that the process does not
- * have a chance of migrating between multiple logical CPUs
- * in the original mask.
- */
-HWLOC_DECLSPEC void hwloc_cpuset_singlify(hwloc_cpuset_t set);
-
-/** \brief Compare CPU sets \p set1 and \p set2 using their lowest index CPU.
- *
- * Smaller least significant bit is smaller.
- * The empty CPU set is considered higher than anything.
- */
-HWLOC_DECLSPEC int hwloc_cpuset_compare_first(hwloc_const_cpuset_t set1, hwloc_const_cpuset_t set2) __hwloc_attribute_pure;
-
-/** \brief Compare CPU sets \p set1 and \p set2 using their highest index CPU.
- *
- * Higher most significant bit is higher.
- * The empty CPU set is considered lower than anything.
- */
-HWLOC_DECLSPEC int hwloc_cpuset_compare(hwloc_const_cpuset_t set1, hwloc_const_cpuset_t set2) __hwloc_attribute_pure;
-
-/** \brief Compute the "weight" of CPU set \p set (i.e., number of
- * CPUs that are in the set).
- *
- * \return the number of CPUs that are in the set.
- */
-HWLOC_DECLSPEC int hwloc_cpuset_weight(hwloc_const_cpuset_t set) __hwloc_attribute_pure;
-
-/** \brief Loop macro iterating on CPU set \p set
- * \hideinitializer
- *
- * \p cpu is the loop variable; it should be an unsigned int. The
- * first iteration will set \p cpu to the lowest index CPU in the set.
- * Successive iterations will iterate through, in order, all remaining
- * CPUs that in the set. To be specific: each iteration will return a
- * value for \p cpu such that hwloc_cpuset_isset(set, cpu) is true.
- */
-#define hwloc_cpuset_foreach_begin(cpu, set) \
-do { \
- for (cpu = hwloc_cpuset_first(set); \
- (unsigned) cpu != (unsigned) -1; \
- cpu = hwloc_cpuset_next(set, cpu)) { \
-/** \brief End of loop. Needs a terminating ';'.
- * \hideinitializer
- *
- * \sa hwloc_cpuset_foreach_begin */
-#define hwloc_cpuset_foreach_end() \
- } \
-} while (0)
-
-/** @} */
-
-
#ifdef __cplusplus
} /* extern "C" */
#endif
-
#endif /* HWLOC_CPUSET_H */
Added: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/include/hwloc/cuda.h
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/include/hwloc/cuda.h (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/include/hwloc/cuda.h 2010-11-24 09:21:55 UTC (rev 7494)
@@ -0,0 +1,89 @@
+/*
+ * Copyright © 2010 INRIA
+ * Copyright © 2010 Université Bordeaux 1
+ * See COPYING in top-level directory.
+ */
+
+/** \file
+ * \brief Macros to help interaction between hwloc and the CUDA Driver API.
+ *
+ * Applications that use both hwloc and the CUDA Driver API may want to
+ * include this file so as to get topology information for CUDA devices.
+ *
+ */
+
+#ifndef HWLOC_CUDA_H
+#define HWLOC_CUDA_H
+
+#include <hwloc.h>
+#include <hwloc/config.h>
+#include <hwloc/linux.h>
+
+#include <cuda.h>
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/** \defgroup hwlocality_cuda CUDA Driver API Specific Functions
+ * @{
+ */
+
+/** \brief Get the CPU set of logical processors that are physically
+ * close to device \p cudevice.
+ *
+ * For the given CUDA Driver API device \p cudevice, read the corresponding
+ * kernel-provided cpumap file and return the corresponding CPU set.
+ * This function is currently only implemented in a meaningful way for
+ * Linux; other systems will simply get a full cpuset.
+ */
+static __hwloc_inline int
+hwloc_cuda_get_device_cpuset(hwloc_topology_t topology __hwloc_attribute_unused,
+ CUdevice cudevice, hwloc_cpuset_t set)
+{
+#ifdef HWLOC_LINUX_SYS
+ /* If we're on Linux, use the sysfs mechanism to get the local cpus */
+#define HWLOC_CUDA_DEVICE_SYSFS_PATH_MAX 128
+ CUresult cres;
+ int deviceid;
+ int busid;
+ char path[HWLOC_CUDA_DEVICE_SYSFS_PATH_MAX];
+ FILE *sysfile = NULL;
+
+ cres = cuDeviceGetAttribute(&busid, CU_DEVICE_ATTRIBUTE_PCI_BUS_ID, cudevice);
+ if (cres != CUDA_SUCCESS) {
+ errno = ENOSYS;
+ return -1;
+ }
+ cres = cuDeviceGetAttribute(&deviceid, CU_DEVICE_ATTRIBUTE_PCI_DEVICE_ID, cudevice);
+ if (cres != CUDA_SUCCESS) {
+ errno = ENOSYS;
+ return -1;
+ }
+
+ sprintf(path, "/sys/bus/pci/devices/0000:%02x:%02x.0/local_cpus", busid, deviceid);
+ sysfile = fopen(path, "r");
+ if (!sysfile)
+ return -1;
+
+ hwloc_linux_parse_cpumap_file(sysfile, set);
+
+ fclose(sysfile);
+#else
+ /* Non-Linux systems simply get a full cpuset */
+ hwloc_bitmap_copy(set, hwloc_topology_get_complete_cpuset(topology));
+#endif
+ return 0;
+}
+
+/** @} */
+
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+
+#endif /* HWLOC_CUDA_H */
Added: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/include/hwloc/cudart.h
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/include/hwloc/cudart.h (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/include/hwloc/cudart.h 2010-11-24 09:21:55 UTC (rev 7494)
@@ -0,0 +1,83 @@
+/*
+ * Copyright © 2010 INRIA
+ * Copyright © 2010 Université Bordeaux 1
+ * See COPYING in top-level directory.
+ */
+
+/** \file
+ * \brief Macros to help interaction between hwloc and the CUDA Runtime API.
+ *
+ * Applications that use both hwloc and the CUDA Runtime API may want to
+ * include this file so as to get topology information for CUDA devices.
+ *
+ */
+
+#ifndef HWLOC_CUDART_H
+#define HWLOC_CUDART_H
+
+#include <hwloc.h>
+#include <hwloc/config.h>
+#include <hwloc/linux.h>
+
+#include <cuda_runtime_api.h>
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/** \defgroup hwlocality_cudart CUDA Runtime API Specific Functions
+ * @{
+ */
+
+/** \brief Get the CPU set of logical processors that are physically
+ * close to device \p cudevice.
+ *
+ * For the given CUDA Runtime API device \p cudevice, read the corresponding
+ * kernel-provided cpumap file and return the corresponding CPU set.
+ * This function is currently only implemented in a meaningful way for
+ * Linux; other systems will simply get a full cpuset.
+ */
+static __hwloc_inline int
+hwloc_cudart_get_device_cpuset(hwloc_topology_t topology __hwloc_attribute_unused,
+ int device, hwloc_cpuset_t set)
+{
+#ifdef HWLOC_LINUX_SYS
+ /* If we're on Linux, use the sysfs mechanism to get the local cpus */
+#define HWLOC_CUDART_DEVICE_SYSFS_PATH_MAX 128
+ cudaError_t cerr;
+ struct cudaDeviceProp prop;
+ char path[HWLOC_CUDART_DEVICE_SYSFS_PATH_MAX];
+ FILE *sysfile = NULL;
+
+ cerr = cudaGetDeviceProperties(&prop, device);
+ if (cerr) {
+ errno = ENOSYS;
+ return -1;
+ }
+
+ sprintf(path, "/sys/bus/pci/devices/0000:%02x:%02x.0/local_cpus", prop.pciBusID, prop.pciDeviceID);
+ sysfile = fopen(path, "r");
+ if (!sysfile)
+ return -1;
+
+ hwloc_linux_parse_cpumap_file(sysfile, set);
+
+ fclose(sysfile);
+#else
+ /* Non-Linux systems simply get a full cpuset */
+ hwloc_bitmap_copy(set, hwloc_topology_get_complete_cpuset(topology));
+#endif
+ return 0;
+}
+
+/** @} */
+
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+
+#endif /* HWLOC_CUDART_H */
Modified: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/include/hwloc/glibc-sched.h
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/include/hwloc/glibc-sched.h 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/include/hwloc/glibc-sched.h 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,5 +1,7 @@
/*
- * Copyright © 2009 CNRS, INRIA, Université Bordeaux 1
+ * Copyright © 2009 CNRS
+ * Copyright © 2009-2010 INRIA
+ * Copyright © 2009-2010 Université Bordeaux 1
* See COPYING in top-level directory.
*/
@@ -50,16 +52,16 @@
#ifdef CPU_ZERO_S
unsigned cpu;
CPU_ZERO_S(schedsetsize, schedset);
- hwloc_cpuset_foreach_begin(cpu, hwlocset)
+ hwloc_bitmap_foreach_begin(cpu, hwlocset)
CPU_SET_S(cpu, schedsetsize, schedset);
- hwloc_cpuset_foreach_end();
+ hwloc_bitmap_foreach_end();
#else /* !CPU_ZERO_S */
unsigned cpu;
CPU_ZERO(schedset);
assert(schedsetsize == sizeof(cpu_set_t));
- hwloc_cpuset_foreach_begin(cpu, hwlocset)
+ hwloc_bitmap_foreach_begin(cpu, hwlocset)
CPU_SET(cpu, schedset);
- hwloc_cpuset_foreach_end();
+ hwloc_bitmap_foreach_end();
#endif /* !CPU_ZERO_S */
return 0;
}
@@ -75,19 +77,17 @@
hwloc_cpuset_from_glibc_sched_affinity(hwloc_topology_t topology __hwloc_attribute_unused, hwloc_cpuset_t hwlocset,
const cpu_set_t *schedset, size_t schedsetsize)
{
- hwloc_cpuset_zero(hwlocset);
+ hwloc_bitmap_zero(hwlocset);
#ifdef CPU_ZERO_S
int cpu, count;
count = CPU_COUNT_S(schedsetsize, schedset);
cpu = 0;
while (count) {
if (CPU_ISSET_S(cpu, schedsetsize, schedset)) {
- hwloc_cpuset_set(hwlocset, cpu);
+ hwloc_bitmap_set(hwlocset, cpu);
count--;
}
cpu++;
- if (cpu > HWLOC_NBMAXCPUS)
- break;
}
#else /* !CPU_ZERO_S */
/* sched.h does not support dynamic cpu_set_t (introduced in glibc 2.7),
@@ -95,9 +95,9 @@
*/
int cpu;
assert(schedsetsize == sizeof(cpu_set_t));
- for(cpu=0; cpu<CPU_SETSIZE && cpu<HWLOC_NBMAXCPUS; cpu++)
+ for(cpu=0; cpu<CPU_SETSIZE; cpu++)
if (CPU_ISSET(cpu, schedset))
- hwloc_cpuset_set(hwlocset, cpu);
+ hwloc_bitmap_set(hwlocset, cpu);
#endif /* !CPU_ZERO_S */
return 0;
}
Modified: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/include/hwloc/helper.h
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/include/hwloc/helper.h 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/include/hwloc/helper.h 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,5 +1,7 @@
/*
- * Copyright © 2009 CNRS, INRIA, Université Bordeaux 1
+ * Copyright © 2009 CNRS
+ * Copyright © 2009-2010 INRIA
+ * Copyright © 2009-2010 Université Bordeaux 1
* Copyright © 2009-2010 Cisco Systems, Inc. All rights reserved.
* See COPYING in top-level directory.
*/
@@ -205,7 +207,7 @@
static __hwloc_inline int __hwloc_attribute_pure
hwloc_obj_is_in_subtree (hwloc_topology_t topology __hwloc_attribute_unused, hwloc_obj_t obj, hwloc_obj_t subtree_root)
{
- return hwloc_cpuset_isincluded(obj->cpuset, subtree_root->cpuset);
+ return hwloc_bitmap_isincluded(obj->cpuset, subtree_root->cpuset);
}
/** @} */
@@ -228,13 +230,13 @@
hwloc_get_first_largest_obj_inside_cpuset(hwloc_topology_t topology, hwloc_const_cpuset_t set)
{
hwloc_obj_t obj = hwloc_get_root_obj(topology);
- if (!hwloc_cpuset_intersects(obj->cpuset, set))
+ if (!hwloc_bitmap_intersects(obj->cpuset, set))
return NULL;
- while (!hwloc_cpuset_isincluded(obj->cpuset, set)) {
+ while (!hwloc_bitmap_isincluded(obj->cpuset, set)) {
/* while the object intersects without being included, look at its children */
hwloc_obj_t child = NULL;
while ((child = hwloc_get_next_child(topology, obj, child)) != NULL) {
- if (hwloc_cpuset_intersects(child->cpuset, set))
+ if (hwloc_bitmap_intersects(child->cpuset, set))
break;
}
if (!child)
@@ -265,7 +267,7 @@
unsigned depth, hwloc_obj_t prev)
{
hwloc_obj_t next = hwloc_get_next_obj_by_depth(topology, depth, prev);
- while (next && !hwloc_cpuset_isincluded(next->cpuset, set))
+ while (next && !hwloc_bitmap_isincluded(next->cpuset, set))
next = next->next_cousin;
return next;
}
@@ -295,7 +297,7 @@
unsigned count = 0;
hwloc_obj_t obj = hwloc_get_obj_by_depth (topology, depth, 0);
while (obj) {
- if (hwloc_cpuset_isincluded(obj->cpuset, set)) {
+ if (hwloc_bitmap_isincluded(obj->cpuset, set)) {
if (count == idx)
return obj;
count++;
@@ -329,7 +331,7 @@
hwloc_obj_t obj = hwloc_get_obj_by_depth (topology, depth, 0);
int count = 0;
while (obj) {
- if (hwloc_cpuset_isincluded(obj->cpuset, set))
+ if (hwloc_bitmap_isincluded(obj->cpuset, set))
count++;
obj = obj->next_cousin;
}
@@ -372,12 +374,12 @@
{
hwloc_obj_t child;
- if (hwloc_cpuset_iszero(set))
+ if (hwloc_bitmap_iszero(set))
return NULL;
child = parent->first_child;
while (child) {
- if (hwloc_cpuset_isincluded(set, child->cpuset))
+ if (hwloc_bitmap_isincluded(set, child->cpuset))
return child;
child = child->next_sibling;
}
@@ -393,10 +395,10 @@
{
struct hwloc_obj *current = hwloc_get_root_obj(topology);
- if (hwloc_cpuset_iszero(set))
+ if (hwloc_bitmap_iszero(set))
return NULL;
- if (!hwloc_cpuset_isincluded(set, current->cpuset))
+ if (!hwloc_bitmap_isincluded(set, current->cpuset))
return NULL;
while (1) {
@@ -428,7 +430,7 @@
unsigned depth, hwloc_obj_t prev)
{
hwloc_obj_t next = hwloc_get_next_obj_by_depth(topology, depth, prev);
- while (next && !hwloc_cpuset_intersects(set, next->cpuset))
+ while (next && !hwloc_bitmap_intersects(set, next->cpuset))
next = next->next_cousin;
return next;
}
@@ -488,7 +490,7 @@
{
hwloc_obj_t current = obj->parent;
while (current) {
- if (!hwloc_cpuset_isequal(current->cpuset, obj->cpuset)
+ if (!hwloc_bitmap_isequal(current->cpuset, obj->cpuset)
&& current->type == HWLOC_OBJ_CACHE)
return current;
current = current->parent;
@@ -578,52 +580,103 @@
/** \brief Distribute \p n items over the topology under \p root
*
- * Array \p cpuset will be filled with \p n cpusets distributed linearly over
- * the topology under \p root .
+ * Array \p cpuset will be filled with \p n cpusets recursively distributed
+ * linearly over the topology under \p root, down to depth \p until (which can
+ * be MAX_INT to distribute down to the finest level).
*
* This is typically useful when an application wants to distribute \p n
* threads over a machine, giving each of them as much private cache as
* possible and keeping them locally in number order.
*
- * The caller may typically want to also call hwloc_cpuset_singlify()
+ * The caller may typically want to also call hwloc_bitmap_singlify()
* before binding a thread so that it does not move at all.
*/
static __hwloc_inline void
-hwloc_distribute(hwloc_topology_t topology, hwloc_obj_t root, hwloc_cpuset_t *cpuset, unsigned n)
+hwloc_distributev(hwloc_topology_t topology, hwloc_obj_t *root, unsigned n_roots, hwloc_cpuset_t *cpuset, unsigned n, unsigned until);
+static __hwloc_inline void
+hwloc_distribute(hwloc_topology_t topology, hwloc_obj_t root, hwloc_cpuset_t *cpuset, unsigned n, unsigned until)
{
unsigned i;
- unsigned u;
- unsigned chunk_size, complete_chunks;
- hwloc_cpuset_t *cpusetp;
- if (!root->arity || n == 1) {
+ if (!root->arity || n == 1 || root->depth >= until) {
/* Got to the bottom, we can't split any more, put everything there. */
for (i=0; i<n; i++)
- cpuset[i] = hwloc_cpuset_dup(root->cpuset);
+ cpuset[i] = hwloc_bitmap_dup(root->cpuset);
return;
}
- /* Divide n in root->arity chunks. */
- chunk_size = (n + root->arity - 1) / root->arity;
- complete_chunks = n % root->arity;
- if (!complete_chunks)
- complete_chunks = root->arity;
+ hwloc_distributev(topology, root->children, root->arity, cpuset, n, until);
+}
- /* Allocate complete chunks first. */
- for (cpusetp = cpuset, i = 0;
- i < complete_chunks;
- i ++, cpusetp += chunk_size)
- hwloc_distribute(topology, root->children[i], cpusetp, chunk_size);
+/** \brief Distribute \p n items over the topology under \p roots
+ *
+ * This is the same as hwloc_distribute, but takes an array of roots instead of
+ * just one root.
+ */
+static __hwloc_inline void
+hwloc_distributev(hwloc_topology_t topology, hwloc_obj_t *roots, unsigned n_roots, hwloc_cpuset_t *cpuset, unsigned n, unsigned until)
+{
+ unsigned i;
+ unsigned tot_weight;
+ hwloc_cpuset_t *cpusetp = cpuset;
- /* Now allocate not-so-complete chunks. */
- for (u = i;
- u < root->arity;
- u++, cpusetp += chunk_size-1)
- hwloc_distribute(topology, root->children[u], cpusetp, chunk_size-1);
+ tot_weight = 0;
+ for (i = 0; i < n_roots; i++)
+ tot_weight += hwloc_bitmap_weight(roots[i]->cpuset);
+
+ for (i = 0; i < n_roots; i++) {
+ /* Give to roots[i] a portion proportional to its weight */
+ unsigned weight = hwloc_bitmap_weight(roots[i]->cpuset);
+ unsigned chunk = (n * weight + tot_weight-1) / tot_weight;
+ hwloc_distribute(topology, roots[i], cpusetp, chunk, until);
+ cpusetp += chunk;
+ tot_weight -= weight;
+ n -= chunk;
+ }
}
+/** \brief Allocate some memory on the given nodeset \p nodeset
+ *
+ * This is similar to hwloc_alloc_membind except that it is allowed to change
+ * the current memory binding policy, thus providing more binding support, at
+ * the expense of changing the current state.
+ */
+static __hwloc_inline void *
+hwloc_alloc_membind_policy_nodeset(hwloc_topology_t topology, size_t len, hwloc_const_nodeset_t nodeset, hwloc_membind_policy_t policy, int flags)
+{
+ void *p = hwloc_alloc_membind_nodeset(topology, len, nodeset, policy, flags);
+ if (p)
+ return p;
+ hwloc_set_membind_nodeset(topology, nodeset, policy, flags);
+ p = hwloc_alloc(topology, len);
+ if (p && policy != HWLOC_MEMBIND_FIRSTTOUCH)
+ /* Enforce the binding by touching the data */
+ memset(p, 0, len);
+ return p;
+}
+
+/** \brief Allocate some memory on the memory nodes near given cpuset \p cpuset
+ *
+ * This is similar to hwloc_alloc_membind_policy_nodeset, but for a given cpuset.
+ */
+static __hwloc_inline void *
+hwloc_alloc_membind_policy(hwloc_topology_t topology, size_t len, hwloc_const_cpuset_t cpuset, hwloc_membind_policy_t policy, int flags)
+{
+ void *p = hwloc_alloc_membind(topology, len, cpuset, policy, flags);
+ if (p)
+ return p;
+ hwloc_set_membind(topology, cpuset, policy, flags);
+ p = hwloc_alloc(topology, len);
+ if (p && policy != HWLOC_MEMBIND_FIRSTTOUCH)
+ /* Enforce the binding by touching the data */
+ memset(p, 0, len);
+ return p;
+}
+
/** @} */
+
+
/** \defgroup hwlocality_helper_cpuset Cpuset Helpers
* @{
*/
@@ -688,10 +741,186 @@
return hwloc_get_root_obj(topology)->allowed_cpuset;
}
+/** @} */
+
+
+/** \defgroup hwlocality_helper_nodeset Nodeset Helpers
+ * @{
+ */
+/* \brief Get complete node set
+ *
+ * \return the complete node set of memory of the system. If the
+ * topology is the result of a combination of several systems, NULL is
+ * returned.
+ *
+ * \note The returned nodeset is not newly allocated and should thus not be
+ * changed or freed; hwloc_nodeset_dup must be used to obtain a local copy.
+ */
+static __hwloc_inline hwloc_const_nodeset_t __hwloc_attribute_pure
+hwloc_topology_get_complete_nodeset(hwloc_topology_t topology)
+{
+ return hwloc_get_root_obj(topology)->complete_nodeset;
+}
+
+/* \brief Get topology node set
+ *
+ * \return the node set of memory of the system for which hwloc
+ * provides topology information. This is equivalent to the nodeset of the
+ * system object. If the topology is the result of a combination of several
+ * systems, NULL is returned.
+ *
+ * \note The returned nodeset is not newly allocated and should thus not be
+ * changed or freed; hwloc_nodeset_dup must be used to obtain a local copy.
+ */
+static __hwloc_inline hwloc_const_nodeset_t __hwloc_attribute_pure
+hwloc_topology_get_topology_nodeset(hwloc_topology_t topology)
+{
+ return hwloc_get_root_obj(topology)->nodeset;
+}
+
+/** \brief Get allowed node set
+ *
+ * \return the node set of allowed memory of the system. If the
+ * topology is the result of a combination of several systems, NULL is
+ * returned.
+ *
+ * \note The returned nodeset is not newly allocated and should thus not be
+ * changed or freed, hwloc_nodeset_dup must be used to obtain a local copy.
+ */
+static __hwloc_inline hwloc_const_nodeset_t __hwloc_attribute_pure
+hwloc_topology_get_allowed_nodeset(hwloc_topology_t topology)
+{
+ return hwloc_get_root_obj(topology)->allowed_nodeset;
+}
+
/** @} */
+
+/** \defgroup hwlocality_helper_nodeset_convert Conversion between cpuset and nodeset
+ *
+ * There are two semantics for converting cpusets to nodesets depending on how
+ * non-NUMA machines are handled.
+ *
+ * When manipulating nodesets for memory binding, non-NUMA machines should be
+ * considered as having a single NUMA node. The standard conversion routines
+ * below should be used so that marking the first bit of the nodeset means
+ * that memory should be bound to a non-NUMA whole machine.
+ *
+ * When manipulating nodesets as an actual list of NUMA nodes without any
+ * need to handle memory binding on non-NUMA machines, the strict conversion
+ * routines may be used instead.
+ * @{
+ */
+
+/** \brief Convert a CPU set into a NUMA node set and handle non-NUMA cases
+ *
+ * If some NUMA nodes have no CPUs at all, this function never sets their
+ * indexes in the output node set, even if a full CPU set is given in input.
+ *
+ * If the topology contains no NUMA nodes, the machine is considered
+ * as a single memory node, and the following behavior is used:
+ * If \p cpuset is empty, \p nodeset will be emptied as well.
+ * Otherwise \p nodeset will be entirely filled.
+ */
+static __hwloc_inline void
+hwloc_cpuset_to_nodeset(hwloc_topology_t topology, hwloc_const_cpuset_t cpuset, hwloc_nodeset_t nodeset)
+{
+ int depth = hwloc_get_type_depth(topology, HWLOC_OBJ_NODE);
+ hwloc_obj_t obj;
+
+ if (depth == HWLOC_TYPE_DEPTH_UNKNOWN) {
+ if (hwloc_bitmap_iszero(cpuset))
+ hwloc_bitmap_zero(nodeset);
+ else
+ /* Assume the whole system */
+ hwloc_bitmap_fill(nodeset);
+ return;
+ }
+
+ hwloc_bitmap_zero(nodeset);
+ obj = NULL;
+ while ((obj = hwloc_get_next_obj_covering_cpuset_by_depth(topology, cpuset, depth, obj)) != NULL)
+ hwloc_bitmap_set(nodeset, obj->os_index);
+}
+
+/** \brief Convert a CPU set into a NUMA node set without handling non-NUMA cases
+ *
+ * This is the strict variant of ::hwloc_cpuset_to_nodeset. It does not fix
+ * non-NUMA cases. If the topology contains some NUMA nodes, behave exactly
+ * the same. However, if the topology contains no NUMA nodes, return an empty
+ * nodeset.
+ */
+static __hwloc_inline void
+hwloc_cpuset_to_nodeset_strict(struct hwloc_topology *topology, hwloc_const_cpuset_t cpuset, hwloc_nodeset_t nodeset)
+{
+ int depth = hwloc_get_type_depth(topology, HWLOC_OBJ_NODE);
+ hwloc_obj_t obj;
+ if (depth == HWLOC_TYPE_DEPTH_UNKNOWN )
+ return;
+ hwloc_bitmap_zero(nodeset);
+ obj = NULL;
+ while ((obj = hwloc_get_next_obj_covering_cpuset_by_depth(topology, cpuset, depth, obj)) != NULL)
+ hwloc_bitmap_set(nodeset, obj->os_index);
+}
+
+/** \brief Convert a NUMA node set into a CPU set and handle non-NUMA cases
+ *
+ * If the topology contains no NUMA nodes, the machine is considered
+ * as a single memory node, and the following behavior is used:
+ * If \p nodeset is empty, \p cpuset will be emptied as well.
+ * Otherwise \p cpuset will be entirely filled.
+ * This is useful for manipulating memory binding sets.
+ */
+static __hwloc_inline void
+hwloc_cpuset_from_nodeset(hwloc_topology_t topology, hwloc_cpuset_t cpuset, hwloc_const_nodeset_t nodeset)
+{
+ int depth = hwloc_get_type_depth(topology, HWLOC_OBJ_NODE);
+ hwloc_obj_t obj;
+
+ if (depth == HWLOC_TYPE_DEPTH_UNKNOWN ) {
+ if (hwloc_bitmap_iszero(nodeset))
+ hwloc_bitmap_zero(cpuset);
+ else
+ /* Assume the whole system */
+ hwloc_bitmap_fill(cpuset);
+ return;
+ }
+
+ hwloc_bitmap_zero(cpuset);
+ obj = NULL;
+ while ((obj = hwloc_get_next_obj_by_depth(topology, depth, obj)) != NULL) {
+ if (hwloc_bitmap_isset(nodeset, obj->os_index))
+ hwloc_bitmap_or(cpuset, cpuset, obj->cpuset);
+ }
+}
+
+/** \brief Convert a NUMA node set into a CPU set without handling non-NUMA cases
+ *
+ * This is the strict variant of ::hwloc_cpuset_from_nodeset. It does not fix
+ * non-NUMA cases. If the topology contains some NUMA nodes, behave exactly
+ * the same. However, if the topology contains no NUMA nodes, return an empty
+ * cpuset.
+ */
+static __hwloc_inline void
+hwloc_cpuset_from_nodeset_strict(struct hwloc_topology *topology, hwloc_cpuset_t cpuset, hwloc_const_nodeset_t nodeset)
+{
+ int depth = hwloc_get_type_depth(topology, HWLOC_OBJ_NODE);
+ hwloc_obj_t obj;
+ if (depth == HWLOC_TYPE_DEPTH_UNKNOWN )
+ return;
+ hwloc_bitmap_zero(cpuset);
+ obj = NULL;
+ while ((obj = hwloc_get_next_obj_by_depth(topology, depth, obj)) != NULL)
+ if (hwloc_bitmap_isset(nodeset, obj->os_index))
+ hwloc_bitmap_or(cpuset, cpuset, obj->cpuset);
+}
+
+/** @} */
+
+
+
#ifdef __cplusplus
} /* extern "C" */
#endif
Modified: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/include/hwloc/linux-libnuma.h
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/include/hwloc/linux-libnuma.h 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/include/hwloc/linux-libnuma.h 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,5 +1,7 @@
/*
- * Copyright © 2009 CNRS, INRIA, Université Bordeaux 1
+ * Copyright © 2009 CNRS
+ * Copyright © 2009-2010 INRIA
+ * Copyright © 2009-2010 Université Bordeaux 1
* See COPYING in top-level directory.
*/
@@ -41,25 +43,26 @@
hwloc_cpuset_to_linux_libnuma_ulongs(hwloc_topology_t topology, hwloc_const_cpuset_t cpuset,
unsigned long *mask, unsigned long *maxnode)
{
+ int depth = hwloc_get_type_depth(topology, HWLOC_OBJ_NODE);
unsigned long outmaxnode = -1;
- hwloc_obj_t node = NULL;
- unsigned nbnodes = hwloc_get_nbobjs_by_type(topology, HWLOC_OBJ_NODE);
- unsigned i;
- for(i=0; i<*maxnode/sizeof(*mask)/8; i++)
- mask[i] = 0;
+ /* round-up to the next ulong and clear all bytes */
+ *maxnode = (*maxnode + 8*sizeof(*mask) - 1) & ~(8*sizeof(*mask) - 1);
+ memset(mask, 0, *maxnode/8);
- if (nbnodes) {
+ if (depth != HWLOC_TYPE_DEPTH_UNKNOWN) {
+ hwloc_obj_t node = NULL;
while ((node = hwloc_get_next_obj_covering_cpuset_by_type(topology, cpuset, HWLOC_OBJ_NODE, node)) != NULL) {
if (node->os_index >= *maxnode)
- break;
- mask[node->os_index/sizeof(*mask)/8] |= 1 << (node->os_index % (sizeof(*mask)*8));
- outmaxnode = node->os_index;
+ continue;
+ mask[node->os_index/sizeof(*mask)/8] |= 1UL << (node->os_index % (sizeof(*mask)*8));
+ if (outmaxnode == (unsigned long) -1 || outmaxnode < node->os_index)
+ outmaxnode = node->os_index;
}
} else {
/* if no numa, libnuma assumes we have a single node */
- if (!hwloc_cpuset_iszero(cpuset)) {
+ if (!hwloc_bitmap_iszero(cpuset)) {
mask[0] = 1;
outmaxnode = 0;
}
@@ -69,6 +72,51 @@
return 0;
}
+/** \brief Convert hwloc NUMA node set \p nodeset into the array of unsigned long \p mask
+ *
+ * \p mask is the array of unsigned long that will be filled.
+ * \p maxnode contains the maximal node number that may be stored in \p mask.
+ * \p maxnode will be set to the maximal node number that was found, plus one.
+ *
+ * This function may be used before calling set_mempolicy, mbind, migrate_pages
+ * or any other function that takes an array of unsigned long and a maximal
+ * node number as input parameter.
+ */
+static __hwloc_inline int
+hwloc_nodeset_to_linux_libnuma_ulongs(hwloc_topology_t topology, hwloc_const_nodeset_t nodeset,
+ unsigned long *mask, unsigned long *maxnode)
+{
+ int depth = hwloc_get_type_depth(topology, HWLOC_OBJ_NODE);
+ unsigned long outmaxnode = -1;
+
+ /* round-up to the next ulong and clear all bytes */
+ *maxnode = (*maxnode + 8*sizeof(*mask) - 1) & ~(8*sizeof(*mask) - 1);
+ memset(mask, 0, *maxnode/8);
+
+ if (depth != HWLOC_TYPE_DEPTH_UNKNOWN) {
+ hwloc_obj_t node = NULL;
+ while ((node = hwloc_get_next_obj_by_type(topology, HWLOC_OBJ_NODE, node)) != NULL) {
+ if (node->os_index >= *maxnode)
+ continue;
+ if (!hwloc_bitmap_isset(nodeset, node->os_index))
+ continue;
+ mask[node->os_index/sizeof(*mask)/8] |= 1UL << (node->os_index % (sizeof(*mask)*8));
+ if (outmaxnode == (unsigned long) -1 || outmaxnode < node->os_index)
+ outmaxnode = node->os_index;
+ }
+
+ } else {
+ /* if no numa, libnuma assumes we have a single node */
+ if (!hwloc_bitmap_iszero(nodeset)) {
+ mask[0] = 1;
+ outmaxnode = 0;
+ }
+ }
+
+ *maxnode = outmaxnode+1;
+ return 0;
+}
+
/** \brief Convert the array of unsigned long \p mask into hwloc CPU set
*
* \p mask is a array of unsigned long that will be read.
@@ -82,28 +130,60 @@
hwloc_cpuset_from_linux_libnuma_ulongs(hwloc_topology_t topology, hwloc_cpuset_t cpuset,
const unsigned long *mask, unsigned long maxnode)
{
- hwloc_obj_t node;
- int depth;
- unsigned i;
+ int depth = hwloc_get_type_depth(topology, HWLOC_OBJ_NODE);
- depth = hwloc_get_type_depth(topology, HWLOC_OBJ_NODE);
- /* cannot be HWLOC_TYPE_DEPTH_MULTIPLE */
-
- if (depth == HWLOC_TYPE_DEPTH_UNKNOWN) {
+ if (depth != HWLOC_TYPE_DEPTH_UNKNOWN) {
+ hwloc_obj_t node;
+ unsigned i;
+ hwloc_bitmap_zero(cpuset);
+ for(i=0; i<maxnode; i++)
+ if (mask[i/sizeof(*mask)/8] & (1UL << (i% (sizeof(*mask)*8)))) {
+ node = hwloc_get_obj_by_depth(topology, depth, i);
+ if (node)
+ hwloc_bitmap_or(cpuset, cpuset, node->cpuset);
+ }
+ } else {
/* if no numa, libnuma assumes we have a single node */
if (mask[0] & 1)
- hwloc_cpuset_copy(cpuset, hwloc_topology_get_complete_cpuset(topology));
+ hwloc_bitmap_copy(cpuset, hwloc_topology_get_complete_cpuset(topology));
else
- hwloc_cpuset_zero(cpuset);
+ hwloc_bitmap_zero(cpuset);
+ }
- } else {
- hwloc_cpuset_zero(cpuset);
+ return 0;
+}
+
+/** \brief Convert the array of unsigned long \p mask into hwloc NUMA node set
+ *
+ * \p mask is a array of unsigned long that will be read.
+ * \p maxnode contains the maximal node number that may be read in \p mask.
+ *
+ * This function may be used after calling get_mempolicy or any other function
+ * that takes an array of unsigned long as output parameter (and possibly
+ * a maximal node number as input parameter).
+ */
+static __hwloc_inline int
+hwloc_nodeset_from_linux_libnuma_ulongs(hwloc_topology_t topology, hwloc_nodeset_t nodeset,
+ const unsigned long *mask, unsigned long maxnode)
+{
+ int depth = hwloc_get_type_depth(topology, HWLOC_OBJ_NODE);
+
+ if (depth != HWLOC_TYPE_DEPTH_UNKNOWN) {
+ hwloc_obj_t node;
+ unsigned i;
+ hwloc_bitmap_zero(nodeset);
for(i=0; i<maxnode; i++)
- if (mask[i/sizeof(*mask)/8] & (1 << (i% (sizeof(*mask)*8)))) {
+ if (mask[i/sizeof(*mask)/8] & (1UL << (i% (sizeof(*mask)*8)))) {
node = hwloc_get_obj_by_depth(topology, depth, i);
if (node)
- hwloc_cpuset_or(cpuset, cpuset, node->cpuset);
+ hwloc_bitmap_set(nodeset, node->os_index);
}
+ } else {
+ /* if no numa, libnuma assumes we have a single node */
+ if (mask[0] & 1)
+ hwloc_bitmap_fill(nodeset);
+ else
+ hwloc_bitmap_zero(nodeset);
}
return 0;
@@ -130,23 +210,49 @@
static __hwloc_inline struct bitmask * __hwloc_attribute_malloc
hwloc_cpuset_to_linux_libnuma_bitmask(hwloc_topology_t topology, hwloc_const_cpuset_t cpuset)
{
- struct bitmask *bitmask;
- hwloc_obj_t node = NULL;
- unsigned nbnodes = hwloc_get_nbobjs_by_type(topology, HWLOC_OBJ_NODE);
+ int depth = hwloc_get_type_depth(topology, HWLOC_OBJ_NODE);
+ struct bitmask *bitmask = numa_allocate_cpumask();
+ if (!bitmask)
+ return NULL;
- if (nbnodes) {
- bitmask = numa_bitmask_alloc(nbnodes);
- if (!bitmask)
- return NULL;
+ if (depth != HWLOC_TYPE_DEPTH_UNKNOWN) {
+ hwloc_obj_t node = NULL;
while ((node = hwloc_get_next_obj_covering_cpuset_by_type(topology, cpuset, HWLOC_OBJ_NODE, node)) != NULL)
numa_bitmask_setbit(bitmask, node->os_index);
+ } else {
+ /* if no numa, libnuma assumes we have a single node */
+ if (!hwloc_bitmap_iszero(cpuset))
+ numa_bitmask_setbit(bitmask, 0);
+ }
+ return bitmask;
+}
+
+/** \brief Convert hwloc NUMA node set \p nodeset into the returned libnuma bitmask
+ *
+ * The returned bitmask should later be freed with numa_bitmask_free.
+ *
+ * This function may be used before calling many numa_ functions
+ * that use a struct bitmask as an input parameter.
+ *
+ * \return newly allocated struct bitmask.
+ */
+static __hwloc_inline struct bitmask * __hwloc_attribute_malloc
+hwloc_nodeset_to_linux_libnuma_bitmask(hwloc_topology_t topology, hwloc_const_nodeset_t nodeset)
+{
+ int depth = hwloc_get_type_depth(topology, HWLOC_OBJ_NODE);
+ struct bitmask *bitmask = numa_allocate_cpumask();
+ if (!bitmask)
+ return NULL;
+
+ if (depth != HWLOC_TYPE_DEPTH_UNKNOWN) {
+ hwloc_obj_t node = NULL;
+ while ((node = hwloc_get_next_obj_by_type(topology, HWLOC_OBJ_NODE, node)) != NULL)
+ if (hwloc_bitmap_isset(nodeset, node->os_index))
+ numa_bitmask_setbit(bitmask, node->os_index);
} else {
/* if no numa, libnuma assumes we have a single node */
- bitmask = numa_bitmask_alloc(1);
- if (!bitmask)
- return NULL;
- if (!hwloc_cpuset_iszero(cpuset))
+ if (!hwloc_bitmap_iszero(nodeset))
numa_bitmask_setbit(bitmask, 0);
}
@@ -160,30 +266,58 @@
*/
static __hwloc_inline int
hwloc_cpuset_from_linux_libnuma_bitmask(hwloc_topology_t topology, hwloc_cpuset_t cpuset,
- const struct bitmask *bitmask)
+ const struct bitmask *bitmask)
{
- hwloc_obj_t node;
- int depth;
- int i;
+ int depth = hwloc_get_type_depth(topology, HWLOC_OBJ_NODE);
- depth = hwloc_get_type_depth(topology, HWLOC_OBJ_NODE);
- /* cannot be HWLOC_TYPE_DEPTH_MULTIPLE */
-
- if (depth == HWLOC_TYPE_DEPTH_UNKNOWN) {
+ if (depth != HWLOC_TYPE_DEPTH_UNKNOWN) {
+ hwloc_obj_t node;
+ int i;
+ hwloc_bitmap_zero(cpuset);
+ for(i=0; i<NUMA_NUM_NODES; i++)
+ if (numa_bitmask_isbitset(bitmask, i)) {
+ node = hwloc_get_obj_by_depth(topology, depth, i);
+ if (node)
+ hwloc_bitmap_or(cpuset, cpuset, node->cpuset);
+ }
+ } else {
/* if no numa, libnuma assumes we have a single node */
if (numa_bitmask_isbitset(bitmask, 0))
- hwloc_cpuset_copy(cpuset, hwloc_topology_get_complete_cpuset(topology));
+ hwloc_bitmap_copy(cpuset, hwloc_topology_get_complete_cpuset(topology));
else
- hwloc_cpuset_zero(cpuset);
+ hwloc_bitmap_zero(cpuset);
+ }
- } else {
- hwloc_cpuset_zero(cpuset);
+ return 0;
+}
+
+/** \brief Convert libnuma bitmask \p bitmask into hwloc NUMA node set \p nodeset
+ *
+ * This function may be used after calling many numa_ functions
+ * that use a struct bitmask as an output parameter.
+ */
+static __hwloc_inline int
+hwloc_nodeset_from_linux_libnuma_bitmask(hwloc_topology_t topology, hwloc_nodeset_t nodeset,
+ const struct bitmask *bitmask)
+{
+ int depth = hwloc_get_type_depth(topology, HWLOC_OBJ_NODE);
+
+ if (depth != HWLOC_TYPE_DEPTH_UNKNOWN) {
+ hwloc_obj_t node;
+ int i;
+ hwloc_bitmap_zero(nodeset);
for(i=0; i<NUMA_NUM_NODES; i++)
if (numa_bitmask_isbitset(bitmask, i)) {
node = hwloc_get_obj_by_depth(topology, depth, i);
if (node)
- hwloc_cpuset_or(cpuset, cpuset, node->cpuset);
+ hwloc_bitmap_set(nodeset, node->os_index);
}
+ } else {
+ /* if no numa, libnuma assumes we have a single node */
+ if (numa_bitmask_isbitset(bitmask, 0))
+ hwloc_bitmap_fill(nodeset);
+ else
+ hwloc_bitmap_zero(nodeset);
}
return 0;
@@ -208,17 +342,44 @@
hwloc_cpuset_to_linux_libnuma_nodemask(hwloc_topology_t topology, hwloc_const_cpuset_t cpuset,
nodemask_t *nodemask)
{
- hwloc_obj_t node = NULL;
- unsigned nbnodes = hwloc_get_nbobjs_by_type(topology, HWLOC_OBJ_NODE);
+ int depth = hwloc_get_type_depth(topology, HWLOC_OBJ_NODE);
nodemask_zero(nodemask);
- if (nbnodes) {
+
+ if (depth != HWLOC_TYPE_DEPTH_UNKNOWN) {
+ hwloc_obj_t node = NULL;
while ((node = hwloc_get_next_obj_covering_cpuset_by_type(topology, cpuset, HWLOC_OBJ_NODE, node)) != NULL)
nodemask_set(nodemask, node->os_index);
+ } else {
+ /* if no numa, libnuma assumes we have a single node */
+ if (!hwloc_bitmap_iszero(cpuset))
+ nodemask_set(nodemask, 0);
+ }
+ return 0;
+}
+
+/** \brief Convert hwloc NUMA node set \p nodeset into libnuma nodemask \p nodemask
+ *
+ * This function may be used before calling some old libnuma functions
+ * that use a nodemask_t as an input parameter.
+ */
+static __hwloc_inline int
+hwloc_nodeset_to_linux_libnuma_nodemask(hwloc_topology_t topology, hwloc_const_nodeset_t nodeset,
+ nodemask_t *nodemask)
+{
+ int depth = hwloc_get_type_depth(topology, HWLOC_OBJ_NODE);
+
+ nodemask_zero(nodemask);
+
+ if (depth != HWLOC_TYPE_DEPTH_UNKNOWN) {
+ hwloc_obj_t node = NULL;
+ while ((node = hwloc_get_next_obj_by_type(topology, HWLOC_OBJ_NODE, node)) != NULL)
+ if (hwloc_bitmap_isset(nodeset, node->os_index))
+ nodemask_set(nodemask, node->os_index);
} else {
/* if no numa, libnuma assumes we have a single node */
- if (!hwloc_cpuset_iszero(cpuset))
+ if (!hwloc_bitmap_iszero(nodeset))
nodemask_set(nodemask, 0);
}
@@ -234,28 +395,56 @@
hwloc_cpuset_from_linux_libnuma_nodemask(hwloc_topology_t topology, hwloc_cpuset_t cpuset,
const nodemask_t *nodemask)
{
- hwloc_obj_t node;
- int depth;
- int i;
+ int depth = hwloc_get_type_depth(topology, HWLOC_OBJ_NODE);
- depth = hwloc_get_type_depth(topology, HWLOC_OBJ_NODE);
- /* cannot be HWLOC_TYPE_DEPTH_MULTIPLE */
-
- if (depth == HWLOC_TYPE_DEPTH_UNKNOWN) {
+ if (depth != HWLOC_TYPE_DEPTH_UNKNOWN) {
+ hwloc_obj_t node;
+ int i;
+ hwloc_bitmap_zero(cpuset);
+ for(i=0; i<NUMA_NUM_NODES; i++)
+ if (nodemask_isset(nodemask, i)) {
+ node = hwloc_get_obj_by_depth(topology, depth, i);
+ if (node)
+ hwloc_bitmap_or(cpuset, cpuset, node->cpuset);
+ }
+ } else {
/* if no numa, libnuma assumes we have a single node */
if (nodemask_isset(nodemask, 0))
- hwloc_cpuset_copy(cpuset, hwloc_topology_get_complete_cpuset(topology));
+ hwloc_bitmap_copy(cpuset, hwloc_topology_get_complete_cpuset(topology));
else
- hwloc_cpuset_zero(cpuset);
+ hwloc_bitmap_zero(cpuset);
+ }
- } else {
- hwloc_cpuset_zero(cpuset);
+ return 0;
+}
+
+/** \brief Convert libnuma nodemask \p nodemask into hwloc NUMA node set \p nodeset
+ *
+ * This function may be used before calling some old libnuma functions
+ * that use a nodemask_t as an output parameter.
+ */
+static __hwloc_inline int
+hwloc_nodeset_from_linux_libnuma_nodemask(hwloc_topology_t topology, hwloc_nodeset_t nodeset,
+ const nodemask_t *nodemask)
+{
+ int depth = hwloc_get_type_depth(topology, HWLOC_OBJ_NODE);
+
+ if (depth != HWLOC_TYPE_DEPTH_UNKNOWN) {
+ hwloc_obj_t node;
+ int i;
+ hwloc_bitmap_zero(nodeset);
for(i=0; i<NUMA_NUM_NODES; i++)
if (nodemask_isset(nodemask, i)) {
node = hwloc_get_obj_by_depth(topology, depth, i);
if (node)
- hwloc_cpuset_or(cpuset, cpuset, node->cpuset);
+ hwloc_bitmap_set(nodeset, node->os_index);
}
+ } else {
+ /* if no numa, libnuma assumes we have a single node */
+ if (nodemask_isset(nodemask, 0))
+ hwloc_bitmap_fill(nodeset);
+ else
+ hwloc_bitmap_zero(nodeset);
}
return 0;
Modified: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/include/hwloc/linux.h
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/include/hwloc/linux.h 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/include/hwloc/linux.h 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,5 +1,7 @@
/*
- * Copyright © 2009 CNRS, INRIA, Université Bordeaux 1
+ * Copyright © 2009 CNRS
+ * Copyright © 2009-2010 INRIA
+ * Copyright © 2009-2010 Université Bordeaux 1
* See COPYING in top-level directory.
*/
Added: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/include/hwloc/myriexpress.h
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/include/hwloc/myriexpress.h (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/include/hwloc/myriexpress.h 2010-11-24 09:21:55 UTC (rev 7494)
@@ -0,0 +1,106 @@
+/*
+ * Copyright © 2010 INRIA
+ * See COPYING in top-level directory.
+ */
+
+/** \file
+ * \brief Macros to help interaction between hwloc and Myrinet Express.
+ *
+ * Applications that use both hwloc and Myrinet Express verbs may want to
+ * include this file so as to get topology information for Myrinet hardware.
+ *
+ */
+
+#ifndef HWLOC_MYRIEXPRESS_H
+#define HWLOC_MYRIEXPRESS_H
+
+#include <hwloc.h>
+#include <hwloc/config.h>
+#include <hwloc/linux.h>
+
+#include <myriexpress.h>
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/** \defgroup hwlocality_myriexpress Myrinet Express-Specific Functions
+ * @{
+ */
+
+/** \brief Get the CPU set of logical processors that are physically
+ * close the MX board \p index.
+ *
+ * For the given Myrinet Express board index \p index, read the
+ * OS-provided NUMA node and return the corresponding CPU set.
+ */
+static __hwloc_inline int
+hwloc_mx_board_get_device_cpuset(hwloc_topology_t topology,
+ unsigned index, hwloc_cpuset_t set)
+{
+ uint32_t in, out;
+
+ in = index;
+ if (mx_get_info(NULL, MX_NUMA_NODE, &in, sizeof(in), &out, sizeof(out)) != MX_SUCCESS) {
+ errno = EINVAL;
+ return -1;
+ }
+
+ if (out != (uint32_t) -1) {
+ hwloc_obj_t obj = NULL;
+ while ((obj = hwloc_get_next_obj_by_type(topology, HWLOC_OBJ_NODE, obj)) != NULL)
+ if (obj->os_index == out) {
+ hwloc_bitmap_copy(set, obj->cpuset);
+ goto out;
+ }
+ }
+ /* fallback to the full topology cpuset */
+ hwloc_bitmap_copy(set, hwloc_topology_get_complete_cpuset(topology));
+
+ out:
+ return 0;
+}
+
+/** \brief Get the CPU set of logical processors that are physically
+ * close to endpoint \p endpoint.
+ *
+ * For the given Myrinet Express endpoint \p endpoint, read the
+ * OS-provided NUMA node and return the corresponding CPU set.
+ */
+static __hwloc_inline int
+hwloc_mx_endpoint_get_device_cpuset(hwloc_topology_t topology,
+ mx_endpoint_t endpoint, hwloc_cpuset_t set)
+{
+ uint64_t nid;
+ uint32_t nindex, eid;
+ mx_endpoint_addr_t eaddr;
+
+ if (mx_get_endpoint_addr(endpoint, &eaddr) != MX_SUCCESS) {
+ errno = EINVAL;
+ return -1;
+ }
+
+ if (mx_decompose_endpoint_addr(eaddr, &nid, &eid) != MX_SUCCESS) {
+ errno = EINVAL;
+ return -1;
+ }
+
+ if (mx_nic_id_to_board_number(nid, &nindex) != MX_SUCCESS) {
+ errno = EINVAL;
+ return -1;
+ }
+
+ return hwloc_mx_board_get_device_cpuset(topology, nindex, set);
+}
+
+/** @} */
+
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+
+#endif /* HWLOC_MYRIEXPRESS_H */
Modified: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/include/hwloc/openfabrics-verbs.h
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/include/hwloc/openfabrics-verbs.h 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/include/hwloc/openfabrics-verbs.h 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,5 +1,7 @@
/*
- * Copyright © 2009 CNRS, INRIA, Université Bordeaux 1
+ * Copyright © 2009 CNRS
+ * Copyright © 2009-2010 INRIA
+ * Copyright © 2009-2010 Université Bordeaux 1
* Copyright © 2009 Cisco Systems, Inc. All rights reserved.
* See COPYING in top-level directory.
*/
@@ -29,7 +31,7 @@
#endif
-/** \defgroup hwloc_openfabrics OpenFabrics-Specific Functions
+/** \defgroup hwlocality_openfabrics OpenFabrics-Specific Functions
* @{
*/
@@ -63,7 +65,7 @@
fclose(sysfile);
#else
/* Non-Linux systems simply get a full cpuset */
- hwloc_cpuset_copy(set, hwloc_topology_get_complete_cpuset(topology));
+ hwloc_bitmap_copy(set, hwloc_topology_get_complete_cpuset(topology));
#endif
return 0;
}
Modified: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/include/hwloc/rename.h
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/include/hwloc/rename.h 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/include/hwloc/rename.h 2010-11-24 09:21:55 UTC (rev 7494)
@@ -39,6 +39,11 @@
#define hwloc_topology HWLOC_NAME(topology)
#define hwloc_topology_t HWLOC_NAME(topology_t)
+#define hwloc_cpuset_t HWLOC_NAME(cpuset_t)
+#define hwloc_const_cpuset_t HWLOC_NAME(const_cpuset_t)
+#define hwloc_nodeset_t HWLOC_NAME(nodeset_t)
+#define hwloc_const_nodeset_t HWLOC_NAME(const_nodeset_t)
+
#define HWLOC_OBJ_SYSTEM HWLOC_NAME_CAPS(OBJ_SYSTEM)
#define HWLOC_OBJ_MACHINE HWLOC_NAME_CAPS(OBJ_MACHINE)
#define HWLOC_OBJ_NODE HWLOC_NAME_CAPS(OBJ_NODE)
@@ -113,12 +118,13 @@
#define hwloc_obj_attr_snprintf HWLOC_NAME(obj_attr_snprintf )
#define hwloc_obj_snprintf HWLOC_NAME(obj_snprintf)
#define hwloc_obj_cpuset_snprintf HWLOC_NAME(obj_cpuset_snprintf)
+#define hwloc_obj_get_info_by_name HWLOC_NAME(obj_get_info_by_name)
#define HWLOC_CPUBIND_PROCESS HWLOC_NAME_CAPS(CPUBIND_PROCESS)
#define HWLOC_CPUBIND_THREAD HWLOC_NAME_CAPS(CPUBIND_THREAD)
#define HWLOC_CPUBIND_STRICT HWLOC_NAME_CAPS(CPUBIND_STRICT)
-#define hwloc_cpubind_policy_t HWLOC_NAME(hwloc_cpubind_policy_t)
+#define hwloc_cpubind_flags_t HWLOC_NAME(cpubind_flags_t)
#define hwloc_set_cpubind HWLOC_NAME(set_cpubind)
#define hwloc_get_cpubind HWLOC_NAME(get_cpubind)
@@ -127,52 +133,86 @@
#define hwloc_set_thread_cpubind HWLOC_NAME(set_thread_cpubind)
#define hwloc_get_thread_cpubind HWLOC_NAME(get_thread_cpubind)
-/* hwloc/cpuset.h */
+#define HWLOC_MEMBIND_DEFAULT HWLOC_NAME_CAPS(MEMBIND_DEFAULT)
+#define HWLOC_MEMBIND_FIRSTTOUCH HWLOC_NAME_CAPS(MEMBIND_FIRSTTOUCH)
+#define HWLOC_MEMBIND_BIND HWLOC_NAME_CAPS(MEMBIND_BIND)
+#define HWLOC_MEMBIND_INTERLEAVE HWLOC_NAME_CAPS(MEMBIND_INTERLEAVE)
+#define HWLOC_MEMBIND_REPLICATE HWLOC_NAME_CAPS(MEMBIND_REPLICATE)
+#define HWLOC_MEMBIND_NEXTTOUCH HWLOC_NAME_CAPS(MEMBIND_NEXTTOUCH)
-#define hwloc_cpuset HWLOC_NAME(cpuset)
-#define hwloc_cpuset_s HWLOC_NAME(cpuset_s)
-#define hwloc_cpuset_t HWLOC_NAME(cpuset_t)
-#define hwloc_const_cpuset_t HWLOC_NAME(const_cpuset_t)
+#define hwloc_membind_policy_t HWLOC_NAME(membind_policy_t)
-#define hwloc_cpuset_alloc HWLOC_NAME(cpuset_alloc)
-#define hwloc_cpuset_free HWLOC_NAME(cpuset_free)
-#define hwloc_cpuset_dup HWLOC_NAME(cpuset_dup)
-#define hwloc_cpuset_copy HWLOC_NAME(cpuset_copy)
-#define hwloc_cpuset_snprintf HWLOC_NAME(cpuset_snprintf)
-#define hwloc_cpuset_asprintf HWLOC_NAME(cpuset_asprintf)
-#define hwloc_cpuset_from_string HWLOC_NAME(cpuset_from_string)
-#define hwloc_cpuset_zero HWLOC_NAME(cpuset_zero)
-#define hwloc_cpuset_fill HWLOC_NAME(cpuset_fill)
-#define hwloc_cpuset_from_ulong HWLOC_NAME(cpuset_from_ulong)
+#define HWLOC_MEMBIND_PROCESS HWLOC_NAME_CAPS(MEMBIND_PROCESS)
+#define HWLOC_MEMBIND_THREAD HWLOC_NAME_CAPS(MEMBIND_THREAD)
+#define HWLOC_MEMBIND_STRICT HWLOC_NAME_CAPS(MEMBIND_STRICT)
+#define HWLOC_MEMBIND_MIGRATE HWLOC_NAME_CAPS(MEMBIND_MIGRATE)
+#define HWLOC_MEMBIND_NOCPUBIND HWLOC_NAME_CAPS(MEMBIND_NOCPUBIND)
-#define hwloc_cpuset_from_ith_ulong HWLOC_NAME(cpuset_from_ith_ulong)
-#define hwloc_cpuset_to_ulong HWLOC_NAME(cpuset_to_ulong)
-#define hwloc_cpuset_to_ith_ulong HWLOC_NAME(cpuset_to_ith_ulong)
-#define hwloc_cpuset_cpu HWLOC_NAME(cpuset_cpu)
-#define hwloc_cpuset_all_but_cpu HWLOC_NAME(cpuset_all_but_cpu)
-#define hwloc_cpuset_set HWLOC_NAME(cpuset_set)
-#define hwloc_cpuset_set_range HWLOC_NAME(cpuset_set_range)
-#define hwloc_cpuset_clr HWLOC_NAME(cpuset_clr)
-#define hwloc_cpuset_clr_range HWLOC_NAME(cpuset_clr_range)
-#define hwloc_cpuset_isset HWLOC_NAME(cpuset_isset)
-#define hwloc_cpuset_iszero HWLOC_NAME(cpuset_iszero)
-#define hwloc_cpuset_isfull HWLOC_NAME(cpuset_isfull)
-#define hwloc_cpuset_isequal HWLOC_NAME(cpuset_isequal)
-#define hwloc_cpuset_intersects HWLOC_NAME(cpuset_intersects)
-#define hwloc_cpuset_isincluded HWLOC_NAME(cpuset_isincluded)
-#define hwloc_cpuset_or HWLOC_NAME(cpuset_or)
-#define hwloc_cpuset_and HWLOC_NAME(cpuset_and)
-#define hwloc_cpuset_andnot HWLOC_NAME(cpuset_andnot)
-#define hwloc_cpuset_xor HWLOC_NAME(cpuset_xor)
-#define hwloc_cpuset_not HWLOC_NAME(cpuset_not)
-#define hwloc_cpuset_first HWLOC_NAME(cpuset_first)
-#define hwloc_cpuset_last HWLOC_NAME(cpuset_last)
-#define hwloc_cpuset_next HWLOC_NAME(cpuset_next)
-#define hwloc_cpuset_singlify HWLOC_NAME(cpuset_singlify)
-#define hwloc_cpuset_compare_first HWLOC_NAME(cpuset_compare_first)
-#define hwloc_cpuset_compare HWLOC_NAME(cpuset_compare)
-#define hwloc_cpuset_weight HWLOC_NAME(cpuset_weight)
+#define hwloc_membind_flags_t HWLOC_NAME(membind_flags_t)
+#define hwloc_set_membind_nodeset HWLOC_NAME(set_membind_nodeset)
+#define hwloc_set_membind HWLOC_NAME(set_membind)
+#define hwloc_get_membind_nodeset HWLOC_NAME(get_membind_nodeset)
+#define hwloc_get_membind HWLOC_NAME(get_membind)
+#define hwloc_set_proc_membind_nodeset HWLOC_NAME(set_proc_membind_nodeset)
+#define hwloc_set_proc_membind HWLOC_NAME(set_proc_membind)
+#define hwloc_get_proc_membind_nodeset HWLOC_NAME(get_proc_membind_nodeset)
+#define hwloc_get_proc_membind HWLOC_NAME(get_proc_membind)
+#define hwloc_set_area_membind_nodeset HWLOC_NAME(set_area_membind_nodeset)
+#define hwloc_set_area_membind HWLOC_NAME(set_area_membind)
+#define hwloc_get_area_membind_nodeset HWLOC_NAME(get_area_membind_nodeset)
+#define hwloc_get_area_membind HWLOC_NAME(get_area_membind)
+#define hwloc_alloc_membind_nodeset HWLOC_NAME(alloc_membind_nodeset)
+#define hwloc_alloc_membind HWLOC_NAME(alloc_membind)
+#define hwloc_free_membind HWLOC_NAME(free_membind)
+
+/* hwloc/bitmap.h */
+
+#define hwloc_bitmap HWLOC_NAME(bitmap)
+#define hwloc_bitmap_s HWLOC_NAME(bitmap_s)
+#define hwloc_bitmap_t HWLOC_NAME(bitmap_t)
+#define hwloc_const_bitmap_t HWLOC_NAME(const_bitmap_t)
+
+#define hwloc_bitmap_alloc HWLOC_NAME(bitmap_alloc)
+#define hwloc_bitmap_free HWLOC_NAME(bitmap_free)
+#define hwloc_bitmap_dup HWLOC_NAME(bitmap_dup)
+#define hwloc_bitmap_copy HWLOC_NAME(bitmap_copy)
+#define hwloc_bitmap_snprintf HWLOC_NAME(bitmap_snprintf)
+#define hwloc_bitmap_asprintf HWLOC_NAME(bitmap_asprintf)
+#define hwloc_bitmap_sscanf HWLOC_NAME(bitmap_sscanf)
+#define hwloc_bitmap_zero HWLOC_NAME(bitmap_zero)
+#define hwloc_bitmap_fill HWLOC_NAME(bitmap_fill)
+#define hwloc_bitmap_from_ulong HWLOC_NAME(bitmap_from_ulong)
+
+#define hwloc_bitmap_from_ith_ulong HWLOC_NAME(bitmap_from_ith_ulong)
+#define hwloc_bitmap_to_ulong HWLOC_NAME(bitmap_to_ulong)
+#define hwloc_bitmap_to_ith_ulong HWLOC_NAME(bitmap_to_ith_ulong)
+#define hwloc_bitmap_only HWLOC_NAME(bitmap_only)
+#define hwloc_bitmap_allbut HWLOC_NAME(bitmap_allbut)
+#define hwloc_bitmap_set HWLOC_NAME(bitmap_set)
+#define hwloc_bitmap_set_range HWLOC_NAME(bitmap_set_range)
+#define hwloc_bitmap_set_ith_ulong HWLOC_NAME(bitmap_set_ith_ulong)
+#define hwloc_bitmap_clr HWLOC_NAME(bitmap_clr)
+#define hwloc_bitmap_clr_range HWLOC_NAME(bitmap_clr_range)
+#define hwloc_bitmap_isset HWLOC_NAME(bitmap_isset)
+#define hwloc_bitmap_iszero HWLOC_NAME(bitmap_iszero)
+#define hwloc_bitmap_isfull HWLOC_NAME(bitmap_isfull)
+#define hwloc_bitmap_isequal HWLOC_NAME(bitmap_isequal)
+#define hwloc_bitmap_intersects HWLOC_NAME(bitmap_intersects)
+#define hwloc_bitmap_isincluded HWLOC_NAME(bitmap_isincluded)
+#define hwloc_bitmap_or HWLOC_NAME(bitmap_or)
+#define hwloc_bitmap_and HWLOC_NAME(bitmap_and)
+#define hwloc_bitmap_andnot HWLOC_NAME(bitmap_andnot)
+#define hwloc_bitmap_xor HWLOC_NAME(bitmap_xor)
+#define hwloc_bitmap_not HWLOC_NAME(bitmap_not)
+#define hwloc_bitmap_first HWLOC_NAME(bitmap_first)
+#define hwloc_bitmap_last HWLOC_NAME(bitmap_last)
+#define hwloc_bitmap_next HWLOC_NAME(bitmap_next)
+#define hwloc_bitmap_singlify HWLOC_NAME(bitmap_singlify)
+#define hwloc_bitmap_compare_first HWLOC_NAME(bitmap_compare_first)
+#define hwloc_bitmap_compare HWLOC_NAME(bitmap_compare)
+#define hwloc_bitmap_weight HWLOC_NAME(bitmap_weight)
+
/* hwloc/helper.h */
#define hwloc_get_type_or_below_depth HWLOC_NAME(get_type_or_below_depth)
@@ -187,11 +227,9 @@
#define hwloc_get_next_child HWLOC_NAME(get_next_child)
#define hwloc_get_common_ancestor_obj HWLOC_NAME(get_common_ancestor_obj)
#define hwloc_obj_is_in_subtree HWLOC_NAME(obj_is_in_subtree)
-
#define hwloc_get_first_largest_obj_inside_cpuset HWLOC_NAME(get_first_largest_obj_inside_cpuset)
#define hwloc_get_largest_objs_inside_cpuset HWLOC_NAME(get_largest_objs_inside_cpuset)
#define hwloc_get_next_obj_inside_cpuset_by_depth HWLOC_NAME(get_next_obj_inside_cpuset_by_depth)
-
#define hwloc_get_next_obj_inside_cpuset_by_type HWLOC_NAME(get_next_obj_inside_cpuset_by_type)
#define hwloc_get_obj_inside_cpuset_by_depth HWLOC_NAME(get_obj_inside_cpuset_by_depth)
#define hwloc_get_obj_inside_cpuset_by_type HWLOC_NAME(get_obj_inside_cpuset_by_type)
@@ -211,6 +249,13 @@
#define hwloc_topology_get_topology_cpuset HWLOC_NAME(topology_get_topology_cpuset)
#define hwloc_topology_get_online_cpuset HWLOC_NAME(topology_get_online_cpuset)
#define hwloc_topology_get_allowed_cpuset HWLOC_NAME(topology_get_allowed_cpuset)
+#define hwloc_topology_get_complete_nodeset HWLOC_NAME(topology_get_complete_nodeset)
+#define hwloc_topology_get_topology_nodeset HWLOC_NAME(topology_get_topology_nodeset)
+#define hwloc_topology_get_allowed_nodeset HWLOC_NAME(topology_get_allowed_nodeset)
+#define hwloc_cpuset_to_nodeset HWLOC_NAME(cpuset_to_nodeset)
+#define hwloc_cpuset_to_nodeset_strict HWLOC_NAME(cpuset_to_nodeset_strict)
+#define hwloc_cpuset_from_nodeset HWLOC_NAME(cpuset_from_nodeset)
+#define hwloc_cpuset_from_nodeset_strict HWLOC_NAME(cpuset_from_nodeset_strict)
/* glibc-sched.h */
@@ -236,6 +281,19 @@
#define hwloc_ibv_get_device_cpuset HWLOC_NAME(ibv_get_device_cpuset)
+/* myriexpress.h */
+
+#define hwloc_mx_board_get_device_cpuset HWLOC_NAME(mx_board_get_device_cpuset)
+#define hwloc_mx_endpoint_get_device_cpuset HWLOC_NAME(mx_endpoint_get_device_cpuset)
+
+/* cuda.h */
+
+#define hwloc_cuda_get_device_cpuset HWLOC_NAME(cuda_get_device_cpuset)
+
+/* cudart.h */
+
+#define hwloc_cudart_get_device_cpuset HWLOC_NAME(cudart_get_device_cpuset)
+
/* private/misc.h */
#define hwloc_snprintf HWLOC_NAME(snprintf)
@@ -256,14 +314,13 @@
#define HWLOC_IGNORE_TYPE_ALWAYS HWLOC_NAME_CAPS(IGNORE_TYPE_ALWAYS)
#define hwloc_backend_e HWLOC_NAME(backend_e)
+#define hwloc_backend_t HWLOC_NAME(backend_t)
#define HWLOC_BACKEND_NONE HWLOC_NAME_CAPS(BACKEND_NONE)
#define HWLOC_BACKEND_SYNTHETIC HWLOC_NAME_CAPS(BACKEND_SYNTHETIC)
#define HWLOC_BACKEND_SYSFS HWLOC_NAME_CAPS(BACKEND_SYSFS)
#define HWLOC_BACKEND_XML HWLOC_NAME_CAPS(BACKEND_XML)
-#define hwloc_backend_t HWLOC_NAME(backend_t)
-
#define hwloc_backend_params_u HWLOC_NAME(backend_params_u)
#define hwloc_backend_params_sysfs_s HWLOC_NAME(backend_params_sysfs_s)
#define hwloc_backend_params_osf HWLOC_NAME(backend_params_osf)
@@ -314,6 +371,9 @@
#define hwloc_insert_object_by_cpuset HWLOC_NAME(insert_object_by_cpuset)
#define hwloc_insert_object_by_parent HWLOC_NAME(insert_object_by_parent)
+#define hwloc_add_object_info HWLOC_NAME(add_object_info)
+#define hwloc_add_uname_info HWLOC_NAME(add_uname_info)
+#define hwloc_free_object HWLOC_NAME(free_object)
#define hwloc_cpuset_printf_value HWLOC_NAME(cpuset_printf_value)
#define hwloc_alloc_setup_object HWLOC_NAME(alloc_setup_object)
#define hwloc_setup_level HWLOC_NAME(setup_level)
Modified: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/include/hwloc.h
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/include/hwloc.h 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/include/hwloc.h 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,5 +1,7 @@
/*
- * Copyright © 2009 CNRS, INRIA, Université Bordeaux 1
+ * Copyright © 2009 CNRS
+ * Copyright © 2009-2010 INRIA
+ * Copyright © 2009-2010 Université Bordeaux 1
* Copyright © 2009-2010 Cisco Systems, Inc. All rights reserved.
* See COPYING in top-level directory.
*/
@@ -7,7 +9,7 @@
/** \file
* \brief The hwloc API.
*
- * See hwloc/cpuset.h for CPU set specific macros.
+ * See hwloc/bitmap.h for bitmap specific macros.
* See hwloc/helper.h for high-level topology traversal helpers.
*/
@@ -17,6 +19,7 @@
#include <hwloc/config.h>
#include <sys/types.h>
#include <stdio.h>
+#include <string.h>
#include <limits.h>
#ifdef HWLOC_HAVE_STDINT_H
#include <stdint.h>
@@ -28,9 +31,10 @@
#include <hwloc/rename.h>
/*
- * Cpuset bitmask definitions
+ * Bitmap definitions
*/
+#include <hwloc/bitmap.h>
#include <hwloc/cpuset.h>
@@ -44,7 +48,7 @@
*/
/** \brief Indicate at build time which hwloc API version is being used. */
-#define HWLOC_API_VERSION 0x00010000
+#define HWLOC_API_VERSION 0x00010100
/** @} */
@@ -65,6 +69,38 @@
+/** \defgroup hwlocality_sets Object sets
+ * @{
+ */
+
+/** \brief A CPU set is a bitmap whose bits are set according to CPU physical OS indexes.
+ *
+ * It may be consulted and modified with the bitmap API as any ::hwloc_bitmap_t (see hwloc/bitmap.h).
+ */
+typedef hwloc_bitmap_t hwloc_cpuset_t;
+/** \brief A non-modifiable ::hwloc_cpuset_t. */
+typedef hwloc_const_bitmap_t hwloc_const_cpuset_t;
+
+/** \brief A node set is a bitmap whose bits are set according to NUMA memory node physical OS indexes.
+ *
+ * It may be consulted and modified with the bitmap API as any ::hwloc_bitmap_t (see hwloc/bitmap.h).
+ *
+ * When binding memory on a system without any NUMA node
+ * (when the whole memory is considered as a single memory bank),
+ * the nodeset may be either empty (no memory selected)
+ * or full (whole system memory selected).
+ *
+ * See also \ref hwlocality_helper_nodeset_convert.
+ */
+typedef hwloc_bitmap_t hwloc_nodeset_t;
+/** \brief A non-modifiable ::hwloc_nodeset_t.
+ */
+typedef hwloc_const_bitmap_t hwloc_const_nodeset_t;
+
+/** @} */
+
+
+
/** \defgroup hwlocality_types Topology Object Types
* @{
*/
@@ -188,11 +224,10 @@
unsigned os_index; /**< \brief OS-provided physical index number */
char *name; /**< \brief Object description if any */
- /** \brief Memory attributes */
- struct hwloc_obj_memory_s memory;
+ struct hwloc_obj_memory_s memory; /**< \brief Memory attributes */
- /** \brief Object type-specific Attributes */
- union hwloc_obj_attr_u *attr;
+ union hwloc_obj_attr_u *attr; /**< \brief Object type-specific Attributes,
+ * may be \c NULL if no attribute value was found */
/* global position */
unsigned depth; /**< \brief Vertical index in the hierarchy */
@@ -218,7 +253,7 @@
/* misc */
void *userdata; /**< \brief Application-given private data pointer, initialized to \c NULL, use it as you wish */
- /* cpuset */
+ /* cpusets and nodesets */
hwloc_cpuset_t cpuset; /**< \brief CPUs covered by this object
*
* This is the set of CPUs for which there are PU objects in the topology
@@ -230,7 +265,7 @@
* these CPUs may be offline, or not allowed for binding, see online_cpuset
* and allowed_cpuset.
*
- * \note Its value must not be changed, hwloc_cpuset_dup must be used instead.
+ * \note Its value must not be changed, hwloc_bitmap_dup must be used instead.
*/
hwloc_cpuset_t complete_cpuset; /**< \brief The complete CPU set of logical processors of this object,
*
@@ -241,7 +276,7 @@
* precise position is undefined. It is however known that it would be somewhere
* under this object.
*
- * \note Its value must not be changed, hwloc_cpuset_dup must be used instead.
+ * \note Its value must not be changed, hwloc_bitmap_dup must be used instead.
*/
hwloc_cpuset_t online_cpuset; /**< \brief The CPU set of online logical processors
*
@@ -249,7 +284,7 @@
* power and can execute threads. It may however not be allowed to bind to
* them due to administration rules, see allowed_cpuset.
*
- * \note Its value must not be changed, hwloc_cpuset_dup must be used instead.
+ * \note Its value must not be changed, hwloc_bitmap_dup must be used instead.
*/
hwloc_cpuset_t allowed_cpuset; /**< \brief The CPU set of allowed logical processors
*
@@ -259,22 +294,27 @@
* Some of them may however be offline so binding to them may still not be
* possible, see online_cpuset.
*
- * \note Its value must not be changed, hwloc_cpuset_dup must be used instead.
+ * \note Its value must not be changed, hwloc_bitmap_dup must be used instead.
*/
- hwloc_cpuset_t nodeset; /**< \brief NUMA nodes covered by this object or containing this object
+ hwloc_nodeset_t nodeset; /**< \brief NUMA nodes covered by this object or containing this object
*
* This is the set of NUMA nodes for which there are NODE objects in the
* topology under or above this object, i.e. which are known to be physically
* contained in this object or containing it and known how (the children path
* between this object and the NODE objects).
*
+ * In the end, these nodes are those that are close to the current object.
+ *
* If the HWLOC_TOPOLOGY_FLAG_WHOLE_SYSTEM configuration flag is set, some of
* these nodes may not be allowed for allocation, see allowed_nodeset.
*
- * \note Its value must not be changed, hwloc_cpuset_dup must be used instead.
+ * If there are no NUMA nodes in the machine, all the memory is close to this
+ * object, so \p nodeset is full.
+ *
+ * \note Its value must not be changed, hwloc_bitmap_dup must be used instead.
*/
- hwloc_cpuset_t complete_nodeset; /**< \brief The complete NUMA node set of this object,
+ hwloc_nodeset_t complete_nodeset; /**< \brief The complete NUMA node set of this object,
*
* This includes not only the same as the nodeset field, but also the NUMA
* nodes for which topology information is unknown or incomplete, and the nodes
@@ -283,17 +323,26 @@
* precise position is undefined. It is however known that it would be
* somewhere under this object.
*
- * \note Its value must not be changed, hwloc_cpuset_dup must be used instead.
+ * If there are no NUMA nodes in the machine, all the memory is close to this
+ * object, so \p complete_nodeset is full.
+ *
+ * \note Its value must not be changed, hwloc_bitmap_dup must be used instead.
*/
- hwloc_cpuset_t allowed_nodeset; /**< \brief The set of allowed NUMA memory nodes
+ hwloc_nodeset_t allowed_nodeset; /**< \brief The set of allowed NUMA memory nodes
*
* This includes the NUMA memory nodes contained in this object which are
* allowed for memory allocation, i.e. passing them to NUMA node-directed
* memory allocation should not return permission errors. This is usually
* restricted by administration rules.
*
- * \note Its value must not be changed, hwloc_cpuset_dup must be used instead.
+ * If there are no NUMA nodes in the machine, all the memory is close to this
+ * object, so \p allowed_nodeset is full.
+ *
+ * \note Its value must not be changed, hwloc_bitmap_dup must be used instead.
*/
+
+ struct hwloc_obj_info_s *infos; /**< \brief Array of stringified info type=name. */
+ unsigned infos_count; /**< \brief Size of infos array. */
};
/**
* \brief Convenience typedef; a pointer to a struct hwloc_obj.
@@ -306,18 +355,20 @@
struct hwloc_cache_attr_s {
uint64_t size; /**< \brief Size of cache in bytes */
unsigned depth; /**< \brief Depth of cache */
+ unsigned linesize; /**< \brief Cache-line size in bytes */
} cache;
- /** \brief Machine-specific Object Attributes */
- struct hwloc_machine_attr_s {
- char *dmi_board_vendor; /**< \brief DMI board vendor name */
- char *dmi_board_name; /**< \brief DMI board model name */
- } machine;
/** \brief Group-specific Object Attributes */
struct hwloc_group_attr_s {
unsigned depth; /**< \brief Depth of group object */
} group;
};
+/** \brief Object info */
+struct hwloc_obj_info_s {
+ char *name; /**< \brief Info name */
+ char *value; /**< \brief Info value */
+};
+
/** @} */
@@ -337,7 +388,7 @@
/** \brief Build the actual topology
*
* Build the actual topology once initialized with hwloc_topology_init() and
- * tuned with ::hwlocality_configuration routine.
+ * tuned with \ref hwlocality_configuration routines.
* No other routine may be called earlier using this topology context.
*
* \param topology is the topology to be loaded with objects.
@@ -497,7 +548,7 @@
/** \brief Enable XML-file based topology.
*
- * Gather topology information the XML file given at \p xmlpath.
+ * Gather topology information from the XML file given at \p xmlpath.
* Setting the environment variable HWLOC_XMLFILE may also result in this behavior.
* This file may have been generated earlier with lstopo file.xml.
*
@@ -508,13 +559,20 @@
*/
HWLOC_DECLSPEC int hwloc_topology_set_xml(hwloc_topology_t __hwloc_restrict topology, const char * __hwloc_restrict xmlpath);
+/** \brief Enable XML based topology using a memory buffer instead of a file.
+ *
+ * Gather topology information from the XML memory buffer given at \p buffer
+ * and of length \p length.
+ */
+HWLOC_DECLSPEC int hwloc_topology_set_xmlbuffer(hwloc_topology_t __hwloc_restrict topology, const char * __hwloc_restrict buffer, int size);
+
/** \brief Flags describing actual discovery support for this topology. */
struct hwloc_topology_discovery_support {
/** \brief Detecting the number of PU objects is supported. */
unsigned char pu;
};
-/** \brief Flags describing actual binding support for this topology. */
+/** \brief Flags describing actual PU binding support for this topology. */
struct hwloc_topology_cpubind_support {
/** Binding the whole current process is supported. */
unsigned char set_thisproc_cpubind;
@@ -534,6 +592,41 @@
unsigned char get_thread_cpubind;
};
+/** \brief Flags describing actual memory binding support for this topology. */
+struct hwloc_topology_membind_support {
+ /** Binding the whole current process is supported. */
+ unsigned char set_thisproc_membind;
+ /** Getting the binding of the whole current process is supported. */
+ unsigned char get_thisproc_membind;
+ /** Binding a whole given process is supported. */
+ unsigned char set_proc_membind;
+ /** Getting the binding of a whole given process is supported. */
+ unsigned char get_proc_membind;
+ /** Binding the current thread only is supported. */
+ unsigned char set_thisthread_membind;
+ /** Getting the binding of the current thread only is supported. */
+ unsigned char get_thisthread_membind;
+ /** Binding a given memory area is supported. */
+ unsigned char set_area_membind;
+ /** Getting the binding of a given memory area is supported. */
+ unsigned char get_area_membind;
+ /** Allocating a bound memory area is supported. */
+ unsigned char alloc_membind;
+ /** First-touch policy is supported. */
+ unsigned char firsttouch_membind;
+ /** Bind policy is supported. */
+ unsigned char bind_membind;
+ /** Interleave policy is supported. */
+ unsigned char interleave_membind;
+ /** Replication policy is supported. */
+ unsigned char replicate_membind;
+ /** Next-touch migration policy is supported. */
+ unsigned char nexttouch_membind;
+
+ /** Migration flags is supported. */
+ unsigned char migrate_membind;
+};
+
/** \brief Set of flags describing actual support for this topology.
*
* This is retrieved with hwloc_topology_get_support() and will be valid until
@@ -543,6 +636,7 @@
struct hwloc_topology_support {
struct hwloc_topology_discovery_support *discovery;
struct hwloc_topology_cpubind_support *cpubind;
+ struct hwloc_topology_membind_support *membind;
};
/** \brief Retrieve the topology support. */
@@ -562,10 +656,18 @@
*/
HWLOC_DECLSPEC void hwloc_topology_export_xml(hwloc_topology_t topology, const char *xmlpath);
+/** \brief Export the topology into a newly-allocated XML memory buffer.
+ *
+ * \p xmlbuffer is allocated by the callee and should be freed with xmlFree later in the caller.
+ *
+ * This memory buffer may be loaded later through hwloc_topology_set_xmlbuffer().
+ */
+HWLOC_DECLSPEC void hwloc_topology_export_xmlbuffer(hwloc_topology_t topology, char **xmlbuffer, int *buflen);
+
/** \brief Add a MISC object to the topology
*
* A new MISC object will be created and inserted into the topology at the
- * position given by cpuset.
+ * position given by bitmap \p cpuset.
*
* cpuset and name will be copied.
*
@@ -743,13 +845,27 @@
* \return how many characters were actually written (not including the ending \\0). */
HWLOC_DECLSPEC int hwloc_obj_cpuset_snprintf(char * __hwloc_restrict str, size_t size, size_t nobj, const hwloc_obj_t * __hwloc_restrict objs);
+/** \brief Search the given key name in object infos and return the corresponding value.
+ *
+ * \return \c NULL if no such key exists.
+ */
+static __hwloc_inline char * __hwloc_attribute_pure
+hwloc_obj_get_info_by_name(hwloc_obj_t obj, const char *name)
+{
+ unsigned i;
+ for(i=0; i<obj->infos_count; i++)
+ if (!strcmp(obj->infos[i].name, name))
+ return obj->infos[i].value;
+ return NULL;
+}
+
/** @} */
-/** \defgroup hwlocality_binding Binding
+/** \defgroup hwlocality_cpubinding CPU binding
*
- * It is often useful to call hwloc_cpuset_singlify() first so that a single CPU
+ * It is often useful to call hwloc_bitmap_singlify() first so that a single CPU
* remains in the set. This way, the process will not even migrate between
* different CPUs. Some OSes also only support that kind of binding.
*
@@ -759,8 +875,8 @@
* is returned when the requested cpuset can not be enforced (e.g. some systems
* only allow one CPU, and some other systems only allow one NUMA node)
*
- * The most portable version that
- * should be preferred over the others, whenever possible, is
+ * The most portable version that should be preferred over the others, whenever
+ * possible, is
*
* \code
* hwloc_set_cpubind(topology, set, 0),
@@ -777,24 +893,29 @@
*
* \note To unbind, just call the binding function with either a full cpuset or
* a cpuset equal to the system cpuset.
+ *
+ * \note On some OSes, CPU binding may have effects on memory binding, see
+ * ::HWLOC_CPUBIND_NOMEMBIND
* @{
*/
-/** \brief Process/Thread binding policy.
+/** \brief Process/Thread binding flags.
*
* These flags can be used to refine the binding policy.
*
* The default (0) is to bind the current process, assumed to be mono-thread,
* in a non-strict way. This is the most portable way to bind as all OSes
* usually provide it.
+ *
+ * \note Not all systems support all kinds of binding.
*/
typedef enum {
- HWLOC_CPUBIND_PROCESS = (1<<0), /**< \brief Bind all threads of the current multithreaded process.
- * This may not be supported by some OSes (e.g. Linux).
+ HWLOC_CPUBIND_PROCESS = (1<<0), /**< \brief Bind all threads of the current
+ * (possibly) multithreaded process.
* \hideinitializer */
HWLOC_CPUBIND_THREAD = (1<<1), /**< \brief Bind current thread of current process.
* \hideinitializer */
- HWLOC_CPUBIND_STRICT = (1<<2) /**< \brief Request for strict binding from the OS.
+ HWLOC_CPUBIND_STRICT = (1<<2), /**< \brief Request for strict binding from the OS.
* \hideinitializer
*
* By default, when the designated CPUs are
@@ -822,47 +943,59 @@
* \note This flag is meaningless when retrieving
* the binding of a thread.
*/
-} hwloc_cpubind_policy_t;
+ HWLOC_CPUBIND_NOMEMBIND = (1<<3)/**< \brief Avoid any effect on memory binding
+ * \hideinitializer
+ *
+ * On some OSes, some CPU binding function
+ * would also bind the memory on the
+ * corresponding NUMA node. It is often not
+ * a problem for the application, but if it
+ * is, setting this flag will make hwloc
+ * avoid using OS functions that would also
+ * bind memory. This will however reduce the
+ * support of CPU bindings, i.e. potentially
+ * return ENOSYS in some cases.
+ */
+} hwloc_cpubind_flags_t;
-/** \brief Bind current process or thread on cpus given in cpuset \p set
+/** \brief Bind current process or thread on cpus given in bitmap \p set
*
* \return ENOSYS if the action is not supported
* \return EXDEV if the binding cannot be enforced
*/
-HWLOC_DECLSPEC int hwloc_set_cpubind(hwloc_topology_t topology, hwloc_const_cpuset_t set,
- int policy);
+HWLOC_DECLSPEC int hwloc_set_cpubind(hwloc_topology_t topology, hwloc_const_cpuset_t set, int flags);
/** \brief Get current process or thread binding
*/
-HWLOC_DECLSPEC int hwloc_get_cpubind(hwloc_topology_t topology, hwloc_cpuset_t set, int policy);
+HWLOC_DECLSPEC int hwloc_get_cpubind(hwloc_topology_t topology, hwloc_cpuset_t set, int flags);
-/** \brief Bind a process \p pid on cpus given in cpuset \p set
+/** \brief Bind a process \p pid on cpus given in bitmap \p set
*
* \note hwloc_pid_t is pid_t on unix platforms, and HANDLE on native Windows
* platforms
*
- * \note HWLOC_CPUBIND_THREAD can not be used in \p policy.
+ * \note HWLOC_CPUBIND_THREAD can not be used in \p flags.
*/
-HWLOC_DECLSPEC int hwloc_set_proc_cpubind(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_const_cpuset_t set, int policy);
+HWLOC_DECLSPEC int hwloc_set_proc_cpubind(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_const_cpuset_t set, int flags);
/** \brief Get the current binding of process \p pid
*
* \note hwloc_pid_t is pid_t on unix platforms, and HANDLE on native Windows
* platforms
*
- * \note HWLOC_CPUBIND_THREAD can not be used in \p policy.
+ * \note HWLOC_CPUBIND_THREAD can not be used in \p flags.
*/
-HWLOC_DECLSPEC int hwloc_get_proc_cpubind(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_cpuset_t set, int policy);
+HWLOC_DECLSPEC int hwloc_get_proc_cpubind(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_cpuset_t set, int flags);
#ifdef hwloc_thread_t
-/** \brief Bind a thread \p tid on cpus given in cpuset \p set
+/** \brief Bind a thread \p tid on cpus given in bitmap \p set
*
* \note hwloc_thread_t is pthread_t on unix platforms, and HANDLE on native
* Windows platforms
*
- * \note HWLOC_CPUBIND_PROCESS can not be used in \p policy.
+ * \note HWLOC_CPUBIND_PROCESS can not be used in \p flags.
*/
-HWLOC_DECLSPEC int hwloc_set_thread_cpubind(hwloc_topology_t topology, hwloc_thread_t tid, hwloc_const_cpuset_t set, int policy);
+HWLOC_DECLSPEC int hwloc_set_thread_cpubind(hwloc_topology_t topology, hwloc_thread_t tid, hwloc_const_cpuset_t set, int flags);
#endif
#ifdef hwloc_thread_t
@@ -871,14 +1004,203 @@
* \note hwloc_thread_t is pthread_t on unix platforms, and HANDLE on native
* Windows platforms
*
- * \note HWLOC_CPUBIND_PROCESS can not be used in \p policy.
+ * \note HWLOC_CPUBIND_PROCESS can not be used in \p flags.
*/
-HWLOC_DECLSPEC int hwloc_get_thread_cpubind(hwloc_topology_t topology, hwloc_thread_t tid, hwloc_cpuset_t set, int policy);
+HWLOC_DECLSPEC int hwloc_get_thread_cpubind(hwloc_topology_t topology, hwloc_thread_t tid, hwloc_cpuset_t set, int flags);
#endif
/** @} */
+/** \defgroup hwlocality_membinding Memory binding
+ *
+ * \note Not all OSes support all ways to bind existing allocated memory
+ * (migration), future memory allocation, explicit memory allocation, etc. and
+ * the corresponding binding functions may fail. ENOSYS is returned when it is
+ * not possible to bind the requested kind of object processes/threads). EXDEV
+ * is returned when the requested cpuset can not be enforced (e.g. some systems
+ * only allow one NUMA node)
+ *
+ * The most portable version that should be preferred over the others, whenever
+ * possible, is
+ *
+ * \code
+ * hwloc_alloc_membind_policy(topology, size, set, HWLOC_MEMBIND_DEFAULT, 0),
+ * \endcode
+ *
+ * which will try to allocate new data bound to the given set, possibly by
+ * changing the current memory binding policy, or at worse allocate memory
+ * without binding it at all. Since HWLOC_MEMBIND_STRICT is not given, this
+ * will even not fail unless a mere malloc() itself would fail, i.e. ENOMEM.
+ *
+ * Each binding is available with a CPU set argument or a NUMA memory node set
+ * argument. The name of the latter ends with _nodeset. It is also possible to
+ * convert between CPU set and node set using ::hwloc_cpuset_to_nodeset or
+ * ::hwloc_cpuset_from_nodeset.
+ *
+ * \note On some OSes, memory binding may have effects on CPU binding, see
+ * ::HWLOC_MEMBIND_NOCPUBIND
+ * @{
+ */
+
+/** \brief Memory binding policy.
+ *
+ * These can be used to choose the binding policy.
+ *
+ * Note that not all systems support all kinds of binding.
+ */
+typedef enum {
+ HWLOC_MEMBIND_DEFAULT = 0, /**< \brief Reset the memory allocation policy to the system default.
+ * \hideinitializer */
+ HWLOC_MEMBIND_FIRSTTOUCH = 1, /**< \brief Allocate memory on the given nodes, but preferably on the
+ node where the first accessor is running.
+ * \hideinitializer */
+ HWLOC_MEMBIND_BIND = 2, /**< \brief Allocate memory on the given nodes.
+ * \hideinitializer */
+ HWLOC_MEMBIND_INTERLEAVE = 3, /**< \brief Allocate memory on the given nodes in a round-robin manner.
+ * \hideinitializer */
+ HWLOC_MEMBIND_REPLICATE = 4, /**< \brief Replicate memory on the given nodes.
+ * \hideinitializer */
+ HWLOC_MEMBIND_NEXTTOUCH = 5 /**< \brief On next touch of existing allocated memory, migrate it to the node
+ * where the memory reference happened.
+ * \hideinitializer */
+} hwloc_membind_policy_t;
+
+/** \brief Memory binding flags.
+ *
+ * These flags can be used to refine the binding policy.
+ *
+ * \note Not all systems support all kinds of binding.
+ */
+typedef enum {
+ HWLOC_MEMBIND_PROCESS = (1<<0), /**< \brief Set policy for all threads of the
+ * current (possibly multithreaded) process.
+ * \hideinitializer */
+ HWLOC_MEMBIND_THREAD = (1<<1), /**< \brief Set policy for the current thread of
+ * the current process.
+ * \hideinitializer */
+ HWLOC_MEMBIND_STRICT = (1<<2), /**< Request strict binding from the OS.
+ * The function will fail if the
+ * binding can not be completely
+ * enforced.
+ * \hideinitializer */
+ HWLOC_MEMBIND_MIGRATE = (1<<3), /**< \brief Migrate existing allocated memory.
+ * If memory can not be migrated and the STRICT
+ * flag is passed, an error will be returned.
+ * \hideinitializer */
+ HWLOC_MEMBIND_NOCPUBIND = (1<<4) /**< \brief Avoid any effect on CPU binding
+ * \hideinitializer
+ *
+ * On some OSes, some memory binding function
+ * would also bind the application on
+ * the corresponding CPUs. It is often
+ * not a problem for the application, but if it
+ * is, setting this flag will make hwloc
+ * avoid using OS functions that would also
+ * bind on CPUs. This will however reduce the
+ * support of memory bindings, i.e. potentially
+ * return ENOSYS in some cases.
+ */
+} hwloc_membind_flags_t;
+
+/** \brief Bind current process memory on the given nodeset \p nodeset
+ *
+ * \return ENOSYS if the action is not supported
+ * \return EXDEV if the binding cannot be enforced
+ */
+HWLOC_DECLSPEC int hwloc_set_membind_nodeset(hwloc_topology_t topology, hwloc_const_nodeset_t nodeset, hwloc_membind_policy_t policy, int flags);
+
+/** \brief Bind current process memory on memory nodes near the given cpuset \p cpuset
+ *
+ * \return ENOSYS if the action is not supported
+ * \return EXDEV if the binding cannot be enforced
+ */
+HWLOC_DECLSPEC int hwloc_set_membind(hwloc_topology_t topology, hwloc_const_cpuset_t cpuset, hwloc_membind_policy_t policy, int flags);
+
+/** \brief Get current process memory binding in nodeset \p nodeset
+ */
+HWLOC_DECLSPEC int hwloc_get_membind_nodeset(hwloc_topology_t topology, hwloc_nodeset_t nodeset, hwloc_membind_policy_t * policy, int flags);
+
+/** \brief Get current process memory binding in cpuset \p cpuset
+ */
+HWLOC_DECLSPEC int hwloc_get_membind(hwloc_topology_t topology, hwloc_cpuset_t cpuset, hwloc_membind_policy_t * policy, int flags);
+
+/** \brief Bind given process memory on the given nodeset \p nodeset
+ *
+ * \return ENOSYS if the action is not supported
+ * \return EXDEV if the binding cannot be enforced
+ */
+HWLOC_DECLSPEC int hwloc_set_proc_membind_nodeset(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_const_nodeset_t nodeset, hwloc_membind_policy_t policy, int flags);
+
+/** \brief Bind given process memory on memory nodes near the given cpuset \p cpuset
+ *
+ * \return ENOSYS if the action is not supported
+ * \return EXDEV if the binding cannot be enforced
+ */
+HWLOC_DECLSPEC int hwloc_set_proc_membind(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_const_cpuset_t cpuset, hwloc_membind_policy_t policy, int flags);
+
+/** \brief Get current process memory binding in nodeset \p nodeset
+ */
+HWLOC_DECLSPEC int hwloc_get_proc_membind_nodeset(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_nodeset_t nodeset, hwloc_membind_policy_t * policy, int flags);
+
+/** \brief Get current process memory binding in cpuset \p cpuset
+ */
+HWLOC_DECLSPEC int hwloc_get_proc_membind(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_cpuset_t cpuset, hwloc_membind_policy_t * policy, int flags);
+
+/** \brief Bind some memory range on the given nodeset \p nodeset
+ *
+ * \return ENOSYS if the action is not supported
+ * \return EXDEV if the binding cannot be enforced
+ */
+HWLOC_DECLSPEC int hwloc_set_area_membind_nodeset(hwloc_topology_t topology, const void *addr, size_t len, hwloc_const_nodeset_t nodeset, hwloc_membind_policy_t policy, int flags);
+
+/** \brief Bind some memory range on memory nodes near the given cpuset \p cpuset
+ *
+ * \return ENOSYS if the action is not supported
+ * \return EXDEV if the binding cannot be enforced
+ */
+HWLOC_DECLSPEC int hwloc_set_area_membind(hwloc_topology_t topology, const void *addr, size_t len, hwloc_const_cpuset_t cpuset, hwloc_membind_policy_t policy, int flags);
+
+/** \brief Get some memory range memory binding in nodeset \p nodeset
+ */
+HWLOC_DECLSPEC int hwloc_get_area_membind_nodeset(hwloc_topology_t topology, const void *addr, size_t len, hwloc_nodeset_t nodeset, hwloc_membind_policy_t * policy, int flags);
+
+/** \brief Get some memory range memory binding in cpuset \p cpuset
+ */
+HWLOC_DECLSPEC int hwloc_get_area_membind(hwloc_topology_t topology, const void *addr, size_t len, hwloc_cpuset_t cpuset, hwloc_membind_policy_t * policy, int flags);
+
+/** \brief Allocate some memory
+ *
+ * This is equivalent to malloc(), except it tries to allocated page-aligned
+ * memory from the OS.
+ */
+HWLOC_DECLSPEC void *hwloc_alloc(hwloc_topology_t topology, size_t len);
+
+/** \brief Allocate some memory on the given nodeset \p nodeset
+ *
+ * \return ENOSYS if the action is not supported and HWLOC_MEMBIND_STRICT is
+ * given
+ * \return EXDEV if the binding cannot be enforced and HWLOC_MEMBIND_STRICT is
+ * given
+ */
+HWLOC_DECLSPEC void *hwloc_alloc_membind_nodeset(hwloc_topology_t topology, size_t len, hwloc_const_nodeset_t nodeset, hwloc_membind_policy_t policy, int flags) __hwloc_attribute_malloc;
+
+/** \brief Allocate some memory on memory nodes near the given cpuset \p cpuset
+ *
+ * \return ENOSYS if the action is not supported and HWLOC_MEMBIND_STRICT is
+ * given
+ * \return EXDEV if the binding cannot be enforced and HWLOC_MEMBIND_STRICT is
+ * given
+ */
+HWLOC_DECLSPEC void *hwloc_alloc_membind(hwloc_topology_t topology, size_t len, hwloc_const_cpuset_t cpuset, hwloc_membind_policy_t policy, int flags) __hwloc_attribute_malloc;
+
+/** \brief Free some memory allocated by hwloc_alloc_membind
+ */
+HWLOC_DECLSPEC int hwloc_free_membind(hwloc_topology_t topology, void *addr, size_t len);
+
+/** @} */
+
+
#ifdef __cplusplus
} /* extern "C" */
#endif
Modified: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/include/private/cpuid.h
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/include/private/cpuid.h 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/include/private/cpuid.h 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,5 +1,5 @@
/*
- * Copyright © 2010 CNRS, INRIA, Université Bordeaux 1
+ * Copyright © 2010 Université Bordeaux 1
* Copyright © 2010 Cisco Systems, Inc. All rights reserved.
*
* See COPYING in top-level directory.
Modified: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/include/private/debug.h
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/include/private/debug.h 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/include/private/debug.h 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,5 +1,7 @@
/*
- * Copyright © 2009 CNRS, INRIA, Université Bordeaux 1
+ * Copyright © 2009 CNRS
+ * Copyright © 2009-2010 INRIA
+ * Copyright © 2009 Université Bordeaux 1
* See COPYING in top-level directory.
*/
@@ -12,26 +14,26 @@
#ifdef HWLOC_DEBUG
#define hwloc_debug(s, ...) fprintf(stderr, s, ##__VA_ARGS__)
-#define hwloc_debug_cpuset(fmt, cpuset) do { \
- char *s= hwloc_cpuset_printf_value(cpuset); \
+#define hwloc_debug_bitmap(fmt, bitmap) do { \
+ char *s= hwloc_bitmap_printf_value(bitmap); \
fprintf(stderr, fmt, s); \
free(s); \
} while (0)
-#define hwloc_debug_1arg_cpuset(fmt, arg1, cpuset) do { \
- char *s= hwloc_cpuset_printf_value(cpuset); \
+#define hwloc_debug_1arg_bitmap(fmt, arg1, bitmap) do { \
+ char *s= hwloc_bitmap_printf_value(bitmap); \
fprintf(stderr, fmt, arg1, s); \
free(s); \
} while (0)
-#define hwloc_debug_2args_cpuset(fmt, arg1, arg2, cpuset) do { \
- char *s= hwloc_cpuset_printf_value(cpuset); \
+#define hwloc_debug_2args_bitmap(fmt, arg1, arg2, bitmap) do { \
+ char *s= hwloc_bitmap_printf_value(bitmap); \
fprintf(stderr, fmt, arg1, arg2, s); \
free(s); \
} while (0)
#else
#define hwloc_debug(s, ...) do { } while(0)
-#define hwloc_debug_cpuset(s, cpuset) do { } while(0)
-#define hwloc_debug_1arg_cpuset(s, arg1, cpuset) do { } while(0)
-#define hwloc_debug_2args_cpuset(s, arg1, arg2, cpuset) do { } while(0)
+#define hwloc_debug_bitmap(s, bitmap) do { } while(0)
+#define hwloc_debug_1arg_bitmap(s, arg1, bitmap) do { } while(0)
+#define hwloc_debug_2args_bitmap(s, arg1, arg2, bitmap) do { } while(0)
#endif
#endif /* HWLOC_DEBUG_H */
Modified: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/include/private/misc.h
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/include/private/misc.h 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/include/private/misc.h 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,5 +1,7 @@
/*
- * Copyright © 2009 CNRS, INRIA, Université Bordeaux 1
+ * Copyright © 2009 CNRS
+ * Copyright © 2009-2010 INRIA
+ * Copyright © 2009-2010 Université Bordeaux 1
* See COPYING in top-level directory.
*/
Modified: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/include/private/private.h
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/include/private/private.h 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/include/private/private.h 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,5 +1,7 @@
/*
- * Copyright © 2009 CNRS, INRIA, Université Bordeaux 1
+ * Copyright © 2009 CNRS
+ * Copyright © 2009-2010 INRIA
+ * Copyright © 2009-2010 Université Bordeaux 1
* Copyright © 2009-2010 Cisco Systems, Inc. All rights reserved.
*
* See COPYING in top-level directory.
@@ -12,7 +14,7 @@
#include <private/config.h>
#include <hwloc.h>
-#include <hwloc/cpuset.h>
+#include <hwloc/bitmap.h>
#include <private/debug.h>
#include <sys/types.h>
#ifdef HAVE_STDINT_H
@@ -66,17 +68,32 @@
int is_loaded;
hwloc_pid_t pid; /* Process ID the topology is view from, 0 for self */
- int (*set_thisproc_cpubind)(hwloc_topology_t topology, hwloc_const_cpuset_t set, int policy);
- int (*get_thisproc_cpubind)(hwloc_topology_t topology, hwloc_cpuset_t set, int policy);
- int (*set_thisthread_cpubind)(hwloc_topology_t topology, hwloc_const_cpuset_t set, int policy);
- int (*get_thisthread_cpubind)(hwloc_topology_t topology, hwloc_cpuset_t set, int policy);
- int (*set_proc_cpubind)(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_const_cpuset_t set, int policy);
- int (*get_proc_cpubind)(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_cpuset_t set, int policy);
+ int (*set_thisproc_cpubind)(hwloc_topology_t topology, hwloc_const_cpuset_t set, int flags);
+ int (*get_thisproc_cpubind)(hwloc_topology_t topology, hwloc_cpuset_t set, int flags);
+ int (*set_thisthread_cpubind)(hwloc_topology_t topology, hwloc_const_cpuset_t set, int flags);
+ int (*get_thisthread_cpubind)(hwloc_topology_t topology, hwloc_cpuset_t set, int flags);
+ int (*set_proc_cpubind)(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_const_cpuset_t set, int flags);
+ int (*get_proc_cpubind)(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_cpuset_t set, int flags);
#ifdef hwloc_thread_t
- int (*set_thread_cpubind)(hwloc_topology_t topology, hwloc_thread_t tid, hwloc_const_cpuset_t set, int policy);
- int (*get_thread_cpubind)(hwloc_topology_t topology, hwloc_thread_t tid, hwloc_cpuset_t set, int policy);
+ int (*set_thread_cpubind)(hwloc_topology_t topology, hwloc_thread_t tid, hwloc_const_cpuset_t set, int flags);
+ int (*get_thread_cpubind)(hwloc_topology_t topology, hwloc_thread_t tid, hwloc_cpuset_t set, int flags);
#endif
+ int (*set_thisproc_membind)(hwloc_topology_t topology, hwloc_const_nodeset_t nodeset, hwloc_membind_policy_t policy, int flags);
+ int (*get_thisproc_membind)(hwloc_topology_t topology, hwloc_nodeset_t nodeset, hwloc_membind_policy_t * policy, int flags);
+ int (*set_thisthread_membind)(hwloc_topology_t topology, hwloc_const_nodeset_t nodeset, hwloc_membind_policy_t policy, int flags);
+ int (*get_thisthread_membind)(hwloc_topology_t topology, hwloc_nodeset_t nodeset, hwloc_membind_policy_t * policy, int flags);
+ int (*set_proc_membind)(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_const_nodeset_t nodeset, hwloc_membind_policy_t policy, int flags);
+ int (*get_proc_membind)(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_nodeset_t nodeset, hwloc_membind_policy_t * policy, int flags);
+ int (*set_area_membind)(hwloc_topology_t topology, const void *addr, size_t len, hwloc_const_nodeset_t nodeset, hwloc_membind_policy_t policy, int flags);
+ int (*get_area_membind)(hwloc_topology_t topology, const void *addr, size_t len, hwloc_nodeset_t nodeset, hwloc_membind_policy_t * policy, int flags);
+ /* This has to return the same kind of pointer as alloc_membind, so that free_membind can be used on it */
+ void *(*alloc)(hwloc_topology_t topology, size_t len);
+ /* alloc_membind has to always succeed if !(flags & HWLOC_MEMBIND_STRICT).
+ * see hwloc_alloc_or_fail which is convenient for that. */
+ void *(*alloc_membind)(hwloc_topology_t topology, size_t len, hwloc_const_nodeset_t nodeset, hwloc_membind_policy_t policy, int flags);
+ int (*free_membind)(hwloc_topology_t topology, void *addr, size_t len);
+
struct hwloc_topology_support support;
hwloc_backend_t backend_type;
@@ -84,6 +101,7 @@
#ifdef HWLOC_LINUX_SYS
struct hwloc_backend_params_sysfs_s {
/* sysfs backend parameters */
+ char *root_path; /* The path of the file system root, used when browsing, e.g., Linux' sysfs and procfs. */
int root_fd; /* The file descriptor for the file system root, used when browsing, e.g., Linux' sysfs and procfs. */
} sysfs;
#endif /* HWLOC_LINUX_SYS */
@@ -111,7 +129,7 @@
extern void hwloc_setup_pu_level(struct hwloc_topology *topology, unsigned nb_pus);
-extern void hwloc_setup_misc_level_from_distances(struct hwloc_topology *topology, unsigned nbobjs, struct hwloc_obj **objs, unsigned *_distances/*[nbnobjs][nbobjs]*/);
+extern void hwloc_setup_misc_level_from_distances(struct hwloc_topology *topology, unsigned nbobjs, struct hwloc_obj **objs, unsigned *_distances/*[nbnobjs][nbobjs]*/, unsigned *distance_indexes /*[nbobjs]*/);
extern int hwloc_get_sysctlbyname(const char *name, int64_t *n);
extern int hwloc_get_sysctl(int name[], unsigned namelen, int *n);
extern unsigned hwloc_fallback_nbprocessors(struct hwloc_topology *topology);
@@ -124,7 +142,7 @@
#endif /* HWLOC_LINUX_SYS */
#ifdef HWLOC_HAVE_XML
-extern int hwloc_backend_xml_init(struct hwloc_topology *topology, const char *xmlpath);
+extern int hwloc_backend_xml_init(struct hwloc_topology *topology, const char *xmlpath, const char *xmlbuffer, int buflen);
extern void hwloc_look_xml(struct hwloc_topology *topology);
extern void hwloc_backend_xml_exit(struct hwloc_topology *topology);
#endif /* HWLOC_HAVE_XML */
@@ -199,12 +217,18 @@
*/
extern void hwloc_insert_object_by_parent(struct hwloc_topology *topology, hwloc_obj_t parent, hwloc_obj_t obj);
-/** \brief Return a locally-allocated stringified cpuset for printf-like calls. */
+/* Insert name/value in the object infos array. name and value are copied by the callee. */
+extern void hwloc_add_object_info(hwloc_obj_t obj, const char *name, const char *value);
+
+/* Insert uname-specific names/values in the object infos array */
+extern void hwloc_add_uname_info(struct hwloc_topology *topology);
+
+/** \brief Return a locally-allocated stringified bitmap for printf-like calls. */
static inline char *
-hwloc_cpuset_printf_value(hwloc_const_cpuset_t cpuset)
+hwloc_bitmap_printf_value(hwloc_const_bitmap_t bitmap)
{
char *buf;
- hwloc_cpuset_asprintf(&buf, cpuset);
+ hwloc_bitmap_asprintf(&buf, bitmap);
return buf;
}
@@ -222,16 +246,16 @@
return obj;
}
-extern void free_object(hwloc_obj_t obj);
+extern void hwloc_free_object(hwloc_obj_t obj);
#define hwloc_object_cpuset_from_array(l, _value, _array, _max) do { \
struct hwloc_obj *__l = (l); \
unsigned int *__a = (_array); \
int k; \
- __l->cpuset = hwloc_cpuset_alloc(); \
+ __l->cpuset = hwloc_bitmap_alloc(); \
for(k=0; k<_max; k++) \
if (__a[k] == _value) \
- hwloc_cpuset_set(__l->cpuset, k); \
+ hwloc_bitmap_set(__l->cpuset, k); \
} while (0)
/* Configures an array of NUM objects of type TYPE with physical IDs OSPHYSIDS
@@ -249,7 +273,7 @@
{
obj = hwloc_alloc_setup_object(type, osphysids[j]);
hwloc_object_cpuset_from_array(obj, j, proc_physids, procid_max);
- hwloc_debug_2args_cpuset("%s %d has cpuset %s\n",
+ hwloc_debug_2args_bitmap("%s %d has cpuset %s\n",
hwloc_obj_type_string(type),
j, obj->cpuset);
hwloc_insert_object_by_cpuset(topology, obj);
@@ -257,4 +281,20 @@
hwloc_debug("%s", "\n");
}
+/* This can be used for the alloc field to get allocated data that can be freed by free() */
+void *hwloc_alloc_heap(hwloc_topology_t topology, size_t len);
+
+/* This can be used for the alloc field to get allocated data that can be freed by munmap() */
+void *hwloc_alloc_mmap(hwloc_topology_t topology, size_t len);
+
+/* Allocates unbound memory or fail, depending on whether STRICT is requested
+ * or not */
+static inline void *
+hwloc_alloc_or_fail(hwloc_topology_t topology, size_t len, int flags)
+{
+ if (flags & HWLOC_MEMBIND_STRICT)
+ return NULL;
+ return hwloc_alloc(topology, len);
+}
+
#endif /* HWLOC_PRIVATE_H */
Modified: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/m4/decl.m4
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/m4/decl.m4 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/m4/decl.m4 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,5 +1,7 @@
dnl -*- Autoconf -*-
-dnl Copyright © 2009 CNRS, INRIA, Université Bordeaux 1
+dnl Copyright © 2009 CNRS
+dnl Copyright © 2009 INRIA
+dnl Copyright © 2009 Université Bordeaux 1
dnl See COPYING in top-level directory.
dnl HWLOC_CHECK_DECL
Modified: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/src/Makefile.am
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/src/Makefile.am 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/src/Makefile.am 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,4 +1,5 @@
-# Copyright © 2009 INRIA, Université Bordeaux 1
+# Copyright © 2009-2010 INRIA
+# Copyright © 2009-2010 Université Bordeaux 1
# Copyright © 2009-2010 Cisco Systems, Inc. All rights reserved.
AM_CFLAGS = $(HWLOC_CFLAGS)
@@ -98,13 +99,13 @@
# Installable library
libhwloc_la_SOURCES = $(sources)
-libhwloc_la_LDFLAGS = $(ldflags) -version-number $(libhwloc_so_version) $(HWLOC_XML_LIBS)
+libhwloc_la_LDFLAGS = $(ldflags) -version-number $(libhwloc_so_version) $(HWLOC_XML_LIBS) $(HWLOC_LINUX_LIBNUMA_LIBS)
# Embedded library (note the lack of a .so version number -- that
# intentionally only appears in the installable library)
libhwloc_embedded_la_SOURCES = $(sources)
-libhwloc_embedded_la_LDFLAGS = $(ldflags) $(HWLOC_XML_LIBS)
+libhwloc_embedded_la_LDFLAGS = $(ldflags) $(HWLOC_XML_LIBS) $(HWLOC_LINUX_LIBNUMA_LIBS)
# XML data (only install if we're building in standalone mode)
Modified: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/src/bind.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/src/bind.c 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/src/bind.c 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,5 +1,7 @@
/*
- * Copyright © 2009 CNRS, INRIA, Université Bordeaux 1
+ * Copyright © 2009 CNRS
+ * Copyright © 2009-2010 INRIA
+ * Copyright © 2009-2010 Université Bordeaux 1
* See COPYING in top-level directory.
*/
@@ -7,22 +9,29 @@
#include <hwloc.h>
#include <private/private.h>
#include <hwloc/helper.h>
+#include <sys/mman.h>
+#ifdef HAVE_MALLOC_H
+# include <malloc.h>
+#endif
+#include <unistd.h>
+#include <stdlib.h>
#include <errno.h>
/* TODO: HWLOC_GNU_SYS, HWLOC_IRIX_SYS,
- * IRIX: see _DSM_MUSTRUN
*
+ * IRIX: see MP_MUSTRUN / _DSM_MUSTRUN, pthread_setrunon_np, /hw, procss_cpulink, numa_create
+ *
* We could use glibc's sched_setaffinity generically when it is available
*
* Darwin and OpenBSD don't seem to have binding facilities.
*/
-static hwloc_const_cpuset_t
-hwloc_fix_cpubind(hwloc_topology_t topology, hwloc_const_cpuset_t set)
+static hwloc_const_bitmap_t
+hwloc_fix_cpubind(hwloc_topology_t topology, hwloc_const_bitmap_t set)
{
- hwloc_const_cpuset_t topology_set = hwloc_topology_get_topology_cpuset(topology);
- hwloc_const_cpuset_t complete_set = hwloc_topology_get_complete_cpuset(topology);
+ hwloc_const_bitmap_t topology_set = hwloc_topology_get_topology_cpuset(topology);
+ hwloc_const_bitmap_t complete_set = hwloc_topology_get_complete_cpuset(topology);
if (!topology_set) {
/* The topology is composed of several systems, the cpuset is ambiguous. */
@@ -30,35 +39,40 @@
return NULL;
}
- if (!hwloc_cpuset_isincluded(set, complete_set)) {
+ if (hwloc_bitmap_iszero(set)) {
errno = EINVAL;
return NULL;
}
- if (hwloc_cpuset_isincluded(topology_set, set))
+ if (!hwloc_bitmap_isincluded(set, complete_set)) {
+ errno = EINVAL;
+ return NULL;
+ }
+
+ if (hwloc_bitmap_isincluded(topology_set, set))
set = complete_set;
return set;
}
int
-hwloc_set_cpubind(hwloc_topology_t topology, hwloc_const_cpuset_t set, int policy)
+hwloc_set_cpubind(hwloc_topology_t topology, hwloc_const_bitmap_t set, int flags)
{
set = hwloc_fix_cpubind(topology, set);
if (!set)
return -1;
- if (policy & HWLOC_CPUBIND_PROCESS) {
+ if (flags & HWLOC_CPUBIND_PROCESS) {
if (topology->set_thisproc_cpubind)
- return topology->set_thisproc_cpubind(topology, set, policy);
- } else if (policy & HWLOC_CPUBIND_THREAD) {
+ return topology->set_thisproc_cpubind(topology, set, flags);
+ } else if (flags & HWLOC_CPUBIND_THREAD) {
if (topology->set_thisthread_cpubind)
- return topology->set_thisthread_cpubind(topology, set, policy);
+ return topology->set_thisthread_cpubind(topology, set, flags);
} else {
if (topology->set_thisproc_cpubind)
- return topology->set_thisproc_cpubind(topology, set, policy);
+ return topology->set_thisproc_cpubind(topology, set, flags);
else if (topology->set_thisthread_cpubind)
- return topology->set_thisthread_cpubind(topology, set, policy);
+ return topology->set_thisthread_cpubind(topology, set, flags);
}
errno = ENOSYS;
@@ -66,19 +80,19 @@
}
int
-hwloc_get_cpubind(hwloc_topology_t topology, hwloc_cpuset_t set, int policy)
+hwloc_get_cpubind(hwloc_topology_t topology, hwloc_bitmap_t set, int flags)
{
- if (policy & HWLOC_CPUBIND_PROCESS) {
+ if (flags & HWLOC_CPUBIND_PROCESS) {
if (topology->get_thisproc_cpubind)
- return topology->get_thisproc_cpubind(topology, set, policy);
- } else if (policy & HWLOC_CPUBIND_THREAD) {
+ return topology->get_thisproc_cpubind(topology, set, flags);
+ } else if (flags & HWLOC_CPUBIND_THREAD) {
if (topology->get_thisthread_cpubind)
- return topology->get_thisthread_cpubind(topology, set, policy);
+ return topology->get_thisthread_cpubind(topology, set, flags);
} else {
if (topology->get_thisproc_cpubind)
- return topology->get_thisproc_cpubind(topology, set, policy);
+ return topology->get_thisproc_cpubind(topology, set, flags);
else if (topology->get_thisthread_cpubind)
- return topology->get_thisthread_cpubind(topology, set, policy);
+ return topology->get_thisthread_cpubind(topology, set, flags);
}
errno = ENOSYS;
@@ -86,24 +100,24 @@
}
int
-hwloc_set_proc_cpubind(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_const_cpuset_t set, int policy)
+hwloc_set_proc_cpubind(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_const_bitmap_t set, int flags)
{
set = hwloc_fix_cpubind(topology, set);
if (!set)
return -1;
if (topology->set_proc_cpubind)
- return topology->set_proc_cpubind(topology, pid, set, policy);
+ return topology->set_proc_cpubind(topology, pid, set, flags);
errno = ENOSYS;
return -1;
}
int
-hwloc_get_proc_cpubind(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_cpuset_t set, int policy)
+hwloc_get_proc_cpubind(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_bitmap_t set, int flags)
{
if (topology->get_proc_cpubind)
- return topology->get_proc_cpubind(topology, pid, set, policy);
+ return topology->get_proc_cpubind(topology, pid, set, flags);
errno = ENOSYS;
return -1;
@@ -111,28 +125,376 @@
#ifdef hwloc_thread_t
int
-hwloc_set_thread_cpubind(hwloc_topology_t topology, hwloc_thread_t tid, hwloc_const_cpuset_t set, int policy)
+hwloc_set_thread_cpubind(hwloc_topology_t topology, hwloc_thread_t tid, hwloc_const_bitmap_t set, int flags)
{
set = hwloc_fix_cpubind(topology, set);
if (!set)
return -1;
if (topology->set_thread_cpubind)
- return topology->set_thread_cpubind(topology, tid, set, policy);
+ return topology->set_thread_cpubind(topology, tid, set, flags);
errno = ENOSYS;
return -1;
}
int
-hwloc_get_thread_cpubind(hwloc_topology_t topology, hwloc_thread_t tid, hwloc_cpuset_t set, int policy)
+hwloc_get_thread_cpubind(hwloc_topology_t topology, hwloc_thread_t tid, hwloc_bitmap_t set, int flags)
{
if (topology->get_thread_cpubind)
- return topology->get_thread_cpubind(topology, tid, set, policy);
+ return topology->get_thread_cpubind(topology, tid, set, flags);
errno = ENOSYS;
return -1;
}
#endif
-/* TODO: memory bind */
+static hwloc_const_nodeset_t
+hwloc_fix_membind(hwloc_topology_t topology, hwloc_const_nodeset_t nodeset)
+{
+ hwloc_const_bitmap_t topology_nodeset = hwloc_topology_get_topology_nodeset(topology);
+ hwloc_const_bitmap_t complete_nodeset = hwloc_topology_get_complete_nodeset(topology);
+
+ if (!hwloc_topology_get_topology_cpuset(topology)) {
+ /* The topology is composed of several systems, the nodeset is thus
+ * ambiguous. */
+ errno = EXDEV;
+ return NULL;
+ }
+
+ if (!complete_nodeset) {
+ /* There is no NUMA node */
+ errno = ENODEV;
+ return NULL;
+ }
+
+ if (hwloc_bitmap_iszero(nodeset)) {
+ errno = EINVAL;
+ return NULL;
+ }
+
+ if (!hwloc_bitmap_isincluded(nodeset, complete_nodeset)) {
+ errno = EINVAL;
+ return NULL;
+ }
+
+ if (hwloc_bitmap_isincluded(topology_nodeset, nodeset))
+ return complete_nodeset;
+
+ return nodeset;
+}
+
+static int
+hwloc_fix_membind_cpuset(hwloc_topology_t topology, hwloc_nodeset_t nodeset, hwloc_const_cpuset_t cpuset)
+{
+ hwloc_const_bitmap_t topology_set = hwloc_topology_get_topology_cpuset(topology);
+ hwloc_const_bitmap_t complete_set = hwloc_topology_get_complete_cpuset(topology);
+ hwloc_const_bitmap_t complete_nodeset = hwloc_topology_get_complete_nodeset(topology);
+
+ if (!topology_set) {
+ /* The topology is composed of several systems, the cpuset is thus
+ * ambiguous. */
+ errno = EXDEV;
+ return -1;
+ }
+
+ if (!complete_nodeset) {
+ /* There is no NUMA node */
+ errno = ENODEV;
+ return -1;
+ }
+
+ if (hwloc_bitmap_iszero(cpuset)) {
+ errno = EINVAL;
+ return -1;
+ }
+
+ if (!hwloc_bitmap_isincluded(cpuset, complete_set)) {
+ errno = EINVAL;
+ return -1;
+ }
+
+ if (hwloc_bitmap_isincluded(topology_set, cpuset)) {
+ hwloc_bitmap_copy(nodeset, complete_nodeset);
+ return 0;
+ }
+
+ hwloc_cpuset_to_nodeset(topology, cpuset, nodeset);
+ return 0;
+}
+
+int
+hwloc_set_membind_nodeset(hwloc_topology_t topology, hwloc_const_nodeset_t nodeset, hwloc_membind_policy_t policy, int flags)
+{
+ nodeset = hwloc_fix_membind(topology, nodeset);
+ if (!nodeset)
+ return -1;
+
+ if (flags & HWLOC_MEMBIND_PROCESS) {
+ if (topology->set_thisproc_membind)
+ return topology->set_thisproc_membind(topology, nodeset, policy, flags);
+ } else if (flags & HWLOC_MEMBIND_THREAD) {
+ if (topology->set_thisthread_membind)
+ return topology->set_thisthread_membind(topology, nodeset, policy, flags);
+ } else {
+ if (topology->set_thisproc_membind)
+ return topology->set_thisproc_membind(topology, nodeset, policy, flags);
+ else if (topology->set_thisthread_membind)
+ return topology->set_thisthread_membind(topology, nodeset, policy, flags);
+ }
+
+ errno = ENOSYS;
+ return -1;
+}
+
+int
+hwloc_set_membind(hwloc_topology_t topology, hwloc_const_cpuset_t set, hwloc_membind_policy_t policy, int flags)
+{
+ hwloc_nodeset_t nodeset = hwloc_bitmap_alloc();
+ int ret;
+
+ if (hwloc_fix_membind_cpuset(topology, nodeset, set))
+ ret = -1;
+ else
+ ret = hwloc_set_membind_nodeset(topology, nodeset, policy, flags);
+
+ hwloc_bitmap_free(nodeset);
+ return ret;
+}
+
+int
+hwloc_get_membind_nodeset(hwloc_topology_t topology, hwloc_nodeset_t nodeset, hwloc_membind_policy_t * policy, int flags)
+{
+ if (flags & HWLOC_MEMBIND_PROCESS) {
+ if (topology->get_thisproc_membind)
+ return topology->get_thisproc_membind(topology, nodeset, policy, flags);
+ } else if (flags & HWLOC_MEMBIND_THREAD) {
+ if (topology->get_thisthread_membind)
+ return topology->get_thisthread_membind(topology, nodeset, policy, flags);
+ } else {
+ if (topology->get_thisproc_membind)
+ return topology->get_thisproc_membind(topology, nodeset, policy, flags);
+ else if (topology->get_thisthread_membind)
+ return topology->get_thisthread_membind(topology, nodeset, policy, flags);
+ }
+
+ errno = ENOSYS;
+ return -1;
+}
+
+int
+hwloc_get_membind(hwloc_topology_t topology, hwloc_cpuset_t set, hwloc_membind_policy_t * policy, int flags)
+{
+ hwloc_nodeset_t nodeset;
+ int ret;
+
+ nodeset = hwloc_bitmap_alloc();
+ ret = hwloc_get_membind_nodeset(topology, nodeset, policy, flags);
+
+ if (!ret)
+ hwloc_cpuset_from_nodeset(topology, set, nodeset);
+
+ return ret;
+}
+
+int
+hwloc_set_proc_membind_nodeset(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_const_nodeset_t nodeset, hwloc_membind_policy_t policy, int flags)
+{
+ nodeset = hwloc_fix_membind(topology, nodeset);
+ if (!nodeset)
+ return -1;
+
+ if (topology->set_proc_membind)
+ return topology->set_proc_membind(topology, pid, nodeset, policy, flags);
+
+ errno = ENOSYS;
+ return -1;
+}
+
+
+int
+hwloc_set_proc_membind(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_const_cpuset_t set, hwloc_membind_policy_t policy, int flags)
+{
+ hwloc_nodeset_t nodeset = hwloc_bitmap_alloc();
+ int ret;
+
+ if (hwloc_fix_membind_cpuset(topology, nodeset, set))
+ ret = -1;
+ else
+ ret = hwloc_set_proc_membind_nodeset(topology, pid, nodeset, policy, flags);
+
+ hwloc_bitmap_free(nodeset);
+ return ret;
+}
+
+int
+hwloc_get_proc_membind_nodeset(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_nodeset_t nodeset, hwloc_membind_policy_t * policy, int flags)
+{
+ if (topology->get_proc_membind)
+ return topology->get_proc_membind(topology, pid, nodeset, policy, flags);
+
+ errno = ENOSYS;
+ return -1;
+}
+
+int
+hwloc_get_proc_membind(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_cpuset_t set, hwloc_membind_policy_t * policy, int flags)
+{
+ hwloc_nodeset_t nodeset;
+ int ret;
+
+ nodeset = hwloc_bitmap_alloc();
+ ret = hwloc_get_proc_membind_nodeset(topology, pid, nodeset, policy, flags);
+
+ if (!ret)
+ hwloc_cpuset_from_nodeset(topology, set, nodeset);
+
+ return ret;
+}
+
+int
+hwloc_set_area_membind_nodeset(hwloc_topology_t topology, const void *addr, size_t len, hwloc_const_nodeset_t nodeset, hwloc_membind_policy_t policy, int flags)
+{
+ nodeset = hwloc_fix_membind(topology, nodeset);
+ if (!nodeset)
+ return -1;
+
+ if (topology->set_area_membind)
+ return topology->set_area_membind(topology, addr, len, nodeset, policy, flags);
+
+ errno = ENOSYS;
+ return -1;
+}
+
+int
+hwloc_set_area_membind(hwloc_topology_t topology, const void *addr, size_t len, hwloc_const_cpuset_t set, hwloc_membind_policy_t policy, int flags)
+{
+ hwloc_nodeset_t nodeset = hwloc_bitmap_alloc();
+ int ret;
+
+ if (hwloc_fix_membind_cpuset(topology, nodeset, set))
+ ret = -1;
+ else
+ ret = hwloc_set_area_membind_nodeset(topology, addr, len, nodeset, policy, flags);
+
+ hwloc_bitmap_free(nodeset);
+ return ret;
+}
+
+int
+hwloc_get_area_membind_nodeset(hwloc_topology_t topology, const void *addr, size_t len, hwloc_nodeset_t nodeset, hwloc_membind_policy_t * policy, int flags)
+{
+ if (topology->get_area_membind)
+ return topology->get_area_membind(topology, addr, len, nodeset, policy, flags);
+
+ errno = ENOSYS;
+ return -1;
+}
+
+int
+hwloc_get_area_membind(hwloc_topology_t topology, const void *addr, size_t len, hwloc_cpuset_t set, hwloc_membind_policy_t * policy, int flags)
+{
+ hwloc_nodeset_t nodeset;
+ int ret;
+
+ nodeset = hwloc_bitmap_alloc();
+ ret = hwloc_get_area_membind_nodeset(topology, addr, len, nodeset, policy, flags);
+
+ if (!ret)
+ hwloc_cpuset_from_nodeset(topology, set, nodeset);
+
+ return ret;
+}
+
+void *
+hwloc_alloc_heap(hwloc_topology_t topology __hwloc_attribute_unused, size_t len)
+{
+ void *p;
+#if defined(HAVE_GETPAGESIZE) && defined(HAVE_POSIX_MEMALIGN)
+ errno = posix_memalign(&p, getpagesize(), len);
+ if (errno)
+ p = NULL;
+#elif defined(HAVE_GETPAGESIZE) && defined(HAVE_MEMALIGN)
+ p = memalign(getpagesize(), len);
+#else
+ p = malloc(len);
+#endif
+ return p;
+}
+
+#ifdef MAP_ANONYMOUS
+void *
+hwloc_alloc_mmap(hwloc_topology_t topology __hwloc_attribute_unused, size_t len)
+{
+ return mmap(NULL, len, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0);
+}
+#endif
+
+void *
+hwloc_alloc(hwloc_topology_t topology, size_t len)
+{
+ if (topology->alloc)
+ return topology->alloc(topology, len);
+ return hwloc_alloc_heap(topology, len);
+}
+
+void *
+hwloc_alloc_membind_nodeset(hwloc_topology_t topology, size_t len, hwloc_const_nodeset_t nodeset, hwloc_membind_policy_t policy, int flags)
+{
+ nodeset = hwloc_fix_membind(topology, nodeset);
+ void *p;
+ if (!nodeset)
+ goto fallback;
+ if (flags & HWLOC_MEMBIND_MIGRATE) {
+ errno = EINVAL;
+ goto fallback;
+ }
+
+ if (topology->alloc_membind)
+ return topology->alloc_membind(topology, len, nodeset, policy, flags);
+ else if (topology->set_area_membind) {
+ p = hwloc_alloc(topology, len);
+ if (!p)
+ return NULL;
+ if (topology->set_area_membind(topology, p, len, nodeset, policy, flags) && flags & HWLOC_MEMBIND_STRICT) {
+ int error = errno;
+ free(p);
+ errno = error;
+ return NULL;
+ }
+ return p;
+ } else {
+ errno = ENOSYS;
+ }
+
+fallback:
+ if (flags & HWLOC_MEMBIND_STRICT)
+ /* Report error */
+ return NULL;
+ /* Never mind, allocate anyway */
+ return hwloc_alloc(topology, len);
+}
+
+void *
+hwloc_alloc_membind(hwloc_topology_t topology, size_t len, hwloc_const_cpuset_t set, hwloc_membind_policy_t policy, int flags)
+{
+ hwloc_nodeset_t nodeset = hwloc_bitmap_alloc();
+ void *ret;
+
+ if (hwloc_fix_membind_cpuset(topology, nodeset, set))
+ ret = NULL;
+ else
+ ret = hwloc_alloc_membind_nodeset(topology, len, nodeset, policy, flags);
+
+ hwloc_bitmap_free(nodeset);
+ return ret;
+}
+
+int
+hwloc_free_membind(hwloc_topology_t topology, void *addr, size_t len)
+{
+ if (topology->free_membind)
+ return topology->free_membind(topology, addr, len);
+ free(addr);
+ return 0;
+}
Modified: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/src/cpuset.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/src/cpuset.c 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/src/cpuset.c 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,13 +1,23 @@
/*
- * Copyright © 2009 CNRS, INRIA, Université Bordeaux 1
+ * Copyright © 2009 CNRS
+ * Copyright © 2009-2010 INRIA
+ * Copyright © 2009-2010 Université Bordeaux 1
* Copyright © 2009 Cisco Systems, Inc. All rights reserved.
* See COPYING in top-level directory.
*/
+/* cpuset.h converts from the old cpuset API to the new bitmap API, we don't want it here */
+#ifndef HWLOC_CPUSET_H
+/* make sure cpuset.h will not be automatically included here */
+#define HWLOC_CPUSET_H 1
+#else
+#error Do not include cpuset.h in cpuset.c
+#endif
+
#include <private/config.h>
#include <private/misc.h>
#include <private/private.h>
-#include <hwloc/cpuset.h>
+#include <hwloc/bitmap.h>
#include <stdarg.h>
#include <stdio.h>
@@ -15,93 +25,191 @@
#include <errno.h>
#include <ctype.h>
-/* size and count of subsets within a set */
-#define HWLOC_CPUSUBSET_SIZE HWLOC_BITS_PER_LONG
-#define HWLOC_CPUSUBSET_COUNT ((HWLOC_NBMAXCPUS+HWLOC_CPUSUBSET_SIZE-1)/HWLOC_CPUSUBSET_SIZE)
+/* TODO
+ * - have a way to change the initial allocation size
+ * - preallocate inside the bitmap structure (so that the whole structure is a cacheline for instance)
+ * and allocate a dedicated array only later when reallocating larger
+ */
/* magic number */
-#define HWLOC_CPUSET_MAGIC 0x20091007
+#define HWLOC_BITMAP_MAGIC 0x20091007
/* actual opaque type internals */
-struct hwloc_cpuset_s {
- unsigned long s[HWLOC_CPUSUBSET_COUNT];
+struct hwloc_bitmap_s {
+ unsigned ulongs_count; /* how many ulong bitmasks are valid */
+ unsigned ulongs_allocated; /* how many ulong bitmasks are allocated */
+ unsigned long *ulongs;
+ int infinite; /* set to 1 if all bits beyond ulongs are set */
#ifdef HWLOC_DEBUG
- int magic;
+ int magic;
#endif
};
/* overzealous check in debug-mode, not as powerful as valgrind but still useful */
#ifdef HWLOC_DEBUG
-#define HWLOC__CPUSET_CHECK(set) assert((set)->magic == HWLOC_CPUSET_MAGIC)
+#define HWLOC__BITMAP_CHECK(set) assert((set)->magic == HWLOC_BITMAP_MAGIC)
#else
-#define HWLOC__CPUSET_CHECK(set)
+#define HWLOC__BITMAP_CHECK(set)
#endif
/* extract a subset from a set using an index or a cpu */
-#define HWLOC_CPUSUBSET_SUBSET(set,x) ((set).s[x])
-#define HWLOC_CPUSUBSET_INDEX(cpu) ((cpu)/(HWLOC_CPUSUBSET_SIZE))
-#define HWLOC_CPUSUBSET_CPUSUBSET(set,cpu) HWLOC_CPUSUBSET_SUBSET(set,HWLOC_CPUSUBSET_INDEX(cpu))
+#define HWLOC_SUBBITMAP_INDEX(cpu) ((cpu)/(HWLOC_BITS_PER_LONG))
+#define HWLOC_SUBBITMAP_CPU_ULBIT(cpu) ((cpu)%(HWLOC_BITS_PER_LONG))
+/* Read from a bitmap ulong without knowing whether x is valid.
+ * Writers should make sure that x is valid and modify set->ulongs[x] directly.
+ */
+#define HWLOC_SUBBITMAP_READULONG(set,x) ((x) < (set)->ulongs_count ? (set)->ulongs[x] : (set)->infinite ? HWLOC_SUBBITMAP_FULL : HWLOC_SUBBITMAP_ZERO)
/* predefined subset values */
-#define HWLOC_CPUSUBSET_VAL(cpu) (1UL<<((cpu)%(HWLOC_CPUSUBSET_SIZE)))
-#define HWLOC_CPUSUBSET_ZERO 0UL
-#define HWLOC_CPUSUBSET_FULL ~0UL
+#define HWLOC_SUBBITMAP_ZERO 0UL
+#define HWLOC_SUBBITMAP_FULL (~0UL)
+#define HWLOC_SUBBITMAP_ULBIT(bit) (1UL<<(bit))
+#define HWLOC_SUBBITMAP_CPU(cpu) HWLOC_SUBBITMAP_ULBIT(HWLOC_SUBBITMAP_CPU_ULBIT(cpu))
+#define HWLOC_SUBBITMAP_ULBIT_TO(bit) (HWLOC_SUBBITMAP_FULL>>(HWLOC_BITS_PER_LONG-1-(bit)))
+#define HWLOC_SUBBITMAP_ULBIT_FROM(bit) (HWLOC_SUBBITMAP_FULL<<(bit))
+#define HWLOC_SUBBITMAP_ULBIT_FROMTO(begin,end) (HWLOC_SUBBITMAP_ULBIT_TO(end) & HWLOC_SUBBITMAP_ULBIT_FROM(begin))
-/* Strings always use 32bit groups */
-#define HWLOC_PRIxCPUSUBSET "%08lx"
-#define HWLOC_CPUSET_SUBSTRING_SIZE 32
-#define HWLOC_CPUSET_SUBSTRING_COUNT ((HWLOC_NBMAXCPUS+HWLOC_CPUSET_SUBSTRING_SIZE-1)/HWLOC_CPUSET_SUBSTRING_SIZE)
-#define HWLOC_CPUSET_SUBSTRING_LENGTH (HWLOC_CPUSET_SUBSTRING_SIZE/4)
+struct hwloc_bitmap_s * hwloc_bitmap_alloc(void)
+{
+ struct hwloc_bitmap_s * set;
-struct hwloc_cpuset_s * hwloc_cpuset_alloc(void)
-{
- struct hwloc_cpuset_s * set;
- set = calloc(sizeof(*set), 1);
+ set = malloc(sizeof(struct hwloc_bitmap_s));
if (!set)
return NULL;
+ set->ulongs_count = 0;
+ set->ulongs_allocated = 64/sizeof(unsigned long);
+ set->ulongs = malloc(64);
+ if (!set->ulongs) {
+ free(set);
+ return NULL;
+ }
+
+ set->infinite = 0;
#ifdef HWLOC_DEBUG
- set->magic = HWLOC_CPUSET_MAGIC;
+ set->magic = HWLOC_BITMAP_MAGIC;
#endif
return set;
}
-void hwloc_cpuset_free(struct hwloc_cpuset_s * set)
+struct hwloc_bitmap_s * hwloc_bitmap_alloc_full(void)
{
+ struct hwloc_bitmap_s * set = hwloc_bitmap_alloc();
+ if (set)
+ set->infinite = 1;
+ return set;
+}
+
+void hwloc_bitmap_free(struct hwloc_bitmap_s * set)
+{
if (!set)
return;
- HWLOC__CPUSET_CHECK(set);
+ HWLOC__BITMAP_CHECK(set);
#ifdef HWLOC_DEBUG
set->magic = 0;
#endif
+ free(set->ulongs);
free(set);
}
-struct hwloc_cpuset_s * hwloc_cpuset_dup(const struct hwloc_cpuset_s * old)
+/* enlarge until it contains at least needed_count ulongs.
+ */
+static void
+hwloc_bitmap_enlarge_by_ulongs(struct hwloc_bitmap_s * set, unsigned needed_count)
{
- struct hwloc_cpuset_s * new;
+ unsigned tmp = 1 << hwloc_flsl((unsigned long) needed_count - 1);
+ if (tmp > set->ulongs_allocated) {
+ set->ulongs = realloc(set->ulongs, tmp * sizeof(unsigned long));
+ assert(set->ulongs);
+ set->ulongs_allocated = tmp;
+ }
+}
- HWLOC__CPUSET_CHECK(old);
+/* enlarge until it contains at least needed_count ulongs,
+ * and update new ulongs according to the infinite field.
+ */
+static void
+hwloc_bitmap_realloc_by_ulongs(struct hwloc_bitmap_s * set, unsigned needed_count)
+{
+ unsigned i;
- new = malloc(sizeof(*new));
+ HWLOC__BITMAP_CHECK(set);
+
+ if (needed_count <= set->ulongs_count)
+ return;
+
+ /* realloc larger if needed */
+ hwloc_bitmap_enlarge_by_ulongs(set, needed_count);
+
+ /* fill the newly allocated subset depending on the infinite flag */
+ for(i=set->ulongs_count; i<needed_count; i++)
+ set->ulongs[i] = set->infinite ? HWLOC_SUBBITMAP_FULL : HWLOC_SUBBITMAP_ZERO;
+ set->ulongs_count = needed_count;
+}
+
+/* realloc until it contains at least cpu+1 bits */
+#define hwloc_bitmap_realloc_by_cpu_index(set, cpu) hwloc_bitmap_realloc_by_ulongs(set, ((cpu)/HWLOC_BITS_PER_LONG)+1)
+
+/* reset a bitmap to exactely the needed size.
+ * the caller must reinitialize all ulongs and the infinite flag later.
+ */
+static void
+hwloc_bitmap_reset_by_ulongs(struct hwloc_bitmap_s * set, unsigned needed_count)
+{
+ hwloc_bitmap_enlarge_by_ulongs(set, needed_count);
+ set->ulongs_count = needed_count;
+}
+
+/* reset until it contains exactly cpu+1 bits (roundup to a ulong).
+ * the caller must reinitialize all ulongs and the infinite flag later.
+ */
+#define hwloc_bitmap_reset_by_cpu_index(set, cpu) hwloc_bitmap_reset_by_ulongs(set, ((cpu)/HWLOC_BITS_PER_LONG)+1)
+
+struct hwloc_bitmap_s * hwloc_bitmap_dup(const struct hwloc_bitmap_s * old)
+{
+ struct hwloc_bitmap_s * new;
+
+ HWLOC__BITMAP_CHECK(old);
+
+ new = malloc(sizeof(struct hwloc_bitmap_s));
if (!new)
return NULL;
- memcpy(new, old, sizeof(*new));
+ new->ulongs = malloc(old->ulongs_allocated * sizeof(unsigned long));
+ if (!new->ulongs) {
+ free(new);
+ return NULL;
+ }
+ new->ulongs_allocated = old->ulongs_allocated;
+ new->ulongs_count = old->ulongs_count;
+ memcpy(new->ulongs, old->ulongs, new->ulongs_count * sizeof(unsigned long));
+ new->infinite = old->infinite;
+#ifdef HWLOC_DEBUG
+ new->magic = HWLOC_BITMAP_MAGIC;
+#endif
return new;
}
-void hwloc_cpuset_copy(struct hwloc_cpuset_s * dst, const struct hwloc_cpuset_s * src)
+void hwloc_bitmap_copy(struct hwloc_bitmap_s * dst, const struct hwloc_bitmap_s * src)
{
- HWLOC__CPUSET_CHECK(dst);
- HWLOC__CPUSET_CHECK(src);
+ HWLOC__BITMAP_CHECK(dst);
+ HWLOC__BITMAP_CHECK(src);
- memcpy(dst, src, sizeof(*dst));
+ hwloc_bitmap_reset_by_ulongs(dst, src->ulongs_count);
+
+ memcpy(dst->ulongs, src->ulongs, src->ulongs_count * sizeof(unsigned long));
+ dst->infinite = src->infinite;
}
-int hwloc_cpuset_snprintf(char * __hwloc_restrict buf, size_t buflen, const struct hwloc_cpuset_s * __hwloc_restrict set)
+/* Strings always use 32bit groups */
+#define HWLOC_PRIxSUBBITMAP "%08lx"
+#define HWLOC_BITMAP_SUBSTRING_SIZE 32
+#define HWLOC_BITMAP_SUBSTRING_LENGTH (HWLOC_BITMAP_SUBSTRING_SIZE/4)
+#define HWLOC_BITMAP_STRING_PER_LONG (HWLOC_BITS_PER_LONG/HWLOC_BITMAP_SUBSTRING_SIZE)
+
+int hwloc_bitmap_snprintf(char * __hwloc_restrict buf, size_t buflen, const struct hwloc_bitmap_s * __hwloc_restrict set)
{
ssize_t size = buflen;
char *tmp = buf;
@@ -110,32 +218,51 @@
int i;
unsigned long accum = 0;
int accumed = 0;
-#if HWLOC_BITS_PER_LONG == HWLOC_CPUSET_SUBSTRING_SIZE
+#if HWLOC_BITS_PER_LONG == HWLOC_BITMAP_SUBSTRING_SIZE
const unsigned long accum_mask = ~0UL;
-#else /* HWLOC_BITS_PER_LONG != HWLOC_CPUSET_SUBSTRING_SIZE */
- const unsigned long accum_mask = ((1UL << HWLOC_CPUSET_SUBSTRING_SIZE) - 1) << (HWLOC_BITS_PER_LONG - HWLOC_CPUSET_SUBSTRING_SIZE);
-#endif /* HWLOC_BITS_PER_LONG != HWLOC_CPUSET_SUBSTRING_SIZE */
+#else /* HWLOC_BITS_PER_LONG != HWLOC_BITMAP_SUBSTRING_SIZE */
+ const unsigned long accum_mask = ((1UL << HWLOC_BITMAP_SUBSTRING_SIZE) - 1) << (HWLOC_BITS_PER_LONG - HWLOC_BITMAP_SUBSTRING_SIZE);
+#endif /* HWLOC_BITS_PER_LONG != HWLOC_BITMAP_SUBSTRING_SIZE */
- HWLOC__CPUSET_CHECK(set);
+ HWLOC__BITMAP_CHECK(set);
/* mark the end in case we do nothing later */
if (buflen > 0)
tmp[0] = '\0';
- i=HWLOC_CPUSUBSET_COUNT-1;
+ if (set->infinite) {
+ res = hwloc_snprintf(tmp, size, "0xf...f");
+ needcomma = 1;
+ if (res < 0)
+ return -1;
+ ret += res;
+ if (res >= size)
+ res = size>0 ? size - 1 : 0;
+ tmp += res;
+ size -= res;
+ }
+
+ if (!set->infinite && !set->ulongs_count) {
+ res = hwloc_snprintf(tmp, size, "0x0");
+ if (res < 0)
+ return -1;
+ return res;
+ }
+
+ i=set->ulongs_count-1;
while (i>=0 || accumed) {
/* Refill accumulator */
if (!accumed) {
- accum = set->s[i--];
+ accum = set->ulongs[i--];
accumed = HWLOC_BITS_PER_LONG;
}
if (accum & accum_mask) {
/* print the whole subset if not empty */
- res = hwloc_snprintf(tmp, size, needcomma ? ",0x" HWLOC_PRIxCPUSUBSET : "0x" HWLOC_PRIxCPUSUBSET,
- (accum & accum_mask) >> (HWLOC_BITS_PER_LONG - HWLOC_CPUSET_SUBSTRING_SIZE));
+ res = hwloc_snprintf(tmp, size, needcomma ? ",0x" HWLOC_PRIxSUBBITMAP : "0x" HWLOC_PRIxSUBBITMAP,
+ (accum & accum_mask) >> (HWLOC_BITS_PER_LONG - HWLOC_BITMAP_SUBSTRING_SIZE));
needcomma = 1;
- } else if (i == -1 && accumed == HWLOC_CPUSET_SUBSTRING_SIZE) {
+ } else if (i == -1 && accumed == HWLOC_BITMAP_SUBSTRING_SIZE) {
/* print a single 0 to mark the last subset */
res = hwloc_snprintf(tmp, size, needcomma ? ",0x0" : "0x0");
} else if (needcomma) {
@@ -147,12 +274,12 @@
return -1;
ret += res;
-#if HWLOC_BITS_PER_LONG == HWLOC_CPUSET_SUBSTRING_SIZE
+#if HWLOC_BITS_PER_LONG == HWLOC_BITMAP_SUBSTRING_SIZE
accum = 0;
accumed = 0;
#else
- accum <<= HWLOC_CPUSET_SUBSTRING_SIZE;
- accumed -= HWLOC_CPUSET_SUBSTRING_SIZE;
+ accum <<= HWLOC_BITMAP_SUBSTRING_SIZE;
+ accumed -= HWLOC_BITMAP_SUBSTRING_SIZE;
#endif
if (res >= size)
@@ -165,393 +292,665 @@
return ret;
}
-int hwloc_cpuset_asprintf(char ** strp, const struct hwloc_cpuset_s * __hwloc_restrict set)
+int hwloc_bitmap_asprintf(char ** strp, const struct hwloc_bitmap_s * __hwloc_restrict set)
{
int len;
char *buf;
- HWLOC__CPUSET_CHECK(set);
+ HWLOC__BITMAP_CHECK(set);
- len = hwloc_cpuset_snprintf(NULL, 0, set);
+ len = hwloc_bitmap_snprintf(NULL, 0, set);
buf = malloc(len+1);
*strp = buf;
- return hwloc_cpuset_snprintf(buf, len+1, set);
+ return hwloc_bitmap_snprintf(buf, len+1, set);
}
-int hwloc_cpuset_from_string(struct hwloc_cpuset_s *set, const char * __hwloc_restrict string)
+int hwloc_bitmap_sscanf(struct hwloc_bitmap_s *set, const char * __hwloc_restrict string)
{
const char * current = string;
- int count=0, i;
unsigned long accum = 0;
- int accumed = 0;
+ int count=0;
+ int infinite = 0;
- hwloc_cpuset_zero(set);
+ /* count how many substrings there are */
+ count++;
+ while ((current = strchr(current+1, ',')) != NULL)
+ count++;
+ current = string;
+ if (!strncmp("0xf...f,", current, 8)) {
+ infinite = 1;
+ current += 8;
+ count--;
+ }
+
+ hwloc_bitmap_reset_by_ulongs(set, (count + HWLOC_BITMAP_STRING_PER_LONG - 1) / HWLOC_BITMAP_STRING_PER_LONG);
+ set->infinite = 0;
+
while (*current != '\0') {
unsigned long val;
char *next;
val = strtoul(current, &next, 16);
- /* store subset in order, starting from the end */
-#if HWLOC_BITS_PER_LONG == HWLOC_CPUSET_SUBSTRING_SIZE
- accum = val;
-#else
- accum = (accum << HWLOC_CPUSET_SUBSTRING_SIZE) | val;
-#endif
- accumed += HWLOC_CPUSET_SUBSTRING_SIZE;
- if (accumed == HWLOC_BITS_PER_LONG) {
- set->s[HWLOC_CPUSUBSET_COUNT-1-count] = accum;
- count++;
+
+ assert(count > 0);
+ count--;
+
+ accum |= (val << ((count * HWLOC_BITMAP_SUBSTRING_SIZE) % HWLOC_BITS_PER_LONG));
+ if (!(count % HWLOC_BITMAP_STRING_PER_LONG)) {
+ set->ulongs[count / HWLOC_BITMAP_STRING_PER_LONG] = accum;
accum = 0;
- accumed = 0;
}
- if (*next != ',')
- break;
+
+ if (*next != ',') {
+ if (*next || count > 0)
+ goto failed;
+ else
+ break;
+ }
current = (const char*) next+1;
- if (count == HWLOC_CPUSUBSET_COUNT)
- break;
}
- /* move subsets back to the beginning and clear the missing subsets */
- for (i = 0; i < count; i++) {
- set->s[i] = accum;
- set->s[i] |= set->s[HWLOC_CPUSUBSET_COUNT-count+i] << accumed;
- if (accumed)
- accum = set->s[HWLOC_CPUSUBSET_COUNT-count+i] >> (HWLOC_BITS_PER_LONG - accumed);
- }
- /* Remaining bit from last iteration */
- if (accumed && count < HWLOC_CPUSUBSET_COUNT)
- set->s[i++] = accum;
- for( ; i<HWLOC_CPUSUBSET_COUNT; i++)
- set->s[i] = 0;
+ set->infinite = infinite; /* set at the end, to avoid spurious realloc with filled new ulongs */
return 0;
+
+ failed:
+ /* failure to parse */
+ hwloc_bitmap_zero(set);
+ return -1;
}
-void hwloc_cpuset_zero(struct hwloc_cpuset_s * set)
+int hwloc_bitmap_taskset_snprintf(char * __hwloc_restrict buf, size_t buflen, const struct hwloc_bitmap_s * __hwloc_restrict set)
{
- int i;
+ ssize_t size = buflen;
+ char *tmp = buf;
+ int res, ret = 0;
+ int started = 0;
+ int i;
- HWLOC__CPUSET_CHECK(set);
+ HWLOC__BITMAP_CHECK(set);
- for(i=0; i<HWLOC_CPUSUBSET_COUNT; i++)
- HWLOC_CPUSUBSET_SUBSET(*set,i) = HWLOC_CPUSUBSET_ZERO;
+ /* mark the end in case we do nothing later */
+ if (buflen > 0)
+ tmp[0] = '\0';
+
+ if (set->infinite) {
+ res = hwloc_snprintf(tmp, size, "0xf...f");
+ started = 1;
+ if (res < 0)
+ return -1;
+ ret += res;
+ if (res >= size)
+ res = size>0 ? size - 1 : 0;
+ tmp += res;
+ size -= res;
+ }
+
+ i=set->ulongs_count-1;
+ while (i>=0) {
+ unsigned long val = set->ulongs[i--];
+ if (started) {
+ /* print the whole subset */
+ res = hwloc_snprintf(tmp, size, "%08lx", val);
+ } else if (val) {
+ res = hwloc_snprintf(tmp, size, "0x%lx", val);
+ started = 1;
+ } else {
+ res = 0;
+ }
+ if (res < 0)
+ return -1;
+ ret += res;
+ if (res >= size)
+ res = size>0 ? size - 1 : 0;
+ tmp += res;
+ size -= res;
+ }
+
+ return ret;
}
-void hwloc_cpuset_fill(struct hwloc_cpuset_s * set)
+int hwloc_bitmap_taskset_asprintf(char ** strp, const struct hwloc_bitmap_s * __hwloc_restrict set)
{
- int i;
+ int len;
+ char *buf;
- HWLOC__CPUSET_CHECK(set);
+ HWLOC__BITMAP_CHECK(set);
- for(i=0; i<HWLOC_CPUSUBSET_COUNT; i++)
- HWLOC_CPUSUBSET_SUBSET(*set,i) = HWLOC_CPUSUBSET_FULL;
+ len = hwloc_bitmap_taskset_snprintf(NULL, 0, set);
+ buf = malloc(len+1);
+ *strp = buf;
+ return hwloc_bitmap_taskset_snprintf(buf, len+1, set);
}
-void hwloc_cpuset_from_ulong(struct hwloc_cpuset_s *set, unsigned long mask)
+int hwloc_bitmap_taskset_sscanf(struct hwloc_bitmap_s *set, const char * __hwloc_restrict string)
{
- int i;
+ const char * current = string;
+ int chars;
+ int count;
+ int infinite = 0;
- HWLOC__CPUSET_CHECK(set);
+ current = string;
+ if (!strncmp("0xf...f", current, 7)) {
+ infinite = 1;
+ current += 7;
+ } else if (!strncmp("0x", current, 2)) {
+ current += 2;
+ }
- HWLOC_CPUSUBSET_SUBSET(*set,0) = mask;
- for(i=1; i<HWLOC_CPUSUBSET_COUNT; i++)
- HWLOC_CPUSUBSET_SUBSET(*set,i) = HWLOC_CPUSUBSET_ZERO;
+ chars = strlen(current);
+ count = (chars * 4 + HWLOC_BITS_PER_LONG - 1) / HWLOC_BITS_PER_LONG;
+
+ hwloc_bitmap_reset_by_ulongs(set, count);
+ set->infinite = 0;
+
+ while (*current != '\0') {
+ int tmpchars;
+ char ustr[9];
+ unsigned long val;
+ char *next;
+
+ tmpchars = chars % 8;
+ if (!tmpchars)
+ tmpchars = 8;
+
+ memcpy(ustr, current, tmpchars);
+ ustr[tmpchars] = '\0';
+ val = strtoul(ustr, &next, 16);
+ if (*next != '\0')
+ goto failed;
+
+ set->ulongs[count-1] = val;
+
+ current += tmpchars;
+ chars -= tmpchars;
+ count--;
+ }
+
+ set->infinite = infinite; /* set at the end, to avoid spurious realloc with filled new ulongs */
+
+ return 0;
+
+ failed:
+ /* failure to parse */
+ hwloc_bitmap_zero(set);
+ return -1;
}
-void hwloc_cpuset_from_ith_ulong(struct hwloc_cpuset_s *set, unsigned i, unsigned long mask)
+static void hwloc_bitmap__zero(struct hwloc_bitmap_s *set)
{
+ unsigned i;
+ for(i=0; i<set->ulongs_count; i++)
+ set->ulongs[i] = HWLOC_SUBBITMAP_ZERO;
+ set->infinite = 0;
+}
+
+void hwloc_bitmap_zero(struct hwloc_bitmap_s * set)
+{
+ HWLOC__BITMAP_CHECK(set);
+
+ hwloc_bitmap_reset_by_ulongs(set, 0);
+ hwloc_bitmap__zero(set);
+}
+
+static void hwloc_bitmap__fill(struct hwloc_bitmap_s * set)
+{
+ unsigned i;
+ for(i=0; i<set->ulongs_count; i++)
+ set->ulongs[i] = HWLOC_SUBBITMAP_FULL;
+ set->infinite = 1;
+}
+
+void hwloc_bitmap_fill(struct hwloc_bitmap_s * set)
+{
+ HWLOC__BITMAP_CHECK(set);
+
+ hwloc_bitmap_reset_by_ulongs(set, 0);
+ hwloc_bitmap__fill(set);
+}
+
+void hwloc_bitmap_from_ulong(struct hwloc_bitmap_s *set, unsigned long mask)
+{
+ HWLOC__BITMAP_CHECK(set);
+
+ hwloc_bitmap_reset_by_ulongs(set, 1);
+ set->ulongs[0] = mask; /* there's always at least one ulong allocated */
+ set->infinite = 0;
+}
+
+void hwloc_bitmap_from_ith_ulong(struct hwloc_bitmap_s *set, unsigned i, unsigned long mask)
+{
unsigned j;
- HWLOC__CPUSET_CHECK(set);
+ HWLOC__BITMAP_CHECK(set);
- HWLOC_CPUSUBSET_SUBSET(*set,i) = mask;
- for(j=1; j<HWLOC_CPUSUBSET_COUNT; j++)
- if (j != i)
- HWLOC_CPUSUBSET_SUBSET(*set,j) = HWLOC_CPUSUBSET_ZERO;
+ hwloc_bitmap_reset_by_ulongs(set, i+1);
+ set->ulongs[i] = mask;
+ for(j=1; j<(unsigned) i; j++)
+ set->ulongs[j] = HWLOC_SUBBITMAP_ZERO;
+ set->infinite = 0;
}
-unsigned long hwloc_cpuset_to_ulong(const struct hwloc_cpuset_s *set)
+unsigned long hwloc_bitmap_to_ulong(const struct hwloc_bitmap_s *set)
{
- HWLOC__CPUSET_CHECK(set);
+ HWLOC__BITMAP_CHECK(set);
- return HWLOC_CPUSUBSET_SUBSET(*set,0);
+ return set->ulongs[0]; /* there's always at least one ulong allocated */
}
-unsigned long hwloc_cpuset_to_ith_ulong(const struct hwloc_cpuset_s *set, unsigned i)
+unsigned long hwloc_bitmap_to_ith_ulong(const struct hwloc_bitmap_s *set, unsigned i)
{
- HWLOC__CPUSET_CHECK(set);
+ HWLOC__BITMAP_CHECK(set);
- return HWLOC_CPUSUBSET_SUBSET(*set,i);
+ return HWLOC_SUBBITMAP_READULONG(set, i);
}
-void hwloc_cpuset_cpu(struct hwloc_cpuset_s * set, unsigned cpu)
+void hwloc_bitmap_only(struct hwloc_bitmap_s * set, unsigned cpu)
{
- HWLOC__CPUSET_CHECK(set);
+ unsigned index = HWLOC_SUBBITMAP_INDEX(cpu);
- hwloc_cpuset_zero(set);
- HWLOC_CPUSUBSET_CPUSUBSET(*set,cpu) |= HWLOC_CPUSUBSET_VAL(cpu);
+ HWLOC__BITMAP_CHECK(set);
+
+ hwloc_bitmap_reset_by_cpu_index(set, cpu);
+ hwloc_bitmap__zero(set);
+ set->ulongs[index] |= HWLOC_SUBBITMAP_CPU(cpu);
}
-void hwloc_cpuset_all_but_cpu(struct hwloc_cpuset_s * set, unsigned cpu)
+void hwloc_bitmap_allbut(struct hwloc_bitmap_s * set, unsigned cpu)
{
- HWLOC__CPUSET_CHECK(set);
+ unsigned index = HWLOC_SUBBITMAP_INDEX(cpu);
- hwloc_cpuset_fill(set);
- HWLOC_CPUSUBSET_CPUSUBSET(*set,cpu) &= ~HWLOC_CPUSUBSET_VAL(cpu);
+ HWLOC__BITMAP_CHECK(set);
+
+ hwloc_bitmap_reset_by_cpu_index(set, cpu);
+ hwloc_bitmap__fill(set);
+ set->ulongs[index] &= ~HWLOC_SUBBITMAP_CPU(cpu);
}
-void hwloc_cpuset_set(struct hwloc_cpuset_s * set, unsigned cpu)
+void hwloc_bitmap_set(struct hwloc_bitmap_s * set, unsigned cpu)
{
- HWLOC__CPUSET_CHECK(set);
+ unsigned index = HWLOC_SUBBITMAP_INDEX(cpu);
- HWLOC_CPUSUBSET_CPUSUBSET(*set,cpu) |= HWLOC_CPUSUBSET_VAL(cpu);
+ HWLOC__BITMAP_CHECK(set);
+
+ /* nothing to do if setting inside the infinite part of the bitmap */
+ if (set->infinite && cpu >= set->ulongs_count * HWLOC_BITS_PER_LONG)
+ return;
+
+ hwloc_bitmap_realloc_by_cpu_index(set, cpu);
+ set->ulongs[index] |= HWLOC_SUBBITMAP_CPU(cpu);
}
-void hwloc_cpuset_set_range(struct hwloc_cpuset_s * set, unsigned begincpu, unsigned endcpu)
+void hwloc_bitmap_set_range(struct hwloc_bitmap_s * set, unsigned begincpu, unsigned endcpu)
{
unsigned i;
+ unsigned beginset,endset;
- HWLOC__CPUSET_CHECK(set);
+ HWLOC__BITMAP_CHECK(set);
- for (i=begincpu; i<=endcpu; i++)
- HWLOC_CPUSUBSET_CPUSUBSET(*set,i) |= HWLOC_CPUSUBSET_VAL(i);
+ if (set->infinite) {
+ /* truncate the range according to the infinite part of the bitmap */
+ if (endcpu >= set->ulongs_count * HWLOC_BITS_PER_LONG)
+ endcpu = set->ulongs_count * HWLOC_BITS_PER_LONG - 1;
+ if (begincpu >= set->ulongs_count * HWLOC_BITS_PER_LONG)
+ return;
+ }
+ if (endcpu < begincpu)
+ return;
+ hwloc_bitmap_realloc_by_cpu_index(set, endcpu);
+
+ beginset = HWLOC_SUBBITMAP_INDEX(begincpu);
+ endset = HWLOC_SUBBITMAP_INDEX(endcpu);
+ for(i=beginset+1; i<endset; i++)
+ set->ulongs[i] = HWLOC_SUBBITMAP_FULL;
+ if (beginset == endset) {
+ set->ulongs[beginset] |= HWLOC_SUBBITMAP_ULBIT_FROMTO(HWLOC_SUBBITMAP_CPU_ULBIT(begincpu), HWLOC_SUBBITMAP_CPU_ULBIT(endcpu));
+ } else {
+ set->ulongs[beginset] |= HWLOC_SUBBITMAP_ULBIT_FROM(HWLOC_SUBBITMAP_CPU_ULBIT(begincpu));
+ set->ulongs[endset] |= HWLOC_SUBBITMAP_ULBIT_TO(HWLOC_SUBBITMAP_CPU_ULBIT(endcpu));
+ }
}
-void hwloc_cpuset_clr(struct hwloc_cpuset_s * set, unsigned cpu)
+void hwloc_bitmap_set_ith_ulong(struct hwloc_bitmap_s *set, unsigned i, unsigned long mask)
{
- HWLOC__CPUSET_CHECK(set);
+ HWLOC__BITMAP_CHECK(set);
- HWLOC_CPUSUBSET_CPUSUBSET(*set,cpu) &= ~HWLOC_CPUSUBSET_VAL(cpu);
+ hwloc_bitmap_realloc_by_ulongs(set, i+1);
+ set->ulongs[i] = mask;
}
-void hwloc_cpuset_clr_range(struct hwloc_cpuset_s * set, unsigned begincpu, unsigned endcpu)
+void hwloc_bitmap_clr(struct hwloc_bitmap_s * set, unsigned cpu)
{
+ unsigned index = HWLOC_SUBBITMAP_INDEX(cpu);
+
+ HWLOC__BITMAP_CHECK(set);
+
+ /* nothing to do if clearing inside the infinitely-unset part of the bitmap */
+ if (!set->infinite && cpu >= set->ulongs_count * HWLOC_BITS_PER_LONG)
+ return;
+
+ hwloc_bitmap_realloc_by_cpu_index(set, cpu);
+ set->ulongs[index] &= ~HWLOC_SUBBITMAP_CPU(cpu);
+}
+
+void hwloc_bitmap_clr_range(struct hwloc_bitmap_s * set, unsigned begincpu, unsigned endcpu)
+{
unsigned i;
+ unsigned beginset,endset;
- HWLOC__CPUSET_CHECK(set);
+ HWLOC__BITMAP_CHECK(set);
- for (i=begincpu; i<=endcpu; i++)
- HWLOC_CPUSUBSET_CPUSUBSET(*set,i) &= ~HWLOC_CPUSUBSET_VAL(i);
+ if (!set->infinite) {
+ /* truncate the range according to the infinitely-unset part of the bitmap */
+ if (endcpu >= set->ulongs_count * HWLOC_BITS_PER_LONG)
+ endcpu = set->ulongs_count * HWLOC_BITS_PER_LONG - 1;
+ if (begincpu >= set->ulongs_count * HWLOC_BITS_PER_LONG)
+ return;
+ }
+ if (endcpu < begincpu)
+ return;
+ hwloc_bitmap_realloc_by_cpu_index(set, endcpu);
+
+ beginset = HWLOC_SUBBITMAP_INDEX(begincpu);
+ endset = HWLOC_SUBBITMAP_INDEX(endcpu);
+ for(i=beginset+1; i<endset; i++)
+ set->ulongs[i] = HWLOC_SUBBITMAP_ZERO;
+ if (beginset == endset) {
+ set->ulongs[beginset] &= ~HWLOC_SUBBITMAP_ULBIT_FROMTO(HWLOC_SUBBITMAP_CPU_ULBIT(begincpu), HWLOC_SUBBITMAP_CPU_ULBIT(endcpu));
+ } else {
+ set->ulongs[beginset] &= ~HWLOC_SUBBITMAP_ULBIT_FROM(HWLOC_SUBBITMAP_CPU_ULBIT(begincpu));
+ set->ulongs[endset] &= ~HWLOC_SUBBITMAP_ULBIT_TO(HWLOC_SUBBITMAP_CPU_ULBIT(endcpu));
+ }
}
-int hwloc_cpuset_isset(const struct hwloc_cpuset_s * set, unsigned cpu)
+int hwloc_bitmap_isset(const struct hwloc_bitmap_s * set, unsigned cpu)
{
- HWLOC__CPUSET_CHECK(set);
+ unsigned index = HWLOC_SUBBITMAP_INDEX(cpu);
- return (HWLOC_CPUSUBSET_CPUSUBSET(*set,cpu) & HWLOC_CPUSUBSET_VAL(cpu)) != 0;
+ HWLOC__BITMAP_CHECK(set);
+
+ return (HWLOC_SUBBITMAP_READULONG(set, index) & HWLOC_SUBBITMAP_CPU(cpu)) != 0;
}
-int hwloc_cpuset_iszero(const struct hwloc_cpuset_s *set)
+int hwloc_bitmap_iszero(const struct hwloc_bitmap_s *set)
{
- int i;
+ unsigned i;
- HWLOC__CPUSET_CHECK(set);
+ HWLOC__BITMAP_CHECK(set);
- for(i=0; i<HWLOC_CPUSUBSET_COUNT; i++)
- if (HWLOC_CPUSUBSET_SUBSET(*set,i) != HWLOC_CPUSUBSET_ZERO)
+ if (set->infinite)
+ return 0;
+ for(i=0; i<set->ulongs_count; i++)
+ if (set->ulongs[i] != HWLOC_SUBBITMAP_ZERO)
return 0;
return 1;
}
-int hwloc_cpuset_isfull(const struct hwloc_cpuset_s *set)
+int hwloc_bitmap_isfull(const struct hwloc_bitmap_s *set)
{
- int i;
+ unsigned i;
- HWLOC__CPUSET_CHECK(set);
+ HWLOC__BITMAP_CHECK(set);
- for(i=0; i<HWLOC_CPUSUBSET_COUNT; i++)
- if (HWLOC_CPUSUBSET_SUBSET(*set,i) != HWLOC_CPUSUBSET_FULL)
+ if (!set->infinite)
+ return 0;
+ for(i=0; i<set->ulongs_count; i++)
+ if (set->ulongs[i] != HWLOC_SUBBITMAP_FULL)
return 0;
return 1;
}
-int hwloc_cpuset_isequal (const struct hwloc_cpuset_s *set1, const struct hwloc_cpuset_s *set2)
+int hwloc_bitmap_isequal (const struct hwloc_bitmap_s *set1, const struct hwloc_bitmap_s *set2)
{
- int i;
+ unsigned i;
- HWLOC__CPUSET_CHECK(set1);
- HWLOC__CPUSET_CHECK(set2);
+ HWLOC__BITMAP_CHECK(set1);
+ HWLOC__BITMAP_CHECK(set2);
- for(i=0; i<HWLOC_CPUSUBSET_COUNT; i++)
- if (HWLOC_CPUSUBSET_SUBSET(*set1,i) != HWLOC_CPUSUBSET_SUBSET(*set2,i))
+ for(i=0; i<set1->ulongs_count || i<set2->ulongs_count; i++)
+ if (HWLOC_SUBBITMAP_READULONG(set1, i) != HWLOC_SUBBITMAP_READULONG(set2, i))
return 0;
+
+ if (set1->infinite != set2->infinite)
+ return 0;
+
return 1;
}
-int hwloc_cpuset_intersects (const struct hwloc_cpuset_s *set1, const struct hwloc_cpuset_s *set2)
+int hwloc_bitmap_intersects (const struct hwloc_bitmap_s *set1, const struct hwloc_bitmap_s *set2)
{
- int i;
+ unsigned i;
- HWLOC__CPUSET_CHECK(set1);
- HWLOC__CPUSET_CHECK(set2);
+ HWLOC__BITMAP_CHECK(set1);
+ HWLOC__BITMAP_CHECK(set2);
- for(i=0; i<HWLOC_CPUSUBSET_COUNT; i++)
- if ((HWLOC_CPUSUBSET_SUBSET(*set1,i) & HWLOC_CPUSUBSET_SUBSET(*set2,i)) != HWLOC_CPUSUBSET_ZERO)
+ for(i=0; i<set1->ulongs_count || i<set2->ulongs_count; i++)
+ if ((HWLOC_SUBBITMAP_READULONG(set1, i) & HWLOC_SUBBITMAP_READULONG(set2, i)) != HWLOC_SUBBITMAP_ZERO)
return 1;
+
+ if (set1->infinite && set2->infinite)
+ return 0;
+
return 0;
}
-int hwloc_cpuset_isincluded (const struct hwloc_cpuset_s *sub_set, const struct hwloc_cpuset_s *super_set)
+int hwloc_bitmap_isincluded (const struct hwloc_bitmap_s *sub_set, const struct hwloc_bitmap_s *super_set)
{
- int i;
+ unsigned i;
- HWLOC__CPUSET_CHECK(sub_set);
- HWLOC__CPUSET_CHECK(super_set);
+ HWLOC__BITMAP_CHECK(sub_set);
+ HWLOC__BITMAP_CHECK(super_set);
- for(i=0; i<HWLOC_CPUSUBSET_COUNT; i++)
- if (HWLOC_CPUSUBSET_SUBSET(*super_set,i) != (HWLOC_CPUSUBSET_SUBSET(*super_set,i) | HWLOC_CPUSUBSET_SUBSET(*sub_set,i)))
+ for(i=0; i<sub_set->ulongs_count; i++)
+ if (HWLOC_SUBBITMAP_READULONG(super_set, i) != (HWLOC_SUBBITMAP_READULONG(super_set, i) | HWLOC_SUBBITMAP_READULONG(sub_set, i)))
return 0;
+
+ if (sub_set->infinite && !super_set->infinite)
+ return 0;
+
return 1;
}
-void hwloc_cpuset_or (struct hwloc_cpuset_s *res, const struct hwloc_cpuset_s *set1, const struct hwloc_cpuset_s *set2)
+void hwloc_bitmap_or (struct hwloc_bitmap_s *res, const struct hwloc_bitmap_s *set1, const struct hwloc_bitmap_s *set2)
{
- int i;
+ const struct hwloc_bitmap_s *largest = set1->ulongs_count > set2->ulongs_count ? set1 : set2;
+ unsigned i;
- HWLOC__CPUSET_CHECK(res);
- HWLOC__CPUSET_CHECK(set1);
- HWLOC__CPUSET_CHECK(set2);
+ HWLOC__BITMAP_CHECK(res);
+ HWLOC__BITMAP_CHECK(set1);
+ HWLOC__BITMAP_CHECK(set2);
- for(i=0; i<HWLOC_CPUSUBSET_COUNT; i++)
- HWLOC_CPUSUBSET_SUBSET(*res,i) = HWLOC_CPUSUBSET_SUBSET(*set1,i) | HWLOC_CPUSUBSET_SUBSET(*set2,i);
+ hwloc_bitmap_realloc_by_ulongs(res, largest->ulongs_count); /* cannot reset since the output may also be an input */
+
+ for(i=0; i<res->ulongs_count; i++)
+ res->ulongs[i] = HWLOC_SUBBITMAP_READULONG(set1, i) | HWLOC_SUBBITMAP_READULONG(set2, i);
+
+ res->infinite = set1->infinite || set2->infinite;
}
-void hwloc_cpuset_and (struct hwloc_cpuset_s *res, const struct hwloc_cpuset_s *set1, const struct hwloc_cpuset_s *set2)
+void hwloc_bitmap_and (struct hwloc_bitmap_s *res, const struct hwloc_bitmap_s *set1, const struct hwloc_bitmap_s *set2)
{
- int i;
+ const struct hwloc_bitmap_s *largest = set1->ulongs_count > set2->ulongs_count ? set1 : set2;
+ unsigned i;
- HWLOC__CPUSET_CHECK(res);
- HWLOC__CPUSET_CHECK(set1);
- HWLOC__CPUSET_CHECK(set2);
+ HWLOC__BITMAP_CHECK(res);
+ HWLOC__BITMAP_CHECK(set1);
+ HWLOC__BITMAP_CHECK(set2);
- for(i=0; i<HWLOC_CPUSUBSET_COUNT; i++)
- HWLOC_CPUSUBSET_SUBSET(*res,i) = HWLOC_CPUSUBSET_SUBSET(*set1,i) & HWLOC_CPUSUBSET_SUBSET(*set2,i);
+ hwloc_bitmap_realloc_by_ulongs(res, largest->ulongs_count); /* cannot reset since the output may also be an input */
+
+ for(i=0; i<res->ulongs_count; i++)
+ res->ulongs[i] = HWLOC_SUBBITMAP_READULONG(set1, i) & HWLOC_SUBBITMAP_READULONG(set2, i);
+
+ res->infinite = set1->infinite && set2->infinite;
}
-void hwloc_cpuset_andnot (struct hwloc_cpuset_s *res, const struct hwloc_cpuset_s *set1, const struct hwloc_cpuset_s *set2)
+void hwloc_bitmap_andnot (struct hwloc_bitmap_s *res, const struct hwloc_bitmap_s *set1, const struct hwloc_bitmap_s *set2)
{
- int i;
+ const struct hwloc_bitmap_s *largest = set1->ulongs_count > set2->ulongs_count ? set1 : set2;
+ unsigned i;
- HWLOC__CPUSET_CHECK(res);
- HWLOC__CPUSET_CHECK(set1);
- HWLOC__CPUSET_CHECK(set2);
+ HWLOC__BITMAP_CHECK(res);
+ HWLOC__BITMAP_CHECK(set1);
+ HWLOC__BITMAP_CHECK(set2);
- for(i=0; i<HWLOC_CPUSUBSET_COUNT; i++)
- HWLOC_CPUSUBSET_SUBSET(*res,i) = HWLOC_CPUSUBSET_SUBSET(*set1,i) & ~HWLOC_CPUSUBSET_SUBSET(*set2,i);
+ hwloc_bitmap_realloc_by_ulongs(res, largest->ulongs_count); /* cannot reset since the output may also be an input */
+
+ for(i=0; i<res->ulongs_count; i++)
+ res->ulongs[i] = HWLOC_SUBBITMAP_READULONG(set1, i) & ~HWLOC_SUBBITMAP_READULONG(set2, i);
+
+ res->infinite = set1->infinite && !set2->infinite;
}
-void hwloc_cpuset_xor (struct hwloc_cpuset_s *res, const struct hwloc_cpuset_s *set1, const struct hwloc_cpuset_s *set2)
+void hwloc_bitmap_xor (struct hwloc_bitmap_s *res, const struct hwloc_bitmap_s *set1, const struct hwloc_bitmap_s *set2)
{
- int i;
+ const struct hwloc_bitmap_s *largest = set1->ulongs_count > set2->ulongs_count ? set1 : set2;
+ unsigned i;
- HWLOC__CPUSET_CHECK(res);
- HWLOC__CPUSET_CHECK(set1);
- HWLOC__CPUSET_CHECK(set2);
+ HWLOC__BITMAP_CHECK(res);
+ HWLOC__BITMAP_CHECK(set1);
+ HWLOC__BITMAP_CHECK(set2);
- for(i=0; i<HWLOC_CPUSUBSET_COUNT; i++)
- HWLOC_CPUSUBSET_SUBSET(*res,i) = HWLOC_CPUSUBSET_SUBSET(*set1,i) ^ HWLOC_CPUSUBSET_SUBSET(*set2,i);
+ hwloc_bitmap_realloc_by_ulongs(res, largest->ulongs_count); /* cannot reset since the output may also be an input */
+
+ for(i=0; i<res->ulongs_count; i++)
+ res->ulongs[i] = HWLOC_SUBBITMAP_READULONG(set1, i) ^ HWLOC_SUBBITMAP_READULONG(set2, i);
+
+ res->infinite = (!set1->infinite) != (!set2->infinite);
}
-void hwloc_cpuset_not (struct hwloc_cpuset_s *res, const struct hwloc_cpuset_s *set)
+void hwloc_bitmap_not (struct hwloc_bitmap_s *res, const struct hwloc_bitmap_s *set)
{
- int i;
+ unsigned i;
- HWLOC__CPUSET_CHECK(res);
- HWLOC__CPUSET_CHECK(set);
+ HWLOC__BITMAP_CHECK(res);
+ HWLOC__BITMAP_CHECK(set);
- for(i=0; i<HWLOC_CPUSUBSET_COUNT; i++)
- HWLOC_CPUSUBSET_SUBSET(*res,i) = ~HWLOC_CPUSUBSET_SUBSET(*set,i);
+ hwloc_bitmap_realloc_by_ulongs(res, set->ulongs_count); /* cannot reset since the output may also be an input */
+
+ for(i=0; i<res->ulongs_count; i++)
+ res->ulongs[i] = ~HWLOC_SUBBITMAP_READULONG(set, i);
+
+ res->infinite = !set->infinite;
}
-int hwloc_cpuset_first(const struct hwloc_cpuset_s * set)
+int hwloc_bitmap_first(const struct hwloc_bitmap_s * set)
{
- int i;
+ unsigned i;
- HWLOC__CPUSET_CHECK(set);
+ HWLOC__BITMAP_CHECK(set);
- for(i=0; i<HWLOC_CPUSUBSET_COUNT; i++) {
+ for(i=0; i<set->ulongs_count; i++) {
/* subsets are unsigned longs, use ffsl */
- unsigned long w = HWLOC_CPUSUBSET_SUBSET(*set,i);
+ unsigned long w = set->ulongs[i];
if (w)
- return hwloc_ffsl(w) - 1 + HWLOC_CPUSUBSET_SIZE*i;
+ return hwloc_ffsl(w) - 1 + HWLOC_BITS_PER_LONG*i;
}
+ if (set->infinite)
+ return set->ulongs_count * HWLOC_BITS_PER_LONG;
+
return -1;
}
-int hwloc_cpuset_last(const struct hwloc_cpuset_s * set)
+int hwloc_bitmap_last(const struct hwloc_bitmap_s * set)
{
int i;
- HWLOC__CPUSET_CHECK(set);
+ HWLOC__BITMAP_CHECK(set);
- for(i=HWLOC_CPUSUBSET_COUNT-1; i>=0; i--) {
+ if (set->infinite)
+ return -1;
+
+ for(i=set->ulongs_count-1; i>=0; i--) {
/* subsets are unsigned longs, use flsl */
- unsigned long w = HWLOC_CPUSUBSET_SUBSET(*set,i);
+ unsigned long w = set->ulongs[i];
if (w)
- return hwloc_flsl(w) - 1 + HWLOC_CPUSUBSET_SIZE*i;
+ return hwloc_flsl(w) - 1 + HWLOC_BITS_PER_LONG*i;
}
return -1;
}
-int hwloc_cpuset_next(const struct hwloc_cpuset_s * set, unsigned prev_cpu)
+int hwloc_bitmap_next(const struct hwloc_bitmap_s * set, unsigned prev_cpu)
{
- unsigned i = HWLOC_CPUSUBSET_INDEX(prev_cpu + 1);
+ unsigned i = HWLOC_SUBBITMAP_INDEX(prev_cpu + 1);
- HWLOC__CPUSET_CHECK(set);
+ HWLOC__BITMAP_CHECK(set);
- for(; i<HWLOC_CPUSUBSET_COUNT; i++) {
+ if (i >= set->ulongs_count) {
+ if (set->infinite)
+ return prev_cpu + 1;
+ else
+ return -1;
+ }
+
+ for(; i<set->ulongs_count; i++) {
/* subsets are unsigned longs, use ffsl */
- unsigned long w = HWLOC_CPUSUBSET_SUBSET(*set,i);
+ unsigned long w = set->ulongs[i];
/* if the prev cpu is in the same word as the possible next one,
we need to mask out previous cpus */
- if (HWLOC_CPUSUBSET_INDEX(prev_cpu) == i)
- w &= ~((HWLOC_CPUSUBSET_VAL(prev_cpu) << 1) - 1);
+ if (HWLOC_SUBBITMAP_INDEX(prev_cpu) == i)
+ w &= ~HWLOC_SUBBITMAP_ULBIT_TO(HWLOC_SUBBITMAP_CPU_ULBIT(prev_cpu));
if (w)
- return hwloc_ffsl(w) - 1 + HWLOC_CPUSUBSET_SIZE*i;
+ return hwloc_ffsl(w) - 1 + HWLOC_BITS_PER_LONG*i;
}
+ if (set->infinite)
+ return set->ulongs_count * HWLOC_BITS_PER_LONG;
+
return -1;
}
-void hwloc_cpuset_singlify(struct hwloc_cpuset_s * set)
+void hwloc_bitmap_singlify(struct hwloc_bitmap_s * set)
{
- int i,found = 0;
+ unsigned i;
+ int found = 0;
- HWLOC__CPUSET_CHECK(set);
+ HWLOC__BITMAP_CHECK(set);
- for(i=0; i<HWLOC_CPUSUBSET_COUNT; i++) {
+ for(i=0; i<set->ulongs_count; i++) {
if (found) {
- HWLOC_CPUSUBSET_SUBSET(*set,i) = HWLOC_CPUSUBSET_ZERO;
+ set->ulongs[i] = HWLOC_SUBBITMAP_ZERO;
continue;
} else {
/* subsets are unsigned longs, use ffsl */
- unsigned long w = HWLOC_CPUSUBSET_SUBSET(*set,i);
+ unsigned long w = set->ulongs[i];
if (w) {
int _ffs = hwloc_ffsl(w);
- HWLOC_CPUSUBSET_SUBSET(*set,i) = HWLOC_CPUSUBSET_VAL(_ffs-1);
+ set->ulongs[i] = HWLOC_SUBBITMAP_CPU(_ffs-1);
found = 1;
}
}
}
+
+ if (set->infinite) {
+ if (found) {
+ set->infinite = 0;
+ } else {
+ /* set the first non allocated bit */
+ unsigned first = set->ulongs_count * HWLOC_BITS_PER_LONG;
+ set->infinite = 0; /* do not let realloc fill the newly allocated sets */
+ hwloc_bitmap_set(set, first);
+ }
+ }
}
-int hwloc_cpuset_compare_first(const struct hwloc_cpuset_s * set1, const struct hwloc_cpuset_s * set2)
+int hwloc_bitmap_compare_first(const struct hwloc_bitmap_s * set1, const struct hwloc_bitmap_s * set2)
{
- int i;
+ unsigned i;
- HWLOC__CPUSET_CHECK(set1);
- HWLOC__CPUSET_CHECK(set2);
+ HWLOC__BITMAP_CHECK(set1);
+ HWLOC__BITMAP_CHECK(set2);
- for(i=0; i<HWLOC_CPUSUBSET_COUNT; i++) {
- unsigned long w1 = HWLOC_CPUSUBSET_SUBSET(*set1,i);
- unsigned long w2 = HWLOC_CPUSUBSET_SUBSET(*set2,i);
+ for(i=0; i<set1->ulongs_count || i<set2->ulongs_count; i++) {
+ unsigned long w1 = HWLOC_SUBBITMAP_READULONG(set1, i);
+ unsigned long w2 = HWLOC_SUBBITMAP_READULONG(set2, i);
if (w1 || w2) {
- int _ffs1 = hwloc_ffsl(HWLOC_CPUSUBSET_SUBSET(*set1,i));
- int _ffs2 = hwloc_ffsl(HWLOC_CPUSUBSET_SUBSET(*set2,i));
+ int _ffs1 = hwloc_ffsl(w1);
+ int _ffs2 = hwloc_ffsl(w2);
/* if both have a bit set, compare for real */
if (_ffs1 && _ffs2)
return _ffs1-_ffs2;
@@ -559,32 +958,142 @@
return _ffs2-_ffs1;
}
}
+ if ((!set1->infinite) != (!set2->infinite))
+ return !!set1->infinite - !!set2->infinite;
return 0;
}
-int hwloc_cpuset_compare(const struct hwloc_cpuset_s * set1, const struct hwloc_cpuset_s * set2)
+int hwloc_bitmap_compare(const struct hwloc_bitmap_s * set1, const struct hwloc_bitmap_s * set2)
{
+ const struct hwloc_bitmap_s *largest = set1->ulongs_count > set2->ulongs_count ? set1 : set2;
int i;
- HWLOC__CPUSET_CHECK(set1);
- HWLOC__CPUSET_CHECK(set2);
+ HWLOC__BITMAP_CHECK(set1);
+ HWLOC__BITMAP_CHECK(set2);
- for(i=HWLOC_CPUSUBSET_COUNT-1; i>=0; i--) {
- if (HWLOC_CPUSUBSET_SUBSET(*set1,i) == HWLOC_CPUSUBSET_SUBSET(*set2,i))
+ if ((!set1->infinite) != (!set2->infinite))
+ return !!set1->infinite - !!set2->infinite;
+
+ for(i=largest->ulongs_count-1; i>=0; i--) {
+ unsigned long val1 = HWLOC_SUBBITMAP_READULONG(set1, (unsigned) i);
+ unsigned long val2 = HWLOC_SUBBITMAP_READULONG(set2, (unsigned) i);
+ if (val1 == val2)
continue;
- return HWLOC_CPUSUBSET_SUBSET(*set1,i) < HWLOC_CPUSUBSET_SUBSET(*set2,i) ? -1 : 1;
+ return val1 < val2 ? -1 : 1;
}
+
return 0;
}
-int hwloc_cpuset_weight(const struct hwloc_cpuset_s * set)
+int hwloc_bitmap_weight(const struct hwloc_bitmap_s * set)
{
int weight = 0;
- int i;
+ unsigned i;
- HWLOC__CPUSET_CHECK(set);
+ HWLOC__BITMAP_CHECK(set);
- for(i=0; i<HWLOC_CPUSUBSET_COUNT; i++)
- weight += hwloc_weight_long(HWLOC_CPUSUBSET_SUBSET(*set,i));
+ if (set->infinite)
+ return -1;
+
+ for(i=0; i<set->ulongs_count; i++)
+ weight += hwloc_weight_long(set->ulongs[i]);
return weight;
}
+
+
+/********************************************************************
+ * everything below should be dropped when hwloc/cpuset.h is dropped
+ */
+
+/* for HWLOC_DECLSPEC */
+#include <hwloc/config.h>
+
+/* forward declarations (public headers do not export this API anymore) */
+HWLOC_DECLSPEC struct hwloc_bitmap_s * hwloc_cpuset_alloc(void);
+HWLOC_DECLSPEC void hwloc_cpuset_free(struct hwloc_bitmap_s * set);
+HWLOC_DECLSPEC struct hwloc_bitmap_s * hwloc_cpuset_dup(const struct hwloc_bitmap_s * old);
+HWLOC_DECLSPEC void hwloc_cpuset_copy(struct hwloc_bitmap_s * dst, const struct hwloc_bitmap_s * src);
+HWLOC_DECLSPEC int hwloc_cpuset_snprintf(char * __hwloc_restrict buf, size_t buflen, const struct hwloc_bitmap_s * __hwloc_restrict set);
+HWLOC_DECLSPEC int hwloc_cpuset_asprintf(char ** strp, const struct hwloc_bitmap_s * __hwloc_restrict set);
+HWLOC_DECLSPEC int hwloc_cpuset_from_string(struct hwloc_bitmap_s *set, const char * __hwloc_restrict string);
+HWLOC_DECLSPEC int hwloc_cpuset_taskset_snprintf(char * __hwloc_restrict buf, size_t buflen, const struct hwloc_bitmap_s * __hwloc_restrict set);
+HWLOC_DECLSPEC int hwloc_cpuset_taskset_asprintf(char ** strp, const struct hwloc_bitmap_s * __hwloc_restrict set);
+HWLOC_DECLSPEC int hwloc_cpuset_taskset_sscanf(struct hwloc_bitmap_s *set, const char * __hwloc_restrict string);
+HWLOC_DECLSPEC void hwloc_cpuset_zero(struct hwloc_bitmap_s * set);
+HWLOC_DECLSPEC void hwloc_cpuset_fill(struct hwloc_bitmap_s * set);
+HWLOC_DECLSPEC void hwloc_cpuset_from_ulong(struct hwloc_bitmap_s *set, unsigned long mask);
+HWLOC_DECLSPEC void hwloc_cpuset_from_ith_ulong(struct hwloc_bitmap_s *set, unsigned i, unsigned long mask);
+HWLOC_DECLSPEC unsigned long hwloc_cpuset_to_ulong(const struct hwloc_bitmap_s *set);
+HWLOC_DECLSPEC unsigned long hwloc_cpuset_to_ith_ulong(const struct hwloc_bitmap_s *set, unsigned i);
+HWLOC_DECLSPEC void hwloc_cpuset_cpu(struct hwloc_bitmap_s * set, unsigned cpu);
+HWLOC_DECLSPEC void hwloc_cpuset_all_but_cpu(struct hwloc_bitmap_s * set, unsigned cpu);
+HWLOC_DECLSPEC void hwloc_cpuset_set(struct hwloc_bitmap_s * set, unsigned cpu);
+HWLOC_DECLSPEC void hwloc_cpuset_set_range(struct hwloc_bitmap_s * set, unsigned begincpu, unsigned endcpu);
+HWLOC_DECLSPEC void hwloc_cpuset_set_ith_ulong(struct hwloc_bitmap_s *set, unsigned i, unsigned long mask);
+HWLOC_DECLSPEC void hwloc_cpuset_clr(struct hwloc_bitmap_s * set, unsigned cpu);
+HWLOC_DECLSPEC void hwloc_cpuset_clr_range(struct hwloc_bitmap_s * set, unsigned begincpu, unsigned endcpu);
+HWLOC_DECLSPEC int hwloc_cpuset_isset(const struct hwloc_bitmap_s * set, unsigned cpu);
+HWLOC_DECLSPEC int hwloc_cpuset_iszero(const struct hwloc_bitmap_s *set);
+HWLOC_DECLSPEC int hwloc_cpuset_isfull(const struct hwloc_bitmap_s *set);
+HWLOC_DECLSPEC int hwloc_cpuset_isequal(const struct hwloc_bitmap_s *set1, const struct hwloc_bitmap_s *set2);
+HWLOC_DECLSPEC int hwloc_cpuset_intersects(const struct hwloc_bitmap_s *set1, const struct hwloc_bitmap_s *set2);
+HWLOC_DECLSPEC int hwloc_cpuset_isincluded(const struct hwloc_bitmap_s *sub_set, const struct hwloc_bitmap_s *super_set);
+HWLOC_DECLSPEC void hwloc_cpuset_or(struct hwloc_bitmap_s *res, const struct hwloc_bitmap_s *set1, const struct hwloc_bitmap_s *set2);
+HWLOC_DECLSPEC void hwloc_cpuset_and(struct hwloc_bitmap_s *res, const struct hwloc_bitmap_s *set1, const struct hwloc_bitmap_s *set2);
+HWLOC_DECLSPEC void hwloc_cpuset_andnot(struct hwloc_bitmap_s *res, const struct hwloc_bitmap_s *set1, const struct hwloc_bitmap_s *set2);
+HWLOC_DECLSPEC void hwloc_cpuset_xor(struct hwloc_bitmap_s *res, const struct hwloc_bitmap_s *set1, const struct hwloc_bitmap_s *set2);
+HWLOC_DECLSPEC void hwloc_cpuset_not(struct hwloc_bitmap_s *res, const struct hwloc_bitmap_s *set);
+HWLOC_DECLSPEC int hwloc_cpuset_first(const struct hwloc_bitmap_s * set);
+HWLOC_DECLSPEC int hwloc_cpuset_last(const struct hwloc_bitmap_s * set);
+HWLOC_DECLSPEC int hwloc_cpuset_next(const struct hwloc_bitmap_s * set, unsigned prev_cpu);
+HWLOC_DECLSPEC void hwloc_cpuset_singlify(struct hwloc_bitmap_s * set);
+HWLOC_DECLSPEC int hwloc_cpuset_compare_first(const struct hwloc_bitmap_s * set1, const struct hwloc_bitmap_s * set2);
+HWLOC_DECLSPEC int hwloc_cpuset_compare(const struct hwloc_bitmap_s * set1, const struct hwloc_bitmap_s * set2);
+HWLOC_DECLSPEC int hwloc_cpuset_weight(const struct hwloc_bitmap_s * set);
+
+/* actual symbols converting from cpuset ABI into bitmap ABI */
+struct hwloc_bitmap_s * hwloc_cpuset_alloc(void) { return hwloc_bitmap_alloc(); }
+void hwloc_cpuset_free(struct hwloc_bitmap_s * set) { hwloc_bitmap_free(set); }
+struct hwloc_bitmap_s * hwloc_cpuset_dup(const struct hwloc_bitmap_s * old) { return hwloc_bitmap_dup(old); }
+void hwloc_cpuset_copy(struct hwloc_bitmap_s * dst, const struct hwloc_bitmap_s * src) { hwloc_bitmap_copy(dst, src); }
+int hwloc_cpuset_snprintf(char * __hwloc_restrict buf, size_t buflen, const struct hwloc_bitmap_s * __hwloc_restrict set) { return hwloc_bitmap_snprintf(buf, buflen, set); }
+int hwloc_cpuset_asprintf(char ** strp, const struct hwloc_bitmap_s * __hwloc_restrict set) { return hwloc_bitmap_asprintf(strp, set); }
+int hwloc_cpuset_from_string(struct hwloc_bitmap_s *set, const char * __hwloc_restrict string) { return hwloc_bitmap_sscanf(set, string); }
+int hwloc_cpuset_taskset_snprintf(char * __hwloc_restrict buf, size_t buflen, const struct hwloc_bitmap_s * __hwloc_restrict set) { return hwloc_bitmap_taskset_snprintf(buf, buflen, set); }
+int hwloc_cpuset_taskset_asprintf(char ** strp, const struct hwloc_bitmap_s * __hwloc_restrict set) { return hwloc_bitmap_taskset_asprintf(strp, set); }
+int hwloc_cpuset_taskset_sscanf(struct hwloc_bitmap_s *set, const char * __hwloc_restrict string) { return hwloc_bitmap_taskset_sscanf(set, string); }
+void hwloc_cpuset_zero(struct hwloc_bitmap_s * set) { hwloc_bitmap_zero(set); }
+void hwloc_cpuset_fill(struct hwloc_bitmap_s * set) { hwloc_bitmap_fill(set); }
+void hwloc_cpuset_from_ulong(struct hwloc_bitmap_s *set, unsigned long mask) { hwloc_bitmap_from_ulong(set, mask); }
+void hwloc_cpuset_from_ith_ulong(struct hwloc_bitmap_s *set, unsigned i, unsigned long mask) { hwloc_bitmap_from_ith_ulong(set, i, mask); }
+unsigned long hwloc_cpuset_to_ulong(const struct hwloc_bitmap_s *set) { return hwloc_bitmap_to_ulong(set); }
+unsigned long hwloc_cpuset_to_ith_ulong(const struct hwloc_bitmap_s *set, unsigned i) { return hwloc_bitmap_to_ith_ulong(set, i); }
+void hwloc_cpuset_cpu(struct hwloc_bitmap_s * set, unsigned cpu) { hwloc_bitmap_only(set, cpu); }
+void hwloc_cpuset_all_but_cpu(struct hwloc_bitmap_s * set, unsigned cpu) { hwloc_bitmap_allbut(set, cpu); }
+void hwloc_cpuset_set(struct hwloc_bitmap_s * set, unsigned cpu) { hwloc_bitmap_set(set, cpu); }
+void hwloc_cpuset_set_range(struct hwloc_bitmap_s * set, unsigned begincpu, unsigned endcpu) { hwloc_bitmap_set_range(set, begincpu, endcpu); }
+void hwloc_cpuset_set_ith_ulong(struct hwloc_bitmap_s *set, unsigned i, unsigned long mask) { hwloc_bitmap_set_ith_ulong(set, i, mask); }
+void hwloc_cpuset_clr(struct hwloc_bitmap_s * set, unsigned cpu) { hwloc_bitmap_clr(set, cpu); }
+void hwloc_cpuset_clr_range(struct hwloc_bitmap_s * set, unsigned begincpu, unsigned endcpu) { hwloc_bitmap_clr_range(set, begincpu, endcpu); }
+int hwloc_cpuset_isset(const struct hwloc_bitmap_s * set, unsigned cpu) { return hwloc_bitmap_isset(set, cpu); }
+int hwloc_cpuset_iszero(const struct hwloc_bitmap_s *set) { return hwloc_bitmap_iszero(set); }
+int hwloc_cpuset_isfull(const struct hwloc_bitmap_s *set) { return hwloc_bitmap_isfull(set); }
+int hwloc_cpuset_isequal(const struct hwloc_bitmap_s *set1, const struct hwloc_bitmap_s *set2) { return hwloc_bitmap_isequal(set1, set2); }
+int hwloc_cpuset_intersects(const struct hwloc_bitmap_s *set1, const struct hwloc_bitmap_s *set2) { return hwloc_bitmap_intersects(set1, set2); }
+int hwloc_cpuset_isincluded(const struct hwloc_bitmap_s *sub_set, const struct hwloc_bitmap_s *super_set) { return hwloc_bitmap_isincluded(sub_set, super_set); }
+void hwloc_cpuset_or(struct hwloc_bitmap_s *res, const struct hwloc_bitmap_s *set1, const struct hwloc_bitmap_s *set2) { hwloc_bitmap_or(res, set1, set2); }
+void hwloc_cpuset_and(struct hwloc_bitmap_s *res, const struct hwloc_bitmap_s *set1, const struct hwloc_bitmap_s *set2) { hwloc_bitmap_and(res, set1, set2); }
+void hwloc_cpuset_andnot(struct hwloc_bitmap_s *res, const struct hwloc_bitmap_s *set1, const struct hwloc_bitmap_s *set2) { hwloc_bitmap_andnot(res, set1, set2); }
+void hwloc_cpuset_xor(struct hwloc_bitmap_s *res, const struct hwloc_bitmap_s *set1, const struct hwloc_bitmap_s *set2) { hwloc_bitmap_xor(res, set1, set2); }
+void hwloc_cpuset_not(struct hwloc_bitmap_s *res, const struct hwloc_bitmap_s *set) { hwloc_bitmap_not(res, set); }
+int hwloc_cpuset_first(const struct hwloc_bitmap_s * set) { return hwloc_bitmap_first(set); }
+int hwloc_cpuset_last(const struct hwloc_bitmap_s * set) { return hwloc_bitmap_last(set); }
+int hwloc_cpuset_next(const struct hwloc_bitmap_s * set, unsigned prev_cpu) { return hwloc_bitmap_next(set, prev_cpu); }
+void hwloc_cpuset_singlify(struct hwloc_bitmap_s * set) { hwloc_bitmap_singlify(set); }
+int hwloc_cpuset_compare_first(const struct hwloc_bitmap_s * set1, const struct hwloc_bitmap_s * set2) { return hwloc_bitmap_compare_first(set1, set2); }
+int hwloc_cpuset_compare(const struct hwloc_bitmap_s * set1, const struct hwloc_bitmap_s * set2) { return hwloc_bitmap_compare(set1, set2); }
+int hwloc_cpuset_weight(const struct hwloc_bitmap_s * set) { return hwloc_bitmap_weight(set); }
+
+/*
+ * end of everything to be dropped when hwloc/cpuset.h is dropped
+ *****************************************************************/
Modified: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/src/dolib.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/src/dolib.c 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/src/dolib.c 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,5 +1,7 @@
/*
- * Copyright © 2009 CNRS, INRIA, Université Bordeaux 1
+ * Copyright © 2009 CNRS
+ * Copyright © 2009 INRIA
+ * Copyright © 2009 Université Bordeaux 1
* See COPYING in top-level directory.
*/
Modified: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/src/hwloc.dtd
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/src/hwloc.dtd 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/src/hwloc.dtd 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,15 +1,14 @@
<!ELEMENT topology (object)+>
<!ELEMENT root (object)+>
-<!ELEMENT object (page_type*,object*)>
+<!ELEMENT object (page_type*,info*,object*)>
<!ATTLIST object type (System | Machine | Misc | Group | NUMANode | Socket| Cache | Core | PU) #REQUIRED>
<!ATTLIST object os_level CDATA "-1" >
<!ATTLIST object os_index CDATA "-1" >
<!ATTLIST object name CDATA "" >
-<!ATTLIST object dmi_board_vendor CDATA "" >
-<!ATTLIST object dmi_board_name CDATA "" >
<!ATTLIST object local_memory CDATA "0" >
<!ATTLIST object cache_size CDATA "0" >
+<!ATTLIST object cache_linesize CDATA "0" >
<!ATTLIST object huge_page_size_kB CDATA "0" >
<!ATTLIST object huge_page_free CDATA "0" >
<!ATTLIST object depth CDATA "-1" >
@@ -24,3 +23,7 @@
<!ELEMENT page_type EMPTY>
<!ATTLIST page_type size CDATA #REQUIRED>
<!ATTLIST page_type count CDATA #REQUIRED>
+
+<!ELEMENT info EMPTY>
+<!ATTLIST info name CDATA #REQUIRED>
+<!ATTLIST info value CDATA #REQUIRED>
Modified: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/src/misc.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/src/misc.c 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/src/misc.c 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,5 +1,7 @@
/*
- * Copyright © 2009 CNRS, INRIA, Université Bordeaux 1
+ * Copyright © 2009 CNRS
+ * Copyright © 2009-2010 INRIA
+ * Copyright © 2009-2010 Université Bordeaux 1
* Copyright © 2009-2010 Cisco Systems, Inc. All rights reserved.
* See COPYING in top-level directory.
*/
@@ -8,6 +10,9 @@
#include <private/misc.h>
#include <stdarg.h>
+#ifdef HAVE_SYS_UTSNAME_H
+#include <sys/utsname.h>
+#endif
#include <stdlib.h>
#include <stdio.h>
#include <errno.h>
@@ -65,3 +70,19 @@
}
return i < n;
}
+
+void hwloc_add_uname_info(struct hwloc_topology *topology __hwloc_attribute_unused)
+{
+#ifdef HAVE_UNAME
+ struct utsname utsname;
+
+ if (uname(&utsname) < 0)
+ return;
+
+ hwloc_add_object_info(topology->levels[0][0], "OSName", utsname.sysname);
+ hwloc_add_object_info(topology->levels[0][0], "OSRelease", utsname.release);
+ hwloc_add_object_info(topology->levels[0][0], "OSVersion", utsname.version);
+ hwloc_add_object_info(topology->levels[0][0], "HostName", utsname.nodename);
+ hwloc_add_object_info(topology->levels[0][0], "Architecture", utsname.machine);
+#endif /* HAVE_UNAME */
+}
Modified: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/src/topology-aix.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/src/topology-aix.c 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/src/topology-aix.c 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,5 +1,7 @@
/*
- * Copyright © 2009 CNRS, INRIA, Université Bordeaux 1
+ * Copyright © 2009 CNRS
+ * Copyright © 2009-2010 INRIA
+ * Copyright © 2009-2010 Université Bordeaux 1
* See COPYING in top-level directory.
*/
@@ -23,74 +25,248 @@
#include <sys/rset.h>
#include <sys/processor.h>
#include <sys/thread.h>
+#include <sys/mman.h>
static int
-hwloc_aix_set_sth_cpubind(hwloc_topology_t topology, rstype_t what, rsid_t who, hwloc_const_cpuset_t hwloc_set, int policy __hwloc_attribute_unused)
+hwloc_aix_set_sth_cpubind(hwloc_topology_t topology, rstype_t what, rsid_t who, hwloc_const_bitmap_t hwloc_set, int flags __hwloc_attribute_unused)
{
- rsethandle_t rset, rad;
- hwloc_obj_t obj;
- int res = -1;
+ rsethandle_t rad;
+ int res;
+ unsigned cpu;
+ if (flags & HWLOC_CPUBIND_NOMEMBIND) {
+ errno = ENOSYS;
+ return -1;
+ }
+
/* The resulting binding is always strict */
- if (hwloc_cpuset_isequal(hwloc_set, hwloc_topology_get_complete_cpuset(topology))) {
+ if (hwloc_bitmap_isequal(hwloc_set, hwloc_topology_get_complete_cpuset(topology))) {
if (ra_detachrset(what, who, 0))
return -1;
return 0;
}
- obj = hwloc_get_first_largest_obj_inside_cpuset(topology, hwloc_set);
- if (!hwloc_cpuset_isequal(obj->cpuset, hwloc_set) || obj->os_level == -1) {
- /* Does not correspond to exactly one radset, not possible */
- errno = EXDEV;
+ rad = rs_alloc(RS_EMPTY);
+ hwloc_bitmap_foreach_begin(cpu, hwloc_set)
+ rs_op(RS_ADDRESOURCE, rad, NULL, R_PROCS, cpu);
+ hwloc_bitmap_foreach_end();
+
+ res = ra_attachrset(what, who, rad, 0);
+
+ rs_free(rad);
+ return res;
+}
+
+static int
+hwloc_aix_get_sth_cpubind(hwloc_topology_t topology, rstype_t what, rsid_t who, hwloc_bitmap_t hwloc_set, int flags __hwloc_attribute_unused)
+{
+ rsethandle_t rset;
+ unsigned cpu, maxcpus;
+ int res = -1;
+
+ rset = rs_alloc(RS_EMPTY);
+
+ if (ra_getrset(what, who, 0, rset) == -1)
+ goto out;
+
+ hwloc_bitmap_zero(hwloc_set);
+ maxcpus = rs_getinfo(rset, R_MAXPROCS, 0);
+ for (cpu = 0; cpu < maxcpus; cpu++)
+ if (rs_op(RS_TESTRESOURCE, rset, NULL, R_PROCS, cpu) == 1)
+ hwloc_bitmap_set(hwloc_set, cpu);
+ hwloc_bitmap_and(hwloc_set, hwloc_set, hwloc_topology_get_complete_cpuset(topology));
+ res = 0;
+
+out:
+ rs_free(rset);
+ return res;
+}
+
+static int
+hwloc_aix_set_thisproc_cpubind(hwloc_topology_t topology, hwloc_const_bitmap_t hwloc_set, int flags)
+{
+ rsid_t who = { .at_pid = getpid() };
+ return hwloc_aix_set_sth_cpubind(topology, R_PROCESS, who, hwloc_set, flags);
+}
+
+static int
+hwloc_aix_get_thisproc_cpubind(hwloc_topology_t topology, hwloc_bitmap_t hwloc_set, int flags)
+{
+ rsid_t who = { .at_pid = getpid() };
+ return hwloc_aix_get_sth_cpubind(topology, R_PROCESS, who, hwloc_set, flags);
+}
+
+static int
+hwloc_aix_set_thisthread_cpubind(hwloc_topology_t topology, hwloc_const_bitmap_t hwloc_set, int flags)
+{
+ rsid_t who = { .at_tid = thread_self() };
+ return hwloc_aix_set_sth_cpubind(topology, R_THREAD, who, hwloc_set, flags);
+}
+
+static int
+hwloc_aix_get_thisthread_cpubind(hwloc_topology_t topology, hwloc_bitmap_t hwloc_set, int flags)
+{
+ rsid_t who = { .at_tid = thread_self() };
+ return hwloc_aix_get_sth_cpubind(topology, R_THREAD, who, hwloc_set, flags);
+}
+
+static int
+hwloc_aix_set_proc_cpubind(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_const_bitmap_t hwloc_set, int flags)
+{
+ rsid_t who = { .at_pid = pid };
+ return hwloc_aix_set_sth_cpubind(topology, R_PROCESS, who, hwloc_set, flags);
+}
+
+static int
+hwloc_aix_get_proc_cpubind(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_bitmap_t hwloc_set, int flags)
+{
+ rsid_t who = { .at_pid = pid };
+ return hwloc_aix_get_sth_cpubind(topology, R_PROCESS, who, hwloc_set, flags);
+}
+
+#ifdef HWLOC_HAVE_PTHREAD_GETTHRDS_NP
+static int
+hwloc_aix_set_thread_cpubind(hwloc_topology_t topology, hwloc_thread_t pthread, hwloc_const_bitmap_t hwloc_set, int flags)
+{
+ struct __pthrdsinfo info;
+ int size;
+ if ((errno = pthread_getthrds_np(&pthread, PTHRDSINFO_QUERY_TID, &info, sizeof(info), NULL, &size)))
return -1;
+ {
+ rsid_t who = { .at_tid = info.__pi_tid };
+ return hwloc_aix_set_sth_cpubind(topology, R_THREAD, who, hwloc_set, flags);
}
+}
+static int
+hwloc_aix_get_thread_cpubind(hwloc_topology_t topology, hwloc_thread_t pthread, hwloc_bitmap_t hwloc_set, int flags)
+{
+ struct __pthrdsinfo info;
+ int size;
+ if (pthread_getthrds_np(&pthread, PTHRDSINFO_QUERY_TID, &info, sizeof(info), NULL, &size))
+ return -1;
+ {
+ rsid_t who = { .at_tid = info.__pi_tid };
+ return hwloc_aix_get_sth_cpubind(topology, R_THREAD, who, hwloc_set, flags);
+ }
+}
+#endif /* HWLOC_HAVE_PTHREAD_GETTHRDS_NP */
+
+#ifdef P_DEFAULT
+
+static int
+hwloc_aix_membind_policy_from_hwloc(uint_t *aix_policy, int policy)
+{
+ switch (policy) {
+ case HWLOC_MEMBIND_DEFAULT:
+ case HWLOC_MEMBIND_BIND:
+ *aix_policy = P_DEFAULT;
+ break;
+ case HWLOC_MEMBIND_FIRSTTOUCH:
+ *aix_policy = P_FIRST_TOUCH;
+ break;
+ case HWLOC_MEMBIND_INTERLEAVE:
+ *aix_policy = P_BALANCED;
+ break;
+ default:
+ errno = ENOSYS;
+ return -1;
+ }
+ return 0;
+}
+
+static int
+hwloc_aix_prepare_membind(hwloc_topology_t topology, rsethandle_t *rad, hwloc_const_nodeset_t nodeset, int flags __hwloc_attribute_unused)
+{
+ rsethandle_t rset, noderad;
+ int MCMlevel;
+ int node;
+
+ MCMlevel = rs_getinfo(NULL, R_MCMSDL, 0);
if ((topology->flags & HWLOC_TOPOLOGY_FLAG_WHOLE_SYSTEM))
rset = rs_alloc(RS_ALL);
else
rset = rs_alloc(RS_PARTITION);
- rad = rs_alloc(RS_EMPTY);
- if (rs_getrad(rset, rad, obj->os_level, obj->os_index, 0)) {
- fprintf(stderr,"rs_getrad(%d,%u) failed: %s\n", obj->os_level, obj->os_index, strerror(errno));
- goto out;
- }
+ *rad = rs_alloc(RS_EMPTY);
+ noderad = rs_alloc(RS_EMPTY);
- /* TODO: memory binding and policy (P_DEFAULT / P_FIRST_TOUCH / P_BALANCED)
- * ra_mmap to allocation on an rset
- */
+ hwloc_bitmap_foreach_begin(node, nodeset)
+ rs_getrad(rset, noderad, MCMlevel, node, 0);
+ rs_op(RS_UNION, noderad, *rad, 0, 0);
+ hwloc_bitmap_foreach_end();
- if (ra_attachrset(what, who, rad, 0)) {
- res = -1;
- goto out;
+ rs_free(rset);
+ rs_free(noderad);
+
+ return 0;
+}
+
+static int
+hwloc_aix_set_sth_membind(hwloc_topology_t topology, rstype_t what, rsid_t who, hwloc_const_bitmap_t nodeset, hwloc_membind_policy_t policy, int flags)
+{
+ rsethandle_t rad;
+ int res;
+
+ if (flags & HWLOC_MEMBIND_NOCPUBIND) {
+ errno = ENOSYS;
+ return -1;
}
- res = 0;
+ switch (policy) {
+ case HWLOC_MEMBIND_DEFAULT:
+ case HWLOC_MEMBIND_BIND:
+ break;
+ default:
+ errno = ENOSYS;
+ return -1;
+ }
-out:
- rs_free(rset);
+ if (hwloc_aix_prepare_membind(topology, &rad, nodeset, flags))
+ return -1;
+
+ res = ra_attachrset(what, who, rad, 0);
+
rs_free(rad);
return res;
}
static int
-hwloc_aix_get_sth_cpubind(hwloc_topology_t topology, rstype_t what, rsid_t who, hwloc_cpuset_t hwloc_set, int policy __hwloc_attribute_unused)
+hwloc_aix_get_sth_membind(hwloc_topology_t topology, rstype_t what, rsid_t who, hwloc_bitmap_t nodeset, hwloc_membind_policy_t *policy, int flags __hwloc_attribute_unused)
{
+ hwloc_bitmap_t hwloc_set;
rsethandle_t rset;
unsigned cpu, maxcpus;
int res = -1;
+ int depth, n, i;
+ depth = hwloc_get_type_depth(topology, HWLOC_OBJ_NODE);
+ if (depth < 0) {
+ errno = EXDEV;
+ return -1;
+ }
+ n = hwloc_get_nbobjs_by_depth(topology, depth);
+
rset = rs_alloc(RS_EMPTY);
if (ra_getrset(what, who, 0, rset) == -1)
goto out;
- hwloc_cpuset_zero(hwloc_set);
+ hwloc_set = hwloc_bitmap_alloc();
maxcpus = rs_getinfo(rset, R_MAXPROCS, 0);
for (cpu = 0; cpu < maxcpus; cpu++)
if (rs_op(RS_TESTRESOURCE, rset, NULL, R_PROCS, cpu) == 1)
- hwloc_cpuset_set(hwloc_set, cpu);
- hwloc_cpuset_and(hwloc_set, hwloc_set, hwloc_topology_get_complete_cpuset(topology));
+ hwloc_bitmap_set(hwloc_set, cpu);
+ hwloc_bitmap_and(hwloc_set, hwloc_set, hwloc_topology_get_complete_cpuset(topology));
+
+ hwloc_bitmap_zero(nodeset);
+ for (i = 0; i < n; i++) {
+ hwloc_obj_t obj = hwloc_get_obj_by_depth(topology, depth, i);
+ if (hwloc_bitmap_isincluded(obj->cpuset, hwloc_set))
+ hwloc_bitmap_set(nodeset, obj->os_index);
+ }
+
+ *policy = HWLOC_MEMBIND_DEFAULT;
res = 0;
out:
@@ -99,50 +275,50 @@
}
static int
-hwloc_aix_set_thisproc_cpubind(hwloc_topology_t topology, hwloc_const_cpuset_t hwloc_set, int policy)
+hwloc_aix_set_thisproc_membind(hwloc_topology_t topology, hwloc_const_bitmap_t hwloc_set, hwloc_membind_policy_t policy, int flags)
{
rsid_t who = { .at_pid = getpid() };
- return hwloc_aix_set_sth_cpubind(topology, R_PROCESS, who, hwloc_set, policy);
+ return hwloc_aix_set_sth_membind(topology, R_PROCESS, who, hwloc_set, policy, flags);
}
static int
-hwloc_aix_get_thisproc_cpubind(hwloc_topology_t topology, hwloc_cpuset_t hwloc_set, int policy)
+hwloc_aix_get_thisproc_membind(hwloc_topology_t topology, hwloc_bitmap_t hwloc_set, hwloc_membind_policy_t *policy, int flags)
{
rsid_t who = { .at_pid = getpid() };
- return hwloc_aix_get_sth_cpubind(topology, R_PROCESS, who, hwloc_set, policy);
+ return hwloc_aix_get_sth_membind(topology, R_PROCESS, who, hwloc_set, policy, flags);
}
static int
-hwloc_aix_set_thisthread_cpubind(hwloc_topology_t topology, hwloc_const_cpuset_t hwloc_set, int policy)
+hwloc_aix_set_thisthread_membind(hwloc_topology_t topology, hwloc_const_bitmap_t hwloc_set, hwloc_membind_policy_t policy, int flags)
{
rsid_t who = { .at_tid = thread_self() };
- return hwloc_aix_set_sth_cpubind(topology, R_THREAD, who, hwloc_set, policy);
+ return hwloc_aix_set_sth_membind(topology, R_THREAD, who, hwloc_set, policy, flags);
}
static int
-hwloc_aix_get_thisthread_cpubind(hwloc_topology_t topology, hwloc_cpuset_t hwloc_set, int policy)
+hwloc_aix_get_thisthread_membind(hwloc_topology_t topology, hwloc_bitmap_t hwloc_set, hwloc_membind_policy_t *policy, int flags)
{
rsid_t who = { .at_tid = thread_self() };
- return hwloc_aix_get_sth_cpubind(topology, R_THREAD, who, hwloc_set, policy);
+ return hwloc_aix_get_sth_membind(topology, R_THREAD, who, hwloc_set, policy, flags);
}
static int
-hwloc_aix_set_proc_cpubind(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_const_cpuset_t hwloc_set, int policy)
+hwloc_aix_set_proc_membind(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_const_bitmap_t hwloc_set, hwloc_membind_policy_t policy, int flags)
{
rsid_t who = { .at_pid = pid };
- return hwloc_aix_set_sth_cpubind(topology, R_PROCESS, who, hwloc_set, policy);
+ return hwloc_aix_set_sth_membind(topology, R_PROCESS, who, hwloc_set, policy, flags);
}
static int
-hwloc_aix_get_proc_cpubind(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_cpuset_t hwloc_set, int policy)
+hwloc_aix_get_proc_membind(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_bitmap_t hwloc_set, hwloc_membind_policy_t *policy, int flags)
{
rsid_t who = { .at_pid = pid };
- return hwloc_aix_get_sth_cpubind(topology, R_PROCESS, who, hwloc_set, policy);
+ return hwloc_aix_get_sth_membind(topology, R_PROCESS, who, hwloc_set, policy, flags);
}
-#ifdef HWLOC_HAVE_PTHREAD_GETTHRDS_NP
+#if 0 /* def HWLOC_HAVE_PTHREAD_GETTHRDS_NP */
static int
-hwloc_aix_set_thread_cpubind(hwloc_topology_t topology, hwloc_thread_t pthread, hwloc_const_cpuset_t hwloc_set, int policy)
+hwloc_aix_set_thread_membind(hwloc_topology_t topology, hwloc_thread_t pthread, hwloc_const_bitmap_t hwloc_set, hwloc_membind_policy_t policy, int flags)
{
struct __pthrdsinfo info;
int size;
@@ -150,12 +326,12 @@
return -1;
{
rsid_t who = { .at_tid = info.__pi_tid };
- return hwloc_aix_set_sth_cpubind(topology, R_THREAD, who, hwloc_set, policy);
+ return hwloc_aix_set_sth_membind(topology, R_THREAD, who, hwloc_set, policy, flags);
}
}
static int
-hwloc_aix_get_thread_cpubind(hwloc_topology_t topology, hwloc_thread_t pthread, hwloc_cpuset_t hwloc_set, int policy)
+hwloc_aix_get_thread_membind(hwloc_topology_t topology, hwloc_thread_t pthread, hwloc_bitmap_t hwloc_set, hwloc_membind_policy_t *policy, int flags)
{
struct __pthrdsinfo info;
int size;
@@ -163,11 +339,72 @@
return -1;
{
rsid_t who = { .at_tid = info.__pi_tid };
- return hwloc_aix_get_sth_cpubind(topology, R_THREAD, who, hwloc_set, policy);
+ return hwloc_aix_get_sth_membind(topology, R_THREAD, who, hwloc_set, policy, flags);
}
}
#endif /* HWLOC_HAVE_PTHREAD_GETTHRDS_NP */
+#if 0
+/* TODO: seems to be right, but doesn't seem to be working (EINVAL), even after
+ * aligning the range on 64K... */
+static int
+hwloc_aix_set_area_membind(hwloc_topology_t topology, const void *addr, size_t len, hwloc_const_nodeset_t nodeset, hwloc_membind_policy_t policy, int flags)
+{
+ subrange_t subrange;
+ rsid_t rsid = { .at_subrange = &subrange };
+ uint_t aix_policy;
+ int ret;
+ fprintf(stderr,"yop\n");
+
+ if ((flags & (HWLOC_MEMBIND_MIGRATE|HWLOC_MEMBIND_STRICT))
+ == (HWLOC_MEMBIND_MIGRATE|HWLOC_MEMBIND_STRICT)) {
+ errno = ENOSYS;
+ return -1;
+ }
+
+ subrange.su_offset = (uintptr_t) addr;
+ subrange.su_length = len;
+ subrange.su_rstype = R_RSET;
+
+ if (hwloc_aix_membind_policy_from_hwloc(&aix_policy, policy))
+ return -1;
+
+ if (hwloc_aix_prepare_membind(topology, &subrange.su_rsid.at_rset, nodeset, flags))
+ return -1;
+
+ subrange.su_policy = aix_policy;
+
+ ret = ra_attachrset(R_SUBRANGE, rsid, subrange.su_rsid.at_rset, 0);
+ rs_free(subrange.su_rsid.at_rset);
+ return ret;
+}
+#endif
+
+static void *
+hwloc_aix_alloc_membind(hwloc_topology_t topology, size_t len, hwloc_const_nodeset_t nodeset, hwloc_membind_policy_t policy, int flags)
+{
+ void *ret;
+ rsid_t rsid;
+ uint_t aix_policy;
+
+ if (hwloc_aix_membind_policy_from_hwloc(&aix_policy, policy))
+ return hwloc_alloc_or_fail(topology, len, flags);
+
+ if (hwloc_aix_prepare_membind(topology, &rsid.at_rset, nodeset, flags))
+ return hwloc_alloc_or_fail(topology, len, flags);
+
+ ret = ra_mmap(NULL, len, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0, R_RSET, rsid, aix_policy);
+
+ rs_free(rsid.at_rset);
+ return ret;
+}
+
+static int
+hwloc_aix_free_membind(hwloc_topology_t topology __hwloc_attribute_unused, void *addr, size_t len) {
+ return munmap(addr, len);
+}
+#endif /* P_DEFAULT */
+
static void
look_rset(int sdl, hwloc_obj_type_t type, struct hwloc_topology *topology, int level)
{
@@ -198,12 +435,12 @@
/* It seems logical processors are numbered from 1 here, while the
* bindprocessor functions numbers them from 0... */
obj = hwloc_alloc_setup_object(type, i - (type == HWLOC_OBJ_PU));
- obj->cpuset = hwloc_cpuset_alloc();
+ obj->cpuset = hwloc_bitmap_alloc();
obj->os_level = sdl;
switch(type) {
case HWLOC_OBJ_NODE:
- obj->nodeset = hwloc_cpuset_alloc();
- hwloc_cpuset_set(obj->nodeset, i);
+ obj->nodeset = hwloc_bitmap_alloc();
+ hwloc_bitmap_set(obj->nodeset, i);
obj->memory.local_memory = 0; /* TODO: odd, rs_getinfo(rad, R_MEMSIZE, 0) << 10 returns the total memory ... */
obj->memory.page_types_len = 2;
obj->memory.page_types = malloc(2*sizeof(*obj->memory.page_types));
@@ -216,6 +453,7 @@
break;
case HWLOC_OBJ_CACHE:
obj->attr->cache.size = 0; /* TODO: ? */
+ obj->attr->cache.linesize = 0; /* TODO: ? */
obj->attr->cache.depth = 2;
break;
case HWLOC_OBJ_GROUP:
@@ -226,9 +464,9 @@
maxcpus = rs_getinfo(rad, R_MAXPROCS, 0);
for (j = 0; j < maxcpus; j++) {
if (rs_op(RS_TESTRESOURCE, rad, NULL, R_PROCS, j))
- hwloc_cpuset_set(obj->cpuset, j);
+ hwloc_bitmap_set(obj->cpuset, j);
}
- hwloc_debug_2args_cpuset("%s %d has cpuset %s\n",
+ hwloc_debug_2args_bitmap("%s %d has cpuset %s\n",
hwloc_obj_type_string(type),
i, obj->cpuset);
hwloc_insert_object_by_cpuset(topology, obj);
@@ -296,6 +534,8 @@
look_rset(i, HWLOC_OBJ_GROUP, topology, i);
}
}
+
+ hwloc_add_object_info(topology->levels[0][0], "Backend", "AIX");
}
void
@@ -311,4 +551,25 @@
topology->get_thisproc_cpubind = hwloc_aix_get_thisproc_cpubind;
topology->set_thisthread_cpubind = hwloc_aix_set_thisthread_cpubind;
topology->get_thisthread_cpubind = hwloc_aix_get_thisthread_cpubind;
+#ifdef P_DEFAULT
+ topology->set_proc_membind = hwloc_aix_set_proc_membind;
+ topology->get_proc_membind = hwloc_aix_get_proc_membind;
+#if 0 /* def HWLOC_HAVE_PTHREAD_GETTHRDS_NP */
+ /* Does it really make sense to set the memory binding of another thread? */
+ topology->set_thread_membind = hwloc_aix_set_thread_membind;
+ topology->get_thread_membind = hwloc_aix_get_thread_membind;
+#endif /* HWLOC_HAVE_PTHREAD_GETTHRDS_NP */
+ topology->set_thisproc_membind = hwloc_aix_set_thisproc_membind;
+ topology->get_thisproc_membind = hwloc_aix_get_thisproc_membind;
+ topology->set_thisthread_membind = hwloc_aix_set_thisthread_membind;
+ topology->get_thisthread_membind = hwloc_aix_get_thisthread_membind;
+ //topology->set_area_membind = hwloc_aix_set_area_membind;
+ /* get_area_membind is not available */
+ topology->alloc_membind = hwloc_aix_alloc_membind;
+ topology->alloc = hwloc_alloc_mmap;
+ topology->free_membind = hwloc_aix_free_membind;
+ topology->support.membind->firsttouch_membind = 1;
+ topology->support.membind->bind_membind = 1;
+ topology->support.membind->interleave_membind = 1;
+#endif /* P_DEFAULT */
}
Modified: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/src/topology-darwin.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/src/topology-darwin.c 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/src/topology-darwin.c 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,5 +1,7 @@
/*
- * Copyright © 2009 CNRS, INRIA, Université Bordeaux 1
+ * Copyright © 2009 CNRS
+ * Copyright © 2009-2010 INRIA
+ * Copyright © 2009-2010 Université Bordeaux 1
* Copyright © 2009 Cisco Systems, Inc. All rights reserved.
* See COPYING in top-level directory.
*/
@@ -31,6 +33,7 @@
size_t size;
int64_t l1cachesize;
int64_t l2cachesize;
+ int64_t cachelinesize;
int64_t memsize;
if (hwloc_get_sysctlbyname("hw.ncpu", &_nprocs) || _nprocs <= 0)
@@ -60,11 +63,11 @@
if (nprocs == npackages * logical_per_package)
for (i = 0; i < npackages; i++) {
obj = hwloc_alloc_setup_object(HWLOC_OBJ_SOCKET, i);
- obj->cpuset = hwloc_cpuset_alloc();
+ obj->cpuset = hwloc_bitmap_alloc();
for (cpu = i*logical_per_package; cpu < (i+1)*logical_per_package; cpu++)
- hwloc_cpuset_set(obj->cpuset, cpu);
+ hwloc_bitmap_set(obj->cpuset, cpu);
- hwloc_debug_1arg_cpuset("package %u has cpuset %s\n",
+ hwloc_debug_1arg_bitmap("package %u has cpuset %s\n",
i, obj->cpuset);
hwloc_insert_object_by_cpuset(topology, obj);
}
@@ -76,13 +79,13 @@
if (!(logical_per_package % cores_per_package))
for (i = 0; i < npackages * cores_per_package; i++) {
obj = hwloc_alloc_setup_object(HWLOC_OBJ_CORE, i);
- obj->cpuset = hwloc_cpuset_alloc();
+ obj->cpuset = hwloc_bitmap_alloc();
for (cpu = i*(logical_per_package/cores_per_package);
cpu < (i+1)*(logical_per_package/cores_per_package);
cpu++)
- hwloc_cpuset_set(obj->cpuset, cpu);
+ hwloc_bitmap_set(obj->cpuset, cpu);
- hwloc_debug_1arg_cpuset("core %u has cpuset %s\n",
+ hwloc_debug_1arg_bitmap("core %u has cpuset %s\n",
i, obj->cpuset);
hwloc_insert_object_by_cpuset(topology, obj);
}
@@ -95,6 +98,9 @@
if (hwloc_get_sysctlbyname("hw.l2cachesize", &l2cachesize))
l2cachesize = 0;
+ if (hwloc_get_sysctlbyname("hw.cachelinesize", &cachelinesize))
+ cachelinesize = 0;
+
if (hwloc_get_sysctlbyname("hw.memsize", &memsize))
memsize = 0;
@@ -140,22 +146,23 @@
for (j = 0; j < (nprocs / cacheconfig[i]); j++) {
obj = hwloc_alloc_setup_object(i?HWLOC_OBJ_CACHE:HWLOC_OBJ_NODE, j);
if (!i) {
- obj->nodeset = hwloc_cpuset_alloc();
- hwloc_cpuset_set(obj->nodeset, j);
+ obj->nodeset = hwloc_bitmap_alloc();
+ hwloc_bitmap_set(obj->nodeset, j);
}
- obj->cpuset = hwloc_cpuset_alloc();
+ obj->cpuset = hwloc_bitmap_alloc();
for (cpu = j*cacheconfig[i];
cpu < ((j+1)*cacheconfig[i]);
cpu++)
- hwloc_cpuset_set(obj->cpuset, cpu);
+ hwloc_bitmap_set(obj->cpuset, cpu);
if (i) {
- hwloc_debug_2args_cpuset("L%ucache %u has cpuset %s\n",
+ hwloc_debug_2args_bitmap("L%ucache %u has cpuset %s\n",
i, j, obj->cpuset);
obj->attr->cache.depth = i;
obj->attr->cache.size = cachesize[i];
+ obj->attr->cache.linesize = cachelinesize;
} else {
- hwloc_debug_1arg_cpuset("node %u has cpuset %s\n",
+ hwloc_debug_1arg_bitmap("node %u has cpuset %s\n",
j, obj->cpuset);
obj->memory.local_memory = cachesize[i];
obj->memory.page_types_len = 2;
@@ -175,6 +182,8 @@
/* add PU objects */
hwloc_setup_pu_level(topology, nprocs);
+
+ hwloc_add_object_info(topology->levels[0][0], "Backend", "Darwin");
}
void
Modified: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/src/topology-freebsd.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/src/topology-freebsd.c 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/src/topology-freebsd.c 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,5 +1,7 @@
/*
- * Copyright © 2009 CNRS, INRIA, Université Bordeaux 1
+ * Copyright © 2009 CNRS
+ * Copyright © 2009-2010 INRIA
+ * Copyright © 2009-2010 Université Bordeaux 1
* See COPYING in top-level directory.
*/
@@ -23,27 +25,27 @@
#ifdef HAVE_SYS_CPUSET_H
static void
-hwloc_freebsd_bsd2hwloc(hwloc_cpuset_t hwloc_cpuset, const cpuset_t *cpuset)
+hwloc_freebsd_bsd2hwloc(hwloc_bitmap_t hwloc_cpuset, const cpuset_t *cpuset)
{
unsigned cpu;
- hwloc_cpuset_zero(hwloc_cpuset);
- for (cpu = 0; cpu < HWLOC_NBMAXCPUS && cpu < CPU_SETSIZE; cpu++)
+ hwloc_bitmap_zero(hwloc_cpuset);
+ for (cpu = 0; cpu < CPU_SETSIZE; cpu++)
if (CPU_ISSET(cpu, cpuset))
- hwloc_cpuset_set(hwloc_cpuset, cpu);
+ hwloc_bitmap_set(hwloc_cpuset, cpu);
}
static void
-hwloc_freebsd_hwloc2bsd(hwloc_const_cpuset_t hwloc_cpuset, cpuset_t *cpuset)
+hwloc_freebsd_hwloc2bsd(hwloc_const_bitmap_t hwloc_cpuset, cpuset_t *cpuset)
{
unsigned cpu;
CPU_ZERO(cpuset);
- for (cpu = 0; cpu < HWLOC_NBMAXCPUS && cpu < CPU_SETSIZE; cpu++)
- if (hwloc_cpuset_isset(hwloc_cpuset, cpu))
+ for (cpu = 0; cpu < CPU_SETSIZE; cpu++)
+ if (hwloc_bitmap_isset(hwloc_cpuset, cpu))
CPU_SET(cpu, cpuset);
}
static int
-hwloc_freebsd_set_sth_affinity(hwloc_topology_t topology __hwloc_attribute_unused, cpulevel_t level, cpuwhich_t which, id_t id, hwloc_const_cpuset_t hwloc_cpuset, int policy __hwloc_attribute_unused)
+hwloc_freebsd_set_sth_affinity(hwloc_topology_t topology __hwloc_attribute_unused, cpulevel_t level, cpuwhich_t which, id_t id, hwloc_const_bitmap_t hwloc_cpuset, int flags __hwloc_attribute_unused)
{
cpuset_t cpuset;
@@ -56,7 +58,7 @@
}
static int
-hwloc_freebsd_get_sth_affinity(hwloc_topology_t topology __hwloc_attribute_unused, cpulevel_t level, cpuwhich_t which, id_t id, hwloc_cpuset_t hwloc_cpuset, int policy __hwloc_attribute_unused)
+hwloc_freebsd_get_sth_affinity(hwloc_topology_t topology __hwloc_attribute_unused, cpulevel_t level, cpuwhich_t which, id_t id, hwloc_bitmap_t hwloc_cpuset, int flags __hwloc_attribute_unused)
{
cpuset_t cpuset;
@@ -68,39 +70,39 @@
}
static int
-hwloc_freebsd_set_thisproc_cpubind(hwloc_topology_t topology, hwloc_const_cpuset_t hwloc_cpuset, int policy)
+hwloc_freebsd_set_thisproc_cpubind(hwloc_topology_t topology, hwloc_const_bitmap_t hwloc_cpuset, int flags)
{
- return hwloc_freebsd_set_sth_affinity(topology, CPU_LEVEL_WHICH, CPU_WHICH_PID, -1, hwloc_cpuset, policy);
+ return hwloc_freebsd_set_sth_affinity(topology, CPU_LEVEL_WHICH, CPU_WHICH_PID, -1, hwloc_cpuset, flags);
}
static int
-hwloc_freebsd_get_thisproc_cpubind(hwloc_topology_t topology, hwloc_cpuset_t hwloc_cpuset, int policy)
+hwloc_freebsd_get_thisproc_cpubind(hwloc_topology_t topology, hwloc_bitmap_t hwloc_cpuset, int flags)
{
- return hwloc_freebsd_get_sth_affinity(topology, CPU_LEVEL_WHICH, CPU_WHICH_PID, -1, hwloc_cpuset, policy);
+ return hwloc_freebsd_get_sth_affinity(topology, CPU_LEVEL_WHICH, CPU_WHICH_PID, -1, hwloc_cpuset, flags);
}
static int
-hwloc_freebsd_set_thisthread_cpubind(hwloc_topology_t topology, hwloc_const_cpuset_t hwloc_cpuset, int policy)
+hwloc_freebsd_set_thisthread_cpubind(hwloc_topology_t topology, hwloc_const_bitmap_t hwloc_cpuset, int flags)
{
- return hwloc_freebsd_set_sth_affinity(topology, CPU_LEVEL_WHICH, CPU_WHICH_TID, -1, hwloc_cpuset, policy);
+ return hwloc_freebsd_set_sth_affinity(topology, CPU_LEVEL_WHICH, CPU_WHICH_TID, -1, hwloc_cpuset, flags);
}
static int
-hwloc_freebsd_get_thisthread_cpubind(hwloc_topology_t topology, hwloc_cpuset_t hwloc_cpuset, int policy)
+hwloc_freebsd_get_thisthread_cpubind(hwloc_topology_t topology, hwloc_bitmap_t hwloc_cpuset, int flags)
{
- return hwloc_freebsd_get_sth_affinity(topology, CPU_LEVEL_WHICH, CPU_WHICH_TID, -1, hwloc_cpuset, policy);
+ return hwloc_freebsd_get_sth_affinity(topology, CPU_LEVEL_WHICH, CPU_WHICH_TID, -1, hwloc_cpuset, flags);
}
static int
-hwloc_freebsd_set_proc_cpubind(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_const_cpuset_t hwloc_cpuset, int policy)
+hwloc_freebsd_set_proc_cpubind(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_const_bitmap_t hwloc_cpuset, int flags)
{
- return hwloc_freebsd_set_sth_affinity(topology, CPU_LEVEL_WHICH, CPU_WHICH_PID, pid, hwloc_cpuset, policy);
+ return hwloc_freebsd_set_sth_affinity(topology, CPU_LEVEL_WHICH, CPU_WHICH_PID, pid, hwloc_cpuset, flags);
}
static int
-hwloc_freebsd_get_proc_cpubind(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_cpuset_t hwloc_cpuset, int policy)
+hwloc_freebsd_get_proc_cpubind(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_bitmap_t hwloc_cpuset, int flags)
{
- return hwloc_freebsd_get_sth_affinity(topology, CPU_LEVEL_WHICH, CPU_WHICH_PID, pid, hwloc_cpuset, policy);
+ return hwloc_freebsd_get_sth_affinity(topology, CPU_LEVEL_WHICH, CPU_WHICH_PID, pid, hwloc_cpuset, flags);
}
#ifdef hwloc_thread_t
@@ -108,7 +110,7 @@
#if HAVE_DECL_PTHREAD_SETAFFINITY_NP
#pragma weak pthread_setaffinity_np
static int
-hwloc_freebsd_set_thread_cpubind(hwloc_topology_t topology __hwloc_attribute_unused, hwloc_thread_t tid, hwloc_const_cpuset_t hwloc_cpuset, int policy __hwloc_attribute_unused)
+hwloc_freebsd_set_thread_cpubind(hwloc_topology_t topology __hwloc_attribute_unused, hwloc_thread_t tid, hwloc_const_bitmap_t hwloc_cpuset, int flags __hwloc_attribute_unused)
{
int err;
cpuset_t cpuset;
@@ -134,7 +136,7 @@
#if HAVE_DECL_PTHREAD_GETAFFINITY_NP
#pragma weak pthread_getaffinity_np
static int
-hwloc_freebsd_get_thread_cpubind(hwloc_topology_t topology __hwloc_attribute_unused, hwloc_thread_t tid, hwloc_cpuset_t hwloc_cpuset, int policy __hwloc_attribute_unused)
+hwloc_freebsd_get_thread_cpubind(hwloc_topology_t topology __hwloc_attribute_unused, hwloc_thread_t tid, hwloc_bitmap_t hwloc_cpuset, int flags __hwloc_attribute_unused)
{
int err;
cpuset_t cpuset;
@@ -171,6 +173,8 @@
hwloc_look_x86(topology, nbprocs);
hwloc_setup_pu_level(topology, nbprocs);
+
+ hwloc_add_object_info(topology->levels[0][0], "Backend", "FreeBSD");
}
void
Modified: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/src/topology-hpux.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/src/topology-hpux.c 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/src/topology-hpux.c 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,13 +1,11 @@
/*
- * Copyright © 2009 CNRS, INRIA, Université Bordeaux 1
+ * Copyright © 2009 CNRS
+ * Copyright © 2009-2010 INRIA
+ * Copyright © 2009-2010 Université Bordeaux 1
* See COPYING in top-level directory.
*/
-/* TODO: memory:
- * mmap/shmget: +MAP/IPC_MEM_INTERLEAVED, MAP/IPC_MEM_LOCAL,
- MAP_IPC/MEM_FIRST_TOUCH */
-
-/* TODO: psets?
+/* TODO: psets? (Only for root)
* since 11i 1.6:
_SC_PSET_SUPPORT
pset_create/destroy/assign/setattr
@@ -29,10 +27,11 @@
#include <private/debug.h>
#include <sys/mpctl.h>
+#include <sys/mman.h>
#include <pthread.h>
static ldom_t
-hwloc_hpux_find_ldom(hwloc_topology_t topology, hwloc_const_cpuset_t hwloc_set)
+hwloc_hpux_find_ldom(hwloc_topology_t topology, hwloc_const_bitmap_t hwloc_set)
{
int has_numa = sysconf(_SC_CCNUMA_SUPPORT) == 1;
hwloc_obj_t obj;
@@ -41,7 +40,7 @@
return -1;
obj = hwloc_get_first_largest_obj_inside_cpuset(topology, hwloc_set);
- if (!hwloc_cpuset_isequal(obj->cpuset, hwloc_set) || obj->type != HWLOC_OBJ_NODE) {
+ if (!hwloc_bitmap_isequal(obj->cpuset, hwloc_set) || obj->type != HWLOC_OBJ_NODE) {
/* Does not correspond to exactly one node */
return -1;
}
@@ -50,19 +49,19 @@
}
static spu_t
-hwloc_hpux_find_spu(hwloc_topology_t topology __hwloc_attribute_unused, hwloc_const_cpuset_t hwloc_set)
+hwloc_hpux_find_spu(hwloc_topology_t topology __hwloc_attribute_unused, hwloc_const_bitmap_t hwloc_set)
{
spu_t cpu;
- cpu = hwloc_cpuset_first(hwloc_set);
- if (cpu != -1 && hwloc_cpuset_weight(hwloc_set) == 1)
+ cpu = hwloc_bitmap_first(hwloc_set);
+ if (cpu != -1 && hwloc_bitmap_weight(hwloc_set) == 1)
return cpu;
return -1;
}
/* Note: get_cpubind not available on HP-UX */
static int
-hwloc_hpux_set_proc_cpubind(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_const_cpuset_t hwloc_set, int policy)
+hwloc_hpux_set_proc_cpubind(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_const_bitmap_t hwloc_set, int flags)
{
ldom_t ldom;
spu_t cpu;
@@ -71,7 +70,7 @@
mpctl(MPC_SETLDOM, MPC_LDOMFLOAT, pid);
mpctl(MPC_SETPROCESS, MPC_SPUFLOAT, pid);
- if (hwloc_cpuset_isequal(hwloc_set, hwloc_topology_get_complete_cpuset(topology)))
+ if (hwloc_bitmap_isequal(hwloc_set, hwloc_topology_get_complete_cpuset(topology)))
return 0;
ldom = hwloc_hpux_find_ldom(topology, hwloc_set);
@@ -80,21 +79,21 @@
cpu = hwloc_hpux_find_spu(topology, hwloc_set);
if (cpu != -1)
- return mpctl(policy & HWLOC_CPUBIND_STRICT ? MPC_SETPROCESS_FORCE : MPC_SETPROCESS, cpu, pid);
+ return mpctl(flags & HWLOC_CPUBIND_STRICT ? MPC_SETPROCESS_FORCE : MPC_SETPROCESS, cpu, pid);
errno = EXDEV;
return -1;
}
static int
-hwloc_hpux_set_thisproc_cpubind(hwloc_topology_t topology, hwloc_const_cpuset_t hwloc_set, int policy)
+hwloc_hpux_set_thisproc_cpubind(hwloc_topology_t topology, hwloc_const_bitmap_t hwloc_set, int flags)
{
- return hwloc_hpux_set_proc_cpubind(topology, MPC_SELFPID, hwloc_set, policy);
+ return hwloc_hpux_set_proc_cpubind(topology, MPC_SELFPID, hwloc_set, flags);
}
#ifdef hwloc_thread_t
static int
-hwloc_hpux_set_thread_cpubind(hwloc_topology_t topology, hwloc_thread_t pthread, hwloc_const_cpuset_t hwloc_set, int policy)
+hwloc_hpux_set_thread_cpubind(hwloc_topology_t topology, hwloc_thread_t pthread, hwloc_const_bitmap_t hwloc_set, int flags)
{
ldom_t ldom, ldom2;
spu_t cpu, cpu2;
@@ -103,7 +102,7 @@
pthread_ldom_bind_np(&ldom2, PTHREAD_LDOMFLOAT_NP, pthread);
pthread_processor_bind_np(PTHREAD_BIND_ADVISORY_NP, &cpu2, PTHREAD_SPUFLOAT_NP, pthread);
- if (hwloc_cpuset_isequal(hwloc_set, hwloc_topology_get_complete_cpuset(topology)))
+ if (hwloc_bitmap_isequal(hwloc_set, hwloc_topology_get_complete_cpuset(topology)))
return 0;
ldom = hwloc_hpux_find_ldom(topology, hwloc_set);
@@ -112,19 +111,59 @@
cpu = hwloc_hpux_find_spu(topology, hwloc_set);
if (cpu != -1)
- return pthread_processor_bind_np(policy & HWLOC_CPUBIND_STRICT ? PTHREAD_BIND_FORCED_NP : PTHREAD_BIND_ADVISORY_NP, &cpu2, cpu, pthread);
+ return pthread_processor_bind_np(flags & HWLOC_CPUBIND_STRICT ? PTHREAD_BIND_FORCED_NP : PTHREAD_BIND_ADVISORY_NP, &cpu2, cpu, pthread);
errno = EXDEV;
return -1;
}
static int
-hwloc_hpux_set_thisthread_cpubind(hwloc_topology_t topology, hwloc_const_cpuset_t hwloc_set, int policy)
+hwloc_hpux_set_thisthread_cpubind(hwloc_topology_t topology, hwloc_const_bitmap_t hwloc_set, int flags)
{
- return hwloc_hpux_set_thread_cpubind(topology, PTHREAD_SELFTID_NP, hwloc_set, policy);
+ return hwloc_hpux_set_thread_cpubind(topology, PTHREAD_SELFTID_NP, hwloc_set, flags);
}
#endif
+/* According to HP docs, HP-UX up to 11iv2 don't support migration */
+
+#ifdef MAP_MEM_FIRST_TOUCH
+static void*
+hwloc_hpux_alloc_membind(hwloc_topology_t topology, size_t len, hwloc_const_nodeset_t nodeset, hwloc_membind_policy_t policy, int flags)
+{
+ int mmap_flags;
+
+ /* Can not give a set of nodes. */
+ if (!hwloc_bitmap_isequal(nodeset, hwloc_topology_get_complete_nodeset(topology))) {
+ errno = EXDEV;
+ return hwloc_alloc_or_fail(topology, len, flags);
+ }
+
+ switch (policy) {
+ case HWLOC_MEMBIND_DEFAULT:
+ case HWLOC_MEMBIND_BIND:
+ mmap_flags = 0;
+ break;
+ case HWLOC_MEMBIND_FIRSTTOUCH:
+ mmap_flags = MAP_MEM_FIRST_TOUCH;
+ break;
+ case HWLOC_MEMBIND_INTERLEAVE:
+ mmap_flags = MAP_MEM_INTERLEAVED;
+ break;
+ default:
+ errno = ENOSYS;
+ return NULL;
+ }
+
+ return mmap(NULL, len, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS | mmap_flags, -1, 0);
+}
+
+static int
+hwloc_hpux_free_membind(hwloc_topology_t topology, void *addr, size_t len)
+{
+ return munmap(addr, len);
+}
+#endif /* MAP_MEM_FIRST_TOUCH */
+
void
hwloc_look_hpux(struct hwloc_topology *topology)
{
@@ -152,9 +191,9 @@
while (currentnode != -1 && i < nbnodes) {
hwloc_debug("node %d is %d\n", i, currentnode);
nodes[i] = obj = hwloc_alloc_setup_object(HWLOC_OBJ_NODE, currentnode);
- obj->cpuset = hwloc_cpuset_alloc();
- obj->nodeset = hwloc_cpuset_alloc();
- hwloc_cpuset_set(obj->nodeset, currentnode);
+ obj->cpuset = hwloc_bitmap_alloc();
+ obj->nodeset = hwloc_bitmap_alloc();
+ hwloc_bitmap_set(obj->nodeset, currentnode);
/* TODO: obj->attr->node.memory_kB */
/* TODO: obj->attr->node.huge_page_free */
@@ -169,8 +208,8 @@
MPC_GETFIRSTSPU_SYS : MPC_GETFIRSTSPU, 0,0);
while (currentcpu != -1) {
obj = hwloc_alloc_setup_object(HWLOC_OBJ_PU, currentcpu);
- obj->cpuset = hwloc_cpuset_alloc();
- hwloc_cpuset_set(obj->cpuset, currentcpu);
+ obj->cpuset = hwloc_bitmap_alloc();
+ hwloc_bitmap_set(obj->cpuset, currentcpu);
hwloc_debug("cpu %d\n", currentcpu);
@@ -182,7 +221,7 @@
if ((ldom_t) nodes[i]->os_index == currentnode)
break;
if (i < nbnodes) {
- hwloc_cpuset_set(nodes[i]->cpuset, currentcpu);
+ hwloc_bitmap_set(nodes[i]->cpuset, currentcpu);
hwloc_debug("is in node %d\n", i);
} else {
hwloc_debug("%s", "is in no node?!\n");
@@ -204,6 +243,8 @@
}
topology->support.discovery->pu = 1;
+
+ hwloc_add_object_info(topology->levels[0][0], "Backend", "HP-UX");
}
void
@@ -215,4 +256,12 @@
topology->set_thread_cpubind = hwloc_hpux_set_thread_cpubind;
topology->set_thisthread_cpubind = hwloc_hpux_set_thisthread_cpubind;
#endif
+#ifdef MAP_MEM_FIRST_TOUCH
+ topology->alloc_membind = hwloc_hpux_alloc_membind;
+ topology->alloc = hwloc_alloc_mmap;
+ topology->free_membind = hwloc_hpux_free_membind;
+ topology->support.membind->firsttouch_membind = 1;
+ topology->support.membind->bind_membind = 1;
+ topology->support.membind->interleave_membind = 1;
+#endif /* MAP_MEM_FIRST_TOUCH */
}
Modified: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/src/topology-linux.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/src/topology-linux.c 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/src/topology-linux.c 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,13 +1,18 @@
/*
- * Copyright © 2009 CNRS, INRIA, Université Bordeaux 1
+ * Copyright © 2009 CNRS
+ * Copyright © 2009-2010 INRIA
+ * Copyright © 2009-2010 Université Bordeaux 1
* Copyright © 2009 Cisco Systems, Inc. All rights reserved.
+ * Copyright © 2010 IBM
* See COPYING in top-level directory.
*/
#include <private/config.h>
#include <hwloc.h>
#include <hwloc/linux.h>
+#include <private/misc.h>
#include <private/private.h>
+#include <private/misc.h>
#include <private/debug.h>
#include <limits.h>
@@ -21,8 +26,12 @@
#include <sys/stat.h>
#include <sched.h>
#include <pthread.h>
+#include <sys/mman.h>
+#if defined HWLOC_HAVE_SET_MEMPOLICY || defined HWLOC_HAVE_MBIND
+#include <numaif.h>
+#endif
-#if !defined(HWLOC_HAVE_CPU_SET) && !defined(HWLOC_HAVE_CPU_SET_S) && !defined(HWLOC_HAVE_OLD_SCHED_SETAFFINITY)
+#if !defined(HWLOC_HAVE_CPU_SET) && !(defined(HWLOC_HAVE_CPU_SET_S) && !defined(HWLOC_HAVE_OLD_SCHED_SETAFFINITY)) && defined(HWLOC_HAVE__SYSCALL3)
/* libc doesn't have support for sched_setaffinity, build system call
* ourselves: */
# include <linux/unistd.h>
@@ -57,7 +66,7 @@
# endif
# endif
# ifndef sched_setaffinity
- _syscall3(int, sched_setaffinity, pid_t, pid, unsigned int, lg, const void *, mask);
+ _syscall3(int, sched_setaffinity, pid_t, pid, unsigned int, lg, const void *, mask)
# endif
# ifndef __NR_sched_getaffinity
# ifdef __i386__
@@ -90,32 +99,54 @@
# endif
# endif
# ifndef sched_getaffinity
- _syscall3(int, sched_getaffinity, pid_t, pid, unsigned int, lg, void *, mask);
+ _syscall3(int, sched_getaffinity, pid_t, pid, unsigned int, lg, void *, mask)
# endif
#endif
+/* Added for ntohl() */
+#include <arpa/inet.h>
+
#ifdef HAVE_OPENAT
/* Use our own filesystem functions if we have openat */
-static FILE *
-hwloc_fopenat(const char *path, const char *mode, int fsroot_fd)
+static const char *
+hwloc_checkat(const char *path, int fsroot_fd)
{
- int fd;
const char *relative_path;
-
if (fsroot_fd < 0) {
errno = EBADF;
return NULL;
}
+
+ /* Skip leading slashes. */
+ for (relative_path = path; *relative_path == '/'; relative_path++);
+
+ return relative_path;
+}
+
+static int
+hwloc_openat(const char *path, int fsroot_fd)
+{
+ const char *relative_path;
+
+ relative_path = hwloc_checkat(path, fsroot_fd);
+ if (!relative_path)
+ return -1;
+
+ return openat (fsroot_fd, relative_path, O_RDONLY);
+}
+
+static FILE *
+hwloc_fopenat(const char *path, const char *mode, int fsroot_fd)
+{
+ int fd;
+
if (strcmp(mode, "r")) {
errno = ENOTSUP;
return NULL;
}
- /* Skip leading slashes. */
- for (relative_path = path; *relative_path == '/'; relative_path++);
-
- fd = openat (fsroot_fd, relative_path, O_RDONLY);
+ fd = hwloc_openat (path, fsroot_fd);
if (fd == -1)
return NULL;
@@ -127,25 +158,34 @@
{
const char *relative_path;
- if (fsroot_fd < 0) {
- errno = EBADF;
+ relative_path = hwloc_checkat(path, fsroot_fd);
+ if (!relative_path)
return -1;
- }
- /* Skip leading slashes. */
- for (relative_path = path; *relative_path == '/'; relative_path++);
-
return faccessat(fsroot_fd, relative_path, mode, 0);
}
+static int
+hwloc_fstatat(const char *path, struct stat *st, int flags, int fsroot_fd)
+{
+ const char *relative_path;
+
+ relative_path = hwloc_checkat(path, fsroot_fd);
+ if (!relative_path)
+ return -1;
+
+ return fstatat(fsroot_fd, relative_path, st, flags);
+}
+
static DIR*
hwloc_opendirat(const char *path, int fsroot_fd)
{
int dir_fd;
const char *relative_path;
- /* Skip leading slashes. */
- for (relative_path = path; *relative_path == '/'; relative_path++);
+ relative_path = hwloc_checkat(path, fsroot_fd);
+ if (!relative_path)
+ return NULL;
dir_fd = openat(fsroot_fd, relative_path, O_RDONLY | O_DIRECTORY);
if (dir_fd < 0)
@@ -158,13 +198,23 @@
/* Static inline version of fopen so that we can use openat if we have
it, but still preserve compiler parameter checking */
+static inline int
+hwloc_open(const char *p, int d __hwloc_attribute_unused)
+{
+#ifdef HAVE_OPENAT
+ return hwloc_openat(p, d);
+#else
+ return open(p, O_RDONLY);
+#endif
+}
+
static inline FILE *
hwloc_fopen(const char *p, const char *m, int d __hwloc_attribute_unused)
{
#ifdef HAVE_OPENAT
return hwloc_fopenat(p, m, d);
#else
- return fopen(p, m);
+ return fopen(p, m);
#endif
}
@@ -176,10 +226,20 @@
#ifdef HAVE_OPENAT
return hwloc_accessat(p, m, d);
#else
- return access(p, m);
+ return access(p, m);
#endif
}
+static inline int
+hwloc_stat(const char *p, struct stat *st, int d __hwloc_attribute_unused)
+{
+#ifdef HAVE_OPENAT
+ return hwloc_fstatat(p, st, 0, d);
+#else
+ return stat(p, st);
+#endif
+}
+
/* Static inline version of opendir so that we can use openat if we have
it, but still preserve compiler parameter checking */
static inline DIR *
@@ -188,12 +248,12 @@
#ifdef HAVE_OPENAT
return hwloc_opendirat(p, d);
#else
- return opendir(p);
+ return opendir(p);
#endif
}
int
-hwloc_linux_set_tid_cpubind(hwloc_topology_t topology __hwloc_attribute_unused, pid_t tid, hwloc_const_cpuset_t hwloc_set)
+hwloc_linux_set_tid_cpubind(hwloc_topology_t topology __hwloc_attribute_unused, pid_t tid __hwloc_attribute_unused, hwloc_const_bitmap_t hwloc_set __hwloc_attribute_unused)
{
/* TODO Kerrighed: Use
* int migrate (pid_t pid, int destination_node);
@@ -203,18 +263,26 @@
/* The resulting binding is always strict */
-#if defined(HWLOC_HAVE_CPU_SET_S) && !defined(HWLOC_HAVE_OLD_SCHED_SETAFFINITY) && CPU_SETSIZE < HWLOC_NBMAXCPUS
+#if defined(HWLOC_HAVE_CPU_SET_S) && !defined(HWLOC_HAVE_OLD_SCHED_SETAFFINITY)
cpu_set_t *plinux_set;
unsigned cpu;
- size_t setsize = CPU_ALLOC_SIZE(HWLOC_NBMAXCPUS);
+ int last;
+ size_t setsize;
int err;
- plinux_set = CPU_ALLOC(HWLOC_NBMAXCPUS);
+ last = hwloc_bitmap_last(hwloc_set);
+ if (last == -1) {
+ errno = EINVAL;
+ return -1;
+ }
+ setsize = CPU_ALLOC_SIZE(last+1);
+ plinux_set = CPU_ALLOC(last+1);
+
CPU_ZERO_S(setsize, plinux_set);
- hwloc_cpuset_foreach_begin(cpu, hwloc_set)
+ hwloc_bitmap_foreach_begin(cpu, hwloc_set)
CPU_SET_S(cpu, setsize, plinux_set);
- hwloc_cpuset_foreach_end();
+ hwloc_bitmap_foreach_end();
err = sched_setaffinity(tid, setsize, plinux_set);
@@ -225,38 +293,77 @@
unsigned cpu;
CPU_ZERO(&linux_set);
- hwloc_cpuset_foreach_begin(cpu, hwloc_set)
+ hwloc_bitmap_foreach_begin(cpu, hwloc_set)
CPU_SET(cpu, &linux_set);
- hwloc_cpuset_foreach_end();
+ hwloc_bitmap_foreach_end();
#ifdef HWLOC_HAVE_OLD_SCHED_SETAFFINITY
return sched_setaffinity(tid, &linux_set);
#else /* HWLOC_HAVE_OLD_SCHED_SETAFFINITY */
return sched_setaffinity(tid, sizeof(linux_set), &linux_set);
#endif /* HWLOC_HAVE_OLD_SCHED_SETAFFINITY */
-#else /* !CPU_SET */
- unsigned long mask = hwloc_cpuset_to_ulong(hwloc_set);
+#elif defined(HWLOC_HAVE__SYSCALL3)
+ unsigned long mask = hwloc_bitmap_to_ulong(hwloc_set);
#ifdef HWLOC_HAVE_OLD_SCHED_SETAFFINITY
return sched_setaffinity(tid, (void*) &mask);
#else /* HWLOC_HAVE_OLD_SCHED_SETAFFINITY */
return sched_setaffinity(tid, sizeof(mask), (void*) &mask);
#endif /* HWLOC_HAVE_OLD_SCHED_SETAFFINITY */
-#endif /* !CPU_SET */
+#else /* !_SYSCALL3 */
+ errno = ENOSYS;
+ return -1;
+#endif /* !_SYSCALL3 */
}
+#if defined(HWLOC_HAVE_CPU_SET_S) && !defined(HWLOC_HAVE_OLD_SCHED_SETAFFINITY)
+/*
+ * On some kernels, sched_getaffinity requires the output size to be larger
+ * than the kernel cpu_set size (defined by CONFIG_NR_CPUS).
+ * Try sched_affinity on ourself until we find a nr_cpus value that makes
+ * the kernel happy.
+ */
+static int
+hwloc_linux_find_kernel_nr_cpus(hwloc_topology_t topology)
+{
+ static int nr_cpus = -1;
+
+ if (nr_cpus != -1)
+ /* already computed */
+ return nr_cpus;
+
+ /* start with a nr_cpus that may contain the whole topology */
+ nr_cpus = hwloc_bitmap_last(topology->levels[0][0]->complete_cpuset) + 1;
+ while (1) {
+ cpu_set_t *set = CPU_ALLOC(nr_cpus);
+ size_t setsize = CPU_ALLOC_SIZE(nr_cpus);
+ int err = sched_getaffinity(0, setsize, set); /* always works, unless setsize is too small */
+ CPU_FREE(set);
+ if (!err)
+ /* found it */
+ return nr_cpus;
+ nr_cpus *= 2;
+ }
+}
+#endif
+
int
-hwloc_linux_get_tid_cpubind(hwloc_topology_t topology __hwloc_attribute_unused, pid_t tid, hwloc_cpuset_t hwloc_set)
+hwloc_linux_get_tid_cpubind(hwloc_topology_t topology __hwloc_attribute_unused, pid_t tid __hwloc_attribute_unused, hwloc_bitmap_t hwloc_set __hwloc_attribute_unused)
{
- int err;
+ int err __hwloc_attribute_unused;
/* TODO Kerrighed */
-#if defined(HWLOC_HAVE_CPU_SET_S) && !defined(HWLOC_HAVE_OLD_SCHED_SETAFFINITY) && CPU_SETSIZE < HWLOC_NBMAXCPUS
+#if defined(HWLOC_HAVE_CPU_SET_S) && !defined(HWLOC_HAVE_OLD_SCHED_SETAFFINITY)
cpu_set_t *plinux_set;
unsigned cpu;
- size_t setsize = CPU_ALLOC_SIZE(HWLOC_NBMAXCPUS);
+ int last;
+ size_t setsize;
+ int kernel_nr_cpus;
- plinux_set = CPU_ALLOC(HWLOC_NBMAXCPUS);
+ /* find the kernel nr_cpus so as to use a large enough cpu_set size */
+ kernel_nr_cpus = hwloc_linux_find_kernel_nr_cpus(topology);
+ setsize = CPU_ALLOC_SIZE(kernel_nr_cpus);
+ plinux_set = CPU_ALLOC(kernel_nr_cpus);
err = sched_getaffinity(tid, setsize, plinux_set);
@@ -265,10 +372,13 @@
return -1;
}
- hwloc_cpuset_zero(hwloc_set);
- for(cpu=0; cpu<HWLOC_NBMAXCPUS; cpu++)
+ last = hwloc_bitmap_last(topology->levels[0][0]->complete_cpuset);
+ assert(last != -1);
+
+ hwloc_bitmap_zero(hwloc_set);
+ for(cpu=0; cpu<=(unsigned) last; cpu++)
if (CPU_ISSET_S(cpu, setsize, plinux_set))
- hwloc_cpuset_set(hwloc_set, cpu);
+ hwloc_bitmap_set(hwloc_set, cpu);
CPU_FREE(plinux_set);
#elif defined(HWLOC_HAVE_CPU_SET)
@@ -283,11 +393,11 @@
if (err < 0)
return -1;
- hwloc_cpuset_zero(hwloc_set);
+ hwloc_bitmap_zero(hwloc_set);
for(cpu=0; cpu<CPU_SETSIZE; cpu++)
if (CPU_ISSET(cpu, &linux_set))
- hwloc_cpuset_set(hwloc_set, cpu);
-#else /* !CPU_SET */
+ hwloc_bitmap_set(hwloc_set, cpu);
+#elif defined(HWLOC_HAVE__SYSCALL3)
unsigned long mask;
#ifdef HWLOC_HAVE_OLD_SCHED_SETAFFINITY
@@ -298,8 +408,11 @@
if (err < 0)
return -1;
- hwloc_cpuset_from_ulong(hwloc_set, mask);
-#endif /* !CPU_SET */
+ hwloc_bitmap_from_ulong(hwloc_set, mask);
+#else /* !_SYSCALL3 */
+ errno = ENOSYS;
+ return -1;
+#endif /* !_SYSCALL3 */
return 0;
}
@@ -349,42 +462,42 @@
}
/* Callbacks for binding each process sub-tid */
-typedef int (*hwloc_linux_foreach_proc_tid_cb_t)(hwloc_topology_t topology, pid_t tid, void *data, int idx, int policy);
+typedef int (*hwloc_linux_foreach_proc_tid_cb_t)(hwloc_topology_t topology, pid_t tid, void *data, int idx, int flags);
static int
-hwloc_linux_foreach_proc_tid_set_cpubind_cb(hwloc_topology_t topology, pid_t tid, void *data, int idx __hwloc_attribute_unused, int policy __hwloc_attribute_unused)
+hwloc_linux_foreach_proc_tid_set_cpubind_cb(hwloc_topology_t topology, pid_t tid, void *data, int idx __hwloc_attribute_unused, int flags __hwloc_attribute_unused)
{
- hwloc_cpuset_t cpuset = data;
+ hwloc_bitmap_t cpuset = data;
return hwloc_linux_set_tid_cpubind(topology, tid, cpuset);
}
static int
-hwloc_linux_foreach_proc_tid_get_cpubind_cb(hwloc_topology_t topology, pid_t tid, void *data, int idx, int policy)
+hwloc_linux_foreach_proc_tid_get_cpubind_cb(hwloc_topology_t topology, pid_t tid, void *data, int idx, int flags)
{
- hwloc_cpuset_t *cpusets = data;
- hwloc_cpuset_t cpuset = cpusets[0];
- hwloc_cpuset_t tidset = cpusets[1];
+ hwloc_bitmap_t *cpusets = data;
+ hwloc_bitmap_t cpuset = cpusets[0];
+ hwloc_bitmap_t tidset = cpusets[1];
if (hwloc_linux_get_tid_cpubind(topology, tid, tidset))
return -1;
/* reset the cpuset on first iteration */
if (!idx)
- hwloc_cpuset_zero(cpuset);
+ hwloc_bitmap_zero(cpuset);
- if (policy & HWLOC_CPUBIND_STRICT) {
+ if (flags & HWLOC_CPUBIND_STRICT) {
/* if STRICT, we want all threads to have the same binding */
if (!idx) {
/* this is the first thread, copy its binding */
- hwloc_cpuset_copy(cpuset, tidset);
- } else if (!hwloc_cpuset_isequal(cpuset, tidset)) {
+ hwloc_bitmap_copy(cpuset, tidset);
+ } else if (!hwloc_bitmap_isequal(cpuset, tidset)) {
/* this is not the first thread, and it's binding is different */
errno = EXDEV;
return -1;
}
} else {
/* if not STRICT, just OR all thread bindings */
- hwloc_cpuset_or(cpuset, cpuset, tidset);
+ hwloc_bitmap_or(cpuset, cpuset, tidset);
}
return 0;
}
@@ -393,7 +506,7 @@
static int
hwloc_linux_foreach_proc_tid(hwloc_topology_t topology,
pid_t pid, hwloc_linux_foreach_proc_tid_cb_t cb,
- void *data, int policy)
+ void *data, int flags)
{
char taskdir_path[128];
DIR *taskdir;
@@ -421,7 +534,7 @@
retry:
/* apply the callback to all threads */
for(i=0; i<nr; i++) {
- err = cb(topology, tids[i], data, i, policy);
+ err = cb(topology, tids[i], data, i, flags);
if (err < 0)
goto out_with_tids;
}
@@ -448,62 +561,62 @@
}
static int
-hwloc_linux_set_pid_cpubind(hwloc_topology_t topology, pid_t pid, hwloc_const_cpuset_t hwloc_set, int policy)
+hwloc_linux_set_pid_cpubind(hwloc_topology_t topology, pid_t pid, hwloc_const_bitmap_t hwloc_set, int flags)
{
return hwloc_linux_foreach_proc_tid(topology, pid,
hwloc_linux_foreach_proc_tid_set_cpubind_cb,
- (void*) hwloc_set, policy);
+ (void*) hwloc_set, flags);
}
static int
-hwloc_linux_get_pid_cpubind(hwloc_topology_t topology, pid_t pid, hwloc_cpuset_t hwloc_set, int policy)
+hwloc_linux_get_pid_cpubind(hwloc_topology_t topology, pid_t pid, hwloc_bitmap_t hwloc_set, int flags)
{
- hwloc_cpuset_t tidset = hwloc_cpuset_alloc();
- hwloc_cpuset_t cpusets[2] = { hwloc_set, tidset };
+ hwloc_bitmap_t tidset = hwloc_bitmap_alloc();
+ hwloc_bitmap_t cpusets[2] = { hwloc_set, tidset };
int ret;
ret = hwloc_linux_foreach_proc_tid(topology, pid,
hwloc_linux_foreach_proc_tid_get_cpubind_cb,
- (void*) cpusets, policy);
- hwloc_cpuset_free(tidset);
+ (void*) cpusets, flags);
+ hwloc_bitmap_free(tidset);
return ret;
}
static int
-hwloc_linux_set_proc_cpubind(hwloc_topology_t topology, pid_t pid, hwloc_const_cpuset_t hwloc_set, int policy)
+hwloc_linux_set_proc_cpubind(hwloc_topology_t topology, pid_t pid, hwloc_const_bitmap_t hwloc_set, int flags)
{
if (pid == 0)
pid = topology->pid;
- if (policy & HWLOC_CPUBIND_THREAD)
+ if (flags & HWLOC_CPUBIND_THREAD)
return hwloc_linux_set_tid_cpubind(topology, pid, hwloc_set);
else
- return hwloc_linux_set_pid_cpubind(topology, pid, hwloc_set, policy);
+ return hwloc_linux_set_pid_cpubind(topology, pid, hwloc_set, flags);
}
static int
-hwloc_linux_get_proc_cpubind(hwloc_topology_t topology, pid_t pid, hwloc_cpuset_t hwloc_set, int policy)
+hwloc_linux_get_proc_cpubind(hwloc_topology_t topology, pid_t pid, hwloc_bitmap_t hwloc_set, int flags)
{
if (pid == 0)
pid = topology->pid;
- if (policy & HWLOC_CPUBIND_THREAD)
+ if (flags & HWLOC_CPUBIND_THREAD)
return hwloc_linux_get_tid_cpubind(topology, pid, hwloc_set);
else
- return hwloc_linux_get_pid_cpubind(topology, pid, hwloc_set, policy);
+ return hwloc_linux_get_pid_cpubind(topology, pid, hwloc_set, flags);
}
static int
-hwloc_linux_set_thisproc_cpubind(hwloc_topology_t topology, hwloc_const_cpuset_t hwloc_set, int policy)
+hwloc_linux_set_thisproc_cpubind(hwloc_topology_t topology, hwloc_const_bitmap_t hwloc_set, int flags)
{
- return hwloc_linux_set_pid_cpubind(topology, topology->pid, hwloc_set, policy);
+ return hwloc_linux_set_pid_cpubind(topology, topology->pid, hwloc_set, flags);
}
static int
-hwloc_linux_get_thisproc_cpubind(hwloc_topology_t topology, hwloc_cpuset_t hwloc_set, int policy)
+hwloc_linux_get_thisproc_cpubind(hwloc_topology_t topology, hwloc_bitmap_t hwloc_set, int flags)
{
- return hwloc_linux_get_pid_cpubind(topology, topology->pid, hwloc_set, policy);
+ return hwloc_linux_get_pid_cpubind(topology, topology->pid, hwloc_set, flags);
}
static int
-hwloc_linux_set_thisthread_cpubind(hwloc_topology_t topology, hwloc_const_cpuset_t hwloc_set, int policy __hwloc_attribute_unused)
+hwloc_linux_set_thisthread_cpubind(hwloc_topology_t topology, hwloc_const_bitmap_t hwloc_set, int flags __hwloc_attribute_unused)
{
if (topology->pid) {
errno = ENOSYS;
@@ -513,7 +626,7 @@
}
static int
-hwloc_linux_get_thisthread_cpubind(hwloc_topology_t topology, hwloc_cpuset_t hwloc_set, int policy __hwloc_attribute_unused)
+hwloc_linux_get_thisthread_cpubind(hwloc_topology_t topology, hwloc_bitmap_t hwloc_set, int flags __hwloc_attribute_unused)
{
if (topology->pid) {
errno = ENOSYS;
@@ -526,7 +639,7 @@
#pragma weak pthread_setaffinity_np
static int
-hwloc_linux_set_thread_cpubind(hwloc_topology_t topology, pthread_t tid, hwloc_const_cpuset_t hwloc_set, int policy __hwloc_attribute_unused)
+hwloc_linux_set_thread_cpubind(hwloc_topology_t topology, pthread_t tid, hwloc_const_bitmap_t hwloc_set, int flags __hwloc_attribute_unused)
{
int err;
@@ -549,17 +662,44 @@
* int thread_migrate (int thread_id, int destination_node);
*/
-#ifdef HWLOC_HAVE_CPU_SET
+#if defined(HWLOC_HAVE_CPU_SET_S) && !defined(HWLOC_HAVE_OLD_SCHED_SETAFFINITY)
/* Use a separate block so that we can define specific variable
types here */
{
+ cpu_set_t *plinux_set;
+ unsigned cpu;
+ int last;
+ size_t setsize;
+
+ last = hwloc_bitmap_last(hwloc_set);
+ if (last == -1) {
+ errno = EINVAL;
+ return -1;
+ }
+
+ setsize = CPU_ALLOC_SIZE(last+1);
+ plinux_set = CPU_ALLOC(last+1);
+
+ CPU_ZERO_S(setsize, plinux_set);
+ hwloc_bitmap_foreach_begin(cpu, hwloc_set)
+ CPU_SET_S(cpu, setsize, plinux_set);
+ hwloc_bitmap_foreach_end();
+
+ err = pthread_setaffinity_np(tid, setsize, plinux_set);
+
+ CPU_FREE(plinux_set);
+ }
+#elif defined(HWLOC_HAVE_CPU_SET)
+ /* Use a separate block so that we can define specific variable
+ types here */
+ {
cpu_set_t linux_set;
unsigned cpu;
CPU_ZERO(&linux_set);
- hwloc_cpuset_foreach_begin(cpu, hwloc_set)
+ hwloc_bitmap_foreach_begin(cpu, hwloc_set)
CPU_SET(cpu, &linux_set);
- hwloc_cpuset_foreach_end();
+ hwloc_bitmap_foreach_end();
#ifdef HWLOC_HAVE_OLD_SCHED_SETAFFINITY
err = pthread_setaffinity_np(tid, &linux_set);
@@ -571,7 +711,7 @@
/* Use a separate block so that we can define specific variable
types here */
{
- unsigned long mask = hwloc_cpuset_to_ulong(hwloc_set);
+ unsigned long mask = hwloc_bitmap_to_ulong(hwloc_set);
#ifdef HWLOC_HAVE_OLD_SCHED_SETAFFINITY
err = pthread_setaffinity_np(tid, (void*) &mask);
@@ -593,7 +733,7 @@
#pragma weak pthread_getaffinity_np
static int
-hwloc_linux_get_thread_cpubind(hwloc_topology_t topology, pthread_t tid, hwloc_cpuset_t hwloc_set, int policy __hwloc_attribute_unused)
+hwloc_linux_get_thread_cpubind(hwloc_topology_t topology, pthread_t tid, hwloc_bitmap_t hwloc_set, int flags __hwloc_attribute_unused)
{
int err;
@@ -612,10 +752,39 @@
}
/* TODO Kerrighed */
-#ifdef HWLOC_HAVE_CPU_SET
+#if defined(HWLOC_HAVE_CPU_SET_S) && !defined(HWLOC_HAVE_OLD_SCHED_SETAFFINITY)
/* Use a separate block so that we can define specific variable
types here */
{
+ cpu_set_t *plinux_set;
+ unsigned cpu;
+ int last;
+ size_t setsize;
+
+ last = hwloc_bitmap_last(topology->levels[0][0]->complete_cpuset);
+ assert (last != -1);
+
+ setsize = CPU_ALLOC_SIZE(last+1);
+ plinux_set = CPU_ALLOC(last+1);
+
+ err = pthread_getaffinity_np(tid, setsize, plinux_set);
+ if (err) {
+ CPU_FREE(plinux_set);
+ errno = err;
+ return -1;
+ }
+
+ hwloc_bitmap_zero(hwloc_set);
+ for(cpu=0; cpu<(unsigned) last; cpu++)
+ if (CPU_ISSET_S(cpu, setsize, plinux_set))
+ hwloc_bitmap_set(hwloc_set, cpu);
+
+ CPU_FREE(plinux_set);
+ }
+#elif defined(HWLOC_HAVE_CPU_SET)
+ /* Use a separate block so that we can define specific variable
+ types here */
+ {
cpu_set_t linux_set;
unsigned cpu;
@@ -629,10 +798,10 @@
return -1;
}
- hwloc_cpuset_zero(hwloc_set);
+ hwloc_bitmap_zero(hwloc_set);
for(cpu=0; cpu<CPU_SETSIZE; cpu++)
if (CPU_ISSET(cpu, &linux_set))
- hwloc_cpuset_set(hwloc_set, cpu);
+ hwloc_bitmap_set(hwloc_set, cpu);
}
#else /* CPU_SET */
/* Use a separate block so that we can define specific variable
@@ -650,7 +819,7 @@
return -1;
}
- hwloc_cpuset_from_ulong(hwloc_set, mask);
+ hwloc_bitmap_from_ulong(hwloc_set, mask);
}
#endif /* CPU_SET */
@@ -658,6 +827,291 @@
}
#endif /* HAVE_DECL_PTHREAD_GETAFFINITY_NP */
+#if defined HWLOC_HAVE_SET_MEMPOLICY || defined HWLOC_HAVE_MBIND
+static int
+hwloc_linux_membind_policy_from_hwloc(int *linuxpolicy, hwloc_membind_policy_t policy, int flags)
+{
+ switch (policy) {
+ case HWLOC_MEMBIND_DEFAULT:
+ case HWLOC_MEMBIND_FIRSTTOUCH:
+ *linuxpolicy = MPOL_DEFAULT;
+ break;
+ case HWLOC_MEMBIND_BIND:
+ if (flags & HWLOC_MEMBIND_STRICT)
+ *linuxpolicy = MPOL_BIND;
+ else
+ *linuxpolicy = MPOL_PREFERRED;
+ break;
+ case HWLOC_MEMBIND_INTERLEAVE:
+ *linuxpolicy = MPOL_INTERLEAVE;
+ break;
+ /* TODO: next-touch when (if?) patch applied upstream */
+ default:
+ errno = ENOSYS;
+ return -1;
+ }
+ return 0;
+}
+
+static int
+hwloc_linux_membind_mask_from_nodeset(hwloc_topology_t topology __hwloc_attribute_unused,
+ hwloc_const_nodeset_t nodeset,
+ unsigned *max_os_index_p, unsigned long **linuxmaskp)
+{
+ unsigned max_os_index = 0; /* highest os_index + 1 */
+ unsigned long *linuxmask;
+ unsigned i;
+
+ max_os_index = hwloc_bitmap_last(nodeset);
+ if (max_os_index == (unsigned) -1)
+ max_os_index = 0;
+ /* round up to the nearest multiple of BITS_PER_LONG */
+ max_os_index = (max_os_index + HWLOC_BITS_PER_LONG) & ~(HWLOC_BITS_PER_LONG - 1);
+
+ linuxmask = calloc(max_os_index/HWLOC_BITS_PER_LONG, sizeof(long));
+ if (!linuxmask) {
+ errno = ENOMEM;
+ return -1;
+ }
+
+ for(i=0; i<max_os_index/HWLOC_BITS_PER_LONG; i++)
+ linuxmask[i] = hwloc_bitmap_to_ith_ulong(nodeset, i);
+
+ *max_os_index_p = max_os_index;
+ *linuxmaskp = linuxmask;
+ return 0;
+}
+
+static void
+hwloc_linux_membind_mask_to_nodeset(hwloc_topology_t topology __hwloc_attribute_unused,
+ hwloc_nodeset_t nodeset,
+ unsigned _max_os_index, const unsigned long *linuxmask)
+{
+ unsigned max_os_index;
+ unsigned i;
+
+ /* round up to the nearest multiple of BITS_PER_LONG */
+ max_os_index = (_max_os_index + HWLOC_BITS_PER_LONG) & ~(HWLOC_BITS_PER_LONG - 1);
+
+ hwloc_bitmap_zero(nodeset);
+ for(i=0; i<max_os_index/HWLOC_BITS_PER_LONG; i++)
+ hwloc_bitmap_set_ith_ulong(nodeset, i, linuxmask[i]);
+ /* if we don't trust the kernel, we could clear bits from _max_os_index+1 to max_os_index-1 */
+}
+#endif /* HWLOC_HAVE_SET_MEMPOLICY || HWLOC_HAVE_MBIND */
+
+#ifdef HWLOC_HAVE_MBIND
+static int
+hwloc_linux_set_area_membind(hwloc_topology_t topology, const void *addr, size_t len, hwloc_const_nodeset_t nodeset, hwloc_membind_policy_t policy, int flags)
+{
+ unsigned max_os_index; /* highest os_index + 1 */
+ unsigned long *linuxmask;
+ size_t remainder;
+ int linuxpolicy;
+ unsigned linuxflags = 0;
+ int err;
+
+ remainder = (uintptr_t) addr & (sysconf(_SC_PAGESIZE)-1);
+ addr = (char*) addr - remainder;
+ len += remainder;
+
+ err = hwloc_linux_membind_policy_from_hwloc(&linuxpolicy, policy, flags);
+ if (err < 0)
+ return err;
+
+ if (linuxpolicy == MPOL_DEFAULT)
+ /* Some Linux kernels don't like being passed a set */
+ return mbind((void *) addr, len, linuxpolicy, NULL, 0, 0);
+
+ err = hwloc_linux_membind_mask_from_nodeset(topology, nodeset, &max_os_index, &linuxmask);
+ if (err < 0)
+ goto out;
+
+ if (flags & HWLOC_MEMBIND_MIGRATE) {
+#ifdef MPOL_MF_MOVE
+ linuxflags = MPOL_MF_MOVE;
+ if (flags & HWLOC_MEMBIND_STRICT)
+ linuxflags |= MPOL_MF_STRICT;
+#else
+ if (flags & HWLOC_MEMBIND_STRICT) {
+ errno = ENOSYS;
+ goto out_with_mask;
+ }
+#endif
+ }
+
+ err = mbind((void *) addr, len, linuxpolicy, linuxmask, max_os_index+1, linuxflags);
+ if (err < 0)
+ goto out_with_mask;
+
+ free(linuxmask);
+ return 0;
+
+ out_with_mask:
+ free(linuxmask);
+ out:
+ return -1;
+}
+
+static void *
+hwloc_linux_alloc_membind(hwloc_topology_t topology, size_t len, hwloc_const_nodeset_t nodeset, hwloc_membind_policy_t policy, int flags)
+{
+ void *buffer;
+ int err;
+
+ buffer = hwloc_alloc_mmap(topology, len);
+ if (buffer == MAP_FAILED)
+ return NULL;
+
+ err = hwloc_linux_set_area_membind(topology, buffer, len, nodeset, policy, flags);
+ if (err < 0 && policy & HWLOC_MEMBIND_STRICT) {
+ munmap(buffer, len);
+ return NULL;
+ }
+
+ return buffer;
+}
+
+static int
+hwloc_linux_free_membind(hwloc_topology_t topology __hwloc_attribute_unused, void *addr, size_t len)
+{
+ return munmap(addr, len);
+}
+#endif /* HWLOC_HAVE_MBIND */
+
+#ifdef HWLOC_HAVE_SET_MEMPOLICY
+static int
+hwloc_linux_set_thisthread_membind(hwloc_topology_t topology, hwloc_const_nodeset_t nodeset, hwloc_membind_policy_t policy, int flags)
+{
+ unsigned max_os_index; /* highest os_index + 1 */
+ unsigned long *linuxmask;
+ int linuxpolicy;
+ int err;
+
+ err = hwloc_linux_membind_policy_from_hwloc(&linuxpolicy, policy, flags);
+ if (err < 0)
+ return err;
+
+ if (linuxpolicy == MPOL_DEFAULT)
+ /* Some Linux kernels don't like being passed a set */
+ return set_mempolicy(linuxpolicy, NULL, 0);
+
+ err = hwloc_linux_membind_mask_from_nodeset(topology, nodeset, &max_os_index, &linuxmask);
+ if (err < 0)
+ goto out;
+
+ if (flags & HWLOC_MEMBIND_MIGRATE) {
+#ifdef HWLOC_HAVE_MIGRATE_PAGES
+ unsigned long *fullmask = malloc(max_os_index/HWLOC_BITS_PER_LONG * sizeof(long));
+ if (fullmask) {
+ memset(fullmask, max_os_index/HWLOC_BITS_PER_LONG * sizeof(long), 0xf);
+ err = migrate_pages(0, max_os_index+1, fullmask, linuxmask);
+ free(fullmask);
+ } else
+ err = -1;
+ if (err < 0 && (flags & HWLOC_MEMBIND_STRICT))
+ goto out_with_mask;
+#else
+ errno = ENOSYS;
+ goto out_with_mask;
+#endif
+ }
+
+ err = set_mempolicy(linuxpolicy, linuxmask, max_os_index+1);
+ if (err < 0)
+ goto out_with_mask;
+
+ free(linuxmask);
+ return 0;
+
+ out_with_mask:
+ free(linuxmask);
+ out:
+ return -1;
+}
+
+/*
+ * On some kernels, get_mempolicy requires the output size to be larger
+ * than the kernel MAX_NUMNODES (defined by CONFIG_NODES_SHIFT).
+ * Try get_mempolicy on ourself until we find a max_os_index value that
+ * makes the kernel happy.
+ */
+static int
+hwloc_linux_find_kernel_max_numnodes(hwloc_topology_t topology __hwloc_attribute_unused)
+{
+ static int max_numnodes = -1;
+ int linuxpolicy;
+
+ if (max_numnodes != -1)
+ /* already computed */
+ return max_numnodes;
+
+ /* start with a single ulong, it's the minimal and it's enough for most machines */
+ max_numnodes = HWLOC_BITS_PER_LONG;
+ while (1) {
+ unsigned long *mask = malloc(max_numnodes / HWLOC_BITS_PER_LONG * sizeof(long));
+ int err = get_mempolicy(&linuxpolicy, mask, max_numnodes, 0, 0);
+ free(mask);
+ if (!err || errno != EINVAL)
+ /* found it */
+ return max_numnodes;
+ max_numnodes *= 2;
+ }
+}
+
+static int
+hwloc_linux_get_thisthread_membind(hwloc_topology_t topology, hwloc_nodeset_t nodeset, hwloc_membind_policy_t *policy, int flags __hwloc_attribute_unused)
+{
+ unsigned max_os_index;
+ unsigned long *linuxmask;
+ int linuxpolicy;
+ int err;
+
+ max_os_index = hwloc_linux_find_kernel_max_numnodes(topology);
+
+ linuxmask = malloc(max_os_index/HWLOC_BITS_PER_LONG * sizeof(long));
+ if (!linuxmask) {
+ errno = ENOMEM;
+ goto out;
+ }
+
+ err = get_mempolicy(&linuxpolicy, linuxmask, max_os_index, 0, 0);
+ if (err < 0)
+ goto out_with_mask;
+
+ if (linuxpolicy == MPOL_DEFAULT) {
+ hwloc_bitmap_copy(nodeset, hwloc_topology_get_topology_nodeset(topology));
+ } else {
+ hwloc_linux_membind_mask_to_nodeset(topology, nodeset, max_os_index, linuxmask);
+ }
+
+ switch (linuxpolicy) {
+ case MPOL_DEFAULT:
+ *policy = HWLOC_MEMBIND_FIRSTTOUCH;
+ break;
+ case MPOL_PREFERRED:
+ case MPOL_BIND:
+ *policy = HWLOC_MEMBIND_BIND;
+ break;
+ case MPOL_INTERLEAVE:
+ *policy = HWLOC_MEMBIND_INTERLEAVE;
+ break;
+ default:
+ errno = EINVAL;
+ goto out_with_mask;
+ }
+
+ free(linuxmask);
+ return 0;
+
+ out_with_mask:
+ free(linuxmask);
+ out:
+ return -1;
+}
+
+#endif /* HWLOC_HAVE_SET_MEMPOLICY */
+
int
hwloc_backend_sysfs_init(struct hwloc_topology *topology, const char *fsroot_path __hwloc_attribute_unused)
{
@@ -676,8 +1130,10 @@
if (strcmp(fsroot_path, "/"))
topology->is_thissystem = 0;
+ topology->backend_params.sysfs.root_path = strdup(fsroot_path);
topology->backend_params.sysfs.root_fd = root;
#else
+ topology->backend_params.sysfs.root_path = NULL;
topology->backend_params.sysfs.root_fd = -1;
#endif
topology->backend_type = HWLOC_BACKEND_SYSFS;
@@ -690,6 +1146,8 @@
assert(topology->backend_type == HWLOC_BACKEND_SYSFS);
#ifdef HAVE_OPENAT
close(topology->backend_params.sysfs.root_fd);
+ free(topology->backend_params.sysfs.root_path);
+ topology->backend_params.sysfs.root_path = NULL;
#endif
topology->backend_type = HWLOC_BACKEND_NONE;
}
@@ -721,26 +1179,28 @@
/* kernel cpumaps are composed of an array of 32bits cpumasks */
#define KERNEL_CPU_MASK_BITS 32
#define KERNEL_CPU_MAP_LEN (KERNEL_CPU_MASK_BITS/4+2)
-#define MAX_KERNEL_CPU_MASK ((HWLOC_NBMAXCPUS+KERNEL_CPU_MASK_BITS-1)/KERNEL_CPU_MASK_BITS)
int
-hwloc_linux_parse_cpumap_file(FILE *file, hwloc_cpuset_t set)
+hwloc_linux_parse_cpumap_file(FILE *file, hwloc_bitmap_t set)
{
- unsigned long maps[MAX_KERNEL_CPU_MASK];
+ unsigned long *maps;
unsigned long map;
int nr_maps = 0;
- int n;
-
+ static int nr_maps_allocated = 8; /* only compute the power-of-two above the kernel cpumask size once */
int i;
+ maps = malloc(nr_maps_allocated * sizeof(*maps));
+
/* reset to zero first */
- hwloc_cpuset_zero(set);
+ hwloc_bitmap_zero(set);
/* parse the whole mask */
while (fscanf(file, "%lx,", &map) == 1) /* read one kernel cpu mask and the ending comma */
{
- if (nr_maps == MAX_KERNEL_CPU_MASK)
- break; /* too many cpumasks in this cpumap */
+ if (nr_maps == nr_maps_allocated) {
+ nr_maps_allocated *= 2;
+ maps = realloc(maps, nr_maps_allocated * sizeof(*maps));
+ }
if (!map && !nr_maps)
/* ignore the first map if it's empty */
@@ -751,30 +1211,36 @@
nr_maps++;
}
- /* check that the map can be stored in our cpuset */
- n = nr_maps*KERNEL_CPU_MASK_BITS;
- if (n > HWLOC_NBMAXCPUS)
- n = HWLOC_NBMAXCPUS;
-
/* convert into a set */
- for(i=0; i<n; i++)
- if (maps[i/KERNEL_CPU_MASK_BITS] & 1<<(i%KERNEL_CPU_MASK_BITS))
- hwloc_cpuset_set(set, i);
+#if KERNEL_CPU_MASK_BITS == HWLOC_BITS_PER_LONG
+ for(i=0; i<nr_maps; i++)
+ hwloc_bitmap_set_ith_ulong(set, i, maps[i]);
+#else
+ for(i=0; i<(nr_maps+1)/2; i++) {
+ unsigned long ulong;
+ ulong = maps[2*i];
+ if (2*i+1<nr_maps)
+ ulong |= maps[2*i+1] << KERNEL_CPU_MASK_BITS;
+ hwloc_bitmap_set_ith_ulong(set, i, ulong);
+ }
+#endif
+ free(maps);
+
return 0;
}
-static hwloc_cpuset_t
+static hwloc_bitmap_t
hwloc_parse_cpumap(const char *mappath, int fsroot_fd)
{
- hwloc_cpuset_t set;
+ hwloc_bitmap_t set;
FILE * file;
file = hwloc_fopen(mappath, "r", fsroot_fd);
if (!file)
return NULL;
- set = hwloc_cpuset_alloc();
+ set = hwloc_bitmap_alloc();
hwloc_linux_parse_cpumap_file(file, set);
fclose(file);
@@ -811,7 +1277,7 @@
static void
hwloc_find_linux_cpuset_mntpnt(char **cgroup_mntpnt, char **cpuset_mntpnt, int fsroot_fd)
{
-#define PROC_MOUNT_LINE_LEN 128
+#define PROC_MOUNT_LINE_LEN 512
char line[PROC_MOUNT_LINE_LEN];
FILE *fd;
@@ -831,6 +1297,13 @@
char *type;
char *tmp;
+ /* remove the ending " 0 0\n" that the kernel always adds */
+ tmp = line + strlen(line) - 5;
+ if (tmp < line || strcmp(tmp, " 0 0\n"))
+ fprintf(stderr, "Unexpected end of /proc/mounts line `%s'\n", line);
+ else
+ *tmp = '\0';
+
/* path is after first field and a space */
tmp = strchr(line, ' ');
if (!tmp)
@@ -851,9 +1324,12 @@
hwloc_debug("Found cpuset mount point on %s\n", path);
*cpuset_mntpnt = hwloc_strdup_mntpath(path, type-path);
break;
+
} else if (!strncmp(type, "cgroup ", 7)) {
/* found a cgroup mntpnt */
char *opt, *opts;
+ int cpuset_opt = 0;
+ int noprefix_opt = 0;
/* find options */
tmp = strchr(type, ' ');
@@ -861,14 +1337,23 @@
continue;
opts = tmp+1;
- /* find "cpuset" option */
- while ((opt = strsep(&opts, ",")) && strcmp(opt, "cpuset"))
- ; /* continue */
- if (!opt)
+ /* look at options */
+ while ((opt = strsep(&opts, ",")) != NULL) {
+ if (!strcmp(opt, "cpuset"))
+ cpuset_opt = 1;
+ else if (!strcmp(opt, "noprefix"))
+ noprefix_opt = 1;
+ }
+ if (!cpuset_opt)
continue;
- hwloc_debug("Found cgroup/cpuset mount point on %s\n", path);
- *cgroup_mntpnt = hwloc_strdup_mntpath(path, type-path);
+ if (noprefix_opt) {
+ hwloc_debug("Found cgroup emulating a cpuset mount point on %s\n", path);
+ *cpuset_mntpnt = hwloc_strdup_mntpath(path, type-path);
+ } else {
+ hwloc_debug("Found cgroup/cpuset mount point on %s\n", path);
+ *cgroup_mntpnt = hwloc_strdup_mntpath(path, type-path);
+ }
break;
}
}
@@ -1001,11 +1486,12 @@
hwloc_admin_disable_set_from_cpuset(struct hwloc_topology *topology,
const char *cgroup_mntpnt, const char *cpuset_mntpnt, const char *cpuset_name,
const char *attr_name,
- hwloc_cpuset_t admin_enabled_cpus_set)
+ hwloc_bitmap_t admin_enabled_cpus_set)
{
char *cpuset_mask;
char *current, *comma, *tmp;
int prevlast, nextfirst, nextlast; /* beginning/end of enabled-segments */
+ hwloc_bitmap_t tmpset;
cpuset_mask = hwloc_read_linux_cpuset_mask(cgroup_mntpnt, cpuset_mntpnt, cpuset_name,
attr_name, topology->backend_params.sysfs.root_fd);
@@ -1031,7 +1517,7 @@
nextlast = nextfirst;
if (prevlast+1 <= nextfirst-1) {
hwloc_debug("%s [%d:%d] excluded by cpuset\n", attr_name, prevlast+1, nextfirst-1);
- hwloc_cpuset_clr_range(admin_enabled_cpus_set, prevlast+1, nextfirst-1);
+ hwloc_bitmap_clr_range(admin_enabled_cpus_set, prevlast+1, nextfirst-1);
}
/* switch to next enabled-segment */
@@ -1041,95 +1527,232 @@
current = comma+1;
}
- /* disable after last enabled-segment */
- nextfirst = HWLOC_NBMAXCPUS;
- if (prevlast+1 <= nextfirst-1) {
- hwloc_debug("%s [%d:%d] excluded by cpuset\n", attr_name, prevlast+1, nextfirst-1);
- hwloc_cpuset_clr_range(admin_enabled_cpus_set, prevlast+1, nextfirst-1);
- }
+ hwloc_debug("%s [%d:%d] excluded by cpuset\n", attr_name, prevlast+1, nextfirst-1);
+ /* no easy way to clear until the infinity */
+ tmpset = hwloc_bitmap_alloc();
+ hwloc_bitmap_set_range(tmpset, 0, prevlast);
+ hwloc_bitmap_and(admin_enabled_cpus_set, admin_enabled_cpus_set, tmpset);
+ hwloc_bitmap_free(tmpset);
free(cpuset_mask);
}
static void
-hwloc_get_procfs_meminfo_info(struct hwloc_topology *topology,
- const char *path, struct hwloc_obj_memory_s *memory)
+hwloc_parse_meminfo_info(struct hwloc_topology *topology,
+ const char *path,
+ int prefixlength,
+ uint64_t *local_memory,
+ uint64_t *meminfo_hugepages_count,
+ uint64_t *meminfo_hugepages_size,
+ int onlytotal)
{
char string[64];
FILE *fd;
+ fd = hwloc_fopen(path, "r", topology->backend_params.sysfs.root_fd);
+ if (!fd)
+ return;
+
+ while (fgets(string, sizeof(string), fd) && *string != '\0')
+ {
+ unsigned long long number;
+ if (strlen(string) < (size_t) prefixlength)
+ continue;
+ if (sscanf(string+prefixlength, "MemTotal: %llu kB", (unsigned long long *) &number) == 1) {
+ *local_memory = number << 10;
+ if (onlytotal)
+ break;
+ }
+ else if (!onlytotal) {
+ if (sscanf(string+prefixlength, "Hugepagesize: %llu", (unsigned long long *) &number) == 1)
+ *meminfo_hugepages_size = number << 10;
+ else if (sscanf(string+prefixlength, "HugePages_Free: %llu", (unsigned long long *) &number) == 1)
+ /* these are free hugepages, not the total amount of huge pages */
+ *meminfo_hugepages_count = number;
+ }
+ }
+
+ fclose(fd);
+}
+
+#define SYSFS_NUMA_NODE_PATH_LEN 128
+
+static void
+hwloc_parse_hugepages_info(struct hwloc_topology *topology,
+ const char *dirpath,
+ struct hwloc_obj_memory_s *memory,
+ uint64_t *remaining_local_memory)
+{
+ DIR *dir;
+ struct dirent *dirent;
+ unsigned long index = 1;
+ FILE *hpfd;
+ char line[64];
+ char path[SYSFS_NUMA_NODE_PATH_LEN];
+
+ dir = hwloc_opendir(dirpath, topology->backend_params.sysfs.root_fd);
+ if (dir) {
+ while ((dirent = readdir(dir)) != NULL) {
+ if (strncmp(dirent->d_name, "hugepages-", 10))
+ continue;
+ memory->page_types[index].size = strtoul(dirent->d_name+10, NULL, 0) * 1024ULL;
+ sprintf(path, "%s/%s/nr_hugepages", dirpath, dirent->d_name);
+ hpfd = hwloc_fopen(path, "r", topology->backend_params.sysfs.root_fd);
+ if (hpfd) {
+ if (fgets(line, sizeof(line), hpfd)) {
+ fclose(hpfd);
+ /* these are the actual total amount of huge pages */
+ memory->page_types[index].count = strtoull(line, NULL, 0);
+ *remaining_local_memory -= memory->page_types[index].count * memory->page_types[index].size;
+ index++;
+ }
+ }
+ }
+ closedir(dir);
+ memory->page_types_len = index;
+ }
+}
+
+static void
+hwloc_get_kerrighed_node_meminfo_info(struct hwloc_topology *topology, unsigned long node, struct hwloc_obj_memory_s *memory)
+{
+ char path[128];
+ uint64_t meminfo_hugepages_count, meminfo_hugepages_size = 0;
+
if (topology->is_thissystem) {
memory->page_types_len = 2;
memory->page_types = malloc(2*sizeof(*memory->page_types));
memset(memory->page_types, 0, 2*sizeof(*memory->page_types));
-
- /* Try to get the hugepage size from sysconf in case we fail to get it from /proc/meminfo later */
+ /* Try to get the hugepage size from sysconf in case we fail to get it from /proc/meminfo later */
#ifdef HAVE__SC_LARGE_PAGESIZE
memory->page_types[1].size = sysconf(_SC_LARGE_PAGESIZE);
#endif
memory->page_types[0].size = getpagesize();
}
- fd = hwloc_fopen(path, "r", topology->backend_params.sysfs.root_fd);
- if (!fd)
- return;
+ snprintf(path, sizeof(path), "/proc/nodes/node%lu/meminfo", node);
+ hwloc_parse_meminfo_info(topology, path, 0 /* no prefix */,
+ &memory->local_memory,
+ &meminfo_hugepages_count, &meminfo_hugepages_size,
+ memory->page_types == NULL);
- while (fgets(string, sizeof(string), fd) && *string != '\0')
- {
- unsigned long long number;
- if (sscanf(string, "MemTotal: %llu kB", &number) == 1)
- memory->local_memory = number << 10;
- else if (memory->page_types && sscanf(string, "Hugepagesize: %llu", &number) == 1)
- memory->page_types[1].size = number << 10;
- else if (memory->page_types && sscanf(string, "HugePages_Free: %llu", &number) == 1)
- memory->page_types[1].count = number;
+ if (memory->page_types) {
+ uint64_t remaining_local_memory = memory->local_memory;
+ if (meminfo_hugepages_size) {
+ memory->page_types[1].size = meminfo_hugepages_size;
+ memory->page_types[1].count = meminfo_hugepages_count;
+ remaining_local_memory -= meminfo_hugepages_count * meminfo_hugepages_size;
+ } else {
+ memory->page_types_len = 1;
}
+ memory->page_types[0].count = remaining_local_memory / memory->page_types[0].size;
+ }
+}
- if (memory->page_types)
- memory->page_types[0].count = (memory->local_memory - memory->page_types[1].count*memory->page_types[1].size) / memory->page_types[0].size;
+static void
+hwloc_get_procfs_meminfo_info(struct hwloc_topology *topology, struct hwloc_obj_memory_s *memory)
+{
+ uint64_t meminfo_hugepages_count, meminfo_hugepages_size = 0;
+ struct stat st;
+ int has_sysfs_hugepages = 0;
+ int types = 2;
+ int err;
- fclose(fd);
+ err = hwloc_stat("/sys/kernel/mm/hugepages", &st, topology->backend_params.sysfs.root_fd);
+ if (!err) {
+ types = 1 + st.st_nlink-2;
+ has_sysfs_hugepages = 1;
+ }
+
+ if (topology->is_thissystem) {
+ memory->page_types_len = types;
+ memory->page_types = malloc(types*sizeof(*memory->page_types));
+ memset(memory->page_types, 0, types*sizeof(*memory->page_types));
+ /* Try to get the hugepage size from sysconf in case we fail to get it from /proc/meminfo later */
+#ifdef HAVE__SC_LARGE_PAGESIZE
+ memory->page_types[1].size = sysconf(_SC_LARGE_PAGESIZE);
+#endif
+ memory->page_types[0].size = getpagesize();
+ }
+
+ hwloc_parse_meminfo_info(topology, "/proc/meminfo", 0 /* no prefix */,
+ &memory->local_memory,
+ &meminfo_hugepages_count, &meminfo_hugepages_size,
+ memory->page_types == NULL);
+
+ if (memory->page_types) {
+ uint64_t remaining_local_memory = memory->local_memory;
+ if (has_sysfs_hugepages) {
+ /* read from node%d/hugepages/hugepages-%skB/nr_hugepages */
+ hwloc_parse_hugepages_info(topology, "/sys/kernel/mm/hugepages", memory, &remaining_local_memory);
+ } else {
+ /* use what we found in meminfo */
+ if (meminfo_hugepages_size) {
+ memory->page_types[1].size = meminfo_hugepages_size;
+ memory->page_types[1].count = meminfo_hugepages_count;
+ remaining_local_memory -= meminfo_hugepages_count * meminfo_hugepages_size;
+ } else {
+ memory->page_types_len = 1;
+ }
+ }
+ memory->page_types[0].count = remaining_local_memory / memory->page_types[0].size;
+ }
}
-#define SYSFS_NUMA_NODE_PATH_LEN 128
-
static void
hwloc_sysfs_node_meminfo_info(struct hwloc_topology *topology,
const char *syspath, int node,
struct hwloc_obj_memory_s *memory)
{
char path[SYSFS_NUMA_NODE_PATH_LEN];
- char string[64];
- FILE *fd;
+ char meminfopath[SYSFS_NUMA_NODE_PATH_LEN];
+ uint64_t meminfo_hugepages_count = 0;
+ uint64_t meminfo_hugepages_size = 0;
+ struct stat st;
+ int has_sysfs_hugepages = 0;
+ int types = 2;
+ int err;
- sprintf(path, "%s/node%d/meminfo", syspath, node);
- fd = hwloc_fopen(path, "r", topology->backend_params.sysfs.root_fd);
- if (!fd)
- return;
+ sprintf(path, "%s/node%d/hugepages", syspath, node);
+ err = hwloc_stat(path, &st, topology->backend_params.sysfs.root_fd);
+ if (!err) {
+ types = 1 + st.st_nlink-2;
+ has_sysfs_hugepages = 1;
+ }
if (topology->is_thissystem) {
- memory->page_types_len = 2;
- memory->page_types = malloc(2*sizeof(*memory->page_types));
- memset(memory->page_types, 0, 2*sizeof(*memory->page_types));
+ memory->page_types_len = types;
+ memory->page_types = malloc(types*sizeof(*memory->page_types));
+ memset(memory->page_types, 0, types*sizeof(*memory->page_types));
}
- while (fgets(string, sizeof(string), fd) && *string != '\0')
- {
- unsigned long long number;
- if (sscanf(string, "Node %d MemTotal: %llu kB", &node, &number) == 2)
- memory->local_memory = number << 10;
- else if (memory->page_types && sscanf(string, "Node %d HugePages_Free: %llu kB", &node, &number) == 2)
- memory->page_types[1].count = number;
- }
+ sprintf(meminfopath, "%s/node%d/meminfo", syspath, node);
+ hwloc_parse_meminfo_info(topology, meminfopath,
+ hwloc_snprintf(NULL, 0, "Node %d ", node),
+ &memory->local_memory,
+ &meminfo_hugepages_count, &meminfo_hugepages_size,
+ memory->page_types == NULL);
if (memory->page_types) {
- /* hwloc_get_procfs_meminfo_info must have been called earlier */
- memory->page_types[1].size = topology->levels[0][0]->memory.page_types[1].size;
+ uint64_t remaining_local_memory = memory->local_memory;
+ if (has_sysfs_hugepages) {
+ /* read from node%d/hugepages/hugepages-%skB/nr_hugepages */
+ hwloc_parse_hugepages_info(topology, path, memory, &remaining_local_memory);
+ } else {
+ /* use what we found in meminfo */
+ /* hwloc_get_procfs_meminfo_info must have been called earlier */
+ if (meminfo_hugepages_size) {
+ memory->page_types[1].count = meminfo_hugepages_count;
+ memory->page_types[1].size = topology->levels[0][0]->memory.page_types[1].size;
+ remaining_local_memory -= meminfo_hugepages_count * memory->page_types[1].size;
+ } else {
+ memory->page_types_len = 1;
+ }
+ }
+ /* update what's remaining as normal pages */
memory->page_types[0].size = getpagesize();
- memory->page_types[0].count = (memory->local_memory - memory->page_types[1].count*memory->page_types[1].size) / memory->page_types[0].size;
+ memory->page_types[0].count = remaining_local_memory / memory->page_types[0].size;
}
-
- fclose(fd);
}
static void
@@ -1166,39 +1789,67 @@
look_sysfsnode(struct hwloc_topology *topology, const char *path, unsigned *found)
{
unsigned osnode;
- unsigned nbnodes = 1;
+ unsigned nbnodes = 0;
DIR *dir;
struct dirent *dirent;
hwloc_obj_t node;
+ hwloc_bitmap_t nodeset = hwloc_bitmap_alloc();
*found = 0;
+ /* Get the list of nodes first */
dir = hwloc_opendir(path, topology->backend_params.sysfs.root_fd);
if (dir)
{
while ((dirent = readdir(dir)) != NULL)
{
- unsigned long numnode;
if (strncmp(dirent->d_name, "node", 4))
continue;
- numnode = strtoul(dirent->d_name+4, NULL, 0);
- if (nbnodes < numnode+1)
- nbnodes = numnode+1;
+ osnode = strtoul(dirent->d_name+4, NULL, 0);
+ hwloc_bitmap_set(nodeset, osnode);
+ nbnodes++;
}
closedir(dir);
}
if (nbnodes <= 1)
- return;
+ {
+ hwloc_bitmap_free(nodeset);
+ return;
+ }
/* For convenience, put these declarations inside a block. Saves us
from a bunch of mallocs, particularly with the 2D array. */
+
{
hwloc_obj_t nodes[nbnodes];
unsigned distances[nbnodes][nbnodes];
- for (osnode=0; osnode < nbnodes; osnode++) {
+ unsigned distance_indexes[nbnodes];
+ unsigned index;
+
+ /* Get node indexes now. We need them in order since Linux groups
+ * sparse distances but keep them in order in the sysfs distance files.
+ */
+ index = 0;
+ hwloc_bitmap_foreach_begin (osnode, nodeset) {
+ distance_indexes[index] = osnode;
+ index++;
+ } hwloc_bitmap_foreach_end();
+ hwloc_bitmap_free(nodeset);
+
+#ifdef HWLOC_DEBUG
+ hwloc_debug("%s", "numa distance indexes: ");
+ for (index = 0; index < nbnodes; index++) {
+ hwloc_debug(" %u", distance_indexes[index]);
+ }
+ hwloc_debug("%s", "\n");
+#endif
+
+ /* Get actual distances now */
+ for (index = 0; index < nbnodes; index++) {
char nodepath[SYSFS_NUMA_NODE_PATH_LEN];
- hwloc_cpuset_t cpuset;
+ hwloc_bitmap_t cpuset;
+ osnode = distance_indexes[index];
sprintf(nodepath, "%s/node%u/cpumap", path, osnode);
cpuset = hwloc_parse_cpumap(nodepath, topology->backend_params.sysfs.root_fd);
@@ -1207,38 +1858,310 @@
node = hwloc_alloc_setup_object(HWLOC_OBJ_NODE, osnode);
node->cpuset = cpuset;
- node->nodeset = hwloc_cpuset_alloc();
- hwloc_cpuset_set(node->nodeset, osnode);
+ node->nodeset = hwloc_bitmap_alloc();
+ hwloc_bitmap_set(node->nodeset, osnode);
hwloc_sysfs_node_meminfo_info(topology, path, osnode, &node->memory);
- hwloc_debug_1arg_cpuset("os node %u has cpuset %s\n",
+ hwloc_debug_1arg_bitmap("os node %u has cpuset %s\n",
osnode, node->cpuset);
hwloc_insert_object_by_cpuset(topology, node);
- nodes[osnode] = node;
+ nodes[index] = node;
sprintf(nodepath, "%s/node%u/distance", path, osnode);
- hwloc_parse_node_distance(nodepath, nbnodes, distances[osnode], topology->backend_params.sysfs.root_fd);
+ hwloc_parse_node_distance(nodepath, nbnodes, distances[index], topology->backend_params.sysfs.root_fd);
}
- hwloc_setup_misc_level_from_distances(topology, nbnodes, nodes, (unsigned*) distances);
+ hwloc_setup_misc_level_from_distances(topology, nbnodes, nodes, (unsigned *) distances, (unsigned *) distance_indexes);
}
*found = nbnodes;
}
+/* Reads the entire file and returns bytes read if bytes_read != NULL
+ * Returned pointer can be freed by using free(). */
+static void *
+hwloc_read_raw(const char *p, const char *p1, size_t *bytes_read, int root_fd)
+{
+ char fname[strlen(p) + 1 + strlen(p1) + 1];
+ char *ret = NULL;
+ struct stat fs;
+
+ snprintf(fname, sizeof(fname), "%s/%s", p, p1);
+
+ int file = hwloc_open(fname, root_fd);
+ if (-1 == file)
+ return NULL;
+ if (fstat(file, &fs)) {
+ close(file);
+ return NULL;
+ }
+
+ ret = (char *) malloc(fs.st_size);
+ if (NULL != ret) {
+ ssize_t cb = read(file, ret, fs.st_size);
+ if (cb == -1) {
+ free(ret);
+ ret = NULL;
+ } else {
+ if (NULL != bytes_read)
+ *bytes_read = cb;
+ }
+ }
+ close(file);
+ return ret;
+}
+
+/* Reads the entire file and returns it as a 0-terminated string
+ * Returned pointer can be freed by using free(). */
+static char *
+hwloc_read_str(const char *p, const char *p1, int root_fd)
+{
+ size_t cb = 0;
+ char *ret = hwloc_read_raw(p, p1, &cb, root_fd);
+ if ((NULL != ret) && (0 < cb) && (0 != ret[cb-1])) {
+ ret = realloc(ret, cb + 1);
+ ret[cb] = 0;
+ }
+ return ret;
+}
+
+/* Reads first 32bit bigendian value */
+static size_t
+hwloc_read_unit32be(const char *p, const char *p1, uint32_t *buf, int root_fd)
+{
+ size_t cb = 0;
+ uint32_t *tmp = hwloc_read_raw(p, p1, &cb, root_fd);
+ if (sizeof(*buf) != cb) {
+ errno = EINVAL;
+ return -1;
+ }
+ *buf = htonl(*tmp);
+ free(tmp);
+ return sizeof(*buf);
+}
+
+typedef struct {
+ unsigned int n, allocated;
+ struct {
+ hwloc_bitmap_t cpuset;
+ uint32_t ibm_phandle;
+ uint32_t l2_cache;
+ char *name;
+ } *p;
+} device_tree_cpus_t;
+
+static void
+add_device_tree_cpus_node(device_tree_cpus_t *cpus, hwloc_bitmap_t cpuset,
+ uint32_t l2_cache, uint32_t ibm_phandle, const char *name)
+{
+ if (cpus->n == cpus->allocated) {
+ if (!cpus->allocated)
+ cpus->allocated = 64;
+ else
+ cpus->allocated *= 2;
+ cpus->p = realloc(cpus->p, cpus->allocated * sizeof(cpus->p[0]));
+ }
+ cpus->p[cpus->n].ibm_phandle = ibm_phandle;
+ cpus->p[cpus->n].cpuset = (NULL == cpuset)?NULL:hwloc_bitmap_dup(cpuset);
+ cpus->p[cpus->n].l2_cache = l2_cache;
+ cpus->p[cpus->n].name = strdup(name);
+ ++cpus->n;
+}
+
+/* Walks over the cache list in order to detect nested caches and CPU mask for each */
+static int
+look_powerpc_device_tree_discover_cache(device_tree_cpus_t *cpus,
+ uint32_t ibm_phandle, unsigned int *level, hwloc_bitmap_t cpuset)
+{
+ int ret = -1;
+ if ((NULL == level) || (NULL == cpuset))
+ return ret;
+ for (unsigned int i = 0; i < cpus->n; ++i) {
+ if (ibm_phandle != cpus->p[i].l2_cache)
+ continue;
+ if (NULL != cpus->p[i].cpuset) {
+ hwloc_bitmap_or(cpuset, cpuset, cpus->p[i].cpuset);
+ ret = 0;
+ } else {
+ ++(*level);
+ if (0 == look_powerpc_device_tree_discover_cache(cpus,
+ cpus->p[i].ibm_phandle, level, cpuset))
+ ret = 0;
+ }
+ }
+ return ret;
+}
+
+static void
+try_add_cache_from_device_tree_cpu(struct hwloc_topology *topology,
+ const char *cpu, unsigned int level, hwloc_bitmap_t cpuset)
+{
+ /* Ignore Instruction caches */
+ /* d-cache-block-size - ignore */
+ /* d-cache-line-size - to read, in bytes */
+ /* d-cache-sets - ignore */
+ /* d-cache-size - to read, in bytes */
+ /* d-tlb-sets - ignore */
+ /* d-tlb-size - ignore, always 0 on power6 */
+ /* i-cache-* and i-tlb-* represent instruction cache, ignore */
+ uint32_t d_cache_line_size = 0, d_cache_size = 0;
+
+ hwloc_read_unit32be(cpu, "d-cache-line-size", &d_cache_line_size,
+ topology->backend_params.sysfs.root_fd);
+ hwloc_read_unit32be(cpu, "d-cache-size", &d_cache_size,
+ topology->backend_params.sysfs.root_fd);
+
+ if ( (0 == d_cache_line_size) && (0 == d_cache_size) )
+ return;
+
+ struct hwloc_obj *c = hwloc_alloc_setup_object(HWLOC_OBJ_CACHE, -1);
+ c->attr->cache.depth = level;
+ c->attr->cache.linesize = d_cache_line_size;
+ c->attr->cache.size = d_cache_size;
+ c->cpuset = hwloc_bitmap_dup(cpuset);
+ hwloc_debug_1arg_bitmap("cache depth %d has cpuset %s\n", level, c->cpuset);
+ hwloc_insert_object_by_cpuset(topology, c);
+}
+
+/*
+ * Discovers L1/L2/L3 cache information on IBM PowerPC systems for old kernels (RHEL5.*)
+ * which provide NUMA nodes information without any details
+ */
+static void
+look_powerpc_device_tree(struct hwloc_topology *topology)
+{
+ device_tree_cpus_t cpus = { .n = 0, .p = NULL, .allocated = 0 };
+ const char ofroot[] = "/proc/device-tree/cpus";
+
+ int root_fd = topology->backend_params.sysfs.root_fd;
+ DIR *dt = hwloc_opendir(ofroot, root_fd);
+ if (NULL == dt)
+ return;
+
+ struct dirent *dirent;
+ while (NULL != (dirent = readdir(dt))) {
+
+ if ('.' == dirent->d_name[0])
+ continue;
+
+ char cpu[sizeof(ofroot) + 1 + strlen(dirent->d_name) + 1];
+ snprintf(cpu, sizeof(cpu), "%s/%s", ofroot, dirent->d_name);
+ struct stat statbuf;
+ int err;
+
+ err = hwloc_stat(cpu, &statbuf, root_fd);
+ if (err < 0 || !S_ISDIR(statbuf.st_mode))
+ continue;
+
+ char *device_type = hwloc_read_str(cpu, "device_type", root_fd);
+ if (NULL == device_type)
+ continue;
+
+ uint32_t reg = -1, l2_cache = -1, ibm_phandle = -1;
+ hwloc_read_unit32be(cpu, "reg", ®, root_fd);
+ hwloc_read_unit32be(cpu, "l2-cache", &l2_cache, root_fd);
+ hwloc_read_unit32be(cpu, "ibm,phandle", &ibm_phandle, root_fd);
+
+ if (0 == strcmp(device_type, "cache")) {
+ add_device_tree_cpus_node(&cpus, NULL, l2_cache, ibm_phandle, dirent->d_name);
+ }
+ else if (0 == strcmp(device_type, "cpu")) {
+ /* Found CPU */
+ hwloc_bitmap_t cpuset = NULL;
+ size_t cb = 0;
+ uint32_t *threads = hwloc_read_raw(cpu, "ibm,ppc-interrupt-server#s", &cb, root_fd);
+ uint32_t nthreads = cb / sizeof(threads[0]);
+
+ if (NULL != threads) {
+ cpuset = hwloc_bitmap_alloc();
+ for (unsigned int i = 0; i < nthreads; ++i) {
+ hwloc_bitmap_set(cpuset, ntohl(threads[i]));
+ }
+ free(threads);
+ } else if ((unsigned int)-1 != reg) {
+ cpuset = hwloc_bitmap_alloc();
+ hwloc_bitmap_set(cpuset, reg);
+ }
+
+ if (NULL == cpuset) {
+ hwloc_debug("%s has no \"reg\" property, skipping\n", cpu);
+ } else {
+ add_device_tree_cpus_node(&cpus, cpuset, l2_cache, ibm_phandle, dirent->d_name);
+
+ /* Add core */
+ struct hwloc_obj *core = hwloc_alloc_setup_object(HWLOC_OBJ_CORE, reg);
+ core->cpuset = hwloc_bitmap_dup(cpuset);
+ hwloc_insert_object_by_cpuset(topology, core);
+
+ /* Add L1 cache */
+ try_add_cache_from_device_tree_cpu(topology, cpu, 1, cpuset);
+
+ hwloc_bitmap_free(cpuset);
+ }
+ free(device_type);
+ }
+ }
+ closedir(dt);
+
+ /* No cores and L2 cache were found, exiting */
+ if (0 == cpus.n) {
+ hwloc_debug("No cores and L2 cache were found in %s, exiting\n", ofroot);
+ return;
+ }
+
+#ifdef HWLOC_DEBUG
+ for (unsigned int i = 0; i < cpus.n; ++i) {
+ hwloc_debug("%i: %s ibm,phandle=%08X l2_cache=%08X ",
+ i, cpus.p[i].name, cpus.p[i].ibm_phandle, cpus.p[i].l2_cache);
+ if (NULL == cpus.p[i].cpuset) {
+ hwloc_debug("%s\n", "no cpuset");
+ } else {
+ hwloc_debug_bitmap("cpuset %s\n", cpus.p[i].cpuset);
+ }
+ }
+#endif
+
+ /* Scan L2/L3/... caches */
+ for (unsigned int i = 0; i < cpus.n; ++i) {
+ /* Skip real CPUs */
+ if (NULL != cpus.p[i].cpuset)
+ continue;
+
+ /* Calculate cache level and CPU mask */
+ unsigned int level = 2;
+ hwloc_bitmap_t cpuset = hwloc_bitmap_alloc();
+ if (0 == look_powerpc_device_tree_discover_cache(&cpus,
+ cpus.p[i].ibm_phandle, &level, cpuset)) {
+
+ char cpu[sizeof(ofroot) + 1 + strlen(cpus.p[i].name) + 1];
+ snprintf(cpu, sizeof(cpu), "%s/%s", ofroot, cpus.p[i].name);
+
+ try_add_cache_from_device_tree_cpu(topology, cpu, level, cpuset);
+ }
+ hwloc_bitmap_free(cpuset);
+ }
+
+ /* Do cleanup */
+ for (unsigned int i = 0; i < cpus.n; ++i) {
+ hwloc_bitmap_free(cpus.p[i].cpuset);
+ free(cpus.p[i].name);
+ }
+ free(cpus.p);
+}
+
/* Look at Linux' /sys/devices/system/cpu/cpu%d/topology/ */
static void
look_sysfscpu(struct hwloc_topology *topology, const char *path)
{
- hwloc_cpuset_t cpuset; /* Set of cpus for which we have topology information */
+ hwloc_bitmap_t cpuset; /* Set of cpus for which we have topology information */
#define CPU_TOPOLOGY_STR_LEN 128
char str[CPU_TOPOLOGY_STR_LEN];
DIR *dir;
int i,j;
FILE *fd;
- cpuset = hwloc_cpuset_alloc();
+ cpuset = hwloc_bitmap_alloc();
/* fill the cpuset of interesting cpus */
dir = hwloc_opendir(path, topology->backend_params.sysfs.root_fd);
@@ -1252,11 +2175,8 @@
continue;
cpu = strtoul(dirent->d_name+3, NULL, 0);
- if (cpu >= HWLOC_NBMAXCPUS)
- continue;
-
/* Maybe we don't have topology information but at least it exists */
- hwloc_cpuset_set(topology->levels[0][0]->complete_cpuset, cpu);
+ hwloc_bitmap_set(topology->levels[0][0]->complete_cpuset, cpu);
/* check whether this processor is online */
sprintf(str, "%s/cpu%lu/online", path, cpu);
@@ -1268,7 +2188,7 @@
hwloc_debug("os proc %lu is online\n", cpu);
} else {
hwloc_debug("os proc %lu is offline\n", cpu);
- hwloc_cpuset_clr(topology->levels[0][0]->online_cpuset, cpu);
+ hwloc_bitmap_clr(topology->levels[0][0]->online_cpuset, cpu);
}
} else {
fclose(fd);
@@ -1283,19 +2203,20 @@
continue;
}
- hwloc_cpuset_set(cpuset, cpu);
+ hwloc_bitmap_set(cpuset, cpu);
}
closedir(dir);
}
topology->support.discovery->pu = 1;
- hwloc_debug_1arg_cpuset("found %d cpu topologies, cpuset %s\n",
- hwloc_cpuset_weight(cpuset), cpuset);
+ hwloc_debug_1arg_bitmap("found %d cpu topologies, cpuset %s\n",
+ hwloc_bitmap_weight(cpuset), cpuset);
- hwloc_cpuset_foreach_begin(i, cpuset)
+ unsigned caches_added = 0;
+ hwloc_bitmap_foreach_begin(i, cpuset)
{
struct hwloc_obj *socket, *core, *thread;
- hwloc_cpuset_t socketset, coreset, threadset;
+ hwloc_bitmap_t socketset, coreset, threadset, savedcoreset;
unsigned mysocketid, mycoreid;
/* look at the socket */
@@ -1305,17 +2226,16 @@
sprintf(str, "%s/cpu%d/topology/core_siblings", path, i);
socketset = hwloc_parse_cpumap(str, topology->backend_params.sysfs.root_fd);
- if (socketset && hwloc_cpuset_weight(socketset) >= 1) {
- if (hwloc_cpuset_first(socketset) == i) {
- /* first cpu in this socket, add the socket */
- socket = hwloc_alloc_setup_object(HWLOC_OBJ_SOCKET, mysocketid);
- socket->cpuset = socketset;
- hwloc_debug_1arg_cpuset("os socket %u has cpuset %s\n",
+ if (socketset && hwloc_bitmap_first(socketset) == i) {
+ /* first cpu in this socket, add the socket */
+ socket = hwloc_alloc_setup_object(HWLOC_OBJ_SOCKET, mysocketid);
+ socket->cpuset = socketset;
+ hwloc_debug_1arg_bitmap("os socket %u has cpuset %s\n",
mysocketid, socketset);
- hwloc_insert_object_by_cpuset(topology, socket);
- } else
- hwloc_cpuset_free(socketset);
+ hwloc_insert_object_by_cpuset(topology, socket);
+ socketset = NULL; /* don't free it */
}
+ hwloc_bitmap_free(socketset);
/* look at the core */
mycoreid = 0; /* shut-up the compiler */
@@ -1324,25 +2244,24 @@
sprintf(str, "%s/cpu%d/topology/thread_siblings", path, i);
coreset = hwloc_parse_cpumap(str, topology->backend_params.sysfs.root_fd);
- if (coreset && hwloc_cpuset_weight(coreset) >= 1) {
- if (hwloc_cpuset_first(coreset) == i) {
- core = hwloc_alloc_setup_object(HWLOC_OBJ_CORE, mycoreid);
- core->cpuset = coreset;
- hwloc_debug_1arg_cpuset("os core %u has cpuset %s\n",
+ savedcoreset = coreset; /* store it for later work-arounds */
+ if (coreset && hwloc_bitmap_first(coreset) == i) {
+ core = hwloc_alloc_setup_object(HWLOC_OBJ_CORE, mycoreid);
+ core->cpuset = coreset;
+ hwloc_debug_1arg_bitmap("os core %u has cpuset %s\n",
mycoreid, coreset);
- hwloc_insert_object_by_cpuset(topology, core);
- } else
- hwloc_cpuset_free(coreset);
+ hwloc_insert_object_by_cpuset(topology, core);
+ coreset = NULL; /* don't free it */
}
/* look at the thread */
- threadset = hwloc_cpuset_alloc();
- hwloc_cpuset_cpu(threadset, i);
+ threadset = hwloc_bitmap_alloc();
+ hwloc_bitmap_only(threadset, i);
/* add the thread */
thread = hwloc_alloc_setup_object(HWLOC_OBJ_PU, i);
thread->cpuset = threadset;
- hwloc_debug_1arg_cpuset("thread %d has cpuset %s\n",
+ hwloc_debug_1arg_bitmap("thread %d has cpuset %s\n",
i, threadset);
hwloc_insert_object_by_cpuset(topology, thread);
@@ -1352,8 +2271,9 @@
char mappath[SHARED_CPU_MAP_STRLEN];
char str2[20]; /* enough for a level number (one digit) or a type (Data/Instruction/Unified) */
struct hwloc_obj *cache;
- hwloc_cpuset_t cacheset;
+ hwloc_bitmap_t cacheset;
unsigned long kB = 0;
+ unsigned linesize = 0;
int depth; /* 0 for L1, .... */
/* get the cache level depth */
@@ -1392,30 +2312,52 @@
fclose(fd);
}
+ /* get the line size */
+ sprintf(mappath, "%s/cpu%d/cache/index%d/coherency_line_size", path, i, j);
+ fd = hwloc_fopen(mappath, "r", topology->backend_params.sysfs.root_fd);
+ if (fd) {
+ if (fgets(str2,sizeof(str2), fd))
+ linesize = atol(str2); /* in bytes */
+ fclose(fd);
+ }
+
sprintf(mappath, "%s/cpu%d/cache/index%d/shared_cpu_map", path, i, j);
cacheset = hwloc_parse_cpumap(mappath, topology->backend_params.sysfs.root_fd);
if (cacheset) {
- if (hwloc_cpuset_weight(cacheset) < 1)
- /* mask is wrong (happens on ia64), assumes it's not shared */
- hwloc_cpuset_cpu(cacheset, i);
+ if (hwloc_bitmap_weight(cacheset) < 1) {
+ /* mask is wrong (useful for many itaniums) */
+ if (savedcoreset)
+ /* assume it's a core-specific cache */
+ hwloc_bitmap_copy(cacheset, savedcoreset);
+ else
+ /* assumes it's not shared */
+ hwloc_bitmap_only(cacheset, i);
+ }
- if (hwloc_cpuset_first(cacheset) == i) {
+ if (hwloc_bitmap_first(cacheset) == i) {
/* first cpu in this cache, add the cache */
cache = hwloc_alloc_setup_object(HWLOC_OBJ_CACHE, -1);
cache->attr->cache.size = kB << 10;
cache->attr->cache.depth = depth+1;
+ cache->attr->cache.linesize = linesize;
cache->cpuset = cacheset;
- hwloc_debug_1arg_cpuset("cache depth %d has cpuset %s\n",
+ hwloc_debug_1arg_bitmap("cache depth %d has cpuset %s\n",
depth, cacheset);
hwloc_insert_object_by_cpuset(topology, cache);
- } else
- hwloc_cpuset_free(cacheset);
+ cacheset = NULL; /* don't free it */
+ ++caches_added;
+ }
}
+ hwloc_bitmap_free(cacheset);
}
+ hwloc_bitmap_free(coreset);
}
- hwloc_cpuset_foreach_end();
+ hwloc_bitmap_foreach_end();
- hwloc_cpuset_free(cpuset);
+ if (0 == caches_added)
+ look_powerpc_device_tree(topology);
+
+ hwloc_bitmap_free(cpuset);
}
@@ -1423,9 +2365,10 @@
# define PROCESSOR "processor"
# define PHYSID "physical id"
# define COREID "core id"
+#define HWLOC_NBMAXCPUS 1024 /* FIXME: drop */
static int
look_cpuinfo(struct hwloc_topology *topology, const char *path,
- hwloc_cpuset_t online_cpuset)
+ hwloc_bitmap_t online_cpuset)
{
FILE *fd;
char str[strlen(PHYSID)+1+9+1+1];
@@ -1446,7 +2389,7 @@
unsigned missingcore;
unsigned long processor = (unsigned long) -1;
unsigned i;
- hwloc_cpuset_t cpuset;
+ hwloc_bitmap_t cpuset;
hwloc_obj_t obj;
for (i = 0; i < HWLOC_NBMAXCPUS; i++) {
@@ -1464,7 +2407,7 @@
return -1;
}
- cpuset = hwloc_cpuset_alloc();
+ cpuset = hwloc_bitmap_alloc();
/* Just record information and count number of sockets and cores */
hwloc_debug("%s", "\n\n * Topology extraction from /proc/cpuinfo *\n\n");
@@ -1478,26 +2421,26 @@
if (endptr==c) \
{ \
hwloc_debug("%s", "no number in "field" field of /proc/cpuinfo\n"); \
- hwloc_cpuset_free(cpuset); \
+ hwloc_bitmap_free(cpuset); \
return -1; \
} \
else if (var==ULONG_MAX) \
{ \
hwloc_debug("%s", "too big "field" number in /proc/cpuinfo\n"); \
- hwloc_cpuset_free(cpuset); \
+ hwloc_bitmap_free(cpuset); \
return -1; \
} \
hwloc_debug(field " %lu\n", var)
# define getprocnb_end() \
}
getprocnb_begin(PROCESSOR,processor);
- hwloc_cpuset_set(cpuset, processor);
+ hwloc_bitmap_set(cpuset, processor);
obj = hwloc_alloc_setup_object(HWLOC_OBJ_PU, processor);
- obj->cpuset = hwloc_cpuset_alloc();
- hwloc_cpuset_cpu(obj->cpuset, processor);
+ obj->cpuset = hwloc_bitmap_alloc();
+ hwloc_bitmap_only(obj->cpuset, processor);
- hwloc_debug_2args_cpuset("cpu %u (os %lu) has cpuset %s\n",
+ hwloc_debug_2args_bitmap("cpu %u (os %lu) has cpuset %s\n",
numprocs, processor, obj->cpuset);
numprocs++;
hwloc_insert_object_by_cpuset(topology, obj);
@@ -1536,18 +2479,18 @@
fclose(fd);
if (processor == (unsigned long) -1) {
- hwloc_cpuset_free(cpuset);
+ hwloc_bitmap_free(cpuset);
return -1;
}
topology->support.discovery->pu = 1;
/* setup the final number of procs */
procid_max = processor + 1;
- hwloc_cpuset_copy(online_cpuset, cpuset);
- hwloc_cpuset_free(cpuset);
+ hwloc_bitmap_copy(online_cpuset, cpuset);
+ hwloc_bitmap_free(cpuset);
hwloc_debug("%u online processors found, with id max %u\n", numprocs, procid_max);
- hwloc_debug_cpuset("online processor cpuset: %s\n", online_cpuset);
+ hwloc_debug_bitmap("online processor cpuset: %s\n", online_cpuset);
hwloc_debug("%s", "\n * Topology summary *\n");
hwloc_debug("%u processors (%u max id)\n", numprocs, procid_max);
@@ -1556,7 +2499,7 @@
* provide bogus information. We should rather drop it. */
missingsocket=0;
missingcore=0;
- hwloc_cpuset_foreach_begin(processor, online_cpuset)
+ hwloc_bitmap_foreach_begin(processor, online_cpuset)
if (proc_physids[processor] == (unsigned) -1)
missingsocket=1;
if (proc_coreids[processor] == (unsigned) -1)
@@ -1564,12 +2507,14 @@
if (missingcore && missingsocket)
/* No usable information, no need to continue */
break;
- hwloc_cpuset_foreach_end();
+ hwloc_bitmap_foreach_end();
hwloc_debug("%u sockets%s\n", numsockets, missingsocket ? ", but some missing socket" : "");
if (!missingsocket && numsockets>0)
hwloc_setup_level(procid_max, numsockets, osphysids, proc_physids, topology, HWLOC_OBJ_SOCKET);
+ look_powerpc_device_tree(topology);
+
hwloc_debug("%u cores%s\n", numcores, missingcore ? ", but some missing core" : "");
if (!missingcore && numcores>0)
hwloc_setup_level(procid_max, numcores, oscoreids, proc_coreids, topology, HWLOC_OBJ_CORE);
@@ -1578,49 +2523,59 @@
}
static void
-hwloc__get_dmi_info(struct hwloc_topology *topology,
- char **dmi_board_vendor, char **dmi_board_name)
+hwloc__get_dmi_one_info(struct hwloc_topology *topology, hwloc_obj_t obj, char *sysfs_name, char *hwloc_name)
{
-#define DMI_BOARD_STRINGS_LEN 50
- char dmi_line[DMI_BOARD_STRINGS_LEN];
+ char sysfs_path[128];
+ char dmi_line[64];
char *tmp;
FILE *fd;
- dmi_line[0] = '\0';
- fd = hwloc_fopen("/sys/class/dmi/id/board_vendor", "r", topology->backend_params.sysfs.root_fd);
- if (fd) {
- tmp = fgets(dmi_line, DMI_BOARD_STRINGS_LEN, fd);
- fclose (fd);
- if (tmp && dmi_line[0] != '\0') {
- tmp = strchr(dmi_line, '\n');
- if (tmp)
- *tmp = '\0';
- *dmi_board_vendor = strdup(dmi_line);
- hwloc_debug("found DMI board vendor '%s'\n", *dmi_board_vendor);
- }
- }
+ snprintf(sysfs_path, sizeof(sysfs_path), "/sys/class/dmi/id/%s", sysfs_name);
dmi_line[0] = '\0';
- fd = hwloc_fopen("/sys/class/dmi/id/board_name", "r", topology->backend_params.sysfs.root_fd);
+ fd = hwloc_fopen(sysfs_path, "r", topology->backend_params.sysfs.root_fd);
if (fd) {
- tmp = fgets(dmi_line, DMI_BOARD_STRINGS_LEN, fd);
+ tmp = fgets(dmi_line, sizeof(dmi_line), fd);
fclose (fd);
if (tmp && dmi_line[0] != '\0') {
tmp = strchr(dmi_line, '\n');
if (tmp)
*tmp = '\0';
- *dmi_board_name = strdup(dmi_line);
- hwloc_debug("found DMI board name '%s'\n", *dmi_board_name);
+ hwloc_debug("found %s '%s'\n", hwloc_name, dmi_line);
+ hwloc_add_object_info(obj, hwloc_name, dmi_line);
}
}
}
+static void
+hwloc__get_dmi_info(struct hwloc_topology *topology, hwloc_obj_t obj)
+{
+ hwloc__get_dmi_one_info(topology, obj, "product_name", "DMIProductName");
+ hwloc__get_dmi_one_info(topology, obj, "product_version", "DMIProductVersion");
+ hwloc__get_dmi_one_info(topology, obj, "product_serial", "DMIProductSerial");
+ hwloc__get_dmi_one_info(topology, obj, "product_uuid", "DMIProductUUID");
+ hwloc__get_dmi_one_info(topology, obj, "board_vendor", "DMIBoardVendor");
+ hwloc__get_dmi_one_info(topology, obj, "board_name", "DMIBoardName");
+ hwloc__get_dmi_one_info(topology, obj, "board_version", "DMIBoardVersion");
+ hwloc__get_dmi_one_info(topology, obj, "board_serial", "DMIBoardSerial");
+ hwloc__get_dmi_one_info(topology, obj, "board_asset_tag", "DMIBoardAssetTag");
+ hwloc__get_dmi_one_info(topology, obj, "chassis_vendor", "DMIChassisVendor");
+ hwloc__get_dmi_one_info(topology, obj, "chassis_type", "DMIChassisType");
+ hwloc__get_dmi_one_info(topology, obj, "chassis_version", "DMIChassisVersion");
+ hwloc__get_dmi_one_info(topology, obj, "chassis_serial", "DMIChassisSerial");
+ hwloc__get_dmi_one_info(topology, obj, "chassis_asset_tag", "DMIChassisAssetTag");
+ hwloc__get_dmi_one_info(topology, obj, "bios_vendor", "DMIBIOSVendor");
+ hwloc__get_dmi_one_info(topology, obj, "bios_version", "DMIBIOSVersion");
+ hwloc__get_dmi_one_info(topology, obj, "bios_date", "DMIBIOSDate");
+ hwloc__get_dmi_one_info(topology, obj, "sys_vendor", "DMISysVendor");
+}
+
void
hwloc_look_linux(struct hwloc_topology *topology)
{
DIR *nodes_dir;
unsigned nbnodes;
- char *cpuset_mntpnt, *cgroup_mntpnt, *cpuset_name;
+ char *cpuset_mntpnt, *cgroup_mntpnt, *cpuset_name = NULL;
int err;
/* Gather the list of admin-disabled cpus and mems */
@@ -1630,7 +2585,6 @@
if (cpuset_name) {
hwloc_admin_disable_set_from_cpuset(topology, cgroup_mntpnt, cpuset_mntpnt, cpuset_name, "cpus", topology->levels[0][0]->allowed_cpuset);
hwloc_admin_disable_set_from_cpuset(topology, cgroup_mntpnt, cpuset_mntpnt, cpuset_name, "mems", topology->levels[0][0]->allowed_nodeset);
- free(cpuset_name);
}
free(cgroup_mntpnt);
free(cpuset_mntpnt);
@@ -1642,7 +2596,7 @@
struct dirent *dirent;
char path[128];
hwloc_obj_t machine;
- hwloc_cpuset_t machine_online_set;
+ hwloc_bitmap_t machine_online_set;
/* replace top-level object type with SYSTEM and add some MACHINE underneath */
@@ -1655,52 +2609,49 @@
unsigned long node;
if (strncmp(dirent->d_name, "node", 4))
continue;
- machine_online_set = hwloc_cpuset_alloc();
+ machine_online_set = hwloc_bitmap_alloc();
node = strtoul(dirent->d_name+4, NULL, 0);
snprintf(path, sizeof(path), "/proc/nodes/node%lu/cpuinfo", node);
err = look_cpuinfo(topology, path, machine_online_set);
if (err < 0)
continue;
- hwloc_cpuset_or(topology->levels[0][0]->online_cpuset, topology->levels[0][0]->online_cpuset, machine_online_set);
+ hwloc_bitmap_or(topology->levels[0][0]->online_cpuset, topology->levels[0][0]->online_cpuset, machine_online_set);
machine = hwloc_alloc_setup_object(HWLOC_OBJ_MACHINE, node);
machine->cpuset = machine_online_set;
- machine->attr->machine.dmi_board_name = NULL;
- machine->attr->machine.dmi_board_vendor = NULL;
- hwloc_debug_1arg_cpuset("machine number %lu has cpuset %s\n",
+ hwloc_debug_1arg_bitmap("machine number %lu has cpuset %s\n",
node, machine_online_set);
hwloc_insert_object_by_cpuset(topology, machine);
- snprintf(path, sizeof(path), "/proc/nodes/node%lu/meminfo", node);
/* Get the machine memory attributes */
- hwloc_get_procfs_meminfo_info(topology, path, &machine->memory);
+ hwloc_get_kerrighed_node_meminfo_info(topology, node, &machine->memory);
/* Gather DMI info */
/* FIXME: get the right DMI info of each machine */
- hwloc__get_dmi_info(topology,
- &machine->attr->machine.dmi_board_vendor,
- &machine->attr->machine.dmi_board_name);
+ hwloc__get_dmi_info(topology, machine);
}
closedir(nodes_dir);
} else {
/* Get the machine memory attributes */
- hwloc_get_procfs_meminfo_info(topology, "/proc/meminfo", &topology->levels[0][0]->memory);
+ hwloc_get_procfs_meminfo_info(topology, &topology->levels[0][0]->memory);
/* Gather NUMA information. Must be after hwloc_get_procfs_meminfo_info so that the hugepage size is known */
look_sysfsnode(topology, "/sys/devices/system/node", &nbnodes);
/* if we found some numa nodes, the machine object has no local memory */
if (nbnodes) {
+ unsigned i;
topology->levels[0][0]->memory.local_memory = 0;
- if (topology->levels[0][0]->memory.page_types) {
- topology->levels[0][0]->memory.page_types[0].count = 0;
- topology->levels[0][0]->memory.page_types[1].count = 0;
- }
+ if (topology->levels[0][0]->memory.page_types)
+ for(i=0; i<topology->levels[0][0]->memory.page_types_len; i++)
+ topology->levels[0][0]->memory.page_types[i].count = 0;
}
/* Gather the list of cpus now */
if (getenv("HWLOC_LINUX_USE_CPUINFO")
- || hwloc_access("/sys/devices/system/cpu/cpu0/topology", R_OK, topology->backend_params.sysfs.root_fd) < 0) {
- /* revert to reading cpuinfo only if /sys/.../topology unavailable (before 2.6.16) */
+ || (hwloc_access("/sys/devices/system/cpu/cpu0/topology/core_siblings", R_OK, topology->backend_params.sysfs.root_fd) < 0
+ && hwloc_access("/sys/devices/system/cpu/cpu0/topology/thread_siblings", R_OK, topology->backend_params.sysfs.root_fd) < 0)) {
+ /* revert to reading cpuinfo only if /sys/.../topology unavailable (before 2.6.16)
+ * or not containing anything interesting */
err = look_cpuinfo(topology, "/proc/cpuinfo", topology->levels[0][0]->online_cpuset);
if (err < 0) {
if (topology->is_thissystem)
@@ -1715,10 +2666,18 @@
}
/* Gather DMI info */
- hwloc__get_dmi_info(topology,
- &topology->levels[0][0]->attr->machine.dmi_board_vendor,
- &topology->levels[0][0]->attr->machine.dmi_board_name);
+ hwloc__get_dmi_info(topology, topology->levels[0][0]);
}
+
+ hwloc_add_object_info(topology->levels[0][0], "Backend", "Linux");
+ if (cpuset_name) {
+ hwloc_add_object_info(topology->levels[0][0], "LinuxCgroup", cpuset_name);
+ free(cpuset_name);
+ }
+
+ /* gather uname info if fsroot wasn't changed */
+ if (topology->is_thissystem)
+ hwloc_add_uname_info(topology);
}
void
@@ -1736,6 +2695,20 @@
#if HAVE_DECL_PTHREAD_GETAFFINITY_NP
topology->get_thread_cpubind = hwloc_linux_get_thread_cpubind;
#endif /* HAVE_DECL_PTHREAD_GETAFFINITY_NP */
+#ifdef HWLOC_HAVE_SET_MEMPOLICY
+ topology->set_thisthread_membind = hwloc_linux_set_thisthread_membind;
+ topology->get_thisthread_membind = hwloc_linux_get_thisthread_membind;
+#endif /* HWLOC_HAVE_SET_MEMPOLICY */
+#ifdef HWLOC_HAVE_MBIND
+ topology->set_area_membind = hwloc_linux_set_area_membind;
+ topology->alloc_membind = hwloc_linux_alloc_membind;
+ topology->alloc = hwloc_alloc_mmap;
+ topology->free_membind = hwloc_linux_free_membind;
+ topology->support.membind->firsttouch_membind = 1;
+ topology->support.membind->bind_membind = 1;
+ topology->support.membind->interleave_membind = 1;
+#endif /* HWLOC_HAVE_MBIND */
+#if (defined HWLOC_HAVE_MIGRATE_PAGES) || ((defined HWLOC_HAVE_MBIND) && (defined MPOL_MF_MOVE))
+ topology->support.membind->migrate_membind = 1;
+#endif
}
-
-/* TODO mbind, setpolicy */
Modified: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/src/topology-osf.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/src/topology-osf.c 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/src/topology-osf.c 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,5 +1,7 @@
/*
- * Copyright © 2009 CNRS, INRIA, Université Bordeaux 1
+ * Copyright © 2009 CNRS
+ * Copyright © 2009-2010 INRIA
+ * Copyright © 2009-2010 Université Bordeaux 1
* See COPYING in top-level directory.
*/
@@ -22,9 +24,19 @@
#include <numa.h>
#include <radset.h>
#include <cpuset.h>
+#include <sys/mman.h>
+/*
+ * TODO
+ *
+ * nsg_init(), nsg_attach_pid(), RAD_MIGRATE/RAD_WAIT
+ * assign_pid_to_pset()
+ *
+ * pthread_use_only_cpu too?
+ */
+
static int
-prepare_radset(hwloc_topology_t topology, radset_t *radset, hwloc_const_cpuset_t hwloc_set)
+prepare_radset(hwloc_topology_t topology, radset_t *radset, hwloc_const_bitmap_t hwloc_set)
{
unsigned cpu;
cpuset_t target_cpuset;
@@ -35,9 +47,9 @@
cpusetcreate(&target_cpuset);
cpuemptyset(target_cpuset);
- hwloc_cpuset_foreach_begin(cpu, hwloc_set)
+ hwloc_bitmap_foreach_begin(cpu, hwloc_set)
cpuaddset(target_cpuset, cpu);
- hwloc_cpuset_foreach_end();
+ hwloc_bitmap_foreach_end();
cpusetcreate(&cpuset);
cpusetcreate(&xor_cpuset);
@@ -71,20 +83,26 @@
/* Note: get_cpubind not available on OSF */
static int
-hwloc_osf_set_thread_cpubind(hwloc_topology_t topology, hwloc_thread_t thread, hwloc_const_cpuset_t hwloc_set, int policy)
+hwloc_osf_set_thread_cpubind(hwloc_topology_t topology, hwloc_thread_t thread, hwloc_const_bitmap_t hwloc_set, int flags)
{
radset_t radset;
- if (hwloc_cpuset_isequal(hwloc_set, hwloc_topology_get_complete_cpuset(topology))) {
+ if (hwloc_bitmap_isequal(hwloc_set, hwloc_topology_get_complete_cpuset(topology))) {
if ((errno = pthread_rad_detach(thread)))
return -1;
return 0;
}
+ /* Apparently OSF migrates pages */
+ if (flags & HWLOC_CPUBIND_NOMEMBIND) {
+ errno = ENOSYS;
+ return -1;
+ }
+
if (!prepare_radset(topology, &radset, hwloc_set))
return -1;
- if (policy & HWLOC_CPUBIND_STRICT) {
+ if (flags & HWLOC_CPUBIND_STRICT) {
if ((errno = pthread_rad_bind(thread, radset, RAD_INSIST | RAD_WAIT)))
return -1;
} else {
@@ -97,20 +115,26 @@
}
static int
-hwloc_osf_set_proc_cpubind(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_const_cpuset_t hwloc_set, int policy)
+hwloc_osf_set_proc_cpubind(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_const_bitmap_t hwloc_set, int flags)
{
radset_t radset;
- if (hwloc_cpuset_isequal(hwloc_set, hwloc_topology_get_complete_cpuset(topology))) {
+ if (hwloc_bitmap_isequal(hwloc_set, hwloc_topology_get_complete_cpuset(topology))) {
if (rad_detach_pid(pid))
return -1;
return 0;
}
+ /* Apparently OSF migrates pages */
+ if (flags & HWLOC_CPUBIND_NOMEMBIND) {
+ errno = ENOSYS;
+ return -1;
+ }
+
if (!prepare_radset(topology, &radset, hwloc_set))
return -1;
- if (policy & HWLOC_CPUBIND_STRICT) {
+ if (flags & HWLOC_CPUBIND_STRICT) {
if (rad_bind_pid(pid, radset, RAD_INSIST | RAD_WAIT))
return -1;
} else {
@@ -123,26 +147,95 @@
}
static int
-hwloc_osf_set_thisthread_cpubind(hwloc_topology_t topology, hwloc_const_cpuset_t hwloc_set, int policy)
+hwloc_osf_set_thisthread_cpubind(hwloc_topology_t topology, hwloc_const_bitmap_t hwloc_set, int flags)
{
- return hwloc_osf_set_thread_cpubind(topology, pthread_self(), hwloc_set, policy);
+ return hwloc_osf_set_thread_cpubind(topology, pthread_self(), hwloc_set, flags);
}
static int
-hwloc_osf_set_thisproc_cpubind(hwloc_topology_t topology, hwloc_const_cpuset_t hwloc_set, int policy)
+hwloc_osf_set_thisproc_cpubind(hwloc_topology_t topology, hwloc_const_bitmap_t hwloc_set, int flags)
{
- return hwloc_osf_set_proc_cpubind(topology, getpid(), hwloc_set, policy);
+ return hwloc_osf_set_proc_cpubind(topology, getpid(), hwloc_set, flags);
}
-/* TODO: memory
- *
- * nmadvise(addr,len), nmmap()
- * policies: DIRECTED, STRIPPED, first_touch(REPLICATED)
- *
- * nsg_init(), nsg_attach_pid(), RAD_MIGRATE/RAD_WAIT
- * assign_pid_to_pset()
- */
+static int
+hwloc_osf_prepare_mattr(hwloc_topology_t topology __hwloc_attribute_unused, memalloc_attr_t *mattr, hwloc_const_nodeset_t nodeset, hwloc_membind_policy_t policy, int flags __hwloc_attribute_unused)
+{
+ unsigned long osf_policy;
+ int node;
+ switch (policy) {
+ case HWLOC_MEMBIND_FIRSTTOUCH:
+ osf_policy = MPOL_THREAD;
+ break;
+ case HWLOC_MEMBIND_DEFAULT:
+ case HWLOC_MEMBIND_BIND:
+ osf_policy = MPOL_DIRECTED;
+ break;
+ case HWLOC_MEMBIND_INTERLEAVE:
+ osf_policy = MPOL_STRIPPED;
+ break;
+ case HWLOC_MEMBIND_REPLICATE:
+ osf_policy = MPOL_REPLICATED;
+ break;
+ default:
+ errno = ENOSYS;
+ return -1;
+ }
+
+ memset(mattr, 0, sizeof(*mattr));
+ mattr->mattr_policy = osf_policy;
+ mattr->mattr_rad = RAD_NONE;
+ radsetcreate(&mattr->mattr_radset);
+ rademptyset(mattr->mattr_radset);
+
+ hwloc_bitmap_foreach_begin(node, nodeset)
+ radaddset(mattr->mattr_radset, node);
+ hwloc_bitmap_foreach_end();
+ return 0;
+}
+
+static int
+hwloc_osf_set_area_membind(hwloc_topology_t topology, const void *addr, size_t len, hwloc_const_nodeset_t nodeset, hwloc_membind_policy_t policy, int flags)
+{
+ memalloc_attr_t mattr;
+ int behavior = 0;
+ int ret;
+
+ if (flags & HWLOC_MEMBIND_MIGRATE)
+ behavior |= MADV_CURRENT;
+ if (flags & HWLOC_MEMBIND_STRICT)
+ behavior |= MADV_INSIST;
+
+ if (hwloc_osf_prepare_mattr(topology, &mattr, nodeset, policy, flags))
+ return -1;
+
+ ret = nmadvise(addr, len, MADV_CURRENT, &mattr);
+ radsetdestroy(&mattr.mattr_radset);
+ return ret;
+}
+
+static void *
+hwloc_osf_alloc_membind(hwloc_topology_t topology, size_t len, hwloc_const_nodeset_t nodeset, hwloc_membind_policy_t policy, int flags)
+{
+ memalloc_attr_t mattr;
+ void *ptr;
+
+ if (hwloc_osf_prepare_mattr(topology, &mattr, nodeset, policy, flags))
+ return hwloc_alloc_or_fail(topology, len, flags);
+
+ /* TODO: rather use acreate/amalloc ? */
+ ptr = nmmap(NULL, len, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, -1,
+ 0, &mattr);
+ radsetdestroy(&mattr.mattr_radset);
+ return ptr;
+}
+
+static int
+hwloc_osf_free_membind(hwloc_topology_t topology __hwloc_attribute_unused, void *addr, size_t len) {
+ return munmap(addr, len);
+}
+
void
hwloc_look_osf(struct hwloc_topology *topology)
{
@@ -163,6 +256,7 @@
{
hwloc_obj_t nodes[nbnodes];
unsigned distances[nbnodes][nbnodes];
+ unsigned distance_indexes[nbnodes];
unsigned nfound;
numa_attr_t attr = {
.nattr_type = R_RAD,
@@ -180,7 +274,7 @@
}
nodes[radid] = obj = hwloc_alloc_setup_object(HWLOC_OBJ_NODE, radid);
- obj->cpuset = hwloc_cpuset_alloc();
+ obj->cpuset = hwloc_bitmap_alloc();
obj->memory.local_memory = rad_get_physmem(radid) * getpagesize();
obj->memory.page_types_len = 2;
obj->memory.page_types = malloc(2*sizeof(*obj->memory.page_types));
@@ -192,13 +286,15 @@
cursor = SET_CURSOR_INIT;
while((cpuid = cpu_foreach(cpuset, 0, &cursor)) != CPU_NONE)
- hwloc_cpuset_set(obj->cpuset, cpuid);
+ hwloc_bitmap_set(obj->cpuset, cpuid);
- hwloc_debug_1arg_cpuset("node %d has cpuset %s\n",
+ hwloc_debug_1arg_bitmap("node %d has cpuset %s\n",
radid, obj->cpuset);
hwloc_insert_object_by_cpuset(topology, obj);
+ distance_indexes[radid] = radid;
+
nfound = 0;
for (radid2 = 0; radid2 < (radid_t) nbnodes; radid2++)
distances[radid][radid2] = RAD_DIST_REMOTE;
@@ -221,7 +317,7 @@
break;
}
}
- hwloc_setup_misc_level_from_distances(topology, nbnodes, nodes, (unsigned*) distances);
+ hwloc_setup_misc_level_from_distances(topology, nbnodes, nodes, (unsigned*) distances, (unsigned*) distance_indexes);
}
radsetdestroy(&radset2);
radsetdestroy(&radset);
@@ -229,6 +325,8 @@
/* add PU objects */
hwloc_setup_pu_level(topology, hwloc_fallback_nbprocessors(topology));
+
+ hwloc_add_object_info(topology->levels[0][0], "Backend", "OSF");
}
void
@@ -238,4 +336,12 @@
topology->set_thisthread_cpubind = hwloc_osf_set_thisthread_cpubind;
topology->set_proc_cpubind = hwloc_osf_set_proc_cpubind;
topology->set_thisproc_cpubind = hwloc_osf_set_thisproc_cpubind;
+ topology->set_area_membind = hwloc_osf_set_area_membind;
+ topology->alloc_membind = hwloc_osf_alloc_membind;
+ topology->alloc = hwloc_alloc_mmap;
+ topology->free_membind = hwloc_osf_free_membind;
+ topology->support.membind->firsttouch_membind = 1;
+ topology->support.membind->bind_membind = 1;
+ topology->support.membind->interleave_membind = 1;
+ topology->support.membind->replicate_membind = 1;
}
Modified: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/src/topology-solaris.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/src/topology-solaris.c 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/src/topology-solaris.c 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,5 +1,7 @@
/*
- * Copyright © 2009 CNRS, INRIA, Université Bordeaux 1
+ * Copyright © 2009 CNRS
+ * Copyright © 2009-2010 INRIA
+ * Copyright © 2009-2010 Université Bordeaux 1
* See COPYING in top-level directory.
*/
@@ -15,28 +17,89 @@
#include <sys/types.h>
#include <sys/processor.h>
#include <sys/procset.h>
+#include <sys/types.h>
+#include <sys/mman.h>
-/* Note: get_cpubind not available on Solaris */
-/* TODO: try to use pset (restricted to super-user) to support cpusets with weigth > 1? */
+#ifdef HAVE_LIBLGRP
+# include <sys/lgrp_user.h>
+#endif
+
+/* TODO: use psets? (only for root)
+ */
+
static int
-hwloc_solaris_set_sth_cpubind(hwloc_topology_t topology, idtype_t idtype, id_t id, hwloc_const_cpuset_t hwloc_set, int policy __hwloc_attribute_unused)
+hwloc_solaris_set_sth_cpubind(hwloc_topology_t topology, idtype_t idtype, id_t id, hwloc_const_bitmap_t hwloc_set, int flags)
{
unsigned target;
/* The resulting binding is always strict */
- if (hwloc_cpuset_isequal(hwloc_set, hwloc_topology_get_complete_cpuset(topology))) {
+ if (hwloc_bitmap_isequal(hwloc_set, hwloc_topology_get_complete_cpuset(topology))) {
if (processor_bind(idtype, id, PBIND_NONE, NULL) != 0)
return -1;
+#ifdef HAVE_LIBLGRP
+ if (!(flags & HWLOC_CPUBIND_NOMEMBIND)) {
+ int depth = hwloc_get_type_depth(topology, HWLOC_OBJ_NODE);
+ if (depth >= 0) {
+ int n = hwloc_get_nbobjs_by_depth(topology, depth);
+ int i;
+
+ for (i = 0; i < n; i++) {
+ hwloc_obj_t obj = hwloc_get_obj_by_depth(topology, depth, i);
+ lgrp_affinity_set(idtype, id, obj->os_index, LGRP_AFF_NONE);
+ }
+ }
+ }
+#endif /* HAVE_LIBLGRP */
return 0;
}
- if (hwloc_cpuset_weight(hwloc_set) != 1) {
+#ifdef HAVE_LIBLGRP
+ if (!(flags & HWLOC_CPUBIND_NOMEMBIND)) {
+ int depth = hwloc_get_type_depth(topology, HWLOC_OBJ_NODE);
+ if (depth >= 0) {
+ int n = hwloc_get_nbobjs_by_depth(topology, depth);
+ int i;
+ int ok;
+ hwloc_bitmap_t target = hwloc_bitmap_alloc();
+
+ for (i = 0; i < n; i++) {
+ hwloc_obj_t obj = hwloc_get_obj_by_depth(topology, depth, i);
+ if (hwloc_bitmap_isincluded(obj->cpuset, hwloc_set))
+ hwloc_bitmap_or(target, target, obj->cpuset);
+ }
+
+ ok = hwloc_bitmap_isequal(target, hwloc_set);
+ hwloc_bitmap_free(target);
+
+ if (ok) {
+ /* Ok, managed to achieve hwloc_set by just combining NUMA nodes */
+
+ for (i = 0; i < n; i++) {
+ hwloc_obj_t obj = hwloc_get_obj_by_depth(topology, depth, i);
+
+ if (hwloc_bitmap_isincluded(obj->cpuset, hwloc_set)) {
+ lgrp_affinity_set(idtype, id, obj->os_index, LGRP_AFF_STRONG);
+ } else {
+ if (flags & HWLOC_CPUBIND_STRICT)
+ lgrp_affinity_set(idtype, id, obj->os_index, LGRP_AFF_NONE);
+ else
+ lgrp_affinity_set(idtype, id, obj->os_index, LGRP_AFF_WEAK);
+ }
+ }
+
+ return 0;
+ }
+ }
+ }
+#endif /* HAVE_LIBLGRP */
+
+ if (hwloc_bitmap_weight(hwloc_set) != 1) {
errno = EXDEV;
return -1;
}
- target = hwloc_cpuset_first(hwloc_set);
+ target = hwloc_bitmap_first(hwloc_set);
if (processor_bind(idtype, id,
(processorid_t) (target), NULL) != 0)
@@ -46,27 +109,222 @@
}
static int
-hwloc_solaris_set_proc_cpubind(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_const_cpuset_t hwloc_set, int policy)
+hwloc_solaris_set_proc_cpubind(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_const_bitmap_t hwloc_set, int flags)
{
- return hwloc_solaris_set_sth_cpubind(topology, P_PID, pid, hwloc_set, policy);
+ return hwloc_solaris_set_sth_cpubind(topology, P_PID, pid, hwloc_set, flags);
}
static int
-hwloc_solaris_set_thisproc_cpubind(hwloc_topology_t topology, hwloc_const_cpuset_t hwloc_set, int policy)
+hwloc_solaris_set_thisproc_cpubind(hwloc_topology_t topology, hwloc_const_bitmap_t hwloc_set, int flags)
{
- return hwloc_solaris_set_sth_cpubind(topology, P_PID, P_MYID, hwloc_set, policy);
+ return hwloc_solaris_set_sth_cpubind(topology, P_PID, P_MYID, hwloc_set, flags);
}
static int
-hwloc_solaris_set_thisthread_cpubind(hwloc_topology_t topology, hwloc_const_cpuset_t hwloc_set, int policy)
+hwloc_solaris_set_thisthread_cpubind(hwloc_topology_t topology, hwloc_const_bitmap_t hwloc_set, int flags)
{
- return hwloc_solaris_set_sth_cpubind(topology, P_LWPID, P_MYID, hwloc_set, policy);
+ return hwloc_solaris_set_sth_cpubind(topology, P_LWPID, P_MYID, hwloc_set, flags);
}
-/* TODO: thread, maybe not easy because of the historical n:m implementation */
+#ifdef HAVE_LIBLGRP
+static int
+hwloc_solaris_get_sth_cpubind(hwloc_topology_t topology, idtype_t idtype, id_t id, hwloc_bitmap_t hwloc_set, int flags __hwloc_attribute_unused)
+{
+ int depth = hwloc_get_type_depth(topology, HWLOC_OBJ_NODE);
+ int n;
+ int i;
+ if (depth < 0) {
+ errno = ENOSYS;
+ return -1;
+ }
+
+ hwloc_bitmap_zero(hwloc_set);
+ n = hwloc_get_nbobjs_by_depth(topology, depth);
+
+ for (i = 0; i < n; i++) {
+ hwloc_obj_t obj = hwloc_get_obj_by_depth(topology, depth, i);
+ lgrp_affinity_t aff = lgrp_affinity_get(idtype, id, obj->os_index);
+
+ if (aff == LGRP_AFF_STRONG)
+ hwloc_bitmap_or(hwloc_set, hwloc_set, obj->cpuset);
+ }
+
+ if (hwloc_bitmap_iszero(hwloc_set))
+ hwloc_bitmap_copy(hwloc_set, hwloc_topology_get_complete_cpuset(topology));
+
+ return 0;
+}
+
+static int
+hwloc_solaris_get_proc_cpubind(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_bitmap_t hwloc_set, int flags)
+{
+ return hwloc_solaris_get_sth_cpubind(topology, P_PID, pid, hwloc_set, flags);
+}
+
+static int
+hwloc_solaris_get_thisproc_cpubind(hwloc_topology_t topology, hwloc_bitmap_t hwloc_set, int flags)
+{
+ return hwloc_solaris_get_sth_cpubind(topology, P_PID, P_MYID, hwloc_set, flags);
+}
+
+static int
+hwloc_solaris_get_thisthread_cpubind(hwloc_topology_t topology, hwloc_bitmap_t hwloc_set, int flags)
+{
+ return hwloc_solaris_get_sth_cpubind(topology, P_LWPID, P_MYID, hwloc_set, flags);
+}
+#endif /* HAVE_LIBLGRP */
+
+/* TODO: given thread, probably not easy because of the historical n:m implementation */
#ifdef HAVE_LIBLGRP
-# include <sys/lgrp_user.h>
+static int
+hwloc_solaris_set_sth_membind(hwloc_topology_t topology, idtype_t idtype, id_t id, hwloc_const_nodeset_t nodeset, hwloc_membind_policy_t policy, int flags)
+{
+ int depth;
+ int n, i;
+
+ switch (policy) {
+ case HWLOC_MEMBIND_DEFAULT:
+ case HWLOC_MEMBIND_BIND:
+ break;
+ default:
+ errno = ENOSYS;
+ return -1;
+ }
+
+ if (flags & HWLOC_MEMBIND_NOCPUBIND) {
+ errno = ENOSYS;
+ return -1;
+ }
+
+ depth = hwloc_get_type_depth(topology, HWLOC_OBJ_NODE);
+ if (depth < 0) {
+ errno = EXDEV;
+ return -1;
+ }
+ n = hwloc_get_nbobjs_by_depth(topology, depth);
+
+ for (i = 0; i < n; i++) {
+ hwloc_obj_t obj = hwloc_get_obj_by_depth(topology, depth, i);
+ if (hwloc_bitmap_isset(nodeset, obj->os_index)) {
+ lgrp_affinity_set(idtype, id, obj->os_index, LGRP_AFF_STRONG);
+ } else {
+ if (flags & HWLOC_CPUBIND_STRICT)
+ lgrp_affinity_set(idtype, id, obj->os_index, LGRP_AFF_NONE);
+ else
+ lgrp_affinity_set(idtype, id, obj->os_index, LGRP_AFF_WEAK);
+ }
+ }
+
+ return 0;
+}
+
+static int
+hwloc_solaris_set_proc_membind(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_const_nodeset_t nodeset, hwloc_membind_policy_t policy, int flags)
+{
+ return hwloc_solaris_set_sth_membind(topology, P_PID, pid, nodeset, policy, flags);
+}
+
+static int
+hwloc_solaris_set_thisproc_membind(hwloc_topology_t topology, hwloc_const_nodeset_t nodeset, hwloc_membind_policy_t policy, int flags)
+{
+ return hwloc_solaris_set_sth_membind(topology, P_PID, P_MYID, nodeset, policy, flags);
+}
+
+static int
+hwloc_solaris_set_thisthread_membind(hwloc_topology_t topology, hwloc_const_nodeset_t nodeset, hwloc_membind_policy_t policy, int flags)
+{
+ return hwloc_solaris_set_sth_membind(topology, P_LWPID, P_MYID, nodeset, policy, flags);
+}
+
+static int
+hwloc_solaris_get_sth_membind(hwloc_topology_t topology, idtype_t idtype, id_t id, hwloc_nodeset_t nodeset, hwloc_membind_policy_t *policy, int flags __hwloc_attribute_unused)
+{
+ int depth = hwloc_get_type_depth(topology, HWLOC_OBJ_NODE);
+ int n;
+ int i;
+
+ if (depth < 0) {
+ errno = ENOSYS;
+ return -1;
+ }
+
+ hwloc_bitmap_zero(nodeset);
+ n = hwloc_get_nbobjs_by_depth(topology, depth);
+
+ for (i = 0; i < n; i++) {
+ hwloc_obj_t obj = hwloc_get_obj_by_depth(topology, depth, i);
+ lgrp_affinity_t aff = lgrp_affinity_get(idtype, id, obj->os_index);
+
+ if (aff == LGRP_AFF_STRONG)
+ hwloc_bitmap_set(nodeset, obj->os_index);
+ }
+
+ if (hwloc_bitmap_iszero(nodeset))
+ hwloc_bitmap_copy(nodeset, hwloc_topology_get_complete_nodeset(topology));
+
+ *policy = HWLOC_MEMBIND_DEFAULT;
+ return 0;
+}
+
+static int
+hwloc_solaris_get_proc_membind(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_nodeset_t nodeset, hwloc_membind_policy_t *policy, int flags)
+{
+ return hwloc_solaris_get_sth_membind(topology, P_PID, pid, nodeset, policy, flags);
+}
+
+static int
+hwloc_solaris_get_thisproc_membind(hwloc_topology_t topology, hwloc_nodeset_t nodeset, hwloc_membind_policy_t *policy, int flags)
+{
+ return hwloc_solaris_get_sth_membind(topology, P_PID, P_MYID, nodeset, policy, flags);
+}
+
+static int
+hwloc_solaris_get_thisthread_membind(hwloc_topology_t topology, hwloc_nodeset_t nodeset, hwloc_membind_policy_t *policy, int flags)
+{
+ return hwloc_solaris_get_sth_membind(topology, P_LWPID, P_MYID, nodeset, policy, flags);
+}
+#endif /* HAVE_LIBLGRP */
+
+
+#ifdef MADV_ACCESS_LWP
+static int
+hwloc_solaris_set_area_membind(hwloc_topology_t topology, const void *addr, size_t len, hwloc_const_nodeset_t nodeset, hwloc_membind_policy_t policy, int flags __hwloc_attribute_unused)
+{
+ int advice;
+ size_t remainder;
+
+ /* Can not give a set of nodes just for an area. */
+ if (!hwloc_bitmap_isequal(nodeset, hwloc_topology_get_complete_nodeset(topology))) {
+ errno = EXDEV;
+ return -1;
+ }
+
+ switch (policy) {
+ case HWLOC_MEMBIND_DEFAULT:
+ case HWLOC_MEMBIND_BIND:
+ advice = MADV_ACCESS_DEFAULT;
+ break;
+ case HWLOC_MEMBIND_FIRSTTOUCH:
+ case HWLOC_MEMBIND_NEXTTOUCH:
+ advice = MADV_ACCESS_LWP;
+ break;
+ case HWLOC_MEMBIND_INTERLEAVE:
+ advice = MADV_ACCESS_MANY;
+ break;
+ default:
+ errno = ENOSYS;
+ return -1;
+ }
+
+ remainder = (uintptr_t) addr & (sysconf(_SC_PAGESIZE)-1);
+ addr = (char*) addr - remainder;
+ len += remainder;
+ return madvise((void*) addr, len, advice);
+}
+#endif
+
+#ifdef HAVE_LIBLGRP
static void
browse(struct hwloc_topology *topology, lgrp_cookie_t cookie, lgrp_id_t lgrp, hwloc_obj_t *glob_lgrps, unsigned *curlgrp)
{
@@ -78,23 +336,24 @@
if (n == -1)
return;
+ /* Is this lgrp a NUMA node? */
if ((mem_size = lgrp_mem_size(cookie, lgrp, LGRP_MEM_SZ_INSTALLED, LGRP_CONTENT_DIRECT)) > 0)
{
int i;
processorid_t cpuids[n];
obj = hwloc_alloc_setup_object(HWLOC_OBJ_NODE, lgrp);
- obj->nodeset = hwloc_cpuset_alloc();
- hwloc_cpuset_set(obj->nodeset, lgrp);
- obj->cpuset = hwloc_cpuset_alloc();
+ obj->nodeset = hwloc_bitmap_alloc();
+ hwloc_bitmap_set(obj->nodeset, lgrp);
+ obj->cpuset = hwloc_bitmap_alloc();
glob_lgrps[(*curlgrp)++] = obj;
lgrp_cpus(cookie, lgrp, cpuids, n, LGRP_CONTENT_HIERARCHY);
for (i = 0; i < n ; i++) {
hwloc_debug("node %ld's cpu %d is %d\n", lgrp, i, cpuids[i]);
- hwloc_cpuset_set(obj->cpuset, cpuids[i]);
+ hwloc_bitmap_set(obj->cpuset, cpuids[i]);
}
- hwloc_debug_1arg_cpuset("node %ld has cpuset %s\n",
+ hwloc_debug_1arg_bitmap("node %ld has cpuset %s\n",
lgrp, obj->cpuset);
/* or LGRP_MEM_SZ_FREE */
@@ -150,11 +409,14 @@
#ifdef HAVE_LGRP_LATENCY_COOKIE
{
unsigned distances[curlgrp][curlgrp];
+ unsigned indexes[curlgrp];
unsigned i, j;
- for (i = 0; i < curlgrp; i++)
+ for (i = 0; i < curlgrp; i++) {
+ indexes[i] = glob_lgrps[i]->os_index;
for (j = 0; j < curlgrp; j++)
distances[i][j] = lgrp_latency_cookie(cookie, glob_lgrps[i]->os_index, glob_lgrps[j]->os_index, LGRP_LAT_CPU_TO_MEM);
- hwloc_setup_misc_level_from_distances(topology, curlgrp, glob_lgrps, (unsigned*) distances);
+ }
+ hwloc_setup_misc_level_from_distances(topology, curlgrp, glob_lgrps, (unsigned*) distances, (unsigned*) indexes);
}
#endif /* HAVE_LGRP_LATENCY_COOKIE */
}
@@ -164,6 +426,7 @@
#ifdef HAVE_LIBKSTAT
#include <kstat.h>
+#define HWLOC_NBMAXCPUS 1024 /* FIXME: drop */
static int
hwloc_look_kstat(struct hwloc_topology *topology)
{
@@ -241,7 +504,7 @@
hwloc_debug("cpu%u's state is %s\n", cpuid, stat->value.c);
if (strcmp(stat->value.c, "on-line"))
/* not online */
- hwloc_cpuset_clr(topology->levels[0][0]->online_cpuset, cpuid);
+ hwloc_bitmap_clr(topology->levels[0][0]->online_cpuset, cpuid);
}
if (look_chips) do {
@@ -363,6 +626,8 @@
return;
#endif /* HAVE_LIBKSTAT */
hwloc_setup_pu_level(topology, nbprocs);
+
+ hwloc_add_object_info(topology->levels[0][0], "Backend", "Solaris");
}
void
@@ -371,9 +636,22 @@
topology->set_proc_cpubind = hwloc_solaris_set_proc_cpubind;
topology->set_thisproc_cpubind = hwloc_solaris_set_thisproc_cpubind;
topology->set_thisthread_cpubind = hwloc_solaris_set_thisthread_cpubind;
+#ifdef HAVE_LIBLGRP
+ topology->get_proc_cpubind = hwloc_solaris_get_proc_cpubind;
+ topology->get_thisproc_cpubind = hwloc_solaris_get_thisproc_cpubind;
+ topology->get_thisthread_cpubind = hwloc_solaris_get_thisthread_cpubind;
+#endif /* HAVE_LIBLGRP */
+#ifdef MADV_ACCESS_LWP
+ topology->set_area_membind = hwloc_solaris_set_area_membind;
+ topology->set_proc_membind = hwloc_solaris_set_proc_membind;
+ topology->set_thisproc_membind = hwloc_solaris_set_thisproc_membind;
+ topology->set_thisthread_membind = hwloc_solaris_set_thisthread_membind;
+ topology->get_proc_membind = hwloc_solaris_get_proc_membind;
+ topology->get_thisproc_membind = hwloc_solaris_get_thisproc_membind;
+ topology->get_thisthread_membind = hwloc_solaris_get_thisthread_membind;
+ topology->support.membind->firsttouch_membind = 1;
+ topology->support.membind->bind_membind = 1;
+ topology->support.membind->interleave_membind = 1;
+ topology->support.membind->nexttouch_membind = 1;
+#endif
}
-
-/* TODO:
- * memory binding: lgrp_affinity_set
- * madvise(MADV_ACCESS_LWP / ACCESS_MANY)
- */
Modified: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/src/topology-synthetic.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/src/topology-synthetic.c 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/src/topology-synthetic.c 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,5 +1,7 @@
/*
- * Copyright © 2009 CNRS, INRIA, Université Bordeaux 1
+ * Copyright © 2009 CNRS
+ * Copyright © 2009-2010 INRIA
+ * Copyright © 2009-2010 Université Bordeaux 1
* Copyright © 2009 Cisco Systems, Inc. All rights reserved.
* See COPYING in top-level directory.
*/
@@ -26,12 +28,11 @@
int cache_depth = 0, group_depth = 0;
int nb_machine_levels = 0, nb_node_levels = 0;
int nb_pu_levels = 0;
- int nb_pu = 1;
assert(topology->backend_type == HWLOC_BACKEND_NONE);
for (pos = description, count = 1; *pos; pos = next_pos) {
-#define HWLOC_OBJ_TYPE_UNKNOWN ((unsigned) -1)
+#define HWLOC_OBJ_TYPE_UNKNOWN ((hwloc_obj_type_t) -1)
hwloc_obj_type_t type = HWLOC_OBJ_TYPE_UNKNOWN;
while (*pos == ' ')
@@ -82,12 +83,6 @@
return -1;
}
- nb_pu *= item;
- if (nb_pu > HWLOC_NBMAXCPUS) {
- fprintf(stderr, "To many PUs, max %d\n", HWLOC_NBMAXCPUS);
- return -1;
- }
-
topology->backend_params.synthetic.arity[count-1] = (unsigned)item;
topology->backend_params.synthetic.type[count] = type;
topology->backend_params.synthetic.id[count] = 0;
@@ -207,7 +202,7 @@
static unsigned
hwloc__look_synthetic(struct hwloc_topology *topology,
int level, unsigned first_cpu,
- hwloc_cpuset_t parent_cpuset)
+ hwloc_bitmap_t parent_cpuset)
{
hwloc_obj_t obj;
unsigned i;
@@ -238,23 +233,23 @@
}
obj = hwloc_alloc_setup_object(type, topology->backend_params.synthetic.id[level]++);
- obj->cpuset = hwloc_cpuset_alloc();
+ obj->cpuset = hwloc_bitmap_alloc();
if (!topology->backend_params.synthetic.arity[level]) {
- hwloc_cpuset_set(obj->cpuset, first_cpu++);
+ hwloc_bitmap_set(obj->cpuset, first_cpu++);
} else {
for (i = 0; i < topology->backend_params.synthetic.arity[level]; i++)
first_cpu = hwloc__look_synthetic(topology, level + 1, first_cpu, obj->cpuset);
}
if (type == HWLOC_OBJ_NODE) {
- obj->nodeset = hwloc_cpuset_alloc();
- hwloc_cpuset_set(obj->nodeset, obj->os_index);
+ obj->nodeset = hwloc_bitmap_alloc();
+ hwloc_bitmap_set(obj->nodeset, obj->os_index);
}
hwloc_insert_object_by_cpuset(topology, obj);
- hwloc_cpuset_or(parent_cpuset, parent_cpuset, obj->cpuset);
+ hwloc_bitmap_or(parent_cpuset, parent_cpuset, obj->cpuset);
/* post-hooks */
switch (type) {
@@ -281,6 +276,7 @@
break;
case HWLOC_OBJ_CACHE:
obj->attr->cache.depth = topology->backend_params.synthetic.depth[level];
+ obj->attr->cache.linesize = 64;
if (obj->attr->cache.depth == 1)
/* 32Kb in L1 */
obj->attr->cache.size = 32*1024;
@@ -300,7 +296,7 @@
void
hwloc_look_synthetic(struct hwloc_topology *topology)
{
- hwloc_cpuset_t cpuset = hwloc_cpuset_alloc();
+ hwloc_bitmap_t cpuset = hwloc_bitmap_alloc();
unsigned first_cpu = 0, i;
topology->support.discovery->pu = 1;
@@ -311,6 +307,8 @@
for (i = 0; i < topology->backend_params.synthetic.arity[0]; i++)
first_cpu = hwloc__look_synthetic(topology, 1, first_cpu, cpuset);
- hwloc_cpuset_free(cpuset);
+ hwloc_bitmap_free(cpuset);
+
+ hwloc_add_object_info(topology->levels[0][0], "Backend", "Synthetic");
}
Modified: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/src/topology-windows.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/src/topology-windows.c 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/src/topology-windows.c 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,5 +1,7 @@
/*
- * Copyright © 2009 CNRS, INRIA, Université Bordeaux 1
+ * Copyright © 2009 CNRS
+ * Copyright © 2009-2010 INRIA
+ * Copyright © 2009-2010 Université Bordeaux 1
* See COPYING in top-level directory.
*/
@@ -144,56 +146,121 @@
/* TODO: SetThreadIdealProcessor */
static int
-hwloc_win_set_thread_cpubind(hwloc_topology_t topology __hwloc_attribute_unused, hwloc_thread_t thread, hwloc_const_cpuset_t hwloc_set, int policy __hwloc_attribute_unused)
+hwloc_win_set_thread_cpubind(hwloc_topology_t topology __hwloc_attribute_unused, hwloc_thread_t thread, hwloc_const_bitmap_t hwloc_set, int flags __hwloc_attribute_unused)
{
/* TODO: groups SetThreadGroupAffinity */
/* The resulting binding is always strict */
- DWORD mask = hwloc_cpuset_to_ulong(hwloc_set);
+ DWORD mask = hwloc_bitmap_to_ulong(hwloc_set);
if (!SetThreadAffinityMask(thread, mask))
return -1;
return 0;
}
static int
-hwloc_win_set_thisthread_cpubind(hwloc_topology_t topology, hwloc_const_cpuset_t hwloc_set, int policy)
+hwloc_win_set_thisthread_cpubind(hwloc_topology_t topology, hwloc_const_bitmap_t hwloc_set, int flags)
{
- return hwloc_win_set_thread_cpubind(topology, GetCurrentThread(), hwloc_set, policy);
+ return hwloc_win_set_thread_cpubind(topology, GetCurrentThread(), hwloc_set, flags);
}
static int
-hwloc_win_set_proc_cpubind(hwloc_topology_t topology __hwloc_attribute_unused, hwloc_pid_t proc, hwloc_const_cpuset_t hwloc_set, int policy __hwloc_attribute_unused)
+hwloc_win_set_proc_cpubind(hwloc_topology_t topology __hwloc_attribute_unused, hwloc_pid_t proc, hwloc_const_bitmap_t hwloc_set, int flags __hwloc_attribute_unused)
{
/* TODO: groups */
/* The resulting binding is always strict */
- DWORD mask = hwloc_cpuset_to_ulong(hwloc_set);
+ DWORD mask = hwloc_bitmap_to_ulong(hwloc_set);
if (!SetProcessAffinityMask(proc, mask))
return -1;
return 0;
}
static int
-hwloc_win_get_proc_cpubind(hwloc_topology_t topology __hwloc_attribute_unused, hwloc_pid_t proc, hwloc_cpuset_t hwloc_set, int policy __hwloc_attribute_unused)
+hwloc_win_get_proc_cpubind(hwloc_topology_t topology __hwloc_attribute_unused, hwloc_pid_t proc, hwloc_bitmap_t hwloc_set, int flags __hwloc_attribute_unused)
{
DWORD proc_mask, sys_mask;
/* TODO: groups */
if (!GetProcessAffinityMask(proc, &proc_mask, &sys_mask))
return -1;
- hwloc_cpuset_from_ulong(hwloc_set, proc_mask);
+ hwloc_bitmap_from_ulong(hwloc_set, proc_mask);
return 0;
}
static int
-hwloc_win_set_thisproc_cpubind(hwloc_topology_t topology, hwloc_const_cpuset_t hwloc_set, int policy)
+hwloc_win_set_thisproc_cpubind(hwloc_topology_t topology, hwloc_const_bitmap_t hwloc_set, int flags)
{
- return hwloc_win_set_proc_cpubind(topology, GetCurrentProcess(), hwloc_set, policy);
+ return hwloc_win_set_proc_cpubind(topology, GetCurrentProcess(), hwloc_set, flags);
}
static int
-hwloc_win_get_thisproc_cpubind(hwloc_topology_t topology, hwloc_cpuset_t hwloc_cpuset, int policy)
+hwloc_win_get_thisproc_cpubind(hwloc_topology_t topology, hwloc_bitmap_t hwloc_cpuset, int flags)
{
- return hwloc_win_get_proc_cpubind(topology, GetCurrentProcess(), hwloc_cpuset, policy);
+ return hwloc_win_get_proc_cpubind(topology, GetCurrentProcess(), hwloc_cpuset, flags);
}
+static LPVOID WINAPI (*VirtualAllocExNumaProc)(HANDLE hProcess, LPVOID lpAddress, SIZE_T dwSize, DWORD flAllocationType, DWORD flProtect, DWORD nndPreferred);
+static BOOL WINAPI (*VirtualFreeExProc)(HANDLE hProcess, LPVOID lpAddress, SIZE_T dwSize, DWORD dwFreeType);
+
+static int hwloc_win_get_VirtualAllocExNumaProc(void) {
+ if (VirtualAllocExNumaProc == NULL) {
+ FARPROC alloc_fun, free_fun;
+ HMODULE kernel32;
+
+ kernel32 = LoadLibrary("kernel32.dll");
+ if (kernel32) {
+ alloc_fun = GetProcAddress(kernel32, "VirtualAllocExNuma");
+ free_fun = GetProcAddress(kernel32, "VirtualFreeEx");
+ }
+
+ if (!kernel32 || !alloc_fun || !free_fun) {
+ VirtualAllocExNumaProc = (FARPROC) -1;
+ errno = ENOSYS;
+ return -1;
+ }
+
+ VirtualAllocExNumaProc = alloc_fun;
+ VirtualFreeExProc = free_fun;
+ } else if ((FARPROC) VirtualAllocExNumaProc == (FARPROC)-1) {
+ errno = ENOSYS;
+ return -1;
+ }
+
+ return 0;
+}
+
+static void *
+hwloc_win_alloc(hwloc_topology_t topology __hwloc_attribute_unused, size_t len) {
+ return VirtualAlloc(NULL, len, MEM_COMMIT|MEM_RESERVE, PAGE_EXECUTE_READWRITE);
+}
+
+static void *
+hwloc_win_alloc_membind(hwloc_topology_t topology __hwloc_attribute_unused, size_t len, hwloc_const_nodeset_t nodeset, hwloc_membind_policy_t policy, int flags) {
+ int node;
+
+ switch (policy) {
+ case HWLOC_MEMBIND_DEFAULT:
+ case HWLOC_MEMBIND_BIND:
+ break;
+ default:
+ errno = ENOSYS;
+ return hwloc_alloc_or_fail(topology, len, flags);
+ }
+
+ if (hwloc_bitmap_weight(nodeset) != 1) {
+ /* Not a single node, can't do this */
+ errno = EXDEV;
+ return hwloc_alloc_or_fail(topology, len, flags);
+ }
+
+ node = hwloc_bitmap_first(nodeset);
+ return VirtualAllocExNumaProc(GetCurrentProcess(), NULL, len, MEM_COMMIT|MEM_RESERVE, PAGE_EXECUTE_READWRITE, node);
+}
+
+static int
+hwloc_win_free_membind(hwloc_topology_t topology __hwloc_attribute_unused, void *addr, size_t len __hwloc_attribute_unused) {
+ if (!VirtualFreeExProc(GetCurrentProcess(), addr, 0, MEM_RELEASE))
+ return -1;
+ return 0;
+}
+
void
hwloc_look_windows(struct hwloc_topology *topology)
{
@@ -261,16 +328,16 @@
}
obj = hwloc_alloc_setup_object(type, id);
- obj->cpuset = hwloc_cpuset_alloc();
+ obj->cpuset = hwloc_bitmap_alloc();
hwloc_debug("%s#%u mask %lx\n", hwloc_obj_type_string(type), id, procInfo[i].ProcessorMask);
- hwloc_cpuset_from_ulong(obj->cpuset, procInfo[i].ProcessorMask);
+ hwloc_bitmap_from_ulong(obj->cpuset, procInfo[i].ProcessorMask);
switch (type) {
case HWLOC_OBJ_NODE:
{
ULONGLONG avail;
- obj->nodeset = hwloc_cpuset_alloc();
- hwloc_cpuset_set(obj->nodeset, id);
+ obj->nodeset = hwloc_bitmap_alloc();
+ hwloc_bitmap_set(obj->nodeset, id);
if ((GetNumaAvailableMemoryNodeExProc && GetNumaAvailableMemoryNodeExProc(id, &avail))
|| (GetNumaAvailableMemoryNodeProc && GetNumaAvailableMemoryNodeProc(id, &avail)))
obj->memory.local_memory = avail;
@@ -284,6 +351,7 @@
}
case HWLOC_OBJ_CACHE:
obj->attr->cache.size = procInfo[i].Cache.Size;
+ obj->attr->cache.linesize = procInfo[i].Cache.LineSize;
obj->attr->cache.depth = procInfo[i].Cache.Level;
break;
case HWLOC_OBJ_GROUP:
@@ -356,11 +424,11 @@
for (id = 0; id < procInfo->Group.ActiveGroupCount; id++) {
KAFFINITY mask;
obj = hwloc_alloc_setup_object(HWLOC_OBJ_GROUP, id);
- obj->cpuset = hwloc_cpuset_alloc();
+ obj->cpuset = hwloc_bitmap_alloc();
mask = procInfo->Group.GroupInfo[id].ActiveProcessorMask;
hwloc_debug("group %u %d cpus mask %lx\n", id,
procInfo->Group.GroupInfo[id].ActiveProcessorCount, mask);
- hwloc_cpuset_from_ith_ulong(obj->cpuset, id, mask);
+ hwloc_bitmap_from_ith_ulong(obj->cpuset, id, mask);
hwloc_insert_object_by_cpuset(topology, obj);
}
continue;
@@ -371,18 +439,18 @@
}
obj = hwloc_alloc_setup_object(type, id);
- obj->cpuset = hwloc_cpuset_alloc();
+ obj->cpuset = hwloc_bitmap_alloc();
for (i = 0; i < num; i++) {
hwloc_debug("%s#%u %d: mask %d:%lx\n", hwloc_obj_type_string(type), id, i, GroupMask[i].Group, GroupMask[i].Mask);
- hwloc_cpuset_from_ith_ulong(obj->cpuset, GroupMask[i].Group, GroupMask[i].Mask);
+ hwloc_bitmap_from_ith_ulong(obj->cpuset, GroupMask[i].Group, GroupMask[i].Mask);
}
switch (type) {
case HWLOC_OBJ_NODE:
{
ULONGLONG avail;
- obj->nodeset = hwloc_cpuset_alloc();
- hwloc_cpuset_set(obj->nodeset, id);
+ obj->nodeset = hwloc_bitmap_alloc();
+ hwloc_bitmap_set(obj->nodeset, id);
if ((GetNumaAvailableMemoryNodeExProc && GetNumaAvailableMemoryNodeExProc(id, &avail))
|| (GetNumaAvailableMemoryNodeProc && GetNumaAvailableMemoryNodeProc(id, &avail)))
obj->memory.local_memory = avail;
@@ -396,6 +464,7 @@
}
case HWLOC_OBJ_CACHE:
obj->attr->cache.size = procInfo->Cache.CacheSize;
+ obj->attr->cache.linesize = procInfo->Cache.LineSize;
obj->attr->cache.depth = procInfo->Cache.Level;
break;
default:
@@ -409,6 +478,8 @@
/* add PU objects */
hwloc_setup_pu_level(topology, hwloc_fallback_nbprocessors(topology));
+
+ hwloc_add_object_info(topology->levels[0][0], "Backend", "Windows");
}
void
@@ -420,6 +491,11 @@
topology->set_thisproc_cpubind = hwloc_win_set_thisproc_cpubind;
topology->get_thisproc_cpubind = hwloc_win_get_thisproc_cpubind;
topology->set_thisthread_cpubind = hwloc_win_set_thisthread_cpubind;
+
+ if (!hwloc_win_get_VirtualAllocExNumaProc()) {
+ topology->alloc_membind = hwloc_win_alloc_membind;
+ topology->alloc = hwloc_win_alloc;
+ topology->free_membind = hwloc_win_free_membind;
+ topology->support.membind->bind_membind = 1;
+ }
}
-
-/* TODO memory binding: VirtualAllocExNuma */
Modified: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/src/topology-x86.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/src/topology-x86.c 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/src/topology-x86.c 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,5 +1,6 @@
/*
- * Copyright © 2010 CNRS, INRIA, Université Bordeaux 1
+ * Copyright © 2010 INRIA
+ * Copyright © 2010 Université Bordeaux 1
* Copyright © 2010 Cisco Systems, Inc. All rights reserved.
*
* See COPYING in top-level directory.
@@ -74,7 +75,7 @@
if (level == 1)
cache->ways = (cpuid >> 16) & 0xff;
else {
- static const unsigned ways_tab[] = { 0, 1, 2, 0, 4, 0, 8, 0, 16, 0, 32, 48, 64, 96, 128, -1 };
+ static const unsigned ways_tab[] = { 0, 1, 2, 0, 4, 0, 8, 0, 16, 0, 32, 48, 64, 96, 128, 0 };
unsigned ways = (cpuid >> 12) & 0xf;
cache->ways = ways_tab[ways];
}
@@ -211,74 +212,74 @@
/* Analyse information stored in infos, and build topology levels accordingly */
static void summarize(hwloc_topology_t topology, struct procinfo *infos, unsigned nbprocs)
{
- hwloc_cpuset_t complete_cpuset = hwloc_cpuset_alloc();
+ hwloc_bitmap_t complete_cpuset = hwloc_bitmap_alloc();
unsigned i, j;
for (i = 0; i < nbprocs; i++)
if (infos[i].present)
- hwloc_cpuset_set(complete_cpuset, i);
+ hwloc_bitmap_set(complete_cpuset, i);
/* Look for sockets */
{
- hwloc_cpuset_t sockets_cpuset = hwloc_cpuset_dup(complete_cpuset);
- hwloc_cpuset_t socket_cpuset;
+ hwloc_bitmap_t sockets_cpuset = hwloc_bitmap_dup(complete_cpuset);
+ hwloc_bitmap_t socket_cpuset;
hwloc_obj_t socket;
- while ((i = hwloc_cpuset_first(sockets_cpuset)) != (unsigned) -1) {
+ while ((i = hwloc_bitmap_first(sockets_cpuset)) != (unsigned) -1) {
unsigned socketid = infos[i].socketid;
- socket_cpuset = hwloc_cpuset_alloc();
- hwloc_cpuset_zero(socket_cpuset);
+ socket_cpuset = hwloc_bitmap_alloc();
+ hwloc_bitmap_zero(socket_cpuset);
for (j = i; j < nbprocs; j++) {
if (infos[j].socketid == socketid) {
- hwloc_cpuset_set(socket_cpuset, j);
- hwloc_cpuset_clr(sockets_cpuset, j);
+ hwloc_bitmap_set(socket_cpuset, j);
+ hwloc_bitmap_clr(sockets_cpuset, j);
}
}
socket = hwloc_alloc_setup_object(HWLOC_OBJ_SOCKET, socketid);
socket->cpuset = socket_cpuset;
- hwloc_debug_1arg_cpuset("os socket %u has cpuset %s\n",
+ hwloc_debug_1arg_bitmap("os socket %u has cpuset %s\n",
socketid, socket_cpuset);
hwloc_insert_object_by_cpuset(topology, socket);
}
- hwloc_cpuset_free(sockets_cpuset);
+ hwloc_bitmap_free(sockets_cpuset);
}
/* Look for cores */
{
- hwloc_cpuset_t cores_cpuset = hwloc_cpuset_dup(complete_cpuset);
- hwloc_cpuset_t core_cpuset;
+ hwloc_bitmap_t cores_cpuset = hwloc_bitmap_dup(complete_cpuset);
+ hwloc_bitmap_t core_cpuset;
hwloc_obj_t core;
- while ((i = hwloc_cpuset_first(cores_cpuset)) != (unsigned) -1) {
+ while ((i = hwloc_bitmap_first(cores_cpuset)) != (unsigned) -1) {
unsigned socketid = infos[i].socketid;
unsigned coreid = infos[i].coreid;
if (coreid == (unsigned) -1) {
- hwloc_cpuset_clr(cores_cpuset, i);
+ hwloc_bitmap_clr(cores_cpuset, i);
continue;
}
- core_cpuset = hwloc_cpuset_alloc();
- hwloc_cpuset_zero(core_cpuset);
+ core_cpuset = hwloc_bitmap_alloc();
+ hwloc_bitmap_zero(core_cpuset);
for (j = i; j < nbprocs; j++) {
if (infos[j].coreid == (unsigned) -1) {
- hwloc_cpuset_clr(cores_cpuset, j);
+ hwloc_bitmap_clr(cores_cpuset, j);
continue;
}
if (infos[j].socketid == socketid && infos[j].coreid == coreid) {
- hwloc_cpuset_set(core_cpuset, j);
- hwloc_cpuset_clr(cores_cpuset, j);
+ hwloc_bitmap_set(core_cpuset, j);
+ hwloc_bitmap_clr(cores_cpuset, j);
}
}
core = hwloc_alloc_setup_object(HWLOC_OBJ_CORE, coreid);
core->cpuset = core_cpuset;
- hwloc_debug_1arg_cpuset("os core %u has cpuset %s\n",
+ hwloc_debug_1arg_bitmap("os core %u has cpuset %s\n",
coreid, core_cpuset);
hwloc_insert_object_by_cpuset(topology, core);
}
- hwloc_cpuset_free(cores_cpuset);
+ hwloc_bitmap_free(cores_cpuset);
}
/* Look for caches */
@@ -292,11 +293,11 @@
while (level > 0) {
/* Look for caches at level level */
{
- hwloc_cpuset_t caches_cpuset = hwloc_cpuset_dup(complete_cpuset);
- hwloc_cpuset_t cache_cpuset;
+ hwloc_bitmap_t caches_cpuset = hwloc_bitmap_dup(complete_cpuset);
+ hwloc_bitmap_t cache_cpuset;
hwloc_obj_t cache;
- while ((i = hwloc_cpuset_first(caches_cpuset)) != (unsigned) -1) {
+ while ((i = hwloc_bitmap_first(caches_cpuset)) != (unsigned) -1) {
unsigned socketid = infos[i].socketid;
for (l = 0; l < infos[i].numcaches; l++) {
@@ -305,15 +306,15 @@
}
if (l == infos[i].numcaches) {
/* no cache Llevel in i, odd */
- hwloc_cpuset_clr(caches_cpuset, i);
+ hwloc_bitmap_clr(caches_cpuset, i);
continue;
}
{
unsigned cacheid = infos[i].apicid / infos[i].cache[l].nbthreads_sharing;
- cache_cpuset = hwloc_cpuset_alloc();
- hwloc_cpuset_zero(cache_cpuset);
+ cache_cpuset = hwloc_bitmap_alloc();
+ hwloc_bitmap_zero(cache_cpuset);
for (j = i; j < nbprocs; j++) {
unsigned l2;
for (l2 = 0; l2 < infos[j].numcaches; l2++) {
@@ -322,24 +323,25 @@
}
if (l2 == infos[j].numcaches) {
/* no cache Llevel in j, odd */
- hwloc_cpuset_clr(caches_cpuset, j);
+ hwloc_bitmap_clr(caches_cpuset, j);
continue;
}
if (infos[j].socketid == socketid && infos[j].apicid / infos[j].cache[l2].nbthreads_sharing == cacheid) {
- hwloc_cpuset_set(cache_cpuset, j);
- hwloc_cpuset_clr(caches_cpuset, j);
+ hwloc_bitmap_set(cache_cpuset, j);
+ hwloc_bitmap_clr(caches_cpuset, j);
}
}
cache = hwloc_alloc_setup_object(HWLOC_OBJ_CACHE, cacheid);
cache->attr->cache.depth = level;
cache->attr->cache.size = infos[i].cache[l].size;
+ cache->attr->cache.linesize = infos[i].cache[l].linesize;
cache->cpuset = cache_cpuset;
- hwloc_debug_2args_cpuset("os L%u cache %u has cpuset %s\n",
+ hwloc_debug_2args_bitmap("os L%u cache %u has cpuset %s\n",
level, cacheid, cache_cpuset);
hwloc_insert_object_by_cpuset(topology, cache);
}
}
- hwloc_cpuset_free(caches_cpuset);
+ hwloc_bitmap_free(caches_cpuset);
}
level--;
}
@@ -361,7 +363,7 @@
/* This function must always be here, but it's ok if it's empty. */
#if defined(HWLOC_HAVE_CPUID)
unsigned eax, ebx, ecx = 0, edx;
- hwloc_cpuset_t orig_cpuset;
+ hwloc_bitmap_t orig_cpuset;
unsigned i;
unsigned highest_cpuid;
unsigned highest_ext_cpuid;
@@ -389,39 +391,41 @@
hwloc_debug("highest extended cpuid %x\n", highest_ext_cpuid);
- orig_cpuset = hwloc_cpuset_alloc();
+ orig_cpuset = hwloc_bitmap_alloc();
if (topology->get_thisthread_cpubind && topology->set_thisthread_cpubind) {
if (!topology->get_thisthread_cpubind(topology, orig_cpuset, HWLOC_CPUBIND_STRICT)) {
- hwloc_cpuset_t cpuset = hwloc_cpuset_alloc();
+ hwloc_bitmap_t cpuset = hwloc_bitmap_alloc();
for (i = 0; i < nbprocs; i++) {
- hwloc_cpuset_cpu(cpuset, i);
+ hwloc_bitmap_only(cpuset, i);
if (topology->set_thisthread_cpubind(topology, cpuset, HWLOC_CPUBIND_STRICT))
continue;
look_proc(&infos[i], highest_cpuid, highest_ext_cpuid, cpuid_type);
}
- hwloc_cpuset_free(cpuset);
+ hwloc_bitmap_free(cpuset);
topology->set_thisthread_cpubind(topology, orig_cpuset, 0);
- hwloc_cpuset_free(orig_cpuset);
+ hwloc_bitmap_free(orig_cpuset);
summarize(topology, infos, nbprocs);
return;
}
}
if (topology->get_thisproc_cpubind && topology->set_thisproc_cpubind) {
if (!topology->get_thisproc_cpubind(topology, orig_cpuset, HWLOC_CPUBIND_STRICT)) {
- hwloc_cpuset_t cpuset = hwloc_cpuset_alloc();
+ hwloc_bitmap_t cpuset = hwloc_bitmap_alloc();
for (i = 0; i < nbprocs; i++) {
- hwloc_cpuset_cpu(cpuset, i);
+ hwloc_bitmap_only(cpuset, i);
if (topology->set_thisproc_cpubind(topology, cpuset, HWLOC_CPUBIND_STRICT))
continue;
look_proc(&infos[i], highest_cpuid, highest_ext_cpuid, cpuid_type);
}
- hwloc_cpuset_free(cpuset);
+ hwloc_bitmap_free(cpuset);
topology->set_thisproc_cpubind(topology, orig_cpuset, 0);
- hwloc_cpuset_free(orig_cpuset);
+ hwloc_bitmap_free(orig_cpuset);
summarize(topology, infos, nbprocs);
return;
}
}
#endif
+
+ hwloc_add_object_info(topology->levels[0][0], "Backend", "x86");
}
Modified: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/src/topology-xml.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/src/topology-xml.c 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/src/topology-xml.c 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,6 +1,8 @@
/*
- * Copyright © 2009 CNRS, INRIA, Université Bordeaux 1
- * Copyright © 2009 Cisco Systems, Inc. All rights reserved.
+ * Copyright © 2009 CNRS
+ * Copyright © 2009-2010 INRIA
+ * Copyright © 2009-2010 Université Bordeaux 1
+ * Copyright © 2009-2010 Cisco Systems, Inc. All rights reserved.
* See COPYING in top-level directory.
*/
@@ -18,7 +20,7 @@
#include <strings.h>
int
-hwloc_backend_xml_init(struct hwloc_topology *topology, const char *xmlpath)
+hwloc_backend_xml_init(struct hwloc_topology *topology, const char *xmlpath, const char *xmlbuffer, int buflen)
{
xmlDoc *doc = NULL;
@@ -26,7 +28,10 @@
LIBXML_TEST_VERSION;
- doc = xmlReadFile(xmlpath, NULL, 0);
+ if (xmlpath)
+ doc = xmlReadFile(xmlpath, NULL, 0);
+ else if (xmlbuffer)
+ doc = xmlReadMemory(xmlbuffer, buflen, "", NULL, 0);
if (!doc)
return -1;
@@ -41,7 +46,6 @@
{
assert(topology->backend_type == HWLOC_BACKEND_XML);
xmlFreeDoc((xmlDoc*)topology->backend_params.xml.doc);
- xmlCleanupParser();
topology->backend_type = HWLOC_BACKEND_NONE;
}
@@ -49,29 +53,22 @@
********* XML import *********
******************************/
-static void
-hwloc__xml_import_topology_attr(struct hwloc_topology *topology __hwloc_attribute_unused,
- const xmlChar *_name, const xmlChar *_value __hwloc_attribute_unused)
-{
- const char *name = (const char *) _name;
+static void hwloc__xml_import_node(struct hwloc_topology *topology, struct hwloc_obj *parent, xmlNode *node, int depth);
- fprintf(stderr, "ignoring unknown root attribute %s\n", name);
-}
-
-static void
-hwloc__xml_import_pagetype_attr(struct hwloc_topology *topology __hwloc_attribute_unused, struct hwloc_obj_memory_page_type_s *page_type,
- const xmlChar *_name, const xmlChar *_value)
+static const xmlChar *
+hwloc__xml_import_attr_value(xmlAttr *attr)
{
- const char *name = (const char *) _name;
- const char *value = (const char *) _value;
-
- if (!strcmp(name, "size"))
- page_type->size = strtoul(value, NULL, 10);
- else if (!strcmp(name, "count"))
- page_type->count = strtoul(value, NULL, 10);
-
- else
- fprintf(stderr, "ignoring unknown pagetype attribute %s\n", name);
+ xmlNode *subnode;
+ /* use the first valid attribute content */
+ for (subnode = attr->children; subnode; subnode = subnode->next) {
+ if (subnode->type == XML_TEXT_NODE) {
+ if (subnode->content && subnode->content[0] != '\0' && subnode->content[0] != '\n')
+ return subnode->content;
+ } else {
+ fprintf(stderr, "ignoring unexpected xml attr node type %u\n", subnode->type);
+ }
+ }
+ return NULL;
}
static void
@@ -91,26 +88,26 @@
else if (!strcmp(name, "os_index"))
obj->os_index = strtoul(value, NULL, 10);
else if (!strcmp(name, "cpuset")) {
- obj->cpuset = hwloc_cpuset_alloc();
- hwloc_cpuset_from_string(obj->cpuset, value);
+ obj->cpuset = hwloc_bitmap_alloc();
+ hwloc_bitmap_sscanf(obj->cpuset, value);
} else if (!strcmp(name, "complete_cpuset")) {
- obj->complete_cpuset = hwloc_cpuset_alloc();
- hwloc_cpuset_from_string(obj->complete_cpuset,value);
+ obj->complete_cpuset = hwloc_bitmap_alloc();
+ hwloc_bitmap_sscanf(obj->complete_cpuset,value);
} else if (!strcmp(name, "online_cpuset")) {
- obj->online_cpuset = hwloc_cpuset_alloc();
- hwloc_cpuset_from_string(obj->online_cpuset, value);
+ obj->online_cpuset = hwloc_bitmap_alloc();
+ hwloc_bitmap_sscanf(obj->online_cpuset, value);
} else if (!strcmp(name, "allowed_cpuset")) {
- obj->allowed_cpuset = hwloc_cpuset_alloc();
- hwloc_cpuset_from_string(obj->allowed_cpuset, value);
+ obj->allowed_cpuset = hwloc_bitmap_alloc();
+ hwloc_bitmap_sscanf(obj->allowed_cpuset, value);
} else if (!strcmp(name, "nodeset")) {
- obj->nodeset = hwloc_cpuset_alloc();
- hwloc_cpuset_from_string(obj->nodeset, value);
+ obj->nodeset = hwloc_bitmap_alloc();
+ hwloc_bitmap_sscanf(obj->nodeset, value);
} else if (!strcmp(name, "complete_nodeset")) {
- obj->complete_nodeset = hwloc_cpuset_alloc();
- hwloc_cpuset_from_string(obj->complete_nodeset, value);
+ obj->complete_nodeset = hwloc_bitmap_alloc();
+ hwloc_bitmap_sscanf(obj->complete_nodeset, value);
} else if (!strcmp(name, "allowed_nodeset")) {
- obj->allowed_nodeset = hwloc_cpuset_alloc();
- hwloc_cpuset_from_string(obj->allowed_nodeset, value);
+ obj->allowed_nodeset = hwloc_bitmap_alloc();
+ hwloc_bitmap_sscanf(obj->allowed_nodeset, value);
} else if (!strcmp(name, "name"))
obj->name = strdup(value);
@@ -122,6 +119,14 @@
fprintf(stderr, "ignoring cache_size attribute for non-cache object type\n");
}
+ else if (!strcmp(name, "cache_linesize")) {
+ unsigned long lvalue = strtoul(value, NULL, 10);
+ if (obj->type == HWLOC_OBJ_CACHE)
+ obj->attr->cache.linesize = lvalue;
+ else
+ fprintf(stderr, "ignoring cache_linesize attribute for non-cache object type\n");
+ }
+
else if (!strcmp(name, "local_memory"))
obj->memory.local_memory = strtoull(value, NULL, 10);
@@ -140,30 +145,18 @@
}
}
+
+
+ /*************************
+ * deprecated (from 1.0)
+ */
else if (!strcmp(name, "dmi_board_vendor")) {
- switch (obj->type) {
- case HWLOC_OBJ_MACHINE:
- obj->attr->machine.dmi_board_vendor = strdup(value);
- break;
- default:
- fprintf(stderr, "ignoring dmi_board_vendor attribute for object type without DMI board\n");
- break;
- }
+ hwloc_add_object_info(obj, "DMIBoardVendor", strdup(value));
}
-
else if (!strcmp(name, "dmi_board_name")) {
- switch (obj->type) {
- case HWLOC_OBJ_MACHINE:
- obj->attr->machine.dmi_board_name = strdup(value);
- break;
- default:
- fprintf(stderr, "ignoring dmi_board_name attribute for object type without DMI board\n");
- break;
- }
+ hwloc_add_object_info(obj, "DMIBoardName", strdup(value));
}
-
-
/*************************
* deprecated (from 0.9)
*/
@@ -227,43 +220,7 @@
fprintf(stderr, "ignoring unknown object attribute %s\n", name);
}
-static const xmlChar *
-hwloc__xml_import_attr_value(xmlAttr *attr)
-{
- xmlNode *subnode;
- /* use the first valid attribute content */
- for (subnode = attr->children; subnode; subnode = subnode->next) {
- if (subnode->type == XML_TEXT_NODE) {
- if (subnode->content && subnode->content[0] != '\0' && subnode->content[0] != '\n')
- return subnode->content;
- } else {
- fprintf(stderr, "ignoring unexpected xml attr node type %u\n", subnode->type);
- }
- }
- return NULL;
-}
-
static void
-hwloc__xml_import_pagetype_node(struct hwloc_topology *topology, struct hwloc_obj_memory_page_type_s *pagetype, xmlNode *node)
-{
- xmlAttr *attr = NULL;
-
- for (attr = node->properties; attr; attr = attr->next) {
- if (attr->type == XML_ATTRIBUTE_NODE) {
- const xmlChar *value = hwloc__xml_import_attr_value(attr);
- if (value)
- hwloc__xml_import_pagetype_attr(topology, pagetype, attr->name, value);
- else
- fprintf(stderr, "ignoring unexpected xml pagetype attr name `%s' with no value\n", (const char*) attr->name);
- } else {
- fprintf(stderr, "ignoring unexpected xml pagetype attr type %u\n", attr->type);
- }
- }
-}
-
-static void hwloc__xml_import_node(struct hwloc_topology *topology, struct hwloc_obj *parent, xmlNode *node, int depth);
-
-static void
hwloc__xml_import_object_node(struct hwloc_topology *topology, struct hwloc_obj *parent, struct hwloc_obj *obj, xmlNode *node, int depth)
{
xmlAttr *attr = NULL;
@@ -297,8 +254,6 @@
const xmlChar *value = hwloc__xml_import_attr_value(attr);
if (value)
hwloc__xml_import_object_attr(topology, obj, attr->name, value);
- else
- fprintf(stderr, "ignoring unexpected xml object attr name `%s' with no value\n", (const char*) attr->name);
} else {
fprintf(stderr, "ignoring unexpected xml object attr type %u\n", attr->type);
}
@@ -314,8 +269,69 @@
hwloc__xml_import_node(topology, obj, node->children, depth+1);
}
+static void
+hwloc__xml_import_pagetype_node(struct hwloc_topology *topology __hwloc_attribute_unused, struct hwloc_obj *obj, xmlNode *node)
+{
+ uint64_t size = 0, count = 0;
+ xmlAttr *attr = NULL;
+ for (attr = node->properties; attr; attr = attr->next) {
+ if (attr->type == XML_ATTRIBUTE_NODE) {
+ const xmlChar *value = hwloc__xml_import_attr_value(attr);
+ if (value) {
+ if (!strcmp((char *) attr->name, "size"))
+ size = strtoul((char *) value, NULL, 10);
+ else if (!strcmp((char *) attr->name, "count"))
+ count = strtoul((char *) value, NULL, 10);
+ else
+ fprintf(stderr, "ignoring unknown pagetype attribute %s\n", (char *) attr->name);
+ }
+ } else {
+ fprintf(stderr, "ignoring unexpected xml pagetype attr type %u\n", attr->type);
+ }
+ }
+
+ if (size) {
+ int idx = obj->memory.page_types_len;
+ obj->memory.page_types = realloc(obj->memory.page_types, (idx+1)*sizeof(*obj->memory.page_types));
+ obj->memory.page_types_len = idx+1;
+ obj->memory.page_types[idx].size = size;
+ obj->memory.page_types[idx].count = count;
+ } else
+ fprintf(stderr, "ignoring pagetype attribute without size\n");
+}
+
static void
+hwloc__xml_import_info_node(struct hwloc_topology *topology __hwloc_attribute_unused, struct hwloc_obj *obj, xmlNode *node)
+{
+ char *infoname = NULL;
+ char *infovalue = NULL;
+ xmlAttr *attr = NULL;
+
+ for (attr = node->properties; attr; attr = attr->next) {
+ if (attr->type == XML_ATTRIBUTE_NODE) {
+ const xmlChar *value = hwloc__xml_import_attr_value(attr);
+ if (value) {
+ if (!strcmp((char *) attr->name, "name"))
+ infoname = (char *) value;
+ else if (!strcmp((char *) attr->name, "value"))
+ infovalue = (char *) value;
+ else
+ fprintf(stderr, "ignoring unknown info attribute %s\n", (char *) attr->name);
+ }
+ } else {
+ fprintf(stderr, "ignoring unexpected xml info attr type %u\n", attr->type);
+ }
+ }
+
+ if (infoname)
+ /* empty strings are ignored by libxml */
+ hwloc_add_object_info(obj, infoname, infovalue ? infovalue : "");
+ else
+ fprintf(stderr, "ignoring info attribute without name\n");
+}
+
+static void
hwloc__xml_import_node(struct hwloc_topology *topology, struct hwloc_obj *parent, xmlNode *node, int depth)
{
for (; node; node = node->next) {
@@ -330,11 +346,11 @@
hwloc__xml_import_object_node(topology, parent, obj, node, depth);
} else if (!strcmp((const char*) node->name, "page_type")) {
- int idx = parent->memory.page_types_len;
- parent->memory.page_types = realloc(parent->memory.page_types, (idx+1)*sizeof(*parent->memory.page_types));
- hwloc__xml_import_pagetype_node(topology, &parent->memory.page_types[idx], node);
- parent->memory.page_types_len = idx+1;
+ hwloc__xml_import_pagetype_node(topology, parent, node);
+ } else if (!strcmp((const char*) node->name, "info")) {
+ hwloc__xml_import_info_node(topology, parent, node);
+
} else {
/* unknown class */
fprintf(stderr, "ignoring unexpected node class `%s'\n", (const char*) node->name);
@@ -365,10 +381,9 @@
for (attr = node->properties; attr; attr = attr->next) {
if (attr->type == XML_ATTRIBUTE_NODE) {
const xmlChar *value = hwloc__xml_import_attr_value(attr);
- if (value)
- hwloc__xml_import_topology_attr(topology, attr->name, value);
- else
- fprintf(stderr, "ignoring unexpected xml root attr name `%s' with no value\n", (const char*) attr->name);
+ if (value) {
+ fprintf(stderr, "ignoring unknown root attribute %s\n", (char *) attr->name);
+ }
} else {
fprintf(stderr, "ignoring unexpected xml root attr type %u\n", attr->type);
}
@@ -400,7 +415,8 @@
if (root_node->next)
fprintf(stderr, "ignoring non-first root nodes\n");
- /* TODO: abort if we got an invalid topology or so */
+ /* keep the "Backend" information intact */
+ /* we could add "BackendSource=XML" to notify that XML was used between the actual backend and here */
}
/******************************
@@ -426,37 +442,37 @@
xmlNewProp(node, BAD_CAST "os_index", BAD_CAST tmp);
}
if (obj->cpuset) {
- hwloc_cpuset_asprintf(&cpuset, obj->cpuset);
+ hwloc_bitmap_asprintf(&cpuset, obj->cpuset);
xmlNewProp(node, BAD_CAST "cpuset", BAD_CAST cpuset);
free(cpuset);
}
if (obj->complete_cpuset) {
- hwloc_cpuset_asprintf(&cpuset, obj->complete_cpuset);
+ hwloc_bitmap_asprintf(&cpuset, obj->complete_cpuset);
xmlNewProp(node, BAD_CAST "complete_cpuset", BAD_CAST cpuset);
free(cpuset);
}
if (obj->online_cpuset) {
- hwloc_cpuset_asprintf(&cpuset, obj->online_cpuset);
+ hwloc_bitmap_asprintf(&cpuset, obj->online_cpuset);
xmlNewProp(node, BAD_CAST "online_cpuset", BAD_CAST cpuset);
free(cpuset);
}
if (obj->allowed_cpuset) {
- hwloc_cpuset_asprintf(&cpuset, obj->allowed_cpuset);
+ hwloc_bitmap_asprintf(&cpuset, obj->allowed_cpuset);
xmlNewProp(node, BAD_CAST "allowed_cpuset", BAD_CAST cpuset);
free(cpuset);
}
- if (obj->nodeset) {
- hwloc_cpuset_asprintf(&cpuset, obj->nodeset);
+ if (obj->nodeset && !hwloc_bitmap_isfull(obj->nodeset)) {
+ hwloc_bitmap_asprintf(&cpuset, obj->nodeset);
xmlNewProp(node, BAD_CAST "nodeset", BAD_CAST cpuset);
free(cpuset);
}
- if (obj->complete_nodeset) {
- hwloc_cpuset_asprintf(&cpuset, obj->complete_nodeset);
+ if (obj->complete_nodeset && !hwloc_bitmap_isfull(obj->complete_nodeset)) {
+ hwloc_bitmap_asprintf(&cpuset, obj->complete_nodeset);
xmlNewProp(node, BAD_CAST "complete_nodeset", BAD_CAST cpuset);
free(cpuset);
}
- if (obj->allowed_nodeset) {
- hwloc_cpuset_asprintf(&cpuset, obj->allowed_nodeset);
+ if (obj->allowed_nodeset && !hwloc_bitmap_isfull(obj->allowed_nodeset)) {
+ hwloc_bitmap_asprintf(&cpuset, obj->allowed_nodeset);
xmlNewProp(node, BAD_CAST "allowed_nodeset", BAD_CAST cpuset);
free(cpuset);
}
@@ -470,13 +486,9 @@
xmlNewProp(node, BAD_CAST "cache_size", BAD_CAST tmp);
sprintf(tmp, "%u", obj->attr->cache.depth);
xmlNewProp(node, BAD_CAST "depth", BAD_CAST tmp);
+ sprintf(tmp, "%u", (unsigned) obj->attr->cache.linesize);
+ xmlNewProp(node, BAD_CAST "cache_linesize", BAD_CAST tmp);
break;
- case HWLOC_OBJ_MACHINE:
- if (obj->attr->machine.dmi_board_vendor)
- xmlNewProp(node, BAD_CAST "dmi_board_vendor", BAD_CAST obj->attr->machine.dmi_board_vendor);
- if (obj->attr->machine.dmi_board_name)
- xmlNewProp(node, BAD_CAST "dmi_board_name", BAD_CAST obj->attr->machine.dmi_board_name);
- break;
case HWLOC_OBJ_GROUP:
sprintf(tmp, "%u", obj->attr->group.depth);
xmlNewProp(node, BAD_CAST "depth", BAD_CAST tmp);
@@ -497,6 +509,12 @@
xmlNewProp(ptnode, BAD_CAST "count", BAD_CAST tmp);
}
+ for(i=0; i<obj->infos_count; i++) {
+ ptnode = xmlNewChild(node, NULL, BAD_CAST "info", NULL);
+ xmlNewProp(ptnode, BAD_CAST "name", BAD_CAST obj->infos[i].name);
+ xmlNewProp(ptnode, BAD_CAST "value", BAD_CAST obj->infos[i].value);
+ }
+
if (obj->arity) {
unsigned x;
for (x=0; x<obj->arity; x++)
@@ -509,7 +527,8 @@
{
}
-void hwloc_topology_export_xml(hwloc_topology_t topology, const char *filename)
+static xmlDocPtr
+hwloc__topology_prepare_export(hwloc_topology_t topology)
{
xmlDocPtr doc = NULL; /* document pointer */
xmlNodePtr root_node = NULL; /* root pointer */
@@ -529,14 +548,22 @@
hwloc__xml_export_topology_info (topology, root_node);
- /* Dumping document to stdio or file. */
+ return doc;
+}
+
+void hwloc_topology_export_xml(hwloc_topology_t topology, const char *filename)
+{
+ xmlDocPtr doc = hwloc__topology_prepare_export(topology);
xmlSaveFormatFileEnc(filename, doc, "UTF-8", 1);
+ xmlFreeDoc(doc);
+}
- /* Free the document. */
+void hwloc_topology_export_xmlbuffer(hwloc_topology_t topology, char **xmlbuffer, int *buflen)
+{
+ xmlDocPtr doc = hwloc__topology_prepare_export(topology);
+ xmlDocDumpFormatMemoryEnc(doc, (xmlChar **)xmlbuffer, buflen, "UTF-8", 1);
xmlFreeDoc(doc);
-
- /* Free the global variables that may have been allocated by the parser. */
- xmlCleanupParser();
}
+
#endif /* HWLOC_HAVE_XML */
Modified: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/src/topology.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/src/topology.c 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/src/topology.c 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,5 +1,7 @@
/*
- * Copyright © 2009 CNRS, INRIA, Université Bordeaux 1
+ * Copyright © 2009 CNRS
+ * Copyright © 2009-2010 INRIA
+ * Copyright © 2009-2010 Université Bordeaux 1
* Copyright © 2009-2010 Cisco Systems, Inc. All rights reserved.
* See COPYING in top-level directory.
*/
@@ -129,141 +131,81 @@
}
/*
- * Place objects in groups if they are in complete graphs with minimal distances.
+ * Place objects in groups if they are in a transitive graph of minimal distances.
* Return how many groups were created, or 0 if some incomplete distance graphs were found.
*/
static unsigned
-hwloc_setup_group_from_min_distance_clique(unsigned nbobjs,
- unsigned *_distances,
- unsigned *groupids)
+hwloc_setup_group_from_min_distance(unsigned nbobjs,
+ unsigned *_distances,
+ unsigned *groupids)
{
unsigned (*distances)[nbobjs][nbobjs] = (unsigned (*)[nbobjs][nbobjs])_distances;
- unsigned groupid = 0;
+ unsigned min_distance = UINT_MAX;
+ unsigned groupid = 1;
unsigned i,j,k;
memset(groupids, 0, nbobjs*sizeof(*groupids));
- /* try to find complete graphs */
- for(i=0; i<nbobjs; i++) {
- hwloc_cpuset_t closest_objs_set = hwloc_cpuset_alloc();
- unsigned min_distance = UINT_MAX;
- unsigned size = 1; /* current object i */
-
- /* if already grouped, skip */
- if (groupids[i]) {
- hwloc_cpuset_free(closest_objs_set);
- continue;
- }
-
- /* find closest nodes */
- for(j=i+1; j<nbobjs; j++) {
- if ((*distances)[i][j] < min_distance) {
- /* reset the closest set and use new min_distance */
- hwloc_cpuset_cpu(closest_objs_set, j);
+ /* find the minimal distance */
+ for(i=0; i<nbobjs; i++)
+ for(j=i+1; j<nbobjs; j++)
+ if ((*distances)[i][j] < min_distance)
min_distance = (*distances)[i][j];
- size = 2; /* current objects i and j */
- } else if ((*distances)[i][j] == min_distance) {
- /* add object to current closest set */
- hwloc_cpuset_set(closest_objs_set, j);
- size++;
- }
- }
- /* check that we actually have a complete graph between these closest objects */
- for (j=i+1; j<nbobjs; j++)
- for (k=j+1; k<nbobjs; k++)
- if (hwloc_cpuset_isset(closest_objs_set, j) &&
- hwloc_cpuset_isset(closest_objs_set, k) &&
- (*distances)[j][k] != min_distance) {
- /* the minimal-distance graph is not complete. abort */
- hwloc_debug("%s", "found incomplete minimal-distance graph, aborting\n");
- hwloc_cpuset_free(closest_objs_set);
- return 0;
- }
+ hwloc_debug("found minimal distance %u between objects\n", min_distance);
- /* fill a new group */
- groupid++;
- groupids[i] = groupid;
- for(j=i+1; j<nbobjs; j++)
- if (hwloc_cpuset_isset(closest_objs_set, j))
- groupids[j] = groupid;
- hwloc_debug("found complete graph with %u objects with minimal distance %u\n",
- size, min_distance);
- hwloc_cpuset_free(closest_objs_set);
- }
+ if (min_distance == UINT_MAX)
+ return 0;
- /* return the last id, since it's also the number of used group ids */
- return groupid;
-}
-
-/*
- * Place objects in groups if they are in a transitive graph of minimal distances.
- * Return how many groups were created, or 0 if some incomplete distance graphs were found.
- */
-static unsigned
-hwloc_setup_group_from_min_distance_transitivity(unsigned nbobjs,
- unsigned *_distances,
- unsigned *groupids)
-{
- unsigned (*distances)[nbobjs][nbobjs] = (unsigned (*)[nbobjs][nbobjs])_distances;
- unsigned groupid = 0;
- unsigned i,j,k;
-
- memset(groupids, 0, nbobjs*sizeof(*groupids));
-
- /* try to find complete graphs */
+ /* build groups of objects connected with this distance */
for(i=0; i<nbobjs; i++) {
- hwloc_cpuset_t closest_objs_set = hwloc_cpuset_alloc();
- unsigned min_distance = UINT_MAX;
- unsigned size = 1; /* current object i */
+ unsigned size;
+ int firstfound;
- hwloc_cpuset_zero(closest_objs_set);
-
/* if already grouped, skip */
if (groupids[i])
continue;
- /* find closest nodes */
- for(j=i+1; j<nbobjs; j++) {
- if ((*distances)[i][j] < min_distance) {
- /* reset the closest set and use new min_distance */
- hwloc_cpuset_cpu(closest_objs_set, j);
- min_distance = (*distances)[i][j];
- size = 2; /* current objects i and j */
- } else if ((*distances)[i][j] == min_distance) {
- /* add object to current closest set */
- hwloc_cpuset_set(closest_objs_set, j);
- size++;
- }
+ /* start a new group */
+ groupids[i] = groupid;
+ size = 1;
+ firstfound = i;
+
+ while (firstfound != -1) {
+ /* we added new objects to the group, the first one was firstfound.
+ * rescan all connections from these new objects (starting at first found) to any other objects,
+ * so as to find new objects minimally-connected by transivity.
+ */
+ int newfirstfound = -1;
+ for(j=firstfound; j<nbobjs; j++)
+ if (groupids[j] == groupid)
+ for(k=0; k<nbobjs; k++)
+ if (!groupids[k] && (*distances)[j][k] == min_distance) {
+ groupids[k] = groupid;
+ size++;
+ if (newfirstfound == -1)
+ newfirstfound = k;
+ if (i == j)
+ hwloc_debug("object %u is minimally connected to %u\n", k, i);
+ else
+ hwloc_debug("object %u is minimally connected to %u through %u\n", k, i, j);
+ }
+ firstfound = newfirstfound;
}
- /* find close objs by transitivity */
- while (1) {
- unsigned found = 0;
- for(j=i+1; j<nbobjs; j++)
- for(k=j+1; k<nbobjs; k++)
- if ((*distances)[j][k] <= min_distance
- && hwloc_cpuset_isset(closest_objs_set, j)
- && !hwloc_cpuset_isset(closest_objs_set, k)) {
- hwloc_cpuset_set(closest_objs_set, k);
- size++;
- found = 1;
- }
- if (!found)
- break;
+
+ if (size == 1) {
+ /* cancel this group and start over */
+ groupids[i] = 0;
+ continue;
}
- /* fill a new group */
+ /* valid this group */
groupid++;
- groupids[i] = groupid;
- for(j=i+1; j<nbobjs; j++)
- if (hwloc_cpuset_isset(closest_objs_set, j))
- groupids[j] = groupid;
hwloc_debug("found transitive graph with %u objects with minimal distance %u\n",
size, min_distance);
- hwloc_cpuset_free(closest_objs_set);
}
/* return the last id, since it's also the number of used group ids */
- return groupid;
+ return groupid-1;
}
/*
@@ -288,12 +230,9 @@
if (nbobjs <= 2)
return;
- nbgroups = hwloc_setup_group_from_min_distance_clique(nbobjs, _distances, groupids);
- if (!nbgroups) {
- nbgroups = hwloc_setup_group_from_min_distance_transitivity(nbobjs, _distances, groupids);
- if (!nbgroups)
- return;
- }
+ nbgroups = hwloc_setup_group_from_min_distance(nbobjs, _distances, groupids);
+ if (!nbgroups)
+ return;
if (nbgroups == 1) {
hwloc_debug("%s", "ignoring misc object with all objects\n");
@@ -312,15 +251,15 @@
/* create the misc object */
hwloc_obj_t misc_obj;
misc_obj = hwloc_alloc_setup_object(HWLOC_OBJ_GROUP, -1);
- misc_obj->cpuset = hwloc_cpuset_alloc();
- hwloc_cpuset_zero(misc_obj->cpuset);
+ misc_obj->cpuset = hwloc_bitmap_alloc();
+ hwloc_bitmap_zero(misc_obj->cpuset);
misc_obj->attr->group.depth = depth;
for (j=0; j<nbobjs; j++)
if (groupids[j] == i+1) {
- hwloc_cpuset_or(misc_obj->cpuset, misc_obj->cpuset, objs[j]->cpuset);
+ hwloc_bitmap_or(misc_obj->cpuset, misc_obj->cpuset, objs[j]->cpuset);
groupsizes[i]++;
}
- hwloc_debug_1arg_cpuset("adding misc object with %u objects and cpuset %s\n",
+ hwloc_debug_1arg_bitmap("adding misc object with %u objects and cpuset %s\n",
groupsizes[i], misc_obj->cpuset);
hwloc_insert_object_by_cpuset(topology, misc_obj);
groupobjs[i] = misc_obj;
@@ -352,11 +291,13 @@
*/
void
hwloc_setup_misc_level_from_distances(struct hwloc_topology *topology,
- unsigned nbobjs,
- struct hwloc_obj **objs,
- unsigned *_distances)
+ unsigned nbobjs,
+ struct hwloc_obj **objs,
+ unsigned *_distances,
+ unsigned *_distance_indexes)
{
unsigned (*distances)[nbobjs][nbobjs] = (unsigned (*)[nbobjs][nbobjs])_distances;
+ unsigned (*distance_indexes)[nbobjs] __hwloc_attribute_unused = (unsigned (*)[nbobjs])_distance_indexes;
unsigned i,j;
if (getenv("HWLOC_IGNORE_DISTANCES"))
@@ -366,11 +307,11 @@
hwloc_debug("%s", "node distance matrix:\n");
hwloc_debug("%s", " ");
for(j=0; j<nbobjs; j++)
- hwloc_debug(" %3u", j);
+ hwloc_debug(" %3u", (*distance_indexes)[j]);
hwloc_debug("%s", "\n");
for(i=0; i<nbobjs; i++) {
- hwloc_debug("%3u", i);
+ hwloc_debug("%3u", (*distance_indexes)[i]);
for(j=0; j<nbobjs; j++)
hwloc_debug(" %3u", (*distances)[i][j]);
hwloc_debug("%s", "\n");
@@ -413,10 +354,10 @@
for (cpu=0,oscpu=0; cpu<nb_pus; oscpu++)
{
obj = hwloc_alloc_setup_object(HWLOC_OBJ_PU, oscpu);
- obj->cpuset = hwloc_cpuset_alloc();
- hwloc_cpuset_cpu(obj->cpuset, oscpu);
+ obj->cpuset = hwloc_bitmap_alloc();
+ hwloc_bitmap_only(obj->cpuset, oscpu);
- hwloc_debug_2args_cpuset("cpu %u (os %u) has cpuset %s\n",
+ hwloc_debug_2args_bitmap("cpu %u (os %u) has cpuset %s\n",
cpu, oscpu, obj->cpuset);
hwloc_insert_object_by_cpuset(topology, obj);
@@ -432,37 +373,37 @@
hwloc_obj_snprintf(line, sizeof(line), topology, obj, "#", 1);
hwloc_debug("%s", line);
if (obj->cpuset) {
- hwloc_cpuset_asprintf(&cpuset, obj->cpuset);
+ hwloc_bitmap_asprintf(&cpuset, obj->cpuset);
hwloc_debug(" cpuset %s", cpuset);
free(cpuset);
}
if (obj->complete_cpuset) {
- hwloc_cpuset_asprintf(&cpuset, obj->complete_cpuset);
+ hwloc_bitmap_asprintf(&cpuset, obj->complete_cpuset);
hwloc_debug(" complete %s", cpuset);
free(cpuset);
}
if (obj->online_cpuset) {
- hwloc_cpuset_asprintf(&cpuset, obj->online_cpuset);
+ hwloc_bitmap_asprintf(&cpuset, obj->online_cpuset);
hwloc_debug(" online %s", cpuset);
free(cpuset);
}
if (obj->allowed_cpuset) {
- hwloc_cpuset_asprintf(&cpuset, obj->allowed_cpuset);
+ hwloc_bitmap_asprintf(&cpuset, obj->allowed_cpuset);
hwloc_debug(" allowed %s", cpuset);
free(cpuset);
}
if (obj->nodeset) {
- hwloc_cpuset_asprintf(&cpuset, obj->nodeset);
+ hwloc_bitmap_asprintf(&cpuset, obj->nodeset);
hwloc_debug(" nodeset %s", cpuset);
free(cpuset);
}
if (obj->complete_nodeset) {
- hwloc_cpuset_asprintf(&cpuset, obj->complete_nodeset);
+ hwloc_bitmap_asprintf(&cpuset, obj->complete_nodeset);
hwloc_debug(" completeN %s", cpuset);
free(cpuset);
}
if (obj->allowed_nodeset) {
- hwloc_cpuset_asprintf(&cpuset, obj->allowed_nodeset);
+ hwloc_bitmap_asprintf(&cpuset, obj->allowed_nodeset);
hwloc_debug(" allowedN %s", cpuset);
free(cpuset);
}
@@ -482,29 +423,44 @@
#endif
}
+void
+hwloc_add_object_info(hwloc_obj_t obj, const char *name, const char *value)
+{
+#define OBJECT_INFO_ALLOC 8
+ /* nothing allocated initially, (re-)allocate by multiple of 8 */
+ unsigned alloccount = (obj->infos_count + 1 + (OBJECT_INFO_ALLOC-1)) & ~(OBJECT_INFO_ALLOC-1);
+ if (obj->infos_count != alloccount)
+ obj->infos = realloc(obj->infos, alloccount*sizeof(*obj->infos));
+ obj->infos[obj->infos_count].name = strdup(name);
+ obj->infos[obj->infos_count].value = strdup(value);
+ obj->infos_count++;
+}
+
/* Free an object and all its content. */
void
-free_object(hwloc_obj_t obj)
+hwloc_free_object(hwloc_obj_t obj)
{
+ unsigned i;
switch (obj->type) {
- case HWLOC_OBJ_MACHINE:
- free(obj->attr->machine.dmi_board_vendor);
- free(obj->attr->machine.dmi_board_name);
- break;
default:
break;
}
+ for(i=0; i<obj->infos_count; i++) {
+ free(obj->infos[i].name);
+ free(obj->infos[i].value);
+ }
+ free(obj->infos);
free(obj->memory.page_types);
free(obj->attr);
free(obj->children);
free(obj->name);
- hwloc_cpuset_free(obj->cpuset);
- hwloc_cpuset_free(obj->complete_cpuset);
- hwloc_cpuset_free(obj->online_cpuset);
- hwloc_cpuset_free(obj->allowed_cpuset);
- hwloc_cpuset_free(obj->nodeset);
- hwloc_cpuset_free(obj->complete_nodeset);
- hwloc_cpuset_free(obj->allowed_nodeset);
+ hwloc_bitmap_free(obj->cpuset);
+ hwloc_bitmap_free(obj->complete_cpuset);
+ hwloc_bitmap_free(obj->online_cpuset);
+ hwloc_bitmap_free(obj->allowed_cpuset);
+ hwloc_bitmap_free(obj->nodeset);
+ hwloc_bitmap_free(obj->complete_nodeset);
+ hwloc_bitmap_free(obj->allowed_nodeset);
free(obj);
}
@@ -608,11 +564,11 @@
static int
hwloc_obj_cmp(hwloc_obj_t obj1, hwloc_obj_t obj2)
{
- if (!obj1->cpuset || hwloc_cpuset_iszero(obj1->cpuset)
- || !obj2->cpuset || hwloc_cpuset_iszero(obj2->cpuset))
+ if (!obj1->cpuset || hwloc_bitmap_iszero(obj1->cpuset)
+ || !obj2->cpuset || hwloc_bitmap_iszero(obj2->cpuset))
return HWLOC_OBJ_DIFFERENT;
- if (hwloc_cpuset_isequal(obj1->cpuset, obj2->cpuset)) {
+ if (hwloc_bitmap_isequal(obj1->cpuset, obj2->cpuset)) {
/* Same cpuset, subsort by type to have a consistent ordering. */
@@ -645,13 +601,13 @@
/* Different cpusets, sort by inclusion. */
- if (hwloc_cpuset_isincluded(obj1->cpuset, obj2->cpuset))
+ if (hwloc_bitmap_isincluded(obj1->cpuset, obj2->cpuset))
return HWLOC_OBJ_INCLUDED;
- if (hwloc_cpuset_isincluded(obj2->cpuset, obj1->cpuset))
+ if (hwloc_bitmap_isincluded(obj2->cpuset, obj1->cpuset))
return HWLOC_OBJ_CONTAINS;
- if (hwloc_cpuset_intersects(obj1->cpuset, obj2->cpuset))
+ if (hwloc_bitmap_intersects(obj1->cpuset, obj2->cpuset))
return HWLOC_OBJ_INTERSECTS;
return HWLOC_OBJ_DIFFERENT;
@@ -688,7 +644,7 @@
int put;
/* Make sure we haven't gone too deep. */
- if (!hwloc_cpuset_isincluded(obj->cpuset, cur->cpuset)) {
+ if (!hwloc_bitmap_isincluded(obj->cpuset, cur->cpuset)) {
fprintf(stderr,"recursion has gone too deep?!\n");
return;
}
@@ -729,6 +685,8 @@
case HWLOC_OBJ_CACHE:
merge_sizes(obj, child, attr->cache.size);
check_sizes(obj, child, attr->cache.size);
+ merge_sizes(obj, child, attr->cache.linesize);
+ check_sizes(obj, child, attr->cache.linesize);
break;
default:
break;
@@ -789,7 +747,7 @@
case HWLOC_OBJ_DIFFERENT:
/* Leave CHILD in CUR. */
- if (!put && hwloc_cpuset_compare_first(obj->cpuset, child->cpuset) < 0) {
+ if (!put && hwloc_bitmap_compare_first(obj->cpuset, child->cpuset) < 0) {
/* Sort children by cpuset: put OBJ before CHILD in CUR's children. */
*cur_children = obj;
cur_children = &obj->next_sibling;
@@ -830,9 +788,9 @@
{
/* Start at the top. */
/* Add the cpuset to the top */
- hwloc_cpuset_or(topology->levels[0][0]->complete_cpuset, topology->levels[0][0]->complete_cpuset, obj->cpuset);
+ hwloc_bitmap_or(topology->levels[0][0]->complete_cpuset, topology->levels[0][0]->complete_cpuset, obj->cpuset);
if (obj->nodeset)
- hwloc_cpuset_or(topology->levels[0][0]->complete_nodeset, topology->levels[0][0]->complete_nodeset, obj->nodeset);
+ hwloc_bitmap_or(topology->levels[0][0]->complete_nodeset, topology->levels[0][0]->complete_nodeset, obj->nodeset);
hwloc__insert_object_by_cpuset(topology, topology->levels[0][0], obj);
}
@@ -864,10 +822,10 @@
hwloc_connect(hwloc_obj_t parent);
/* Adds a misc object _after_ detection, and thus has to reconnect all the pointers */
hwloc_obj_t
-hwloc_topology_insert_misc_object_by_cpuset(struct hwloc_topology *topology, hwloc_const_cpuset_t cpuset, const char *name)
+hwloc_topology_insert_misc_object_by_cpuset(struct hwloc_topology *topology, hwloc_const_bitmap_t cpuset, const char *name)
{
hwloc_obj_t obj = hwloc_alloc_setup_object(HWLOC_OBJ_MISC, -1);
- obj->cpuset = hwloc_cpuset_dup(cpuset);
+ obj->cpuset = hwloc_bitmap_dup(cpuset);
if (name)
obj->name = strdup(name);
@@ -883,7 +841,7 @@
{
hwloc_obj_t obj = hwloc_alloc_setup_object(HWLOC_OBJ_MISC, -1);
if (parent->cpuset)
- obj->cpuset = hwloc_cpuset_dup(parent->cpuset);
+ obj->cpuset = hwloc_bitmap_dup(parent->cpuset);
if (name)
obj->name = strdup(name);
@@ -946,13 +904,13 @@
if (sys) {
/* We are already given a pointer to a system object */
if (obj->type == HWLOC_OBJ_PU)
- hwloc_cpuset_or(sys->cpuset, sys->cpuset, obj->cpuset);
+ hwloc_bitmap_or(sys->cpuset, sys->cpuset, obj->cpuset);
} else {
if (obj->cpuset) {
/* This object is the root of a machine */
sys = obj;
/* Assume no PU for now */
- hwloc_cpuset_zero(obj->cpuset);
+ hwloc_bitmap_zero(obj->cpuset);
}
}
@@ -970,69 +928,69 @@
if (obj->cpuset) {
if (sys) {
/* We are already given a pointer to an system object, update it and update ourselves */
- hwloc_cpuset_t mask = hwloc_cpuset_alloc();
+ hwloc_bitmap_t mask = hwloc_bitmap_alloc();
/* Apply the topology cpuset */
- hwloc_cpuset_and(obj->cpuset, obj->cpuset, sys->cpuset);
+ hwloc_bitmap_and(obj->cpuset, obj->cpuset, sys->cpuset);
/* Update complete cpuset down */
if (obj->complete_cpuset) {
- hwloc_cpuset_and(obj->complete_cpuset, obj->complete_cpuset, sys->complete_cpuset);
+ hwloc_bitmap_and(obj->complete_cpuset, obj->complete_cpuset, sys->complete_cpuset);
} else {
- obj->complete_cpuset = hwloc_cpuset_dup(sys->complete_cpuset);
- hwloc_cpuset_and(obj->complete_cpuset, obj->complete_cpuset, obj->cpuset);
+ obj->complete_cpuset = hwloc_bitmap_dup(sys->complete_cpuset);
+ hwloc_bitmap_and(obj->complete_cpuset, obj->complete_cpuset, obj->cpuset);
}
/* Update online cpusets */
if (obj->online_cpuset) {
/* Update ours */
- hwloc_cpuset_and(obj->online_cpuset, obj->online_cpuset, sys->online_cpuset);
+ hwloc_bitmap_and(obj->online_cpuset, obj->online_cpuset, sys->online_cpuset);
/* Update the given cpuset, but only what we know */
- hwloc_cpuset_copy(mask, obj->cpuset);
- hwloc_cpuset_not(mask, mask);
- hwloc_cpuset_or(mask, mask, obj->online_cpuset);
- hwloc_cpuset_and(sys->online_cpuset, sys->online_cpuset, mask);
+ hwloc_bitmap_copy(mask, obj->cpuset);
+ hwloc_bitmap_not(mask, mask);
+ hwloc_bitmap_or(mask, mask, obj->online_cpuset);
+ hwloc_bitmap_and(sys->online_cpuset, sys->online_cpuset, mask);
} else {
/* Just take it as such */
- obj->online_cpuset = hwloc_cpuset_dup(sys->online_cpuset);
- hwloc_cpuset_and(obj->online_cpuset, obj->online_cpuset, obj->cpuset);
+ obj->online_cpuset = hwloc_bitmap_dup(sys->online_cpuset);
+ hwloc_bitmap_and(obj->online_cpuset, obj->online_cpuset, obj->cpuset);
}
/* Update allowed cpusets */
if (obj->allowed_cpuset) {
/* Update ours */
- hwloc_cpuset_and(obj->allowed_cpuset, obj->allowed_cpuset, sys->allowed_cpuset);
+ hwloc_bitmap_and(obj->allowed_cpuset, obj->allowed_cpuset, sys->allowed_cpuset);
/* Update the given cpuset, but only what we know */
- hwloc_cpuset_copy(mask, obj->cpuset);
- hwloc_cpuset_not(mask, mask);
- hwloc_cpuset_or(mask, mask, obj->allowed_cpuset);
- hwloc_cpuset_and(sys->allowed_cpuset, sys->allowed_cpuset, mask);
+ hwloc_bitmap_copy(mask, obj->cpuset);
+ hwloc_bitmap_not(mask, mask);
+ hwloc_bitmap_or(mask, mask, obj->allowed_cpuset);
+ hwloc_bitmap_and(sys->allowed_cpuset, sys->allowed_cpuset, mask);
} else {
/* Just take it as such */
- obj->allowed_cpuset = hwloc_cpuset_dup(sys->allowed_cpuset);
- hwloc_cpuset_and(obj->allowed_cpuset, obj->allowed_cpuset, obj->cpuset);
+ obj->allowed_cpuset = hwloc_bitmap_dup(sys->allowed_cpuset);
+ hwloc_bitmap_and(obj->allowed_cpuset, obj->allowed_cpuset, obj->cpuset);
}
- hwloc_cpuset_free(mask);
+ hwloc_bitmap_free(mask);
} else {
/* This object is the root of a machine */
sys = obj;
/* Apply complete cpuset to cpuset, online_cpuset and allowed_cpuset, it
* will automatically be applied below */
if (obj->complete_cpuset)
- hwloc_cpuset_and(obj->cpuset, obj->cpuset, obj->complete_cpuset);
+ hwloc_bitmap_and(obj->cpuset, obj->cpuset, obj->complete_cpuset);
else
- obj->complete_cpuset = hwloc_cpuset_dup(obj->cpuset);
+ obj->complete_cpuset = hwloc_bitmap_dup(obj->cpuset);
if (obj->online_cpuset)
- hwloc_cpuset_and(obj->online_cpuset, obj->online_cpuset, obj->complete_cpuset);
+ hwloc_bitmap_and(obj->online_cpuset, obj->online_cpuset, obj->complete_cpuset);
else
- obj->online_cpuset = hwloc_cpuset_dup(obj->complete_cpuset);
+ obj->online_cpuset = hwloc_bitmap_dup(obj->complete_cpuset);
if (obj->allowed_cpuset)
- hwloc_cpuset_and(obj->allowed_cpuset, obj->allowed_cpuset, obj->complete_cpuset);
+ hwloc_bitmap_and(obj->allowed_cpuset, obj->allowed_cpuset, obj->complete_cpuset);
else
- obj->allowed_cpuset = hwloc_cpuset_dup(obj->complete_cpuset);
+ obj->allowed_cpuset = hwloc_bitmap_dup(obj->complete_cpuset);
}
}
@@ -1040,40 +998,73 @@
propagate_unused_cpuset(child, sys);
}
+/* Force full nodeset for non-NUMA machines */
+static void
+add_default_object_sets(hwloc_obj_t obj, int parent_has_sets)
+{
+ hwloc_obj_t child, *temp;
+
+ if (parent_has_sets || obj->cpuset) {
+ /* if the parent has non-NULL sets, or if the object has non-NULL cpusets,
+ * it must have non-NULL nodesets
+ */
+ assert(obj->cpuset);
+ assert(obj->online_cpuset);
+ assert(obj->complete_cpuset);
+ assert(obj->allowed_cpuset);
+ if (!obj->nodeset)
+ obj->nodeset = hwloc_bitmap_alloc_full();
+ if (!obj->complete_nodeset)
+ obj->complete_nodeset = hwloc_bitmap_alloc_full();
+ if (!obj->allowed_nodeset)
+ obj->allowed_nodeset = hwloc_bitmap_alloc_full();
+ } else {
+ /* parent has no sets and object has NULL cpusets,
+ * it must have NULL nodesets
+ */
+ assert(!obj->nodeset);
+ assert(!obj->complete_nodeset);
+ assert(!obj->allowed_nodeset);
+ }
+
+ for_each_child_safe(child, obj, temp)
+ add_default_object_sets(child, obj->cpuset != NULL);
+}
+
/* Propagate nodesets up and down */
static void
propagate_nodeset(hwloc_obj_t obj, hwloc_obj_t sys)
{
hwloc_obj_t child, *temp;
- hwloc_cpuset_t parent_nodeset = NULL;
+ hwloc_bitmap_t parent_nodeset = NULL;
int parent_weight = 0;
if (!sys && obj->nodeset) {
sys = obj;
if (!obj->complete_nodeset)
- obj->complete_nodeset = hwloc_cpuset_dup(obj->nodeset);
+ obj->complete_nodeset = hwloc_bitmap_dup(obj->nodeset);
if (!obj->allowed_nodeset)
- obj->allowed_nodeset = hwloc_cpuset_dup(obj->complete_nodeset);
+ obj->allowed_nodeset = hwloc_bitmap_dup(obj->complete_nodeset);
}
if (sys) {
if (obj->nodeset) {
/* Some existing nodeset coming from above, to possibly propagate down */
parent_nodeset = obj->nodeset;
- parent_weight = hwloc_cpuset_weight(parent_nodeset);
+ parent_weight = hwloc_bitmap_weight(parent_nodeset);
} else
- obj->nodeset = hwloc_cpuset_alloc();
+ obj->nodeset = hwloc_bitmap_alloc();
}
for_each_child_safe(child, obj, temp) {
/* Propagate singleton nodesets down */
if (parent_weight == 1) {
if (!child->nodeset)
- child->nodeset = hwloc_cpuset_dup(obj->nodeset);
- else if (!hwloc_cpuset_isequal(child->nodeset, parent_nodeset)) {
- hwloc_debug_cpuset("Oops, parent nodeset %s", parent_nodeset);
- hwloc_debug_cpuset(" is different from child nodeset %s, ignoring the child one\n", child->nodeset);
- hwloc_cpuset_copy(child->nodeset, parent_nodeset);
+ child->nodeset = hwloc_bitmap_dup(obj->nodeset);
+ else if (!hwloc_bitmap_isequal(child->nodeset, parent_nodeset)) {
+ hwloc_debug_bitmap("Oops, parent nodeset %s", parent_nodeset);
+ hwloc_debug_bitmap(" is different from child nodeset %s, ignoring the child one\n", child->nodeset);
+ hwloc_bitmap_copy(child->nodeset, parent_nodeset);
}
}
@@ -1082,7 +1073,7 @@
/* Propagate children nodesets up */
if (sys && child->nodeset)
- hwloc_cpuset_or(obj->nodeset, obj->nodeset, child->nodeset);
+ hwloc_bitmap_or(obj->nodeset, obj->nodeset, child->nodeset);
}
}
@@ -1090,25 +1081,25 @@
static void
propagate_nodesets(hwloc_obj_t obj)
{
- hwloc_cpuset_t mask = hwloc_cpuset_alloc();
+ hwloc_bitmap_t mask = hwloc_bitmap_alloc();
hwloc_obj_t child, *temp;
for_each_child_safe(child, obj, temp) {
if (obj->nodeset) {
/* Update complete nodesets down */
if (child->complete_nodeset) {
- hwloc_cpuset_and(child->complete_nodeset, child->complete_nodeset, obj->complete_nodeset);
+ hwloc_bitmap_and(child->complete_nodeset, child->complete_nodeset, obj->complete_nodeset);
} else if (child->nodeset) {
- child->complete_nodeset = hwloc_cpuset_dup(obj->complete_nodeset);
- hwloc_cpuset_and(child->complete_nodeset, child->complete_nodeset, child->nodeset);
+ child->complete_nodeset = hwloc_bitmap_dup(obj->complete_nodeset);
+ hwloc_bitmap_and(child->complete_nodeset, child->complete_nodeset, child->nodeset);
} /* else the child doesn't have nodeset information, we can not provide a complete nodeset */
/* Update allowed nodesets down */
if (child->allowed_nodeset) {
- hwloc_cpuset_and(child->allowed_nodeset, child->allowed_nodeset, obj->allowed_nodeset);
+ hwloc_bitmap_and(child->allowed_nodeset, child->allowed_nodeset, obj->allowed_nodeset);
} else if (child->nodeset) {
- child->allowed_nodeset = hwloc_cpuset_dup(obj->allowed_nodeset);
- hwloc_cpuset_and(child->allowed_nodeset, child->allowed_nodeset, child->nodeset);
+ child->allowed_nodeset = hwloc_bitmap_dup(obj->allowed_nodeset);
+ hwloc_bitmap_and(child->allowed_nodeset, child->allowed_nodeset, child->nodeset);
}
}
@@ -1117,25 +1108,25 @@
if (obj->nodeset) {
/* Update allowed nodesets up */
if (child->nodeset && child->allowed_nodeset) {
- hwloc_cpuset_copy(mask, child->nodeset);
- hwloc_cpuset_not(mask, mask);
- hwloc_cpuset_or(mask, mask, child->allowed_nodeset);
- hwloc_cpuset_and(obj->allowed_nodeset, obj->allowed_nodeset, mask);
+ hwloc_bitmap_copy(mask, child->nodeset);
+ hwloc_bitmap_not(mask, mask);
+ hwloc_bitmap_or(mask, mask, child->allowed_nodeset);
+ hwloc_bitmap_and(obj->allowed_nodeset, obj->allowed_nodeset, mask);
}
}
}
- hwloc_cpuset_free(mask);
+ hwloc_bitmap_free(mask);
if (obj->nodeset) {
/* Apply complete nodeset to nodeset and allowed_nodeset */
if (obj->complete_nodeset)
- hwloc_cpuset_and(obj->nodeset, obj->nodeset, obj->complete_nodeset);
+ hwloc_bitmap_and(obj->nodeset, obj->nodeset, obj->complete_nodeset);
else
- obj->complete_nodeset = hwloc_cpuset_dup(obj->nodeset);
+ obj->complete_nodeset = hwloc_bitmap_dup(obj->nodeset);
if (obj->allowed_nodeset)
- hwloc_cpuset_and(obj->allowed_nodeset, obj->allowed_nodeset, obj->complete_nodeset);
+ hwloc_bitmap_and(obj->allowed_nodeset, obj->allowed_nodeset, obj->complete_nodeset);
else
- obj->allowed_nodeset = hwloc_cpuset_dup(obj->complete_nodeset);
+ obj->allowed_nodeset = hwloc_bitmap_dup(obj->complete_nodeset);
}
}
@@ -1147,7 +1138,7 @@
if (sys) {
if (obj->type == HWLOC_OBJ_NODE && obj->os_index != (unsigned) -1 &&
- !hwloc_cpuset_isset(sys->allowed_nodeset, obj->os_index)) {
+ !hwloc_bitmap_isset(sys->allowed_nodeset, obj->os_index)) {
hwloc_debug("Dropping memory from disallowed node %u\n", obj->os_index);
obj->memory.local_memory = 0;
obj->memory.total_memory = 0;
@@ -1170,8 +1161,8 @@
hwloc_obj_t child, *temp;
if (obj->cpuset) {
- hwloc_cpuset_and(obj->cpuset, obj->cpuset, obj->online_cpuset);
- hwloc_cpuset_and(obj->cpuset, obj->cpuset, obj->allowed_cpuset);
+ hwloc_bitmap_and(obj->cpuset, obj->cpuset, obj->online_cpuset);
+ hwloc_bitmap_and(obj->cpuset, obj->cpuset, obj->allowed_cpuset);
}
for_each_child_safe(child, obj, temp)
@@ -1192,7 +1183,7 @@
} else
*pparent = parent->next_sibling;
/* Remove ignored object */
- free_object(parent);
+ hwloc_free_object(parent);
}
/* Remove all ignored objects. */
@@ -1220,7 +1211,7 @@
do_free_object(pchild);
*pobj = obj->next_sibling;
- free_object(obj);
+ hwloc_free_object(obj);
}
/* Remove all children whose cpuset is empty, except NUMA nodes
@@ -1235,7 +1226,7 @@
if (obj->type != HWLOC_OBJ_NODE
&& obj->cpuset
- && hwloc_cpuset_iszero(obj->cpuset)) {
+ && hwloc_bitmap_iszero(obj->cpuset)) {
/* Remove empty children */
hwloc_debug("%s", "\nRemoving empty object ");
print_object(topology, 0, obj);
@@ -1267,13 +1258,13 @@
print_object(topology, 0, parent);
*pparent = child;
child->next_sibling = parent->next_sibling;
- free_object(parent);
+ hwloc_free_object(parent);
} else if (topology->ignored_types[child->type] == HWLOC_IGNORE_TYPE_KEEP_STRUCTURE) {
/* Child can be ignored in favor of the parent. */
hwloc_debug("%s", "\nIgnoring child ");
print_object(topology, 0, child);
parent->first_child = child->first_child;
- free_object(child);
+ hwloc_free_object(child);
}
}
@@ -1333,65 +1324,117 @@
* Empty binding hooks always returning success
*/
-static int dontset_thisthread_cpubind(hwloc_topology_t topology __hwloc_attribute_unused, hwloc_const_cpuset_t set __hwloc_attribute_unused, int policy __hwloc_attribute_unused)
+static int dontset_return_complete_cpuset(hwloc_topology_t topology, hwloc_cpuset_t set)
{
+ hwloc_const_cpuset_t cpuset = hwloc_topology_get_complete_cpuset(topology);
+ if (cpuset) {
+ hwloc_bitmap_copy(set, hwloc_topology_get_complete_cpuset(topology));
+ return 0;
+ } else
+ return -1;
+}
+
+static int dontset_thisthread_cpubind(hwloc_topology_t topology __hwloc_attribute_unused, hwloc_const_bitmap_t set __hwloc_attribute_unused, int flags __hwloc_attribute_unused)
+{
return 0;
}
-static int dontget_thisthread_cpubind(hwloc_topology_t topology __hwloc_attribute_unused, hwloc_cpuset_t set, int policy __hwloc_attribute_unused)
+static int dontget_thisthread_cpubind(hwloc_topology_t topology __hwloc_attribute_unused, hwloc_bitmap_t set, int flags __hwloc_attribute_unused)
{
- hwloc_cpuset_copy(set, hwloc_topology_get_complete_cpuset(topology));
+ return dontset_return_complete_cpuset(topology, set);
+}
+static int dontset_thisproc_cpubind(hwloc_topology_t topology __hwloc_attribute_unused, hwloc_const_bitmap_t set __hwloc_attribute_unused, int flags __hwloc_attribute_unused)
+{
return 0;
}
-static int dontset_thisproc_cpubind(hwloc_topology_t topology __hwloc_attribute_unused, hwloc_const_cpuset_t set __hwloc_attribute_unused, int policy __hwloc_attribute_unused)
+static int dontget_thisproc_cpubind(hwloc_topology_t topology __hwloc_attribute_unused, hwloc_bitmap_t set, int flags __hwloc_attribute_unused)
{
+ return dontset_return_complete_cpuset(topology, set);
+}
+static int dontset_proc_cpubind(hwloc_topology_t topology __hwloc_attribute_unused, hwloc_pid_t pid __hwloc_attribute_unused, hwloc_const_bitmap_t set __hwloc_attribute_unused, int flags __hwloc_attribute_unused)
+{
return 0;
}
-static int dontget_thisproc_cpubind(hwloc_topology_t topology __hwloc_attribute_unused, hwloc_cpuset_t set, int policy __hwloc_attribute_unused)
+static int dontget_proc_cpubind(hwloc_topology_t topology __hwloc_attribute_unused, hwloc_pid_t pid __hwloc_attribute_unused, hwloc_bitmap_t cpuset, int flags __hwloc_attribute_unused)
{
- hwloc_const_cpuset_t cpuset = hwloc_topology_get_complete_cpuset(topology);
- if (cpuset) {
- hwloc_cpuset_copy(set,cpuset);
+ return dontset_return_complete_cpuset(topology, cpuset);
+}
+#ifdef hwloc_thread_t
+static int dontset_thread_cpubind(hwloc_topology_t topology __hwloc_attribute_unused, hwloc_thread_t tid __hwloc_attribute_unused, hwloc_const_bitmap_t set __hwloc_attribute_unused, int flags __hwloc_attribute_unused)
+{
+ return 0;
+}
+static int dontget_thread_cpubind(hwloc_topology_t topology __hwloc_attribute_unused, hwloc_thread_t tid __hwloc_attribute_unused, hwloc_bitmap_t cpuset, int flags __hwloc_attribute_unused)
+{
+ return dontset_return_complete_cpuset(topology, cpuset);
+}
+#endif
+
+static int dontset_return_complete_nodeset(hwloc_topology_t topology, hwloc_nodeset_t set, hwloc_membind_policy_t *policy)
+{
+ hwloc_const_nodeset_t nodeset = hwloc_topology_get_complete_nodeset(topology);
+ if (nodeset) {
+ hwloc_bitmap_copy(set, hwloc_topology_get_complete_nodeset(topology));
+ *policy = HWLOC_MEMBIND_DEFAULT;
return 0;
} else
return -1;
}
-static int dontset_proc_cpubind(hwloc_topology_t topology __hwloc_attribute_unused, hwloc_pid_t pid __hwloc_attribute_unused, hwloc_const_cpuset_t set __hwloc_attribute_unused, int policy __hwloc_attribute_unused)
+
+static int dontset_thisproc_membind(hwloc_topology_t topology __hwloc_attribute_unused, hwloc_const_bitmap_t set __hwloc_attribute_unused, hwloc_membind_policy_t policy __hwloc_attribute_unused, int flags __hwloc_attribute_unused)
{
return 0;
}
-static int dontget_proc_cpubind(hwloc_topology_t topology __hwloc_attribute_unused, hwloc_pid_t pid __hwloc_attribute_unused, hwloc_cpuset_t cpuset, int policy __hwloc_attribute_unused)
+static int dontget_thisproc_membind(hwloc_topology_t topology __hwloc_attribute_unused, hwloc_bitmap_t set, hwloc_membind_policy_t * policy, int flags __hwloc_attribute_unused)
{
- hwloc_cpuset_copy(cpuset, hwloc_topology_get_complete_cpuset(topology));
+ return dontset_return_complete_nodeset(topology, set, policy);
+}
+
+static int dontset_thisthread_membind(hwloc_topology_t topology __hwloc_attribute_unused, hwloc_const_bitmap_t set __hwloc_attribute_unused, hwloc_membind_policy_t policy __hwloc_attribute_unused, int flags __hwloc_attribute_unused)
+{
return 0;
}
-#ifdef hwloc_thread_t
-static int dontset_thread_cpubind(hwloc_topology_t topology __hwloc_attribute_unused, hwloc_thread_t tid __hwloc_attribute_unused, hwloc_const_cpuset_t set __hwloc_attribute_unused, int policy __hwloc_attribute_unused)
+static int dontget_thisthread_membind(hwloc_topology_t topology __hwloc_attribute_unused, hwloc_bitmap_t set, hwloc_membind_policy_t * policy, int flags __hwloc_attribute_unused)
{
+ return dontset_return_complete_nodeset(topology, set, policy);
+}
+
+static int dontset_proc_membind(hwloc_topology_t topology __hwloc_attribute_unused, hwloc_pid_t pid __hwloc_attribute_unused, hwloc_const_bitmap_t set __hwloc_attribute_unused, hwloc_membind_policy_t policy __hwloc_attribute_unused, int flags __hwloc_attribute_unused)
+{
return 0;
}
-static int dontget_thread_cpubind(hwloc_topology_t topology __hwloc_attribute_unused, hwloc_thread_t tid __hwloc_attribute_unused, hwloc_cpuset_t cpuset, int policy __hwloc_attribute_unused)
+static int dontget_proc_membind(hwloc_topology_t topology __hwloc_attribute_unused, hwloc_pid_t pid __hwloc_attribute_unused, hwloc_bitmap_t set, hwloc_membind_policy_t * policy, int flags __hwloc_attribute_unused)
{
- hwloc_cpuset_copy(cpuset, hwloc_topology_get_complete_cpuset(topology));
+ return dontset_return_complete_nodeset(topology, set, policy);
+}
+
+static int dontset_area_membind(hwloc_topology_t topology __hwloc_attribute_unused, const void *addr __hwloc_attribute_unused, size_t size __hwloc_attribute_unused, hwloc_const_bitmap_t set __hwloc_attribute_unused, hwloc_membind_policy_t policy __hwloc_attribute_unused, int flags __hwloc_attribute_unused)
+{
return 0;
}
-#endif
+static int dontget_area_membind(hwloc_topology_t topology __hwloc_attribute_unused, const void *addr __hwloc_attribute_unused, size_t size __hwloc_attribute_unused, hwloc_bitmap_t set, hwloc_membind_policy_t * policy, int flags __hwloc_attribute_unused)
+{
+ return dontset_return_complete_nodeset(topology, set, policy);
+}
+static void * dontalloc_membind(hwloc_topology_t topology __hwloc_attribute_unused, size_t size __hwloc_attribute_unused, hwloc_const_bitmap_t set __hwloc_attribute_unused, hwloc_membind_policy_t policy __hwloc_attribute_unused, int flags __hwloc_attribute_unused)
+{
+ return malloc(size);
+}
+static int dontfree_membind(hwloc_topology_t topology __hwloc_attribute_unused, void *addr __hwloc_attribute_unused, size_t size __hwloc_attribute_unused)
+{
+ free(addr);
+ return 0;
+}
+
static void alloc_cpusets(hwloc_obj_t obj)
{
- obj->cpuset = hwloc_cpuset_alloc();
- obj->complete_cpuset = hwloc_cpuset_alloc();
- obj->online_cpuset = hwloc_cpuset_alloc();
- obj->allowed_cpuset = hwloc_cpuset_alloc();
- obj->nodeset = hwloc_cpuset_alloc();
- obj->complete_nodeset = hwloc_cpuset_alloc();
- obj->allowed_nodeset = hwloc_cpuset_alloc();
- hwloc_cpuset_fill(obj->cpuset);
- hwloc_cpuset_zero(obj->complete_cpuset);
- hwloc_cpuset_fill(obj->online_cpuset);
- hwloc_cpuset_fill(obj->allowed_cpuset);
- hwloc_cpuset_zero(obj->nodeset);
- hwloc_cpuset_zero(obj->complete_nodeset);
- hwloc_cpuset_fill(obj->allowed_nodeset);
+ obj->cpuset = hwloc_bitmap_alloc_full();
+ obj->complete_cpuset = hwloc_bitmap_alloc();
+ obj->online_cpuset = hwloc_bitmap_alloc_full();
+ obj->allowed_cpuset = hwloc_bitmap_alloc_full();
+ obj->nodeset = hwloc_bitmap_alloc();
+ obj->complete_nodeset = hwloc_bitmap_alloc();
+ obj->allowed_nodeset = hwloc_bitmap_alloc_full();
}
/* Main discovery loop */
@@ -1507,8 +1550,19 @@
# ifndef HAVE_OS_SUPPORT
hwloc_setup_pu_level(topology, hwloc_fallback_nbprocessors(topology));
# endif /* Unsupported OS */
+
+
+# ifndef HWLOC_LINUX_SYS
+ if (topology->is_thissystem) {
+ /* gather uname info, except for Linux, which does it internally depending on load options */
+ hwloc_add_uname_info(topology);
+ }
+# endif
}
+ /*
+ * Now that backends have detected objects, sort them and establish pointers.
+ */
print_objects(topology, 0, topology->levels[0][0]);
/* First tweak a bit to clean the topology. */
@@ -1518,13 +1572,13 @@
hwloc_debug("%s", "\nPropagate offline and disallowed cpus down and up\n");
propagate_unused_cpuset(topology->levels[0][0], NULL);
- if (topology->levels[0][0]->complete_nodeset && hwloc_cpuset_iszero(topology->levels[0][0]->complete_nodeset)) {
+ if (topology->levels[0][0]->complete_nodeset && hwloc_bitmap_iszero(topology->levels[0][0]->complete_nodeset)) {
/* No nodeset, drop all of them */
- hwloc_cpuset_free(topology->levels[0][0]->nodeset);
+ hwloc_bitmap_free(topology->levels[0][0]->nodeset);
topology->levels[0][0]->nodeset = NULL;
- hwloc_cpuset_free(topology->levels[0][0]->complete_nodeset);
+ hwloc_bitmap_free(topology->levels[0][0]->complete_nodeset);
topology->levels[0][0]->complete_nodeset = NULL;
- hwloc_cpuset_free(topology->levels[0][0]->allowed_nodeset);
+ hwloc_bitmap_free(topology->levels[0][0]->allowed_nodeset);
topology->levels[0][0]->allowed_nodeset = NULL;
}
hwloc_debug("%s", "\nPropagate nodesets\n");
@@ -1551,6 +1605,11 @@
hwloc_debug("%s", "\nRemoving empty objects except numa nodes and PCI devices\n");
remove_empty(topology, &topology->levels[0][0]);
+ if (!topology->levels[0][0]) {
+ fprintf(stderr, "Topology became empty, aborting!\n");
+ abort();
+ }
+
print_objects(topology, 0, topology->levels[0][0]);
hwloc_debug("%s", "\nRemoving objects whose type has HWLOC_IGNORE_TYPE_KEEP_STRUCTURE and have only one child or are the only child\n");
@@ -1558,6 +1617,9 @@
print_objects(topology, 0, topology->levels[0][0]);
+ hwloc_debug("%s", "\nAdd default object sets\n");
+ add_default_object_sets(topology->levels[0][0], 0);
+
hwloc_debug("%s", "\nOk, finished tweaking, now connect\n");
/* Now connect handy pointers. */
@@ -1681,6 +1743,12 @@
hwloc_debug("%s", "\nPropagate total memory up\n");
propagate_total_memory(topology->levels[0][0]);
+ /*
+ * Now set binding hooks.
+ * If the represented system is actually not this system, use dummy binding
+ * hooks.
+ */
+
if (topology->flags & HWLOC_TOPOLOGY_FLAG_IS_THISSYSTEM)
topology->is_thissystem = 1;
@@ -1727,6 +1795,16 @@
topology->set_thread_cpubind = dontset_thread_cpubind;
topology->get_thread_cpubind = dontget_thread_cpubind;
#endif
+ topology->set_thisproc_membind = dontset_thisproc_membind;
+ topology->get_thisproc_membind = dontget_thisproc_membind;
+ topology->set_thisthread_membind = dontset_thisthread_membind;
+ topology->get_thisthread_membind = dontget_thisthread_membind;
+ topology->set_proc_membind = dontset_proc_membind;
+ topology->get_proc_membind = dontget_proc_membind;
+ topology->set_area_membind = dontset_area_membind;
+ topology->get_area_membind = dontget_area_membind;
+ topology->alloc_membind = dontalloc_membind;
+ topology->free_membind = dontfree_membind;
}
/* if not is_thissystem, set_cpubind is fake
@@ -1734,17 +1812,26 @@
* so don't report that set/get_cpubind as supported
*/
if (topology->is_thissystem) {
-#define DO(kind) \
+#define DO(which,kind) \
if (topology->kind) \
- topology->support.cpubind->kind = 1;
- DO(set_thisproc_cpubind);
- DO(get_thisproc_cpubind);
- DO(set_proc_cpubind);
- DO(get_proc_cpubind);
- DO(set_thisthread_cpubind);
- DO(get_thisthread_cpubind);
- DO(set_thread_cpubind);
- DO(get_thread_cpubind);
+ topology->support.which##bind->kind = 1;
+ DO(cpu,set_thisproc_cpubind);
+ DO(cpu,get_thisproc_cpubind);
+ DO(cpu,set_proc_cpubind);
+ DO(cpu,get_proc_cpubind);
+ DO(cpu,set_thisthread_cpubind);
+ DO(cpu,get_thisthread_cpubind);
+ DO(cpu,set_thread_cpubind);
+ DO(cpu,get_thread_cpubind);
+ DO(mem,set_thisproc_membind);
+ DO(mem,get_thisproc_membind);
+ DO(mem,set_thisthread_membind);
+ DO(mem,get_thisthread_membind);
+ DO(mem,set_proc_membind);
+ DO(mem,get_proc_membind);
+ DO(mem,set_area_membind);
+ DO(mem,get_area_membind);
+ DO(mem,alloc_membind);
}
return 0;
@@ -1770,8 +1857,19 @@
topology->set_thread_cpubind = NULL;
topology->get_thread_cpubind = NULL;
#endif
+ topology->set_thisproc_membind = NULL;
+ topology->get_thisproc_membind = NULL;
+ topology->set_thisthread_membind = NULL;
+ topology->get_thisthread_membind = NULL;
+ topology->set_proc_membind = NULL;
+ topology->get_proc_membind = NULL;
+ topology->set_area_membind = NULL;
+ topology->get_area_membind = NULL;
+ topology->alloc_membind = NULL;
+ topology->free_membind = NULL;
memset(topology->support.discovery, 0, sizeof(*topology->support.discovery));
memset(topology->support.cpubind, 0, sizeof(*topology->support.cpubind));
+ memset(topology->support.membind, 0, sizeof(*topology->support.membind));
/* No objects by default but System on top by default */
memset(topology->level_nbobjects, 0, sizeof(topology->level_nbobjects));
@@ -1811,6 +1909,7 @@
topology->support.discovery = malloc(sizeof(*topology->support.discovery));
topology->support.cpubind = malloc(sizeof(*topology->support.cpubind));
+ topology->support.membind = malloc(sizeof(*topology->support.membind));
/* Only ignore useless cruft by default */
for(i=0; i< HWLOC_OBJ_TYPE_MAX; i++)
@@ -1892,7 +1991,7 @@
/* cleanup existing backend */
hwloc_backend_exit(topology);
- return hwloc_backend_xml_init(topology, xmlpath);
+ return hwloc_backend_xml_init(topology, xmlpath, NULL, 0);
#else /* HWLOC_HAVE_XML */
errno = ENOSYS;
return -1;
@@ -1900,6 +1999,21 @@
}
int
+hwloc_topology_set_xmlbuffer(struct hwloc_topology *topology __hwloc_attribute_unused,
+ const char *xmlbuffer __hwloc_attribute_unused, int size)
+{
+#ifdef HWLOC_HAVE_XML
+ /* cleanup existing backend */
+ hwloc_backend_exit(topology);
+
+ return hwloc_backend_xml_init(topology, NULL, xmlbuffer, size);
+#else /* HWLOC_HAVE_XML */
+ errno = ENOSYS;
+ return -1;
+#endif /* !HWLOC_HAVE_XML */
+}
+
+int
hwloc_topology_set_flags (struct hwloc_topology *topology, unsigned long flags)
{
topology->flags = flags;
@@ -1958,7 +2072,7 @@
unsigned i;
for(i=0; i<root->arity; i++)
hwloc_topology_clear_tree (topology, root->children[i]);
- free_object (root);
+ hwloc_free_object (root);
}
static void
@@ -1977,6 +2091,7 @@
hwloc_backend_exit(topology);
free(topology->support.discovery);
free(topology->support.cpubind);
+ free(topology->support.membind);
free(topology);
}
@@ -2007,7 +2122,7 @@
char *xmlpath_env = getenv("HWLOC_FORCE_XMLFILE");
if (xmlpath_env) {
hwloc_backend_exit(topology);
- hwloc_backend_xml_init(topology, xmlpath_env);
+ hwloc_backend_xml_init(topology, xmlpath_env, NULL, 0);
}
}
#endif
@@ -2024,7 +2139,7 @@
if (topology->backend_type == HWLOC_BACKEND_NONE) {
char *xmlpath_env = getenv("HWLOC_XMLFILE");
if (xmlpath_env)
- hwloc_backend_xml_init(topology, xmlpath_env);
+ hwloc_backend_xml_init(topology, xmlpath_env, NULL, 0);
}
#endif
@@ -2076,7 +2191,7 @@
static void
hwloc__check_children(struct hwloc_obj *parent)
{
- hwloc_cpuset_t remaining_parent_set;
+ hwloc_bitmap_t remaining_parent_set;
unsigned j;
if (!parent->arity) {
@@ -2102,27 +2217,27 @@
assert(parent->last_child->next_sibling == NULL);
if (parent->cpuset) {
- remaining_parent_set = hwloc_cpuset_dup(parent->cpuset);
+ remaining_parent_set = hwloc_bitmap_dup(parent->cpuset);
for(j=0; j<parent->arity; j++) {
if (!parent->children[j]->cpuset)
continue;
/* check that child cpuset is included in the parent */
- assert(hwloc_cpuset_isincluded(parent->children[j]->cpuset, remaining_parent_set));
+ assert(hwloc_bitmap_isincluded(parent->children[j]->cpuset, remaining_parent_set));
#if !defined(NDEBUG)
/* check that children are correctly ordered (see below), empty ones may be anywhere */
- if (!hwloc_cpuset_iszero(parent->children[j]->cpuset)) {
- int firstchild = hwloc_cpuset_first(parent->children[j]->cpuset);
- int firstparent = hwloc_cpuset_first(remaining_parent_set);
+ if (!hwloc_bitmap_iszero(parent->children[j]->cpuset)) {
+ int firstchild = hwloc_bitmap_first(parent->children[j]->cpuset);
+ int firstparent = hwloc_bitmap_first(remaining_parent_set);
assert(firstchild == firstparent);
}
#endif
/* clear previously used parent cpuset bits so that we actually checked above
* that children cpusets do not intersect and are ordered properly
*/
- hwloc_cpuset_andnot(remaining_parent_set, remaining_parent_set, parent->children[j]->cpuset);
+ hwloc_bitmap_andnot(remaining_parent_set, remaining_parent_set, parent->children[j]->cpuset);
}
- assert(hwloc_cpuset_iszero(remaining_parent_set));
- hwloc_cpuset_free(remaining_parent_set);
+ assert(hwloc_bitmap_iszero(remaining_parent_set));
+ hwloc_bitmap_free(remaining_parent_set);
}
/* checks for all children */
@@ -2183,17 +2298,17 @@
}
if (obj->complete_cpuset) {
if (obj->cpuset)
- assert(hwloc_cpuset_isincluded(obj->cpuset, obj->complete_cpuset));
+ assert(hwloc_bitmap_isincluded(obj->cpuset, obj->complete_cpuset));
if (obj->online_cpuset)
- assert(hwloc_cpuset_isincluded(obj->online_cpuset, obj->complete_cpuset));
+ assert(hwloc_bitmap_isincluded(obj->online_cpuset, obj->complete_cpuset));
if (obj->allowed_cpuset)
- assert(hwloc_cpuset_isincluded(obj->allowed_cpuset, obj->complete_cpuset));
+ assert(hwloc_bitmap_isincluded(obj->allowed_cpuset, obj->complete_cpuset));
}
if (obj->complete_nodeset) {
if (obj->nodeset)
- assert(hwloc_cpuset_isincluded(obj->nodeset, obj->complete_nodeset));
+ assert(hwloc_bitmap_isincluded(obj->nodeset, obj->complete_nodeset));
if (obj->allowed_nodeset)
- assert(hwloc_cpuset_isincluded(obj->allowed_nodeset, obj->complete_nodeset));
+ assert(hwloc_bitmap_isincluded(obj->allowed_nodeset, obj->complete_nodeset));
}
/* check children */
hwloc__check_children(obj);
Modified: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/src/traversal.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/src/traversal.c 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/src/traversal.c 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,5 +1,7 @@
/*
- * Copyright © 2009 CNRS, INRIA, Université Bordeaux 1
+ * Copyright © 2009 CNRS
+ * Copyright © 2009-2010 INRIA
+ * Copyright © 2009-2010 Université Bordeaux 1
* Copyright © 2009 Cisco Systems, Inc. All rights reserved.
* See COPYING in top-level directory.
*/
@@ -57,15 +59,15 @@
nextparent = parent->parent;
if (!nextparent)
goto out;
- if (!hwloc_cpuset_isequal(parent->cpuset, nextparent->cpuset))
+ if (!hwloc_bitmap_isequal(parent->cpuset, nextparent->cpuset))
break;
parent = nextparent;
}
/* traverse src's objects and find those that are in nextparent and were not in parent */
for(i=0; i<src_nbobjects; i++) {
- if (hwloc_cpuset_isincluded(src_objs[i]->cpuset, nextparent->cpuset)
- && !hwloc_cpuset_isincluded(src_objs[i]->cpuset, parent->cpuset)) {
+ if (hwloc_bitmap_isincluded(src_objs[i]->cpuset, nextparent->cpuset)
+ && !hwloc_bitmap_isincluded(src_objs[i]->cpuset, parent->cpuset)) {
objs[stored++] = src_objs[i];
if (stored == max)
goto out;
@@ -79,7 +81,7 @@
}
static int
-hwloc__get_largest_objs_inside_cpuset (struct hwloc_obj *current, hwloc_const_cpuset_t set,
+hwloc__get_largest_objs_inside_cpuset (struct hwloc_obj *current, hwloc_const_bitmap_t set,
struct hwloc_obj ***res, int *max)
{
int gotten = 0;
@@ -89,7 +91,7 @@
if (*max <= 0)
return 0;
- if (hwloc_cpuset_isequal(current->cpuset, set)) {
+ if (hwloc_bitmap_isequal(current->cpuset, set)) {
**res = current;
(*res)++;
(*max)--;
@@ -97,19 +99,19 @@
}
for (i=0; i<current->arity; i++) {
- hwloc_cpuset_t subset = hwloc_cpuset_dup(set);
+ hwloc_bitmap_t subset = hwloc_bitmap_dup(set);
int ret;
/* split out the cpuset part corresponding to this child and see if there's anything to do */
- hwloc_cpuset_and(subset, subset, current->children[i]->cpuset);
- if (hwloc_cpuset_iszero(subset)) {
- hwloc_cpuset_free(subset);
+ hwloc_bitmap_and(subset, subset, current->children[i]->cpuset);
+ if (hwloc_bitmap_iszero(subset)) {
+ hwloc_bitmap_free(subset);
continue;
}
ret = hwloc__get_largest_objs_inside_cpuset (current->children[i], subset, res, max);
gotten += ret;
- hwloc_cpuset_free(subset);
+ hwloc_bitmap_free(subset);
/* if no more room to store remaining objects, return what we got so far */
if (!*max)
@@ -120,12 +122,12 @@
}
int
-hwloc_get_largest_objs_inside_cpuset (struct hwloc_topology *topology, hwloc_const_cpuset_t set,
+hwloc_get_largest_objs_inside_cpuset (struct hwloc_topology *topology, hwloc_const_bitmap_t set,
struct hwloc_obj **objs, int max)
{
struct hwloc_obj *current = topology->levels[0][0];
- if (!hwloc_cpuset_isincluded(set, current->cpuset))
+ if (!hwloc_bitmap_isincluded(set, current->cpuset))
return -1;
if (max <= 0)
@@ -201,50 +203,78 @@
{
char memory[64] = "";
char specific[64] = "";
- const char *specificseparator;
+ char infos[256] = "";
+ const char *prefix = "";
if (verbose) {
if (obj->memory.local_memory)
- hwloc_snprintf(memory, sizeof(memory), "local=%lu%s%stotal=%lu%s",
+ hwloc_snprintf(memory, sizeof(memory), "%slocal=%lu%s%stotal=%lu%s",
+ prefix,
(unsigned long) hwloc_memory_size_printf_value(obj->memory.total_memory, verbose),
hwloc_memory_size_printf_unit(obj->memory.total_memory, verbose),
separator,
(unsigned long) hwloc_memory_size_printf_value(obj->memory.local_memory, verbose),
hwloc_memory_size_printf_unit(obj->memory.local_memory, verbose));
else if (obj->memory.total_memory)
- hwloc_snprintf(memory, sizeof(memory), "total=%lu%s",
+ hwloc_snprintf(memory, sizeof(memory), "%stotal=%lu%s",
+ prefix,
(unsigned long) hwloc_memory_size_printf_value(obj->memory.total_memory, verbose),
hwloc_memory_size_printf_unit(obj->memory.total_memory, verbose));
} else {
if (obj->memory.total_memory)
- hwloc_snprintf(memory, sizeof(memory), "%lu%s",
+ hwloc_snprintf(memory, sizeof(memory), "%s%lu%s",
+ prefix,
(unsigned long) hwloc_memory_size_printf_value(obj->memory.total_memory, verbose),
hwloc_memory_size_printf_unit(obj->memory.total_memory, verbose));
}
+ if (*memory)
+ prefix = separator;
switch (obj->type) {
- case HWLOC_OBJ_MACHINE:
+ case HWLOC_OBJ_CACHE:
if (verbose)
- hwloc_snprintf(specific, sizeof(specific), "%s%s%s",
- obj->attr->machine.dmi_board_vendor ? obj->attr->machine.dmi_board_vendor : "",
- obj->attr->machine.dmi_board_vendor && obj->attr->machine.dmi_board_name ? separator : "",
- obj->attr->machine.dmi_board_name ? obj->attr->machine.dmi_board_name : "");
+ hwloc_snprintf(specific, sizeof(specific), "%s%lu%s%sline=%u",
+ prefix,
+ (unsigned long) hwloc_memory_size_printf_value(obj->attr->cache.size, verbose),
+ hwloc_memory_size_printf_unit(obj->attr->cache.size, verbose),
+ separator, obj->attr->cache.linesize);
+ else
+ hwloc_snprintf(specific, sizeof(specific), "%s%lu%s",
+ prefix,
+ (unsigned long) hwloc_memory_size_printf_value(obj->attr->cache.size, verbose),
+ hwloc_memory_size_printf_unit(obj->attr->cache.size, verbose));
break;
- case HWLOC_OBJ_CACHE:
- hwloc_snprintf(specific, sizeof(specific), "%lu%s",
- (unsigned long) hwloc_memory_size_printf_value(obj->attr->cache.size, verbose),
- hwloc_memory_size_printf_unit(obj->attr->cache.size, verbose));
- break;
default:
break;
}
+ if (*specific)
+ prefix = separator;
- /* does the type-specific attribute string need separator prefix ? */
- specificseparator = *memory && *specific ? separator : "";
+ if (verbose) {
+ char *tmpinfos = infos;
+ int tmplen = sizeof(infos);
+ int res;
+ unsigned i;
+ for(i=0; i<obj->infos_count; i++) {
+ if (strchr(obj->infos[i].value, ' '))
+ res = hwloc_snprintf(tmpinfos, tmplen, "%s%s=\"%s\"",
+ prefix,
+ obj->infos[i].name, obj->infos[i].value);
+ else
+ res = hwloc_snprintf(tmpinfos, tmplen, "%s%s=%s",
+ prefix,
+ obj->infos[i].name, obj->infos[i].value);
+ if (res >= tmplen)
+ res = tmplen;
+ tmplen -= res;
+ tmpinfos += res;
+ }
+ }
+ if (*infos)
+ prefix = separator;
return hwloc_snprintf(string, size, "%s%s%s",
- memory,
- specificseparator, specific);
+ memory, specific, infos);
}
@@ -273,15 +303,15 @@
int hwloc_obj_cpuset_snprintf(char *str, size_t size, size_t nobj, struct hwloc_obj * const *objs)
{
- hwloc_cpuset_t set = hwloc_cpuset_alloc();
+ hwloc_bitmap_t set = hwloc_bitmap_alloc();
int res;
unsigned i;
- hwloc_cpuset_zero(set);
+ hwloc_bitmap_zero(set);
for(i=0; i<nobj; i++)
- hwloc_cpuset_or(set, set, objs[i]->cpuset);
+ hwloc_bitmap_or(set, set, objs[i]->cpuset);
- res = hwloc_cpuset_snprintf(str, size, set);
- hwloc_cpuset_free(set);
+ res = hwloc_bitmap_snprintf(str, size, set);
+ hwloc_bitmap_free(set);
return res;
}
Modified: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/Makefile.am
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/Makefile.am 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/Makefile.am 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,16 +1,22 @@
-# Copyright 2009 INRIA, Université Bordeaux 1
+# Copyright © 2009-2010 INRIA
+# Copyright © 2009-2010 Université Bordeaux 1
# Copyright © 2009-2010 Cisco Systems, Inc. All rights reserved.
AM_CFLAGS = $(HWLOC_CFLAGS)
AM_CPPFLAGS = $(HWLOC_CPPFLAGS)
AM_LDFLAGS = $(HWLOC_LDFLAGS)
-SUBDIRS = linux ports xml
+SUBDIRS = ports xml
+DIST_SUBDIRS = ports xml linux
+if HWLOC_HAVE_LINUX
+SUBDIRS += linux
+endif HWLOC_HAVE_LINUX
+
LDADD =
if HWLOC_BUILD_TESTS
-check_PROGRAMS = hwloc_cpuset_string \
+check_PROGRAMS = hwloc_bitmap_string \
hwloc_get_closest_objs \
hwloc_get_obj_covering_cpuset \
hwloc_get_cache_covering_cpuset \
@@ -19,8 +25,8 @@
hwloc_get_obj_inside_cpuset \
hwloc_get_shared_cache_covering_obj \
hwloc_get_obj_below_array_by_type \
- hwloc_cpuset_first_last_weight \
- hwloc_cpuset_singlify \
+ hwloc_bitmap_first_last_weight \
+ hwloc_bitmap_singlify \
hwloc_type_depth \
hwloc_bind \
hwloc_object_userdata \
@@ -40,6 +46,22 @@
check_PROGRAMS += openfabrics-verbs
endif HWLOC_HAVE_LIBIBVERBS
+if HWLOC_HAVE_MYRIEXPRESS
+check_PROGRAMS += myriexpress
+endif HWLOC_HAVE_MYRIEXPRESS
+
+if HWLOC_HAVE_CUDA
+check_PROGRAMS += cuda
+endif HWLOC_HAVE_CUDA
+
+if HWLOC_HAVE_CUDART
+check_PROGRAMS += cudart
+endif HWLOC_HAVE_CUDART
+
+if HWLOC_HAVE_XML
+check_PROGRAMS += xmlbuffer
+endif HWLOC_HAVE_XML
+
TESTS = $(check_PROGRAMS)
# The library has a different name depending on whether we are
@@ -54,6 +76,10 @@
linux_libnuma_LDFLAGS = -lnuma
openfabrics_verbs_LDFLAGS = -libverbs
+myriexpress_LDFLAGS = -lmyriexpress
+cuda_LDFLAGS = -lcuda
+cudart_LDFLAGS = -lcuda -lcudart
+xmlbuffer = -lxml2
if !HWLOC_HAVE_WINDOWS
hwloc_bind_LDFLAGS = -lpthread
endif !HWLOC_HAVE_WINDOWS
Added: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/cuda.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/cuda.c (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/cuda.c 2010-11-24 09:21:55 UTC (rev 7494)
@@ -0,0 +1,64 @@
+/*
+ * Copyright © 2010 INRIA
+ * See COPYING in top-level directory.
+ */
+
+#include <stdio.h>
+#include <assert.h>
+#include <cuda.h>
+#include <private/config.h>
+#include <hwloc.h>
+#include <hwloc/cuda.h>
+
+/* check the CUDA Driver API helpers */
+
+int main(void)
+{
+ hwloc_topology_t topology;
+ CUresult cres;
+ CUdevice device;
+ int count, i;
+ int err;
+
+ cres = cuInit(0);
+ if (cres != CUDA_SUCCESS) {
+ printf("cuInit failed %d\n", cres);
+ return 0;
+ }
+
+ cres = cuDeviceGetCount(&count);
+ if (cres != CUDA_SUCCESS) {
+ printf("cuDeviceGetCount failed %d\n", cres);
+ return 0;
+ }
+ printf("cuDeviceGetCount found %d devices\n", count);
+
+ hwloc_topology_init(&topology);
+ hwloc_topology_load(topology);
+
+ for(i=0; i<count; i++) {
+ hwloc_bitmap_t set;
+
+ cres = cuDeviceGet(&device, i);
+ if (cres != CUDA_SUCCESS) {
+ printf("failed to get device %d\n", i);
+ continue;
+ }
+
+ set = hwloc_bitmap_alloc();
+ err = hwloc_cuda_get_device_cpuset(topology, device, set);
+ if (err < 0) {
+ printf("failed to get cpuset for device %d\n", i);
+ } else {
+ char *cpuset_string = NULL;
+ hwloc_bitmap_asprintf(&cpuset_string, set);
+ printf("got cpuset %s for device %d\n", cpuset_string, i);
+ free(cpuset_string);
+ }
+ hwloc_bitmap_free(set);
+ }
+
+ hwloc_topology_destroy(topology);
+
+ return 0;
+}
Added: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/cudart.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/cudart.c (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/cudart.c 2010-11-24 09:21:55 UTC (rev 7494)
@@ -0,0 +1,51 @@
+/*
+ * Copyright © 2010 INRIA
+ * See COPYING in top-level directory.
+ */
+
+#include <stdio.h>
+#include <assert.h>
+#include <cuda_runtime_api.h>
+#include <private/config.h>
+#include <hwloc.h>
+#include <hwloc/cudart.h>
+
+/* check the CUDA Runtime API helpers */
+
+int main(void)
+{
+ hwloc_topology_t topology;
+ cudaError_t cerr;
+ int count, i;
+ int err;
+
+ cerr = cudaGetDeviceCount(&count);
+ if (cerr) {
+ printf("cudaGetDeviceCount failed %d\n", cerr);
+ return -1;
+ }
+ printf("cudaGetDeviceCount found %d devices\n", count);
+
+ hwloc_topology_init(&topology);
+ hwloc_topology_load(topology);
+
+ for(i=0; i<count; i++) {
+ hwloc_bitmap_t set;
+
+ set = hwloc_bitmap_alloc();
+ err = hwloc_cudart_get_device_cpuset(topology, i, set);
+ if (err < 0) {
+ printf("failed to get cpuset for device %d\n", i);
+ } else {
+ char *cpuset_string = NULL;
+ hwloc_bitmap_asprintf(&cpuset_string, set);
+ printf("got cpuset %s for device %d\n", cpuset_string, i);
+ free(cpuset_string);
+ }
+ hwloc_bitmap_free(set);
+ }
+
+ hwloc_topology_destroy(topology);
+
+ return 0;
+}
Modified: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/embedded/do_test.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/embedded/do_test.c 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/embedded/do_test.c 2010-11-24 09:21:55 UTC (rev 7494)
@@ -9,12 +9,12 @@
{
mytest_hwloc_topology_t topology;
unsigned depth;
- hwloc_cpuset_t cpu_set;
+ hwloc_bitmap_t cpu_set;
/* Just call a bunch of functions to see if we can link and run */
- printf("*** Test 1: cpuset alloc\n");
- cpu_set = mytest_hwloc_cpuset_alloc();
+ printf("*** Test 1: bitmap alloc\n");
+ cpu_set = mytest_hwloc_bitmap_alloc();
if (NULL == cpu_set) return 1;
printf("*** Test 2: topology init\n");
if (0 != mytest_hwloc_topology_init(&topology)) return 1;
@@ -26,8 +26,8 @@
printf(" Max depth: %u\n", depth);
printf("*** Test 5: topology destroy\n");
mytest_hwloc_topology_destroy(topology);
- printf("*** Test 6: cpuset free\n");
- mytest_hwloc_cpuset_free(cpu_set);
+ printf("*** Test 6: bitmap free\n");
+ mytest_hwloc_bitmap_free(cpu_set);
return 0;
}
Modified: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/embedded/main.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/embedded/main.c 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/embedded/main.c 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,5 +1,7 @@
/*
- * Copyright © 2009 CNRS, INRIA, Université Bordeaux 1
+ * Copyright © 2009 CNRS
+ * Copyright © 2009 INRIA
+ * Copyright © 2009 Université Bordeaux 1
* Copyright © 2009 Cisco Systems, Inc. All rights reserved.
* See COPYING in top-level directory.
*/
Modified: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/embedded/run-embedded-tests.sh
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/embedded/run-embedded-tests.sh 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/embedded/run-embedded-tests.sh 2010-11-24 09:21:55 UTC (rev 7494)
@@ -41,6 +41,8 @@
#---------------------------------------------------------------------
+# $1 = announcement banner
+# $2 = path to configure script
do_build() {
print Running $1 configure...
try $2/configure 2>&1 | tee config.out
Modified: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/glibc-sched.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/glibc-sched.c 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/glibc-sched.c 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,5 +1,7 @@
/*
- * Copyright © 2009 CNRS, INRIA, Université Bordeaux 1
+ * Copyright © 2009 CNRS
+ * Copyright © 2009-2010 INRIA
+ * Copyright © 2009 Université Bordeaux 1
* Copyright © 2009 Cisco Systems, Inc. All rights reserved.
* See COPYING in top-level directory.
*/
@@ -17,7 +19,7 @@
{
hwloc_topology_t topology;
unsigned depth;
- hwloc_cpuset_t hwlocset;
+ hwloc_bitmap_t hwlocset;
cpu_set_t schedset;
hwloc_obj_t obj;
int err;
@@ -26,7 +28,7 @@
hwloc_topology_load(topology);
depth = hwloc_topology_get_depth(topology);
- hwlocset = hwloc_cpuset_dup(hwloc_topology_get_complete_cpuset(topology));
+ hwlocset = hwloc_bitmap_dup(hwloc_topology_get_complete_cpuset(topology));
hwloc_cpuset_to_glibc_sched_affinity(topology, hwlocset, &schedset, sizeof(schedset));
#ifdef HWLOC_HAVE_OLD_SCHED_SETAFFINITY
err = sched_setaffinity(0, sizeof(schedset));
@@ -34,7 +36,7 @@
err = sched_setaffinity(0, sizeof(schedset), &schedset);
#endif
assert(!err);
- hwloc_cpuset_free(hwlocset);
+ hwloc_bitmap_free(hwlocset);
#ifdef HWLOC_HAVE_OLD_SCHED_SETAFFINITY
err = sched_getaffinity(0, sizeof(schedset));
@@ -42,19 +44,19 @@
err = sched_getaffinity(0, sizeof(schedset), &schedset);
#endif
assert(!err);
- hwlocset = hwloc_cpuset_alloc();
+ hwlocset = hwloc_bitmap_alloc();
hwloc_cpuset_from_glibc_sched_affinity(topology, hwlocset, &schedset, sizeof(schedset));
- assert(hwloc_cpuset_isincluded(hwlocset, hwloc_topology_get_complete_cpuset(topology)));
- hwloc_cpuset_andnot(hwlocset, hwlocset, hwloc_topology_get_online_cpuset(topology));
- hwloc_cpuset_andnot(hwlocset, hwlocset, hwloc_topology_get_allowed_cpuset(topology));
- assert(hwloc_cpuset_iszero(hwlocset));
- hwloc_cpuset_free(hwlocset);
+ assert(hwloc_bitmap_isincluded(hwlocset, hwloc_topology_get_complete_cpuset(topology)));
+ hwloc_bitmap_andnot(hwlocset, hwlocset, hwloc_topology_get_online_cpuset(topology));
+ hwloc_bitmap_andnot(hwlocset, hwlocset, hwloc_topology_get_allowed_cpuset(topology));
+ assert(hwloc_bitmap_iszero(hwlocset));
+ hwloc_bitmap_free(hwlocset);
obj = hwloc_get_obj_by_depth(topology, depth-1, hwloc_get_nbobjs_by_depth(topology, depth-1) - 1);
assert(obj);
assert(obj->type == HWLOC_OBJ_PU);
- hwlocset = hwloc_cpuset_dup(obj->cpuset);
+ hwlocset = hwloc_bitmap_dup(obj->cpuset);
hwloc_cpuset_to_glibc_sched_affinity(topology, hwlocset, &schedset, sizeof(schedset));
#ifdef HWLOC_HAVE_OLD_SCHED_SETAFFINITY
err = sched_setaffinity(0, sizeof(schedset));
@@ -62,7 +64,7 @@
err = sched_setaffinity(0, sizeof(schedset), &schedset);
#endif
assert(!err);
- hwloc_cpuset_free(hwlocset);
+ hwloc_bitmap_free(hwlocset);
#ifdef HWLOC_HAVE_OLD_SCHED_SETAFFINITY
err = sched_getaffinity(0, sizeof(schedset));
@@ -70,10 +72,10 @@
err = sched_getaffinity(0, sizeof(schedset), &schedset);
#endif
assert(!err);
- hwlocset = hwloc_cpuset_alloc();
+ hwlocset = hwloc_bitmap_alloc();
hwloc_cpuset_from_glibc_sched_affinity(topology, hwlocset, &schedset, sizeof(schedset));
- assert(hwloc_cpuset_isequal(hwlocset, obj->cpuset));
- hwloc_cpuset_free(hwlocset);
+ assert(hwloc_bitmap_isequal(hwlocset, obj->cpuset));
+ hwloc_bitmap_free(hwlocset);
hwloc_topology_destroy(topology);
return 0;
Modified: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/hwloc_bind.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/hwloc_bind.c 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/hwloc_bind.c 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,5 +1,7 @@
/*
- * Copyright © 2009 CNRS, INRIA, Université Bordeaux 1
+ * Copyright © 2009 CNRS
+ * Copyright © 2009-2010 INRIA
+ * Copyright © 2009-2010 Université Bordeaux 1
* See COPYING in top-level directory.
*/
@@ -24,24 +26,24 @@
printf("%-40s: OK%s\n", msg, supported ? "" : " (unexpected)");
}
-static void result_get(const char *msg, hwloc_const_cpuset_t expected, hwloc_const_cpuset_t result, int err, int supported)
+static void result_get(const char *msg, hwloc_const_bitmap_t expected, hwloc_const_bitmap_t result, int err, int supported)
{
const char *errmsg = strerror(errno);
if (err)
printf("%-40s: FAILED (%d, %s)%s\n", msg, errno, errmsg, supported ? "" : " (expected)");
- else if (hwloc_cpuset_isequal(expected, result))
+ else if (!expected || hwloc_bitmap_isequal(expected, result))
printf("%-40s: OK%s\n", msg, supported ? "" : " (unexpected)");
else {
char *expected_s, *result_s;
- hwloc_cpuset_asprintf(&expected_s, expected);
- hwloc_cpuset_asprintf(&result_s, result);
+ hwloc_bitmap_asprintf(&expected_s, expected);
+ hwloc_bitmap_asprintf(&result_s, result);
printf("%-40s: expected %s, got %s\n", msg, expected_s, result_s);
}
}
-static void test(hwloc_const_cpuset_t cpuset, int flags)
+static void test(hwloc_const_bitmap_t cpuset, int flags)
{
- hwloc_cpuset_t new_cpuset = hwloc_cpuset_alloc();
+ hwloc_bitmap_t new_cpuset = hwloc_bitmap_alloc();
result_set("Bind this singlethreaded process", hwloc_set_cpubind(topology, cpuset, flags), support->cpubind->set_thisproc_cpubind || support->cpubind->set_thisthread_cpubind);
result_get("Get this singlethreaded process", cpuset, new_cpuset, hwloc_get_cpubind(topology, new_cpuset, flags), support->cpubind->get_thisproc_cpubind || support->cpubind->get_thisthread_cpubind);
result_set("Bind this thread", hwloc_set_cpubind(topology, cpuset, flags | HWLOC_CPUBIND_THREAD), support->cpubind->set_thisthread_cpubind);
@@ -65,12 +67,72 @@
#endif
#endif /* !HWLOC_WIN_SYS */
printf("\n");
- hwloc_cpuset_free(new_cpuset);
+ hwloc_bitmap_free(new_cpuset);
}
+static void testmem(hwloc_const_bitmap_t nodeset, hwloc_membind_policy_t policy, int flags, int expected)
+{
+ hwloc_bitmap_t new_nodeset = hwloc_bitmap_alloc();
+ hwloc_membind_policy_t newpolicy;
+ void *area;
+ size_t area_size = 1024;
+ result_set("Bind this singlethreaded process memory", hwloc_set_membind(topology, nodeset, policy, flags), (support->membind->set_thisproc_membind || support->membind->set_thisthread_membind) && expected);
+ result_get("Get this singlethreaded process memory", nodeset, new_nodeset, hwloc_get_membind(topology, new_nodeset, &newpolicy, flags), (support->membind->get_thisproc_membind || support->membind->get_thisthread_membind) && expected);
+ result_set("Bind this thread memory", hwloc_set_membind(topology, nodeset, policy, flags | HWLOC_MEMBIND_THREAD), support->membind->set_thisproc_membind && expected);
+ result_get("Get this thread memory", nodeset, new_nodeset, hwloc_get_membind(topology, new_nodeset, &newpolicy, flags | HWLOC_MEMBIND_THREAD), support->membind->get_thisproc_membind && expected);
+ result_set("Bind this whole process memory", hwloc_set_membind(topology, nodeset, policy, flags | HWLOC_MEMBIND_PROCESS), support->membind->set_thisproc_membind && expected);
+ result_get("Get this whole process memory", nodeset, new_nodeset, hwloc_get_membind(topology, new_nodeset, &newpolicy, flags | HWLOC_MEMBIND_PROCESS), support->membind->get_thisproc_membind && expected);
+#ifdef HWLOC_WIN_SYS
+ result_set("Bind process memory", hwloc_set_proc_membind(topology, GetCurrentProcess(), nodeset, policy, flags), support->membind->set_proc_membind && expected);
+ result_get("Get process memory", nodeset, new_nodeset, hwloc_get_proc_membind(topology, GetCurrentProcess(), new_nodeset, &newpolicy, flags), support->membind->get_proc_membind && expected);
+#else /* !HWLOC_WIN_SYS */
+ result_set("Bind process memory", hwloc_set_proc_membind(topology, getpid(), nodeset, policy, flags), support->membind->set_proc_membind && expected);
+ result_get("Get process memory", nodeset, new_nodeset, hwloc_get_proc_membind(topology, getpid(), new_nodeset, &newpolicy, flags), support->membind->get_proc_membind && expected);
+#endif /* !HWLOC_WIN_SYS */
+ result_set("Bind area", hwloc_set_area_membind(topology, &new_nodeset, sizeof(new_nodeset), nodeset, policy, flags), support->membind->set_area_membind && expected);
+ result_get("Get area", nodeset, new_nodeset, hwloc_get_area_membind(topology, &new_nodeset, sizeof(new_nodeset), new_nodeset, &newpolicy, flags), support->membind->get_area_membind && expected);
+ if (!(flags & HWLOC_MEMBIND_MIGRATE)) {
+ result_set("Alloc bound area", (area = hwloc_alloc_membind(topology, area_size, nodeset, policy, flags)) == NULL, (support->membind->alloc_membind && expected) || !(flags & HWLOC_MEMBIND_STRICT));
+ if (area) {
+ memset(area, 0, area_size);
+ result_get("Get bound area", nodeset, new_nodeset, hwloc_get_area_membind(topology, area, area_size, new_nodeset, &newpolicy, flags), support->membind->get_area_membind && expected);
+ result_get("Free bound area", NULL, NULL, hwloc_free_membind(topology, area, area_size), support->membind->alloc_membind && expected);
+ }
+ }
+ printf("\n");
+ hwloc_bitmap_free(new_nodeset);
+}
+
+static void testmem2(hwloc_const_bitmap_t set, int flags)
+{
+ printf(" default\n");
+ testmem(set, HWLOC_MEMBIND_DEFAULT, flags, 1);
+ printf(" firsttouch\n");
+ testmem(set, HWLOC_MEMBIND_FIRSTTOUCH, flags, support->membind->firsttouch_membind);
+ printf(" bound\n");
+ testmem(set, HWLOC_MEMBIND_BIND, flags, support->membind->bind_membind);
+ printf(" interleave\n");
+ testmem(set, HWLOC_MEMBIND_INTERLEAVE, flags, support->membind->interleave_membind);
+ printf(" replicate\n");
+ testmem(set, HWLOC_MEMBIND_REPLICATE, flags, support->membind->replicate_membind);
+ printf(" nexttouch\n");
+ testmem(set, HWLOC_MEMBIND_NEXTTOUCH, flags, support->membind->nexttouch_membind);
+}
+
+static void testmem3(hwloc_const_bitmap_t set)
+{
+ testmem2(set, 0);
+ printf("now strict\n\n");
+ testmem2(set, HWLOC_MEMBIND_STRICT);
+ printf("now migrate\n\n");
+ testmem2(set, HWLOC_MEMBIND_MIGRATE);
+ printf("now strictly migrate\n\n");
+ testmem2(set, HWLOC_MEMBIND_STRICT | HWLOC_MEMBIND_MIGRATE);
+}
+
int main(void)
{
- hwloc_cpuset_t set;
+ hwloc_bitmap_t set;
hwloc_obj_t obj;
char *str = NULL;
@@ -80,45 +142,72 @@
support = hwloc_topology_get_support(topology);
obj = hwloc_get_root_obj(topology);
- set = hwloc_cpuset_dup(obj->cpuset);
+ set = hwloc_bitmap_dup(obj->cpuset);
- while (hwloc_cpuset_isequal(obj->cpuset, set)) {
+ while (hwloc_bitmap_isequal(obj->cpuset, set)) {
if (!obj->arity)
break;
obj = obj->children[0];
}
- hwloc_cpuset_asprintf(&str, set);
+ hwloc_bitmap_asprintf(&str, set);
printf("system set is %s\n", str);
free(str);
test(set, 0);
-
printf("now strict\n");
test(set, HWLOC_CPUBIND_STRICT);
- hwloc_cpuset_free(set);
- set = hwloc_cpuset_dup(obj->cpuset);
- hwloc_cpuset_asprintf(&str, set);
+ hwloc_bitmap_free(set);
+ set = hwloc_bitmap_dup(obj->cpuset);
+ hwloc_bitmap_asprintf(&str, set);
printf("obj set is %s\n", str);
free(str);
test(set, 0);
-
printf("now strict\n");
test(set, HWLOC_CPUBIND_STRICT);
- hwloc_cpuset_singlify(set);
- hwloc_cpuset_asprintf(&str, set);
+ hwloc_bitmap_singlify(set);
+ hwloc_bitmap_asprintf(&str, set);
printf("singlified to %s\n", str);
free(str);
test(set, 0);
-
printf("now strict\n");
test(set, HWLOC_CPUBIND_STRICT);
+ hwloc_bitmap_free(set);
- hwloc_cpuset_free(set);
+ printf("\n\nmemory tests\n\n");
+ printf("complete node set\n");
+ set = hwloc_bitmap_dup(hwloc_get_root_obj(topology)->cpuset);
+ hwloc_bitmap_asprintf(&str, set);
+ printf("i.e. cpuset %s\n", str);
+ free(str);
+ testmem3(set);
+ hwloc_bitmap_free(set);
+
+ obj = hwloc_get_obj_by_type(topology, HWLOC_OBJ_NODE, 0);
+ if (obj) {
+ set = hwloc_bitmap_dup(obj->cpuset);
+ hwloc_bitmap_asprintf(&str, set);
+ printf("cpuset set is %s\n", str);
+ free(str);
+
+ testmem3(set);
+
+ obj = hwloc_get_obj_by_type(topology, HWLOC_OBJ_NODE, 1);
+ if (obj) {
+ hwloc_bitmap_or(set, set, obj->cpuset);
+ hwloc_bitmap_asprintf(&str, set);
+ printf("cpuset set is %s\n", str);
+ free(str);
+
+ testmem3(set);
+ }
+ hwloc_bitmap_free(set);
+ }
+
hwloc_topology_destroy(topology);
return 0;
}
Added: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/hwloc_bitmap_first_last_weight.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/hwloc_bitmap_first_last_weight.c (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/hwloc_bitmap_first_last_weight.c 2010-11-24 09:21:55 UTC (rev 7494)
@@ -0,0 +1,82 @@
+/*
+ * Copyright © 2009 CNRS
+ * Copyright © 2009-2010 INRIA
+ * Copyright © 2009 Université Bordeaux 1
+ * See COPYING in top-level directory.
+ */
+
+#include <private/config.h>
+#include <hwloc.h>
+
+#include <assert.h>
+
+/* check hwloc_bitmap_first(), _last(), _next() and _weight() */
+
+int main(void)
+{
+ hwloc_bitmap_t set;
+ int i, cpu, expected_cpu = 0;
+
+ /* empty set */
+ set = hwloc_bitmap_alloc();
+ assert(hwloc_bitmap_first(set) == -1);
+ assert(hwloc_bitmap_last(set) == -1);
+ assert(hwloc_bitmap_next(set, 0) == -1);
+ assert(hwloc_bitmap_weight(set) == 0);
+
+ /* full set */
+ hwloc_bitmap_fill(set);
+ assert(hwloc_bitmap_first(set) == 0);
+ assert(hwloc_bitmap_last(set) == -1);
+ assert(hwloc_bitmap_next(set, 0) == 1);
+ assert(hwloc_bitmap_next(set, 1) == 2);
+ assert(hwloc_bitmap_next(set, 2) == 3);
+ assert(hwloc_bitmap_next(set, 30) == 31);
+ assert(hwloc_bitmap_next(set, 31) == 32);
+ assert(hwloc_bitmap_next(set, 32) == 33);
+ assert(hwloc_bitmap_next(set, 62) == 63);
+ assert(hwloc_bitmap_next(set, 63) == 64);
+ assert(hwloc_bitmap_next(set, 64) == 65);
+ assert(hwloc_bitmap_next(set, 12345) == 12346);
+ assert(hwloc_bitmap_weight(set) == -1);
+
+ /* custom sets */
+ hwloc_bitmap_zero(set);
+ hwloc_bitmap_set_range(set, 36, 59);
+ assert(hwloc_bitmap_first(set) == 36);
+ assert(hwloc_bitmap_last(set) == 59);
+ assert(hwloc_bitmap_next(set, 0) == 36);
+ assert(hwloc_bitmap_next(set, 36) == 37);
+ assert(hwloc_bitmap_next(set, 59) == -1);
+ assert(hwloc_bitmap_weight(set) == 24);
+ hwloc_bitmap_set_range(set, 136, 259);
+ assert(hwloc_bitmap_first(set) == 36);
+ assert(hwloc_bitmap_last(set) == 259);
+ assert(hwloc_bitmap_next(set, 59) == 136);
+ assert(hwloc_bitmap_next(set, 259) == -1);
+ assert(hwloc_bitmap_weight(set) == 148);
+ hwloc_bitmap_clr(set, 199);
+ assert(hwloc_bitmap_first(set) == 36);
+ assert(hwloc_bitmap_last(set) == 259);
+ assert(hwloc_bitmap_next(set, 198) == 200);
+ assert(hwloc_bitmap_next(set, 199) == 200);
+ assert(hwloc_bitmap_weight(set) == 147);
+
+ i = 0;
+ hwloc_bitmap_foreach_begin(cpu, set) {
+ if (0 <= i && i < 24)
+ expected_cpu = i + 36;
+ else if (24 <= i && i < 87)
+ expected_cpu = i + 112;
+ else if (87 <= i && i < 147)
+ expected_cpu = i + 113;
+
+ assert(expected_cpu == cpu);
+
+ i++;
+ } hwloc_bitmap_foreach_end();
+
+ hwloc_bitmap_free(set);
+
+ return 0;
+}
Added: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/hwloc_bitmap_singlify.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/hwloc_bitmap_singlify.c (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/hwloc_bitmap_singlify.c 2010-11-24 09:21:55 UTC (rev 7494)
@@ -0,0 +1,53 @@
+/*
+ * Copyright © 2009 CNRS
+ * Copyright © 2009-2010 INRIA
+ * Copyright © 2009 Université Bordeaux 1
+ * Copyright © 2009 Cisco Systems, Inc. All rights reserved.
+ * See COPYING in top-level directory.
+ */
+
+#include <private/config.h>
+#include <hwloc.h>
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <assert.h>
+
+/* check hwloc_bitmap_singlify() */
+
+int main(void)
+{
+ hwloc_bitmap_t orig, expected;
+
+ orig = hwloc_bitmap_alloc();
+ expected = hwloc_bitmap_alloc();
+
+ /* empty set gives empty set */
+ hwloc_bitmap_singlify(orig);
+ assert(hwloc_bitmap_iszero(orig));
+
+ /* full set gives first bit only */
+ hwloc_bitmap_fill(orig);
+ hwloc_bitmap_singlify(orig);
+ hwloc_bitmap_zero(expected);
+ hwloc_bitmap_set(expected, 0);
+ assert(hwloc_bitmap_isequal(orig, expected));
+ assert(!hwloc_bitmap_compare(orig, expected));
+
+ /* actual non-trivial set */
+ hwloc_bitmap_zero(orig);
+ hwloc_bitmap_set(orig, 45);
+ hwloc_bitmap_set(orig, 46);
+ hwloc_bitmap_set(orig, 517);
+ hwloc_bitmap_singlify(orig);
+ hwloc_bitmap_zero(expected);
+ hwloc_bitmap_set(expected, 45);
+ assert(hwloc_bitmap_isequal(orig, expected));
+ assert(!hwloc_bitmap_compare(orig, expected));
+
+ hwloc_bitmap_free(orig);
+ hwloc_bitmap_free(expected);
+
+ return 0;
+}
Copied: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/hwloc_bitmap_string.c (from rev 7493, mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/hwloc_cpuset_string.c)
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/hwloc_bitmap_string.c (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/hwloc_bitmap_string.c 2010-11-24 09:21:55 UTC (rev 7494)
@@ -0,0 +1,154 @@
+/*
+ * Copyright © 2009 CNRS
+ * Copyright © 2009-2010 INRIA
+ * Copyright © 2009 Université Bordeaux 1
+ * See COPYING in top-level directory.
+ */
+
+#include <private/config.h>
+#include <hwloc.h>
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <assert.h>
+
+/* check hwloc_bitmap_asprintf(), hwloc_obj_cpuset_snprintf() and hwloc_bitmap_sscanf() */
+
+int main(void)
+{
+ hwloc_topology_t topology;
+ unsigned depth;
+ char *string = NULL;
+ int stringlen, len;
+ hwloc_obj_t obj;
+ hwloc_bitmap_t set, set2;
+
+ /* check an empty cpuset */
+ set = hwloc_bitmap_alloc();
+ hwloc_bitmap_asprintf(&string, set);
+ set2 = hwloc_bitmap_alloc();
+ hwloc_bitmap_sscanf(set2, string);
+ free(string);
+ assert(hwloc_bitmap_isequal(set, set2));
+ hwloc_bitmap_free(set);
+ hwloc_bitmap_free(set2);
+
+ /* check an infinite cpuset */
+ set = hwloc_bitmap_alloc_full();
+ hwloc_bitmap_clr(set, 173);
+ hwloc_bitmap_clr_range(set, 60, 70);
+ hwloc_bitmap_asprintf(&string, set);
+ set2 = hwloc_bitmap_alloc();
+ hwloc_bitmap_sscanf(set2, string);
+ free(string);
+ assert(hwloc_bitmap_isequal(set, set2));
+ hwloc_bitmap_free(set);
+ hwloc_bitmap_free(set2);
+
+ hwloc_topology_init(&topology);
+ hwloc_topology_set_synthetic(topology, "6 5 4 3 2");
+ hwloc_topology_load(topology);
+ depth = hwloc_topology_get_depth(topology);
+
+ obj = hwloc_get_root_obj(topology);
+ stringlen = hwloc_bitmap_asprintf(&string, obj->cpuset);
+ printf("system cpuset is %s\n", string);
+ set = hwloc_bitmap_alloc();
+ hwloc_bitmap_sscanf(set, string);
+ assert(hwloc_bitmap_isequal(set, obj->cpuset));
+ hwloc_bitmap_free(set);
+ printf("system cpuset converted back and forth, ok\n");
+
+ printf("truncating system cpuset to NULL buffer\n");
+ len = hwloc_obj_cpuset_snprintf(NULL, 0, 1, &obj);
+ assert(len == stringlen);
+
+ printf("truncating system cpuset to 0 char (no modification)\n");
+ memset(string, 'X', 1);
+ string[1] = 0;
+ len = hwloc_obj_cpuset_snprintf(string, 0, 1, &obj);
+ assert(len == stringlen);
+ assert(string[0] == 'X');
+
+ printf("truncating system cpuset to 1 char (empty string)\n");
+ memset(string, 'X', 2);
+ string[2] = 0;
+ len = hwloc_obj_cpuset_snprintf(string, 1, 1, &obj);
+ printf("got %s\n", string);
+ assert(len == stringlen);
+ assert(string[0] == 0);
+ assert(string[1] == 'X');
+
+ printf("truncating system cpuset to 10 chars (single 32bit subset except last char)\n");
+ memset(string, 'X', 11);
+ string[11] = 0;
+ len = hwloc_obj_cpuset_snprintf(string, 10, 1, &obj);
+ printf("got %s\n", string);
+ assert(len == stringlen);
+ assert(string[8] == 'f');
+ assert(string[9] == 0);
+ assert(string[10] == 'X');
+
+ printf("truncating system cpuset to 11 chars (single 32bit subset)\n");
+ memset(string, 'X', 12);
+ string[12] = 0;
+ len = hwloc_obj_cpuset_snprintf(string, 11, 1, &obj);
+ printf("got %s\n", string);
+ assert(len == stringlen);
+ assert(string[9] == 'f');
+ assert(string[10] == 0);
+ assert(string[11] == 'X');
+
+ printf("truncating system cpuset to 23 chars (two 32bit subsets with ending comma)\n");
+ memset(string, 'X', 24);
+ string[24] = 0;
+ len = hwloc_obj_cpuset_snprintf(string, 23, 1, &obj);
+ printf("got %s\n", string);
+ assert(len == stringlen);
+ assert(string[20] == 'f');
+ assert(string[21] == ',');
+ assert(string[22] == 0);
+ assert(string[23] == 'X');
+
+ printf("truncating system cpuset to 51 chars (truncate to four and a half 32bit subsets)\n");
+ memset(string, 'X', 52);
+ string[52] = 0;
+ len = hwloc_obj_cpuset_snprintf(string, 51, 1, &obj);
+ printf("got %s\n", string);
+ assert(len == stringlen);
+ assert(string[49] == 'f');
+ assert(string[50] == 0);
+ assert(string[51] == 'X');
+
+ obj = hwloc_get_obj_by_depth(topology, depth-1, 0);
+ hwloc_obj_cpuset_snprintf(string, stringlen+1, 1, &obj);
+ printf("first cpu cpuset is %s\n", string);
+ set = hwloc_bitmap_alloc();
+ hwloc_bitmap_sscanf(set, string);
+ assert(hwloc_bitmap_isequal(set, obj->cpuset));
+ hwloc_bitmap_free(set);
+ printf("first cpu cpuset converted back and forth, ok\n");
+
+ obj = hwloc_get_obj_by_depth(topology, depth-1, hwloc_get_nbobjs_by_depth(topology, depth-1) - 1);
+ hwloc_obj_cpuset_snprintf(string, stringlen+1, 1, &obj);
+ printf("last cpu cpuset is %s\n", string);
+ set = hwloc_bitmap_alloc();
+ hwloc_bitmap_sscanf(set, string);
+ assert(hwloc_bitmap_isequal(set, obj->cpuset));
+ hwloc_bitmap_free(set);
+ printf("last cpu cpuset converted back and forth, ok\n");
+
+// hwloc_bitmap_sscanf(set, "1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,4,8,10,20\n");
+// char *s;
+// hwloc_bitmap_asprintf(&s, &set);
+// printf("%s\n", s);
+// free(s);
+// will be truncated after ",4," since it's too large
+
+ free(string);
+
+ hwloc_topology_destroy(topology);
+
+ return 0;
+}
Deleted: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/hwloc_cpuset_first_last_weight.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/hwloc_cpuset_first_last_weight.c 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/hwloc_cpuset_first_last_weight.c 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,82 +0,0 @@
-/*
- * Copyright © 2009 CNRS, INRIA, Université Bordeaux 1
- * See COPYING in top-level directory.
- */
-
-#include <private/config.h>
-#include <hwloc.h>
-
-#include <assert.h>
-
-/* check hwloc_cpuset_first(), _last(), _next() and _weight() */
-
-int main(void)
-{
- hwloc_cpuset_t set;
- int i, cpu, expected_cpu;
-
- /* empty set */
- set = hwloc_cpuset_alloc();
- assert(hwloc_cpuset_first(set) == -1);
- assert(hwloc_cpuset_last(set) == -1);
- assert(hwloc_cpuset_next(set, 0) == -1);
- assert(hwloc_cpuset_weight(set) == 0);
-
- /* full set */
- hwloc_cpuset_fill(set);
- assert(hwloc_cpuset_first(set) == 0);
- assert(hwloc_cpuset_last(set) == HWLOC_NBMAXCPUS-1);
- assert(hwloc_cpuset_next(set, 0) == 1);
- assert(hwloc_cpuset_next(set, 1) == 2);
- assert(hwloc_cpuset_next(set, 2) == 3);
- assert(hwloc_cpuset_next(set, 30) == 31);
- assert(hwloc_cpuset_next(set, 31) == 32);
- assert(hwloc_cpuset_next(set, 32) == 33);
- assert(hwloc_cpuset_next(set, 62) == 63);
- assert(hwloc_cpuset_next(set, 63) == 64);
- assert(hwloc_cpuset_next(set, 64) == 65);
- assert(hwloc_cpuset_next(set, HWLOC_NBMAXCPUS-3) == HWLOC_NBMAXCPUS-2);
- assert(hwloc_cpuset_next(set, HWLOC_NBMAXCPUS-2) == HWLOC_NBMAXCPUS-1);
- assert(hwloc_cpuset_next(set, HWLOC_NBMAXCPUS-1) == -1);
- assert(hwloc_cpuset_weight(set) == HWLOC_NBMAXCPUS);
-
- /* custom sets */
- hwloc_cpuset_zero(set);
- hwloc_cpuset_set_range(set, 36, 59);
- assert(hwloc_cpuset_first(set) == 36);
- assert(hwloc_cpuset_last(set) == 59);
- assert(hwloc_cpuset_next(set, 0) == 36);
- assert(hwloc_cpuset_next(set, 36) == 37);
- assert(hwloc_cpuset_next(set, 59) == -1);
- assert(hwloc_cpuset_weight(set) == 24);
- hwloc_cpuset_set_range(set, 136, 259);
- assert(hwloc_cpuset_first(set) == 36);
- assert(hwloc_cpuset_last(set) == 259);
- assert(hwloc_cpuset_next(set, 59) == 136);
- assert(hwloc_cpuset_next(set, 259) == -1);
- assert(hwloc_cpuset_weight(set) == 148);
- hwloc_cpuset_clr(set, 199);
- assert(hwloc_cpuset_first(set) == 36);
- assert(hwloc_cpuset_last(set) == 259);
- assert(hwloc_cpuset_next(set, 198) == 200);
- assert(hwloc_cpuset_next(set, 199) == 200);
- assert(hwloc_cpuset_weight(set) == 147);
-
- i = 0;
- hwloc_cpuset_foreach_begin(cpu, set) {
- if (0 <= i && i < 24)
- expected_cpu = i + 36;
- else if (24 <= i && i < 87)
- expected_cpu = i + 112;
- else if (87 <= i && i < 147)
- expected_cpu = i + 113;
-
- assert(expected_cpu == cpu);
-
- i++;
- } hwloc_cpuset_foreach_end();
-
- hwloc_cpuset_free(set);
-
- return 0;
-}
Deleted: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/hwloc_cpuset_singlify.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/hwloc_cpuset_singlify.c 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/hwloc_cpuset_singlify.c 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,49 +0,0 @@
-/*
- * Copyright © 2009 CNRS, INRIA, Université Bordeaux 1
- * Copyright © 2009 Cisco Systems, Inc. All rights reserved.
- * See COPYING in top-level directory.
- */
-
-#include <private/config.h>
-#include <hwloc.h>
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <assert.h>
-
-/* check hwloc_cpuset_singlify() */
-
-int main(void)
-{
- hwloc_cpuset_t orig, expected;
-
- orig = hwloc_cpuset_alloc();
- expected = hwloc_cpuset_alloc();
-
- /* empty set gives empty set */
- hwloc_cpuset_singlify(orig);
- assert(hwloc_cpuset_iszero(orig));
-
- /* full set gives first bit only */
- hwloc_cpuset_fill(orig);
- hwloc_cpuset_singlify(orig);
- hwloc_cpuset_zero(expected);
- hwloc_cpuset_set(expected, 0);
- assert(!hwloc_cpuset_compare(orig, expected));
-
- /* actual non-trivial set */
- hwloc_cpuset_zero(orig);
- hwloc_cpuset_set(orig, 45);
- hwloc_cpuset_set(orig, 46);
- hwloc_cpuset_set(orig, 517);
- hwloc_cpuset_singlify(orig);
- hwloc_cpuset_zero(expected);
- hwloc_cpuset_set(expected, 45);
- assert(!hwloc_cpuset_compare(orig, expected));
-
- hwloc_cpuset_free(orig);
- hwloc_cpuset_free(expected);
-
- return 0;
-}
Deleted: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/hwloc_cpuset_string.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/hwloc_cpuset_string.c 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/hwloc_cpuset_string.c 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,129 +0,0 @@
-/*
- * Copyright © 2009 CNRS, INRIA, Université Bordeaux 1
- * See COPYING in top-level directory.
- */
-
-#include <private/config.h>
-#include <hwloc.h>
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <assert.h>
-
-/* check hwloc_cpuset_asprintf(), hwloc_obj_cpuset_snprintf() and hwloc_cpuset_from_string() */
-
-int main(void)
-{
- hwloc_topology_t topology;
- unsigned depth;
- char *string = NULL;
- int stringlen, len;
- hwloc_obj_t obj;
- hwloc_cpuset_t set;
-
- hwloc_topology_init(&topology);
- hwloc_topology_set_synthetic(topology, "6 5 4 3 2");
- hwloc_topology_load(topology);
- depth = hwloc_topology_get_depth(topology);
-
- obj = hwloc_get_root_obj(topology);
- stringlen = hwloc_cpuset_asprintf(&string, obj->cpuset);
- printf("system cpuset is %s\n", string);
- set = hwloc_cpuset_alloc();
- hwloc_cpuset_from_string(set, string);
- assert(hwloc_cpuset_isequal(set, obj->cpuset));
- hwloc_cpuset_free(set);
- printf("system cpuset converted back and forth, ok\n");
-
- printf("truncating system cpuset to NULL buffer\n");
- len = hwloc_obj_cpuset_snprintf(NULL, 0, 1, &obj);
- assert(len == stringlen);
-
- printf("truncating system cpuset to 0 char (no modification)\n");
- memset(string, 'X', 1);
- string[1] = 0;
- len = hwloc_obj_cpuset_snprintf(string, 0, 1, &obj);
- assert(len == stringlen);
- assert(string[0] == 'X');
-
- printf("truncating system cpuset to 1 char (empty string)\n");
- memset(string, 'X', 2);
- string[2] = 0;
- len = hwloc_obj_cpuset_snprintf(string, 1, 1, &obj);
- printf("got %s\n", string);
- assert(len == stringlen);
- assert(string[0] == 0);
- assert(string[1] == 'X');
-
- printf("truncating system cpuset to 10 chars (single 32bit subset except last char)\n");
- memset(string, 'X', 11);
- string[11] = 0;
- len = hwloc_obj_cpuset_snprintf(string, 10, 1, &obj);
- printf("got %s\n", string);
- assert(len == stringlen);
- assert(string[8] == 'f');
- assert(string[9] == 0);
- assert(string[10] == 'X');
-
- printf("truncating system cpuset to 11 chars (single 32bit subset)\n");
- memset(string, 'X', 12);
- string[12] = 0;
- len = hwloc_obj_cpuset_snprintf(string, 11, 1, &obj);
- printf("got %s\n", string);
- assert(len == stringlen);
- assert(string[9] == 'f');
- assert(string[10] == 0);
- assert(string[11] == 'X');
-
- printf("truncating system cpuset to 23 chars (two 32bit subsets with ending comma)\n");
- memset(string, 'X', 24);
- string[24] = 0;
- len = hwloc_obj_cpuset_snprintf(string, 23, 1, &obj);
- printf("got %s\n", string);
- assert(len == stringlen);
- assert(string[20] == 'f');
- assert(string[21] == ',');
- assert(string[22] == 0);
- assert(string[23] == 'X');
-
- printf("truncating system cpuset to 51 chars (truncate to four and a half 32bit subsets)\n");
- memset(string, 'X', 52);
- string[52] = 0;
- len = hwloc_obj_cpuset_snprintf(string, 51, 1, &obj);
- printf("got %s\n", string);
- assert(len == stringlen);
- assert(string[49] == 'f');
- assert(string[50] == 0);
- assert(string[51] == 'X');
-
- obj = hwloc_get_obj_by_depth(topology, depth-1, 0);
- hwloc_obj_cpuset_snprintf(string, stringlen+1, 1, &obj);
- printf("first cpu cpuset is %s\n", string);
- set = hwloc_cpuset_alloc();
- hwloc_cpuset_from_string(set, string);
- assert(hwloc_cpuset_isequal(set, obj->cpuset));
- hwloc_cpuset_free(set);
- printf("first cpu cpuset converted back and forth, ok\n");
-
- obj = hwloc_get_obj_by_depth(topology, depth-1, hwloc_get_nbobjs_by_depth(topology, depth-1) - 1);
- hwloc_obj_cpuset_snprintf(string, stringlen+1, 1, &obj);
- printf("last cpu cpuset is %s\n", string);
- set = hwloc_cpuset_alloc();
- hwloc_cpuset_from_string(set, string);
- assert(hwloc_cpuset_isequal(set, obj->cpuset));
- hwloc_cpuset_free(set);
- printf("last cpu cpuset converted back and forth, ok\n");
-
-// hwloc_cpuset_from_string(set, "1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,4,8,10,20\n");
-// char *s = hwloc_cpuset_printf_value(&set);
-// printf("%s\n", s);
-// free(s);
-// will be truncated after ",4," since it's too large
-
- free(string);
-
- hwloc_topology_destroy(topology);
-
- return 0;
-}
Modified: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/hwloc_get_cache_covering_cpuset.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/hwloc_get_cache_covering_cpuset.c 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/hwloc_get_cache_covering_cpuset.c 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,5 +1,7 @@
/*
- * Copyright © 2009 CNRS, INRIA, Université Bordeaux 1
+ * Copyright © 2009 CNRS
+ * Copyright © 2009-2010 INRIA
+ * Copyright © 2009 Université Bordeaux 1
* See COPYING in top-level directory.
*/
@@ -19,7 +21,7 @@
{
hwloc_topology_t topology;
hwloc_obj_t obj, cache;
- hwloc_cpuset_t set;
+ hwloc_bitmap_t set;
hwloc_topology_init(&topology);
hwloc_topology_set_synthetic(topology, SYNTHETIC_TOPOLOGY_DESCRIPTION);
@@ -27,57 +29,57 @@
/* check the cache above a given cpu */
#define CPUINDEX 180
- set = hwloc_cpuset_alloc();
+ set = hwloc_bitmap_alloc();
obj = hwloc_get_obj_by_depth(topology, 5, CPUINDEX);
assert(obj);
- hwloc_cpuset_or(set, set, obj->cpuset);
+ hwloc_bitmap_or(set, set, obj->cpuset);
cache = hwloc_get_cache_covering_cpuset(topology, set);
assert(cache);
assert(cache->type == HWLOC_OBJ_CACHE);
assert(cache->logical_index == CPUINDEX/2/3);
assert(hwloc_obj_is_in_subtree(topology, obj, cache));
- hwloc_cpuset_free(set);
+ hwloc_bitmap_free(set);
/* check the cache above two nearby cpus */
#define CPUINDEX1 180
#define CPUINDEX2 183
- set = hwloc_cpuset_alloc();
+ set = hwloc_bitmap_alloc();
obj = hwloc_get_obj_by_depth(topology, 5, CPUINDEX1);
assert(obj);
- hwloc_cpuset_or(set, set, obj->cpuset);
+ hwloc_bitmap_or(set, set, obj->cpuset);
obj = hwloc_get_obj_by_depth(topology, 5, CPUINDEX2);
assert(obj);
- hwloc_cpuset_or(set, set, obj->cpuset);
+ hwloc_bitmap_or(set, set, obj->cpuset);
cache = hwloc_get_cache_covering_cpuset(topology, set);
assert(cache);
assert(cache->type == HWLOC_OBJ_CACHE);
assert(cache->logical_index == CPUINDEX1/2/3);
assert(cache->logical_index == CPUINDEX2/2/3);
assert(hwloc_obj_is_in_subtree(topology, obj, cache));
- hwloc_cpuset_free(set);
+ hwloc_bitmap_free(set);
/* check no cache above two distant cpus */
#undef CPUINDEX1
#define CPUINDEX1 300
- set = hwloc_cpuset_alloc();
+ set = hwloc_bitmap_alloc();
obj = hwloc_get_obj_by_depth(topology, 5, CPUINDEX1);
assert(obj);
- hwloc_cpuset_or(set, set, obj->cpuset);
+ hwloc_bitmap_or(set, set, obj->cpuset);
obj = hwloc_get_obj_by_depth(topology, 5, CPUINDEX2);
assert(obj);
- hwloc_cpuset_or(set, set, obj->cpuset);
+ hwloc_bitmap_or(set, set, obj->cpuset);
cache = hwloc_get_cache_covering_cpuset(topology, set);
assert(!cache);
- hwloc_cpuset_free(set);
+ hwloc_bitmap_free(set);
/* check no cache above higher level */
- set = hwloc_cpuset_alloc();
+ set = hwloc_bitmap_alloc();
obj = hwloc_get_obj_by_depth(topology, 2, 0);
assert(obj);
- hwloc_cpuset_or(set, set, obj->cpuset);
+ hwloc_bitmap_or(set, set, obj->cpuset);
cache = hwloc_get_cache_covering_cpuset(topology, set);
assert(!cache);
- hwloc_cpuset_free(set);
+ hwloc_bitmap_free(set);
hwloc_topology_destroy(topology);
Modified: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/hwloc_get_closest_objs.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/hwloc_get_closest_objs.c 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/hwloc_get_closest_objs.c 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,5 +1,7 @@
/*
- * Copyright © 2009 CNRS, INRIA, Université Bordeaux 1
+ * Copyright © 2009 CNRS
+ * Copyright © 2009-2010 INRIA
+ * Copyright © 2009-2010 Université Bordeaux 1
* See COPYING in top-level directory.
*/
Modified: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/hwloc_get_largest_objs_inside_cpuset.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/hwloc_get_largest_objs_inside_cpuset.c 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/hwloc_get_largest_objs_inside_cpuset.c 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,5 +1,7 @@
/*
- * Copyright © 2009 CNRS, INRIA, Université Bordeaux 1
+ * Copyright © 2009 CNRS
+ * Copyright © 2009-2010 INRIA
+ * Copyright © 2009 Université Bordeaux 1
* See COPYING in top-level directory.
*/
@@ -29,7 +31,7 @@
unsigned depth;
hwloc_obj_t objs[OBJ_MAX];
hwloc_obj_t obj;
- hwloc_cpuset_t set;
+ hwloc_bitmap_t set;
int ret;
hwloc_topology_init(&topology);
@@ -52,25 +54,25 @@
assert(objs[0] == obj);
/* try an empty one */
- set = hwloc_cpuset_alloc();
+ set = hwloc_bitmap_alloc();
ret = hwloc_get_largest_objs_inside_cpuset(topology, set, objs, 1);
assert(ret == 0);
objs[0] = hwloc_get_first_largest_obj_inside_cpuset(topology, set);
assert(objs[0] == NULL);
- hwloc_cpuset_free(set);
+ hwloc_bitmap_free(set);
/* try an impossible one */
- set = hwloc_cpuset_alloc();
- hwloc_cpuset_from_string(set, GIVEN_TOOLARGE_CPUSET_STRING);
+ set = hwloc_bitmap_alloc();
+ hwloc_bitmap_sscanf(set, GIVEN_TOOLARGE_CPUSET_STRING);
ret = hwloc_get_largest_objs_inside_cpuset(topology, set, objs, 1);
assert(ret == -1);
objs[0] = hwloc_get_first_largest_obj_inside_cpuset(topology, set);
assert(objs[0] == NULL);
- hwloc_cpuset_free(set);
+ hwloc_bitmap_free(set);
/* try a harder one with 1 obj instead of 2 needed */
- set = hwloc_cpuset_alloc();
- hwloc_cpuset_from_string(set, GIVEN_LARGESPLIT_CPUSET_STRING);
+ set = hwloc_bitmap_alloc();
+ hwloc_bitmap_sscanf(set, GIVEN_LARGESPLIT_CPUSET_STRING);
ret = hwloc_get_largest_objs_inside_cpuset(topology, set, objs, 1);
assert(ret == 1);
assert(objs[0] == hwloc_get_obj_by_depth(topology, depth-1, 0));
@@ -82,19 +84,19 @@
assert(objs[0] == hwloc_get_obj_by_depth(topology, depth-1, 0));
assert(objs[1] == hwloc_get_obj_by_depth(topology, depth-1, hwloc_get_nbobjs_by_depth(topology, depth-1)-1));
objs[0] = hwloc_get_first_largest_obj_inside_cpuset(topology, set);
- hwloc_cpuset_andnot(set, set, objs[0]->cpuset);
+ hwloc_bitmap_andnot(set, set, objs[0]->cpuset);
objs[1] = hwloc_get_first_largest_obj_inside_cpuset(topology, set);
- hwloc_cpuset_andnot(set, set, objs[1]->cpuset);
+ hwloc_bitmap_andnot(set, set, objs[1]->cpuset);
objs[2] = hwloc_get_first_largest_obj_inside_cpuset(topology, set);
assert(objs[0] == hwloc_get_obj_by_depth(topology, depth-1, 0));
assert(objs[1] == hwloc_get_obj_by_depth(topology, depth-1, hwloc_get_nbobjs_by_depth(topology, depth-1)-1));
assert(objs[2] == NULL);
- assert(hwloc_cpuset_iszero(set));
- hwloc_cpuset_free(set);
+ assert(hwloc_bitmap_iszero(set));
+ hwloc_bitmap_free(set);
/* try a very hard one */
- set = hwloc_cpuset_alloc();
- hwloc_cpuset_from_string(set, GIVEN_HARD_CPUSET_STRING);
+ set = hwloc_bitmap_alloc();
+ hwloc_bitmap_sscanf(set, GIVEN_HARD_CPUSET_STRING);
ret = hwloc_get_largest_objs_inside_cpuset(topology, set, objs, OBJ_MAX);
assert(objs[0] == hwloc_get_obj_by_depth(topology, 5, 29));
assert(objs[1] == hwloc_get_obj_by_depth(topology, 3, 5));
@@ -103,7 +105,7 @@
assert(objs[4] == hwloc_get_obj_by_depth(topology, 2, 2));
assert(objs[5] == hwloc_get_obj_by_depth(topology, 4, 36));
assert(objs[6] == hwloc_get_obj_by_depth(topology, 5, 74));
- hwloc_cpuset_free(set);
+ hwloc_bitmap_free(set);
hwloc_topology_destroy(topology);
Modified: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/hwloc_get_next_obj_covering_cpuset.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/hwloc_get_next_obj_covering_cpuset.c 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/hwloc_get_next_obj_covering_cpuset.c 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,5 +1,7 @@
/*
- * Copyright © 2009 CNRS, INRIA, Université Bordeaux 1
+ * Copyright © 2009 CNRS
+ * Copyright © 2009-2010 INRIA
+ * Copyright © 2009-2010 Université Bordeaux 1
* See COPYING in top-level directory.
*/
@@ -19,7 +21,7 @@
main (void)
{
hwloc_topology_t topology;
- hwloc_cpuset_t set;
+ hwloc_bitmap_t set;
hwloc_obj_t obj;
int depth;
int err;
@@ -28,7 +30,7 @@
if (err)
return EXIT_FAILURE;
- set = hwloc_cpuset_alloc();
+ set = hwloc_bitmap_alloc();
@@ -37,7 +39,7 @@
if (err)
return EXIT_FAILURE;
- hwloc_cpuset_from_string(set, "00008f18");
+ hwloc_bitmap_sscanf(set, "00008f18");
obj = hwloc_get_next_obj_covering_cpuset_by_type(topology, set, HWLOC_OBJ_NODE, NULL);
assert(obj == hwloc_get_obj_by_depth(topology, 1, 1));
@@ -59,7 +61,7 @@
if (err)
return EXIT_FAILURE;
- hwloc_cpuset_from_string(set, "0ff08000");
+ hwloc_bitmap_sscanf(set, "0ff08000");
depth = hwloc_get_type_depth(topology, HWLOC_OBJ_SOCKET);
assert(depth == 2);
@@ -72,7 +74,7 @@
- hwloc_cpuset_free(set);
+ hwloc_bitmap_free(set);
hwloc_topology_destroy (topology);
Modified: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/hwloc_get_obj_below_array_by_type.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/hwloc_get_obj_below_array_by_type.c 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/hwloc_get_obj_below_array_by_type.c 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,5 +1,7 @@
/*
- * Copyright © 2009 CNRS, INRIA, Université Bordeaux 1
+ * Copyright © 2009 CNRS
+ * Copyright © 2009-2010 INRIA
+ * Copyright © 2009 Université Bordeaux 1
* See COPYING in top-level directory.
*/
Modified: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/hwloc_get_obj_covering_cpuset.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/hwloc_get_obj_covering_cpuset.c 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/hwloc_get_obj_covering_cpuset.c 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,5 +1,7 @@
/*
- * Copyright © 2009 CNRS, INRIA, Université Bordeaux 1
+ * Copyright © 2009 CNRS
+ * Copyright © 2009-2010 INRIA
+ * Copyright © 2009 Université Bordeaux 1
* See COPYING in top-level directory.
*/
@@ -25,40 +27,40 @@
hwloc_topology_t topology;
char *string = NULL;
hwloc_obj_t obj;
- hwloc_cpuset_t set;
+ hwloc_bitmap_t set;
hwloc_topology_init(&topology);
hwloc_topology_set_synthetic(topology, SYNTHETIC_TOPOLOGY_DESCRIPTION);
hwloc_topology_load(topology);
- set = hwloc_cpuset_alloc();
+ set = hwloc_bitmap_alloc();
- hwloc_cpuset_from_string(set, GIVEN_CPUSET_STRING);
+ hwloc_bitmap_sscanf(set, GIVEN_CPUSET_STRING);
obj = hwloc_get_obj_covering_cpuset(topology, set);
assert(obj);
fprintf(stderr, "found covering object type %s covering cpuset %s\n",
hwloc_obj_type_string(obj->type), GIVEN_CPUSET_STRING);
- assert(hwloc_cpuset_isincluded(set, obj->cpuset));
+ assert(hwloc_bitmap_isincluded(set, obj->cpuset));
- hwloc_cpuset_asprintf(&string, obj->cpuset);
+ hwloc_bitmap_asprintf(&string, obj->cpuset);
fprintf(stderr, "covering object of %s is %s, expected %s\n",
GIVEN_CPUSET_STRING, string, EXPECTED_CPUSET_STRING);
assert(!strcmp(EXPECTED_CPUSET_STRING, string));
free(string);
- hwloc_cpuset_from_string(set, GIVEN_LARGESPLIT_CPUSET_STRING);
+ hwloc_bitmap_sscanf(set, GIVEN_LARGESPLIT_CPUSET_STRING);
obj = hwloc_get_obj_covering_cpuset(topology, set);
assert(obj == hwloc_get_root_obj(topology));
fprintf(stderr, "found system as covering object of first+last cpus cpuset %s\n",
GIVEN_LARGESPLIT_CPUSET_STRING);
- hwloc_cpuset_from_string(set, GIVEN_TOOLARGE_CPUSET_STRING);
+ hwloc_bitmap_sscanf(set, GIVEN_TOOLARGE_CPUSET_STRING);
obj = hwloc_get_obj_covering_cpuset(topology, set);
assert(!obj);
fprintf(stderr, "found no covering object for too-large cpuset %s\n",
GIVEN_TOOLARGE_CPUSET_STRING);
- hwloc_cpuset_free(set);
+ hwloc_bitmap_free(set);
hwloc_topology_destroy(topology);
return EXIT_SUCCESS;
Modified: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/hwloc_get_obj_inside_cpuset.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/hwloc_get_obj_inside_cpuset.c 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/hwloc_get_obj_inside_cpuset.c 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,5 +1,7 @@
/*
- * Copyright © 2009 CNRS, INRIA, Université Bordeaux 1
+ * Copyright © 2009 CNRS
+ * Copyright © 2009-2010 INRIA
+ * Copyright © 2009 Université Bordeaux 1
* See COPYING in top-level directory.
*/
Modified: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/hwloc_get_shared_cache_covering_obj.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/hwloc_get_shared_cache_covering_obj.c 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/hwloc_get_shared_cache_covering_obj.c 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,5 +1,7 @@
/*
- * Copyright © 2009 CNRS, INRIA, Université Bordeaux 1
+ * Copyright © 2009 CNRS
+ * Copyright © 2009 INRIA
+ * Copyright © 2009 Université Bordeaux 1
* See COPYING in top-level directory.
*/
Modified: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/hwloc_insert_misc.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/hwloc_insert_misc.c 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/hwloc_insert_misc.c 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,5 +1,7 @@
/*
- * Copyright © 2009 CNRS, INRIA, Université Bordeaux 1
+ * Copyright © 2009 CNRS
+ * Copyright © 2009-2010 INRIA
+ * Copyright © 2009-2010 Université Bordeaux 1
* See COPYING in top-level directory.
*/
@@ -14,14 +16,14 @@
int main(void)
{
hwloc_topology_t topology;
- hwloc_cpuset_t cpuset;
+ hwloc_bitmap_t cpuset;
hwloc_obj_t obj;
hwloc_topology_init(&topology);
hwloc_topology_load(topology);
hwloc_topology_check(topology);
- cpuset = hwloc_cpuset_alloc();
- hwloc_cpuset_set(cpuset, 0);
+ cpuset = hwloc_bitmap_alloc();
+ hwloc_bitmap_set(cpuset, 0);
obj = hwloc_topology_insert_misc_object_by_cpuset(topology, cpuset, "test");
hwloc_topology_insert_misc_object_by_parent(topology, obj, "test2");
hwloc_topology_check(topology);
Modified: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/hwloc_is_thissystem.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/hwloc_is_thissystem.c 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/hwloc_is_thissystem.c 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,5 +1,7 @@
/*
- * Copyright © 2009 CNRS, INRIA, Université Bordeaux 1
+ * Copyright © 2009 CNRS
+ * Copyright © 2009-2010 INRIA
+ * Copyright © 2009-2010 Université Bordeaux 1
* See COPYING in top-level directory.
*/
@@ -26,7 +28,7 @@
int main(void)
{
hwloc_topology_t topology;
- hwloc_cpuset_t cpuset;
+ hwloc_bitmap_t cpuset;
int err;
/* check the OS topology */
@@ -34,14 +36,14 @@
hwloc_topology_load(topology);
assert(hwloc_topology_is_thissystem(topology));
- cpuset = hwloc_cpuset_dup(hwloc_topology_get_complete_cpuset(topology));
+ cpuset = hwloc_bitmap_dup(hwloc_topology_get_complete_cpuset(topology));
result("Binding with OS backend", hwloc_set_cpubind(topology, cpuset, 0));
hwloc_topology_destroy(topology);
/* We're assume there is a real processor numbered 0 */
- hwloc_cpuset_zero(cpuset);
- hwloc_cpuset_set(cpuset, 0);
+ hwloc_bitmap_zero(cpuset);
+ hwloc_bitmap_set(cpuset, 0);
/* check a synthetic topology */
hwloc_topology_init(&topology);
@@ -66,7 +68,7 @@
hwloc_topology_destroy(topology);
- hwloc_cpuset_free(cpuset);
+ hwloc_bitmap_free(cpuset);
return 0;
}
Modified: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/hwloc_object_userdata.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/hwloc_object_userdata.c 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/hwloc_object_userdata.c 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,5 +1,6 @@
/*
- * Copyright © 2009 CNRS, INRIA, Université Bordeaux 1
+ * Copyright © 2009 INRIA
+ * Copyright © 2009 Université Bordeaux 1
* See COPYING in top-level directory.
*/
Modified: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/hwloc_synthetic.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/hwloc_synthetic.c 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/hwloc_synthetic.c 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,5 +1,7 @@
/*
- * Copyright © 2009 CNRS, INRIA, Université Bordeaux 1
+ * Copyright © 2009 CNRS
+ * Copyright © 2009 INRIA
+ * Copyright © 2009 Université Bordeaux 1
* See COPYING in top-level directory.
*/
Modified: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/hwloc_type_depth.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/hwloc_type_depth.c 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/hwloc_type_depth.c 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,5 +1,7 @@
/*
- * Copyright © 2009 CNRS, INRIA, Université Bordeaux 1
+ * Copyright © 2009 CNRS
+ * Copyright © 2009-2010 INRIA
+ * Copyright © 2009-2010 Université Bordeaux 1
* See COPYING in top-level directory.
*/
Added: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/128ia64-17n4s2c.output
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/128ia64-17n4s2c.output (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/128ia64-17n4s2c.output 2010-11-24 09:21:55 UTC (rev 7494)
@@ -0,0 +1,344 @@
+Machine (phys=0 total=1609512816KB Backend=Linux)
+ NUMANode #0 (phys=0 local=100057088KB total=100057088KB)
+ Socket #0 (phys=0)
+ Core #0 (phys=0)
+ PU #0 (phys=0)
+ Core #1 (phys=1)
+ PU #1 (phys=1)
+ Socket #1 (phys=1)
+ Core #2 (phys=0)
+ PU #2 (phys=2)
+ Core #3 (phys=1)
+ PU #3 (phys=3)
+ Socket #2 (phys=256)
+ Core #4 (phys=0)
+ PU #4 (phys=4)
+ Core #5 (phys=1)
+ PU #5 (phys=5)
+ Socket #3 (phys=257)
+ Core #6 (phys=0)
+ PU #6 (phys=6)
+ Core #7 (phys=1)
+ PU #7 (phys=7)
+ NUMANode #1 (phys=1 local=100073472KB total=100073472KB)
+ Socket #4 (phys=65536)
+ Core #8 (phys=0)
+ PU #8 (phys=8)
+ Core #9 (phys=1)
+ PU #9 (phys=9)
+ Socket #5 (phys=65537)
+ Core #10 (phys=0)
+ PU #10 (phys=10)
+ Core #11 (phys=1)
+ PU #11 (phys=11)
+ Socket #6 (phys=65792)
+ Core #12 (phys=0)
+ PU #12 (phys=12)
+ Core #13 (phys=1)
+ PU #13 (phys=13)
+ Socket #7 (phys=65793)
+ Core #14 (phys=0)
+ PU #14 (phys=14)
+ Core #15 (phys=1)
+ PU #15 (phys=15)
+ NUMANode #2 (phys=2 local=100597760KB total=100597760KB)
+ Socket #8 (phys=131072)
+ Core #16 (phys=0)
+ PU #16 (phys=16)
+ Core #17 (phys=1)
+ PU #17 (phys=17)
+ Socket #9 (phys=131073)
+ Core #18 (phys=0)
+ PU #18 (phys=18)
+ Core #19 (phys=1)
+ PU #19 (phys=19)
+ Socket #10 (phys=131328)
+ Core #20 (phys=0)
+ PU #20 (phys=20)
+ Core #21 (phys=1)
+ PU #21 (phys=21)
+ Socket #11 (phys=131329)
+ Core #22 (phys=0)
+ PU #22 (phys=22)
+ Core #23 (phys=1)
+ PU #23 (phys=23)
+ NUMANode #3 (phys=3 local=100597760KB total=100597760KB)
+ Socket #12 (phys=196608)
+ Core #24 (phys=0)
+ PU #24 (phys=24)
+ Core #25 (phys=1)
+ PU #25 (phys=25)
+ Socket #13 (phys=196609)
+ Core #26 (phys=0)
+ PU #26 (phys=26)
+ Core #27 (phys=1)
+ PU #27 (phys=27)
+ Socket #14 (phys=196864)
+ Core #28 (phys=0)
+ PU #28 (phys=28)
+ Core #29 (phys=1)
+ PU #29 (phys=29)
+ Socket #15 (phys=196865)
+ Core #30 (phys=0)
+ PU #30 (phys=30)
+ Core #31 (phys=1)
+ PU #31 (phys=31)
+ NUMANode #4 (phys=4 local=100597760KB total=100597760KB)
+ Socket #16 (phys=262144)
+ Core #32 (phys=0)
+ PU #32 (phys=32)
+ Core #33 (phys=1)
+ PU #33 (phys=33)
+ Socket #17 (phys=262145)
+ Core #34 (phys=0)
+ PU #34 (phys=34)
+ Core #35 (phys=1)
+ PU #35 (phys=35)
+ Socket #18 (phys=262400)
+ Core #36 (phys=0)
+ PU #36 (phys=36)
+ Core #37 (phys=1)
+ PU #37 (phys=37)
+ Socket #19 (phys=262401)
+ Core #38 (phys=0)
+ PU #38 (phys=38)
+ Core #39 (phys=1)
+ PU #39 (phys=39)
+ NUMANode #5 (phys=5 local=100597760KB total=100597760KB)
+ Socket #20 (phys=327680)
+ Core #40 (phys=0)
+ PU #40 (phys=40)
+ Core #41 (phys=1)
+ PU #41 (phys=41)
+ Socket #21 (phys=327681)
+ Core #42 (phys=0)
+ PU #42 (phys=42)
+ Core #43 (phys=1)
+ PU #43 (phys=43)
+ Socket #22 (phys=327936)
+ Core #44 (phys=0)
+ PU #44 (phys=44)
+ Core #45 (phys=1)
+ PU #45 (phys=45)
+ Socket #23 (phys=327937)
+ Core #46 (phys=0)
+ PU #46 (phys=46)
+ Core #47 (phys=1)
+ PU #47 (phys=47)
+ NUMANode #6 (phys=6 local=100597760KB total=100597760KB)
+ Socket #24 (phys=393216)
+ Core #48 (phys=0)
+ PU #48 (phys=48)
+ Core #49 (phys=1)
+ PU #49 (phys=49)
+ Socket #25 (phys=393217)
+ Core #50 (phys=0)
+ PU #50 (phys=50)
+ Core #51 (phys=1)
+ PU #51 (phys=51)
+ Socket #26 (phys=393472)
+ Core #52 (phys=0)
+ PU #52 (phys=52)
+ Core #53 (phys=1)
+ PU #53 (phys=53)
+ Socket #27 (phys=393473)
+ Core #54 (phys=0)
+ PU #54 (phys=54)
+ Core #55 (phys=1)
+ PU #55 (phys=55)
+ NUMANode #7 (phys=7 local=100597728KB total=100597728KB)
+ Socket #28 (phys=458752)
+ Core #56 (phys=0)
+ PU #56 (phys=56)
+ Core #57 (phys=1)
+ PU #57 (phys=57)
+ Socket #29 (phys=458753)
+ Core #58 (phys=0)
+ PU #58 (phys=58)
+ Core #59 (phys=1)
+ PU #59 (phys=59)
+ Socket #30 (phys=459008)
+ Core #60 (phys=0)
+ PU #60 (phys=60)
+ Core #61 (phys=1)
+ PU #61 (phys=61)
+ Socket #31 (phys=459009)
+ Core #62 (phys=0)
+ PU #62 (phys=62)
+ Core #63 (phys=1)
+ PU #63 (phys=63)
+ NUMANode #8 (phys=8 local=100597760KB total=100597760KB)
+ Socket #32 (phys=524288)
+ Core #64 (phys=0)
+ PU #64 (phys=64)
+ Core #65 (phys=1)
+ PU #65 (phys=65)
+ Socket #33 (phys=524289)
+ Core #66 (phys=0)
+ PU #66 (phys=66)
+ Core #67 (phys=1)
+ PU #67 (phys=67)
+ Socket #34 (phys=524544)
+ Core #68 (phys=0)
+ PU #68 (phys=68)
+ Core #69 (phys=1)
+ PU #69 (phys=69)
+ Socket #35 (phys=524545)
+ Core #70 (phys=0)
+ PU #70 (phys=70)
+ Core #71 (phys=1)
+ PU #71 (phys=71)
+ NUMANode #9 (phys=9 local=100597760KB total=100597760KB)
+ Socket #36 (phys=589824)
+ Core #72 (phys=0)
+ PU #72 (phys=72)
+ Core #73 (phys=1)
+ PU #73 (phys=73)
+ Socket #37 (phys=589825)
+ Core #74 (phys=0)
+ PU #74 (phys=74)
+ Core #75 (phys=1)
+ PU #75 (phys=75)
+ Socket #38 (phys=590080)
+ Core #76 (phys=0)
+ PU #76 (phys=76)
+ Core #77 (phys=1)
+ PU #77 (phys=77)
+ Socket #39 (phys=590081)
+ Core #78 (phys=0)
+ PU #78 (phys=78)
+ Core #79 (phys=1)
+ PU #79 (phys=79)
+ NUMANode #10 (phys=10 local=100597760KB total=100597760KB)
+ Socket #40 (phys=655360)
+ Core #80 (phys=0)
+ PU #80 (phys=80)
+ Core #81 (phys=1)
+ PU #81 (phys=81)
+ Socket #41 (phys=655361)
+ Core #82 (phys=0)
+ PU #82 (phys=82)
+ Core #83 (phys=1)
+ PU #83 (phys=83)
+ Socket #42 (phys=655616)
+ Core #84 (phys=0)
+ PU #84 (phys=84)
+ Core #85 (phys=1)
+ PU #85 (phys=85)
+ Socket #43 (phys=655617)
+ Core #86 (phys=0)
+ PU #86 (phys=86)
+ Core #87 (phys=1)
+ PU #87 (phys=87)
+ NUMANode #11 (phys=11 local=100597760KB total=100597760KB)
+ Socket #44 (phys=720896)
+ Core #88 (phys=0)
+ PU #88 (phys=88)
+ Core #89 (phys=1)
+ PU #89 (phys=89)
+ Socket #45 (phys=720897)
+ Core #90 (phys=0)
+ PU #90 (phys=90)
+ Core #91 (phys=1)
+ PU #91 (phys=91)
+ Socket #46 (phys=721152)
+ Core #92 (phys=0)
+ PU #92 (phys=92)
+ Core #93 (phys=1)
+ PU #93 (phys=93)
+ Socket #47 (phys=721153)
+ Core #94 (phys=0)
+ PU #94 (phys=94)
+ Core #95 (phys=1)
+ PU #95 (phys=95)
+ NUMANode #12 (phys=12 local=100597760KB total=100597760KB)
+ Socket #48 (phys=786432)
+ Core #96 (phys=0)
+ PU #96 (phys=96)
+ Core #97 (phys=1)
+ PU #97 (phys=97)
+ Socket #49 (phys=786433)
+ Core #98 (phys=0)
+ PU #98 (phys=98)
+ Core #99 (phys=1)
+ PU #99 (phys=99)
+ Socket #50 (phys=786688)
+ Core #100 (phys=0)
+ PU #100 (phys=100)
+ Core #101 (phys=1)
+ PU #101 (phys=101)
+ Socket #51 (phys=786689)
+ Core #102 (phys=0)
+ PU #102 (phys=102)
+ Core #103 (phys=1)
+ PU #103 (phys=103)
+ NUMANode #13 (phys=13 local=100597744KB total=100597744KB)
+ Socket #52 (phys=851968)
+ Core #104 (phys=0)
+ PU #104 (phys=104)
+ Core #105 (phys=1)
+ PU #105 (phys=105)
+ Socket #53 (phys=851969)
+ Core #106 (phys=0)
+ PU #106 (phys=106)
+ Core #107 (phys=1)
+ PU #107 (phys=107)
+ Socket #54 (phys=852224)
+ Core #108 (phys=0)
+ PU #108 (phys=108)
+ Core #109 (phys=1)
+ PU #109 (phys=109)
+ Socket #55 (phys=852225)
+ Core #110 (phys=0)
+ PU #110 (phys=110)
+ Core #111 (phys=1)
+ PU #111 (phys=111)
+ NUMANode #14 (phys=14 local=100597760KB total=100597760KB)
+ Socket #56 (phys=917504)
+ Core #112 (phys=0)
+ PU #112 (phys=112)
+ Core #113 (phys=1)
+ PU #113 (phys=113)
+ Socket #57 (phys=917505)
+ Core #114 (phys=0)
+ PU #114 (phys=114)
+ Core #115 (phys=1)
+ PU #115 (phys=115)
+ Socket #58 (phys=917760)
+ Core #116 (phys=0)
+ PU #116 (phys=116)
+ Core #117 (phys=1)
+ PU #117 (phys=117)
+ Socket #59 (phys=917761)
+ Core #118 (phys=0)
+ PU #118 (phys=118)
+ Core #119 (phys=1)
+ PU #119 (phys=119)
+ NUMANode #15 (phys=15 local=100591248KB total=100591248KB)
+ Socket #60 (phys=983040)
+ Core #120 (phys=0)
+ PU #120 (phys=120)
+ Core #121 (phys=1)
+ PU #121 (phys=121)
+ Socket #61 (phys=983041)
+ Core #122 (phys=0)
+ PU #122 (phys=122)
+ Core #123 (phys=1)
+ PU #123 (phys=123)
+ Socket #62 (phys=983296)
+ Core #124 (phys=0)
+ PU #124 (phys=124)
+ Core #125 (phys=1)
+ PU #125 (phys=125)
+ Socket #63 (phys=983297)
+ Core #126 (phys=0)
+ PU #126 (phys=126)
+ Core #127 (phys=1)
+ PU #127 (phys=127)
+ NUMANode #16 (phys=16 local=1020176KB total=1020176KB)
+depth 0: 1 Machine (type #1)
+ depth 1: 17 NUMANodes (type #2)
+ depth 2: 64 Sockets (type #3)
+ depth 3: 128 Cores (type #5)
+ depth 4: 128 PUs (type #6)
+Topology not from this system
Added: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/128ia64-17n4s2c.tar.bz2
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/128ia64-17n4s2c.tar.bz2 (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/128ia64-17n4s2c.tar.bz2 2010-11-24 09:21:55 UTC (rev 7494)
@@ -0,0 +1,158 @@
+BZh91AY&SY
+kþªïÿÿÿßüÿÿ÷=ï_ÿïÿòÔ8 ÔǸ`Þà ð À Ø dRT»e)(£
+`Ý0ÝÍsp^h¾[[d
]½Æ{í_Qð }$ / óâÛ ÎíàìÚØ6ÀÁÅÀÀ A*8c|hôÈø ù¹k/ ¡;2-äqàÇ»:d&Îìj 7s ª¤ <\çoë ú¾÷`Áw Ñ!@d:E;°z èx]È ±°ZÑ´ÖÔ×>
° ` ~¦=)T¦¨ÐÐÀ ha ÀL10#L1*Ô¿jªTÿILê ª~ ªDIMTÓ
+2@ @mM©TÓF¢§yI Ri14Òaj=OHõ@f õ¨Ú¦PÄ@IÔÚA A$ Jjê4zOH< Ð
+ ?d¯Ù+¤Åê+T°V©5?X®&©51?\¬+TªZÔÄ"¿ÎPèWi\)1R\)8Rj
&§ñrRrRbLöÊæV)1I¨¯Ã]kS_è®IÉ8Ep´'j`,á²û¤üó$"H$"H$"H$"H$"HÉD$ID$ID$ID$ID$ID$ID$ID$ID$ID$ID$ID$ID$ID$ID$ID$ID$ID$ID$ID$ID$ID$ID$ID$ID$IEf1É2ªwQ^EÛTªX«QQ1óHóë§èè9D»(Tùî·ü
þE®ÏÞ0óÙ#îg%îg=Ï!³àö}Ñ÷7[æðW>Ì»<˹ä\÷3gÙÆÞæ{·vT«°í%6yM{sìb³Ù}xq"JF;¸o7HÄϸpc®÷"6ï|ÀXl=w:_B½hbF÷ hôpåÜ0ÃF¼Ã*AnáÄ8páÔûï¢|ôzv°Ã¼Àz=$zHÞú=ìaÃäz1#7#ZM.æÆGy¡¸HDZ8ö
=Çã^X¬L;òB¸ìjJÇÂ{óqÜrD®;Ë·Alu<wqcØ;'ǼØÔ2¶bØm×±=6²«ë»·vîIné5µ÷nìªåºîíݨ$S®îÝÉMË[»äÝ»·vîÃ{nîÝÙUËuÝÛ»wNÙí·wníÝm¶îíÝ»©;V·wnìªåºîíÝ»©«nîÝÛ»wníÜ÷[båVëÍÅË.뻤ÖÖªåºîíݨN»¹$ÝÛ»wníÜÝÛ»w[m¹UËuÝÛ»*¹nª:Éqn8ÇÓvIwníu½R[ql'Û»rK·vîÝÛ»[jI%ovîÜíÝ»·WnÝÛ»tî¶ÍÛwnìîÝÛ»wdLIÝ»·vIÝ»µÖL¶öîÝÛ]»·vîÝÛä»»»wníÝ»·và±d½;·:ÚJnÝÛa>IníÝ»·v¶É×T[u×níݹ%ÚëzÛm©-»·vîÝØíÉ··%»q3§j¦&nA]i3M4Ó6I-Í13M0¤ë¬ÓhÝM13M4ܤRéÓ´Û;TÙ-Í4ÄÍ4ÓLÙ-Í4ÓM0«4yܱæw^äÜmºgu\IÊ©¦bgj¦m²fiÍ×nÛgaµÄù¶j-¶°mÛv íÛdÛmHÛ
+³#»±7y¶Øml6l-ïH÷ÕÜ9Ú=õ׿Øm¨¶Ø]Ø]pgm»vÃm²KaÝÐîfGwbn'mÛ6ØmÝøwmlm³&mÔ¡;\4IØ+´lÎÃkól6Ô[l7a6Á¶&ìAÛ
+¶É-wB;¸mݸ¶lHÛa¶'m·l7v´Wn׿Øm¨¾Û
+÷Ñ6Á¶&ïH÷ß}ûîõ/}÷ß}Ô°Û2;»z{Ò}÷ßpÛ6Øm²´Wn׿Øm¨¶û;½ôO}ô3¶ÄÝ;Ü6Û$¶ÛjFØm½#mé7¶Øm½#ß}ô{ì _v6m´jâ2è$ëpmÍ©"pÃe½ØaoǰÛcÝÝÂØm¨½ ÎÜ3;
+®'ͰÛQm°ÝÛhرl6Û$¶ÛjFØmݻͶÃlHÛa°pt×îÔRò>¥Ï$FñÔE{´uB
+Lô=Ó£LÎFÐ^rTóì[±¥)löìM+wn×cáØm¨¶ØnÂm´KlMضm;mµ#l6ÌîÄÝæÛa¶$m°ÚÞgn×cáØm¨¶ØnÂm
´KlMضm[mµ#l6ÌîÄÝæÛa¶$m°Û·lºéº®Õíy·w_}öÏuÚÛskdäíÖm[ãswu~ûï_zûéÚÛm·ÝÖmfÕ¾w97YµJVÛÛ¬ÚͬÚì©÷uYµ{^mÝÖmfÕívMÖmfÖmx÷wuYµ^=ÍÇÜäÝfÖm[ãswuYµRmæßwYµYµYµT¥²Vøönî¢Ìç^mÝÖml¯[wuYµìe6÷u^mÆÝÝfÖmfÖm[nmfÖmx÷wuoÎMÖmfÕíy·wT¸mÒ &w yàxx at YTªZ
Êe0ÆYi¥i¦ÓM4²Í¥i¦YfZi¦iY¦Ye¥i¦i¥)Ri¦i¦Zi¦¦¥)M4ÔÒÓKM,³M6i¦m,ÓK,´ÓM4ÒÓK4ÓKM4³M-4¥4ÒÓM4ÓKM,ÓM-4ÒͲ)áðùàöH ÌRI$¯ØÑZíWnîî¶I%ºIu5hßUm¶Ù$m¦äi#Y$òÈLM´|Þ >;Á¯I%ÏFJ×j»wwu²I-ÒK©«Fú«m¶É#m7#IÉ'Dbm£æð;Á2oI%ÏF]ÝÝÝm¶Ù$ô2]"Zu¶Ûm²HÛMÈÒFyå²$j¢(xIðÄ«M¶Ão¤Ö#kkºw.ëm¶É$·¤X«ÕÛm¶Û$´Ü$k)$¹èÒI$mÒ'À@' Þ
+x¤I.z4b]Ý;u¶Ûd[ÒK©«Fú«m¶É#m7#IÉ'Dbm¢0ùÄÀ
â Ïäw>¼î©[R]o¸J
+Vµj2 )v5$Yù¥"Ûm¶ÚQ»t1æÒém¶ÛmFå¢X$mÖÖ¦IÃä|*DI¢E x7qI$\^(wwwu¶ÛdWÐÇK¥¶Ûm¶I8ÚIÉ9dI$ÅDp$WI"§STUd½Òä&>nXÛ·`ÈQ ÄrIfÚo£Jg7wwu¶Ûe¶Þ®ÍTs¶ÛkA#r8Ú$Ö{& L®GÂ
*=½½½½òW2ír$HHÕQQ$e45Nnµw²îîFÛâÚiR±'wtIS;±ªêR7%ªÉ×¹séÖIÜû»£IèÒkÚØÛ³Ý:÷n§Íé-·k;»ZßuîIÝkêøNæ¤-ZÃ#»+
+Ör«pmÛ&âU´rîIA{§rI4ºÙ©-§mµw% mÄëºÚM·wrJñëjJÛmUÔjØj¶Ù$ëÝÝÖ¾mñ<ºÛÝÝÝÏ¥ÍÛu¤Óîîîm½¶ÛfÛÛ±ÛfÛÛm¶1iÒ%Ýowu²N¶ÖèçxÚß[hV¥-mFìjI&m÷uµ)Ù¾ÛZZv-½ÐHûëÒ>Ø7g¯AsÛi¶Ûnîê$]]¹ºzMÛ±Ól÷,µ=ÛÍ"¡ÛnæºÝ+ÒµvE´y]¬KdõÛ«ìÒOt廿×[æÊíµH6í¹íNôW7פ[1 È ¨«æi¤d¶I4I-ÆâJ4Ûm¶
m·$©lQ¥c¤I)FÑ&ªÖÒ&¤«m $ðkÅ$IsÑ£îéÜ»¶Û$Þ]MZ7Õ[m¶Ii¹HÏI'Drm¢0ÃÉ$¬Í)ëm¶ÛjµFÕº%ÒÛm¶Û$¹I$¸Òç£I%J<# C¤J²^iH§[m¶ÛUª6Ô¬¹.Ûm¶Ù$eÈI$k'DJQF çx0¼RI$¸7R)ÖÛm¶Õj«{rmr]-¶Ûm²HË4HÖO,$¢$$æ$x)$\Ém-¨ÉªÔ¤RÛm¶ÛUªI-²KÕwrUÌßUºñçÜbu´¬¶Ûm¶É$¶ÚÝI§$ÛD¤¬Ë4ÛM¢I$-¦iIà$ø|áæî)$\Éy¥"m¶Ûm¶I%}y´º[m¶Ûd¹¤¬YI&&Ú#'Îð`¼CÅx¤Is%æu¶ÛmµZ£jÞ¥eÉt¶Ûm¶É#.@ÒI#±©$ÌÍ)ÖÛm¶ÛdW¡6Km¶Ûl7 q´5ËãîñÂóK½Ï~÷à;ÛÞâÿZ> °Øv äBG=AØ@à`Ôi ñ8DÔ7Kλ_ù²ß6ñy .Úëyµ»M|Ûæß;kÈ"/¡Úq"q0jI$)JM"ÐÄâq8 ©$¥ThÒRlx0x85!Û]¯:·io|ÛçZó':JM§'¤I
+RH4BHC/<!Ù$rÃpD¹"Ym<M¤N&
+HB0hbe66¼"ðy×[ã^tׯ¼^BB¤Ð-$L¦Ó`8©U$
+t
+¥&i"e6߯ ¼ó®×ƼҾ+Åäµv¼Öº÷ׯ¾-^SÃq¼âa¤´Æ¡$¡)4I)´øÖ¼ÀÂç]¯yÓ_ñy
+H42MjÄ©$jGII´ÒDÚcPHPD¤Ù|j¼<×kâ¼Ò¾+Åäts:C¦9næft4ëHLjB Ò
+$¦Çh DñÐ7v¾5çM|kÅäí®·[´×½¾5ñVòÀo6äÚi"m0jI$(JM(ÐÄÊm6ÚòÀo:ë|[Îø×ÈZíyÚݦ½õñ¯×D^yÅ&ÓIcRI!BRiSiñyEà7v¾5æË|kÅäí®×[´×¾¾-ñZó'#¡¤Úi"m0jI$)J Ò@Êl6¡©$$4M
+
+Au]^unÓ^úø×ÅkÈ"/:JK6é"m2bI$(JM Ô @
+îPΩHHÜ
¦Gc±ÉI
+ZH4"lv ï'½íÚù¯:ù×Î¼Þ ©Jªmr*ÓòÖ
l(#OäDÄÚ4àÔ
+:9Whlñç ÅTÆ:ª£eѪMÓSfÔULa@ÝÌ eJ©eR©ij%!Ôa̰ưÅUTµM©LebKm*f(c*LC
+QXÁU
VL2eXÂÆRÂ^wÝáÝá\&01v/'ù>1î!ýNZvc FBBýiÕÐnÞÿ½£ßª»ü§§Áçv`ãÀUmaU×*²|´©_û êµ~ û"ûúÔ}¢¾Áö¯CÐáÃн5èX=C
ÃÐô9Âô=pô/C
+z¡Âáèz8û·Ñµá¨öãZ×ëÆ·½x×®ýz®^ÞÀ õ½sÇn!¹¹¹¹¹ÔNNNNNNNN u:FÛm¶ÛÖm¶Ûm¶ÛÖm¶Û·nÞµnݾm»víëVíÛm¶Ûm½jÝ»víü¾_*ôôôôôôôôõë¨!!!!!!!!!=w»t$$$$'§!!!!!=uÐ éÈHDõ×BBBBBzr!!!!=uÐû:ª¯Á[ño¾ª¦Þд[ýê¹nUËr®[rÜ«å\·*å¹W-ʹnUËr®[Ü[qn
+Ÿ7àÜ[
ø@À ó=÷'Ï~TÎäÞ~ßi:êN·ÕN®NºÍìÞÞ³{zÞ¶oyÖÙ½¸ÍÆüá½ß«[ÜÞÍõöoiºÞÍóZÖµ| :vphØîÎ1ÙÛ³Ê 1}oòñÖ
+@ `yyîQåfñSZXëx,ÍMßFõ,È ýåUñãùµUxª«çÙ @ @ @ @ ~~÷9Î=à9ÎpóçÈP UT·º®º©ÎzõW}÷Ý «ç7×9Îs뮺ê÷]g_Ì «#ê]J¢ÏTªYû¬°î q÷ t´¯'ú@d¡ö { ~ß>ð¼ ÊÀ0 ÀjU0 ù·ßõþGëb¿oݼ\÷]^.s1üëw÷à÷|ÌåSÒ×§çÃ8+cÉ~ü]!{7±3p*ü0ú·¬o~ = Ýâ=| uðà<yPNî]yo?/nùïÀ8 (Týéóû7òüþ¿u'õþaù¾Sð /§ÞAîþ'Ç<?9û¿Ô¿ßé}:} /öïõñ?è}_ÇøØ?×ÅÛïàüé¡ {ÚÏÆÁÞù&ï[××<è<bǽ«ÕtÐ*û5Íîc×½c=jûÈduï]óÞ±Ú×f+®hüP <ó¾¼UIW7íç
Îó¿~^
+° #$$&9×w^]V±½_\ß«óß¿TØ_dO¼8úóòx >üî g=QaXÀXÎû£}gç½cN³=;ñ{}ΪQ½lðï3{Þg©À¾øX±}µÈSÍDEû^«æ®»§·ÏÇãò½¬Ì Å{õúó;úÖû >»ÆàIæþ{S5#þ¯ã?gòé÷öÝ=ß®ëóû·p"~è ûÖäÃZü¢";ôDDFtÔ½ZÖûZ÷xOs¿»ýßÉýÖþ¿Ïß¿×~Ϥ[üÌ~|À¾ÆâûG¡»0ñÏLë®k°wé¶9ºçÖÎo=ê¼=:·»|Þ·»üøäÆ/_ßã;wøéø«|ú'Ôïlù]÷å÷ø þQ?»~wíü;ÛeýOÛÞÚW~w¾üöùS¨ûË>ObWë÷á߯ÅÈ5WÌO·ÍMÝG}Ë£§×ÜdòT¨¶rã«Ñn»/U<©æ¯;µ[6²ÒÁ>}ß=`B÷údôü§á{¶mïwi>ûñ}|_ËêãAõb}ü_
+÷æqçòÆ_:{¥úíø×ç÷~1ûêñ~ë_ÏÊébýë1UßÚü\/ß}¿hÐ]÷ëïÏáú §÷ê½è~{uZ½òý¸Rªj_y1Ï~?;ç¼|üù{çÞûúkï¿®~Gà WÛö/ïÀ ÓÅÔË~÷·É¬î&4Ý:9µ=>ÍsjïçǦqáæä' åüý߯ïô?¨©±^ïöïüÞÐÇÏ`ì~oúÏvµkZÖw½ó×~ÜóçÏ3ØÞÁçÏ>G¥yìåöï/iowy½ï{ËÂ""":+
+÷XGzôDDD""""×xÞ©ñÒZíÞ÷v·®Õæ¿>"""?gíªïe·s;Y¥íù]ï²{é·¿Å}ß8¯Ï¯Ð {w»Ù$~}ï>/;ÝÛç|^ÿ ý ýÀ 8 >Bo¹R¥Ü9X⪮ãIãºxïgãÕÄösÂÝï×råá Ob"!^2i (Àg·^ÎÎ;¹xðØ£ºqàlÇ d#¢RhH#,¢AçpÍÞ\²Þ] xñÜ*´qUÜÀ~ØØ á{ }hXîÁ^>&y|¾lêÉåàTþª§yßÀ®ñÜ;Çpå>ýsÅä:A =óÙïÏ;ëÏp j¢²ü <@z@~ÑUÍ; p~EÌÊÌWP UôöJÅ&)11:xøøõööæ|}zõë×ݾX óçÈûï¾ÇG@ªªª«ª aè
+Pðü?Ëü÷ðk^<xññ5xñãÇÖ¼k^<kÇkZñxñ¯Áð|ïw»Ýñ7Uñ@ `UTUQl= h*
+®sn¨: tt u ¹ÎsVÃÐ ¨ ªç9É ê sëâÐ Ð Msç}÷7T UPtUUE°ô ª *¹Îqº è ` ªª¢ªª-
+PUÎs
+Ô
+ç9×9Å ë`UW ï¾ûï¾ø` 0¨ ¾syÎ @UW ï¾ûï¾ø` 0¨ ¾syÎ ë`UW ï¾ûï¾ø` 0¨ ¾syÎ ë`UW ï¾ûï¾ø` ` º\ç:ç8´ =lªªòÀ÷ß}÷ß ` 7P +ç\ç UU^X¾ûï¾ûá:: À
+ VùÎyç8 UU^X¾ûï¾ûá ê sëâÐ Ð Msç}÷7T0 ¨ Îs®s@ @ U6Îs÷Ý00 Ý@ ®ssZ ¶UUy`ûï¾ûïê¦ À u ¹ÎuÎqh h
+¦À9Îs¾ûª Ý@ ®sç°ô ªlç;ﹺ èÑÐ
+Ô
+ç9Îq[@
+ «çª À
+l
+ç9Îq[@
+ «ç& 0 ¨ Îs®s@ @ U6î÷D}}ôo{ Çwwwnffªªîîó33y¬ÌÀ tt
+ª¨
+ªº¢ Ð ÐU kƼxñã^<ùóäÀ?ÿxñãÆûëçùòï¾w×ϰ¢~÷ç}uçûÌï믰 £«ç7ºöÝ^Áå UUUWT@ÃР뮺ç9κ뮺뮺ü¯Ð}~
+´¢*ÜU¯Ï>{ï¾ýsç×]uÖ:®0 UU at UUÕy ¨ ªç9ÅP<°0ªªª¨È4 4@W9Î7T UPtUUDA ª *¹ÎqT,ß~|ùáà::UTU]Qh UÎsQëׯ@ÝPt 0 UUAÑUUy ¨ ÷hUþ
PULy/£©ÑWTÕfN)&}Ñ×Qr]$æbpEaÃlI·zTÛjsà¼KyÂ$+i¤QYxò%p-Ê%)̵ÃÃâ÷#æ ¯3ÇÃÄàÝÒQ°Ô']ÁSÄ5JâI%ù; lx¡Aö=ñu)!´8 ë$t8RÙÒlÙ³fÍ[6lÙ³fÍ0ÌÔÙ³VÍ2imhD 1i§F¶»]®×k¨ívº×WQÚê¸4GZívºÝ®32dÔàt&F%ÉYLÄÂcFȱ2,S#Äȱ1L&F%²S"Äı2,L&E#(ê (ªW©¯&xßï a ú
+ð-«àV ¯ekßÕé§L§v'LNܧf'#ìʧ»ÈD
+ç:,¼c, D<¹ 1\órÐÌcïç;®wh«¾ûÎéÖ9}p Ü@««¤UÑßxëmFF &&ì* óÁáWÖ½ôÖ=sßüoÞfúm!üùîùùêRßG¿>Ùé÷yöH$ I$H?ãßõì¿ÆIÿ´·úÿk¤¦QM¶¹rþîÁª·ûGÐ÷Z©pÈÈ§ÍÆSó¥õSh
+§QëknÃ$s-¾~ÿs3üx :ñîuwèï:»Î®ýDw«_è~w8üá鵦 a fÐ a fÐ a fÐ a fÐ a fÐ a fÐ a fÐ a fÐ a fÐ a f Îm¶ói%:m¶ÛÌzÐ a fÐ a fÈÌÉ¡wj¨Ù^Ég(2mËRBf2+h ETLûܰ7ÛÓ>nJ$ë9ëw
+aUá
ç?~
+'§ß} uã× 6ìwc Ø-¨Á ª¢Vù3¾Iã&L2dÉfL2dÉ&L2dÉ&L2dÉ&L2dÉ&L2dÉ&L2dÉ3&L2dÉ&L2dÉ&L2dÉ&L2dÉ&L2dÉ&L&dÉfL2dÉ3&L2dÉ$Ìâ¶ÛæÁW@«UÞnoyÆfqfgÆfqÕ®Lf^u5¬çÎu5M@ª*ëÿõSõkíÙ2dÅ&L>óo½{okui¦¦i¦Ri¦Y¦i¦i¦¿AJN-
ü]DÁUØ8¬T.k
4ý&,Y2dDm?Íl´¤$H"DJRYfi¦Yf2rÓî¸8[2Ëï±GvRéc*Xd~_¥c*»Pî±Gv÷
e~¡ÁÔÙ«VÍ5jÕ³fϾâòÜ·75Êq6jÕ³M4Ù³fÍ6lÙ¦lÙ³fÍ6jÙ³f6jÙ³fÍ4Ù³g÷x>ÿÞs<ç9N¾r¹_¦¢ýK[6dÅM4ÓM)Ji¦i¦&LY2dÃ&L>ûLº¼Ö1#'yhè}ó&,`Ä-) ÁHM4¥4ÓM4ÒÍ4ÓKdɲpÃÅxõ¶jÙ³f[6lÕø_ÊöÜÜç)ÄÕ«fÍ4ÓfÍ6lÙ¦l٦ͶlÙ³VÍ[6lÙ³fÍ[6i³fÏïð{y3å8Zi·ù}ÿZ÷ÏÖ8\N'Ââq8\N
+¥¥¥¥ð|Êeý÷F#ÂXÚZZZZZZXXXZZZZZZZZZXZXXZXZXZZZXÚXÚZZZXÚXÚZZZZZXÚZZZZZZXZZZZñÈ~ù Òe2Gý_ñ¨üO<À`7÷?íÿ øÏÏñxÙMÙMÙMðêÈy»Øÿþ w^=¯¼{¯¼{Ð> ïO»ÒóÏ<²)³38ÌÎ33Í;@ m1dÆ,Æ,ŲcLF4ÅIIEH HH6ª HD HE2DRDRA")")")#¤Äi1&1dÄcIY1&1d³¨ªÔJ.ºmR©b¿Ú}áÞãüKãK¾µQTr4à2X ó c¥ÐÀC%d2V1 [B»C®
Îòo0Ü]ë
+{
+
+ Àzè!Æë]
õac&¤d£!
+Ígã¹N,^çzZ;¡Ï´óXº¬kzò¯ÍVS¬PÉ2XÎûÆôò9³»UG&ð&õÖkz;k
¬Z¡ªÑÆ\:5fÉ{c¬_±É%Èì¢Ü² eräÈyàöw×xµ°@h¡.¬Ê¬© ÂÈ*¢ðÐèÒù®l at NAÜWt°ÚuÖTDu^hØÕlä {¨â 8»ÇFkxßx³TC F&uAU³².Ç¡Ñ&ïQß0k ºr3¨¯ÃFa5ea0´ïÑÒcYÃ2
+ïXppc9«2fªÌç]wÍ_YàEäxiÚåØàÈjHB¡õO1MTÍÞw2 èÀûïDgØw·à#`gÕì]¾&h"Â/!h¤¬e5T9TK¾¬®²]Ö rèÁë'5Ñs}Q#Ôs íäâÑ2haÊ&ò"¶ó "¹ëTsªôoGKÛ¦\UFú¬kê¸tK¢)5Õ1Å ¾é
+|<â/ <ózõo\÷Ý<c Ç çhÔS»ß{©ç©¾¦
+Qè/«^Âó£»ÕBsZz>cÐá( ÷Òø+ÎCÓ?Xªº²Lr·K¹c¬nÌÅ{Cç§/ÏlzBG ÙêÁ#
+U;Ã<3
,ø¸wfÎQ:Ax¦AÃÚÚÛrð\QI,-¶Ù%A:ò©·%a7"L*cæ!ß'KĤròd|ÀCê2i
+Qò A³lÔÉt
+¨»ÀvG|Hâ9dHräH%<¬R*&tM « V#l4É(Ðä¡Ä|C¬â´â¬â¬âR»iÚWk¹¥n´èÑ$4HP@
+
+7#ºäEªqMÖîRºÝÊW[¹Jëw"ÃnµÜÒ»]ÊPÒ»kÅJm,Úii¦ÒͦZii¥¦ZiR)´³i¥¦m4ÚYRm4Ú[ÏM7üÛþ×&¤æº×~ý"©à ÕwàI% ¿>åù| düß=ùõ|?vöÑÄ·ðÔ1#çÏ|;üzï½K÷ܦ»ëëïçÇîËÞtóç¯Í÷åìð dô÷ýwÏÏÏÓëõõëìîúzõëÑLÀÌLÀÌLÀÌLÀÌLÀÌLÀÌLÀÌLÀÌLÀÌLÀß·Yííííííí^ÛöÞ÷¾³ÛÛÛÛÛÛÚ½³ S03 S1°&àõ¯/µãzÞµ«¾f·yVCýQCùYûÕ@ßt÷Í?:/xùßÇ îæªI$O¾Ìó[0Ï÷ñ¥úCä¾Ãº;ïÔèçó&Ýã[Eûy1³a¼Eü«¶@Ñ£X5çãôø`9½uÖ4ù×&´jõp½þã¢Ï9¾`åÀ_±ÖºÒ-kg¯öWÓ¿ÀaõÑöÝ@Îì¯7ò¾yù¼ß¾ïxÍPëZ@ îîÝÀ$ùÞ± /éñ3ý@ZÇkÏ[½ýÈß3½uÅsíæzè¾wÚ¨ª1óÄ
+6N$½û3
+éЮj³øÚ-Ü94j³;·¿;¼Ê/âó¯óà}) ü5|¬µïUóç׿׽üwyµ{ß>>+îñò ÝÝ»§Óçéãá[{o_ññãÞñöùHÏ®s\λ°Z]¼Bá>¢j´ðÕcëÆg×y¬¢ÎCfò¤¨Cï¾g¿
+º=Ï÷þÿß×ìÔwÿÝýþòÏùGô=úÿÏ{_-¨q§=}ݵÅnö¾[PãNzû-»k·{_*PâÓ©f[\ýöm|º£Ñ^õO½ë=ͯTz+Ó^©÷½bç³ÙµòêEzkÕ>÷¬\ö{6¾]Qè¯Mz§ÞõÏf×˪=é¯TûÞ±sÙìÚùuG¢½5ê{Ö.{=_.¨ôW¦½SïzÅÏg³kåÕôת}ïX¹ìöm|º£Ñ^õO½ë=ͯTz+Ó^©÷½bæíÞ×Ê8§4êY×=ͯTz+Ó^©÷½bç³ÙµòêEzkÕ>÷¬\ö{6¾]Qè¯Mz§ÞõÏf×˪=é¯TûÞ±sÙìÚùuG¢½5ê{Ö.{=_.¨ôV£¯²Û¬\xókåÕ+Ó^©÷½bç³ÙµòêEzkÕ>÷¬\ö{6¾]Qè¯Mz§ÞõÏf×˪=é¯TûÞ±svïkåJSu,ËkÏf×˪=é¯TûÞ±sÙìÚùuG¢½5ê{Ö.{=_.¨ôW¦½SïzÅÏg³kåÕôת}ïX¹ìöm|º£Ñ^õO½ë=ͯTz+Ó^©÷½bç³ÙµòêEzkÕ>÷¬\ö{6¾]Qè¯Mz§Þõ·{_*PâÓ©f[\Ý»ÚùRæK2ÚæíÞ×Ê8§4êY×7nö¾]PâÓ©c±svïkåÕ)Í:;7nö¾]PâÓ©c±q[½¯Ô8Ó¾ËnÚæíÞ×˪Su,v.nÝí|º¡Å9§RÇbæíÞ×˪Su,v.nÝí|º¡Å9§RÇbæíÞ×˪Su,v.nÝí|º¡Å9§RÇbæíÞ×˪Su,v.nÝí|º¡Å9§RÇbæíÞ×˪Su,v.nÝí|º¡Å9§RÇbâ·{_-¨q§=}ݵÍÛ½¯T8§4êXì\Ý»ÚùuCsN¥ÅÍÛ½¯T8§4êXì\Ý»ÚùuCsN¥ÅÍÛ½¯T8§4êXì\Ý»ÚùuCsN¥ÅÍÛ½¯T8§4êXì\Ý»ÚùuCsN¥ÅÍÛ½¯T8§4êXì\Ý»ÚùuCsN¥ÅÅnö¾^Qè尿Sïzü¹»õí|º¡Å9§RÇbæíÞ×˪Su,v.nÝí|º¡Å9§RÇbæíÞ×˪Su,v.nÝí|º¡Å9§RÇbæíÞ×˪Su,v.nÝí|º¡Å9§RÇbæíÞ×˪Su,v.nÝí|º¡Å9§RÇbæíÞ×˪Su,v.+wµ
òòG}5ê{×åÍ߯kåÕ)Í:;7nö¾]PâÓ©c±svïkåÕ)Í:;7nö¾]PâÓ©c±svïkåÕ)Í:;7nö¾]PâÓ©c±svïkåÕ)Í:;7nö¾]PâÓ©c±svïkåÕ)Í:;»ÚùyG£¾õO½ëòæï×µòêæK·{_.¨qNiԱع»wµòêæK·{_.¨qNiԱع»wµòêæK·{_.¨qNiԱع»wµòêæK·{_.¨qNiԱع»wµòêæKÝí|¼£ÑßMz§ÞõùswëÚùuCsN¥ÅÍÛ½¯T8§4êXì\Ý»ÚùuCsN¥ÅÍÛ½¯T8§4êXì\Ý»ÚùuCsN¥ÅÍÛ½¯T8§4êXì\Ý»ÚùuCsN¥ÅÍÛ½¯T8§4êXì\Ý»ÚùuCsN¥ÅÍÛ½¯T8§4êXì\VïkåÕ:æKymsvïkåÕ)Í:;7nö¾]PâÓ©c±svïkåÕ)Í:;7nö¾]PâÓ©c±svïkåÕ)Í:;7nö¾]PâÓ©c±svïkåÕ)Í:;7nö¾]PâÓ©c±svïkåÕ)Í:;»ÚùuC¹§RÞ[\Ý»ÚùuCsN¥ÅÍÛ½¯T8§4êXì\Ý»ÚùuCsN¥ÅÍÛ½¯T8§4êXì\Ý»ÚùuCsN¥ÅÍÛ½¯T8§4êXì\Ý»ÚùuCsN¥ÅÍÛ½¯T8§4êXì\Ý»ÚùuCsN¥ÅÍÛ½¯ø2_ä¯ÿü?©ÿîOò¤ûÓÿì:I$ÞM?½'ÿéù'äþô_õßÝ$Þü¹þ\?¾ìþÒwøáÿþ¯äÿý9?þQ[ ÿ)ÖZS0ÿ/çtGZÖ?Xw¯Óùò ÝݻŽÆýGuõñõo£ëy$!rßwVèØ}GzÕýyûQ[ÊßñbyåÝ~7ÃÏ[%~à éüýþôþ?ÖÃÊ{Âê'1I^û j¬õeEq×ß×ÇËÏ¿{^Þʯ»Ç îíÜ xï}¾|ÚÛ|ÖÖÒpª*ý Õ\Ãøÿ¬Î÷CáÙ×9B³v(æÎkÑåâ*Lód9çªU.ÞÓ?'+íeÎPÌ(vn©YVdËvÌDc*N-Í¡.ì
G^S²å@yßé@
ß+|Ë4}n«ØìÅ0Áv~+ÇuççÞNþ»àéÀ ÝÛ¸$Në¸
¬n7Sý5Ìp°ü¦o!Í\ûÌðùËE :î9g»ý±ÎüÕÌæh~àªÇ^
döQ=_7Èdº×áj00`×Wryæbò¾üÝùç|U|ûúÿwÏzª¾ÿ wvî ><~,ü'Çâ~áo·È#çëCÏè¼ý^9/Ïð÷ûåüKß}ø÷ÍîÙ{&1«°$Á~w¾|qç5Î xGdê;àó»°ÆèÔ²Í~.äëPæ!¨µá«åÎüÀ =þß~ÔmÅ«ÕQÔ
+kÏl¸ã¯7ùó|®p¼}c1÷ÙXÒ¨ª:ÄZ¼äÀK¥ÄÖwæàÙ|뮿¾UG_:&þýó ÷ί¥TÉý/ïÿ¸oî=Áåý¤þþ3^üåÖ=ê÷9£<¾cf?,ïY cíåmÕj}ÈBú,(=ÑöÇ7å½Í÷©<5ܫӯ×$UÞåÞmdE^xAããêÙJ¼1Þo'a}ÜÛd¶a¶Øm$ØA õ>0ÌHA$
+ >Ö@Øl\|.3dW"N¡$ Bjp#áäÉ#LSÇâ>£Éê ¨Zx-ÒEøM$o<HcÂY+z^TmÒVËzCÁé$±¶åVÁ
+ϯY9³M6lÙ¦ÍlÙÚR»kµÕÚêêi®Úí¸@#K@ #RÒãÄ4Ù¦4ÓflÚÜÊÒÓMZiO8àʲ`,Õ4ªY¶iTÒ©¦Ù¦³M³M³Ke5Û,Û4ªiTÓlÒ©e²Í5LDH1 Åcö÷°·%uÔë]óí×Ô³&îË.뺰 9> Ý^»ç~uÝu˾æ}AÍo¬¤=ûý¸.¿
+×ó¿=ÑǺÊ^·}èúo~-}u¿I$AA$y oêM©l4¿jÖ~½aøÖ ´ k@ ´ k@ ´ k@ ´ k@ ´ k@ ´ k@ ´ k@ ´ k@ ´ k@ ´ ':m¶ÛÌi¤é¶Ûo1ë@ ´ k@ ´ 0X v'îü¾äA¯¾ÝÄEÇÛyfÖèÜý·öE_µ@A ²j±¨
+±MëëçÄû?OÞ@ ð®¤ôùJ¬²Å?8ðÔà$|÷¡è¾û,¼¦p:ÉPæóKô|ÑSq½.¯}IyC¿LãÈóÎtåøsï6ó̲³t¸ÐLïÎ`qóÿ1÷ë>ÿmúí#ò»8I$I$ =õç{ýo§»ÊQ¯¤0a£.eAD37òf6kl/aÐÎ%ÔÜBÂPiÖæÎ)nÀâá§ctÄÅq
ÈU0㤱¢ÔL[}o˾| B9"ãȲez^Ñ`fV>w_7®û;çÛ½ý¾¾=xëÈ Û}?«U}½ñm|ùׯ ]ZÔ[[ò@ªZÚj¬Úåh0Cý8ÔS#¥YªCäó %¿jò]wË̲¨æ#%H.¢ÇV¨^µöê¥ÃìóëÅïö¾_ß }5ÚñëÍíã+¼xõkçx]nzr4æÖªrÛiLjEREaë3`½ª®¹¼oÎcxË4e8pîCÁ¥Í²z>~¶OÙïïß\6ú}wÂI$I$I$ ö½þ|{yó_>ý]ÎÖ]ùt&j+
+T at s 1 .½.ù¼#
®HÔ^ð`¦Õs_ŦûÂ÷@ê* ßÏ6kêÿllÔ®©è!ú}°è`n,èx69¤2|;ûÝÉæ3:ï§¿{~~ ão_Oz[ÚŬMõ÷·¹¼sÜhÐ×éäË¡§5U|p5ÚUäÈRûÌEPƯE¦áKÔwnÝÍÒ±T©ÍÞëγ\á£O
+èd 6ZÑ"X÷ß:öñõú||½þÏnà $I$I40;Î
¾RlÞÖ°VawÊ?QBcZùÐ
+vk( MëIçëfSd¤95Q3å¨ÈÃ
QÐtYÜ(~PÂÒdi2Qº)p
ù¬O1ëY÷úx¾¾ÞÞ> I$I;,Ì1ìDJ&m`±1ªA@¼5`
Î &°<ï:ó?<
S°:^ú¥Ûæûïyáë÷ùkùèö^çgɺzÇãÌÉæ8òË7éTUzF¿¿¿7À] yçÏw¨_Áù9|Uýþ\:úüÌÔëáç.³¾
°ª*E¢¡yuÄÍ/¢OuT^%ÅA $ÙÌw|[ç\Ékw7ÜÞÊÑJ<L¶ÛI2ÚH#Pg-R ÓL PD¤IaMJ[MIæÕ&Æ
+¨×@Æò|^bä$| J-£ä ,:ðø$£½Ñò AtÖ8hì8¼¸`P ¦U`R¨¹ÆÛotÊIJýº÷øøÞ5Ü3v»Ý®áµÜ3v»Ýw)º®å7YÚnÝÊnÛ¹ rw
+ "îî7wuuÎuÌAĵwÝ®å+µÜ¥v»®×r6k]Ên×rÛ¹MÛ}UAí¤?Bk<ó©1Þ¹Ï}¥6¸g÷úûó¯{ïçß¿ýM· ëRã»ß¾õ
¥ø2~Yá}Að»~ß_sõµªíóíõóïãßçÇ<ßÁ ìÒµ©mø~Æ´À Ì5 ÃZ Ì5 ÃZ Ì5 ÃZ Ì5 ÃZ Ì5 ÃZ Ì5 ÃZ Ì5 ÃZ Ì5 ÃZ Ì5 ÃZ Ì5 Á9Óm¶ÞcM$§M¶ÛyZ Ì5 ÃZ Ì5¡ À Ã0|¾¾¨×Ð%ôBVYÃAC
D?qöæÏ±×'<ó[×CZ<ÌÜÌÀ*Áé`¢Ep_>ÚèúÝ}\?ÌÏð¶c|ÞÈ?µesïºÙý¾4%ñ¬Ãò4BäRr6³nYC°Uük¹Ïº,.À¯Ëw캿}ÖMä;þ(××ÀßÕټׯt`Pá 2^vJË @±L¾¶8TCê s<ÕO©]~éÀç0}ðåjHMbß`þp TCTìÙ Æ)MÀ»¯N|¬c¢á½Öû@C&JM@@cd!d¢
§²º ×ÞvFï¶wõÎV®
+t10ªóýüï¬y﻾'TP*ÀöQÈÏ9^UåÉ:ç «G ½Ó¬XÃÞuX÷¯5¢·X©ÜÜï<ýÝfá<aèÑë E6¸pCßsäëÇβuæùÔc}ÝÞÿø ÿ¯Ï¿
+Xé G8|ÂuȼÈRY# D!ó:ß
+÷óΰ¯Ü¾þËý÷绲üCßU#·óÚ;í_¼VÐ2[A°ÁzÎ*ßGóõ³ïßÙ^õzgç©úÿ~{×@úþ¸ÒAçÆjóZÁÅÉFrÞ
+ÔÊ`³: º8{*MùÖ=ÄðÀø)[ükÏ7}ïÁá óòÏy½ìðOCòz'w¿Aa®çn÷ó)^wr}ü¾¦¹¯o9óÙïÌ`|ÙêyNçÊì°A!uýïoéÉJ¿}ú
óÎ_-*
+øRw#SÃo8ú®õYß-b>uG¤$kÄRl&Ý)rKªc(a6Sm¤l Â(è$4 ¨ , vq F¡Ã˰¼dSÞeä!!ÇÅå~ ¡á@Ã0øA"sDP|àaárL¢SÍ|q=âðK\OI"J.Ü
+tQt' #
+°¶Æ¯oõË.¢Y³fÍ5lÙ«fÍZndÓVÍ6jÖíuvºÝUÂDsê¹ nî¸ FÜk¸in×kµÖívºÝ®Í[6jnf`ÜÌÁ³VÍ4PÒ} söÉ@8pÀYx©9õõïÍõß.ì¿ Z ÕKÄÅ㮼ïªëÎûªÌÉ GÏ¿x÷¼óϯëïê!WÃëüø}ë{á9Þ¿:@ï¼Ãù¾gùT÷½ô/·|õÞÑséëßçßèI!ñî÷ú/=Æ%Ip¼K©&.|pª* sÖùñÞoÞö÷Ïÿf{LÀÌLÀÌLÀÌLÀÌLÀÌLÀÌLÀÌLÀÌLÀÌLÀxÐ bJt ÙfffeÞkX3 S1°&àóãÃv`Øâ.¢x@ÊÞ3¤P?K~ÐóíßbYó³}Í©uÛÀ^߯STö äú
+±¡ µ¬}9Øv4»ihÅ8ë8Àç"ýýÌg
+¢¨ÖV¯ídÆgí¤ 2>ÃÎTñ¶¬æ3 P+gÈù®g£ïÌu\À.GY¡£j dÊfÓç1ÜÓGv6ÙUÉmÅüßBæ/]Y½ÅàØÖP63£Ð¢ûõr½årÁzÔÄOJÄ59Uó2f¬tî#ì´âÐÈ"R
+Óx³g»L9*©Ü: ÁÀéÅçH+júóSÏ=Üí4¨½óºÓ¡D%¤D4Ç*@)ÎU@ÈwªËD3ÏpCS`P´®°´ ]oÈèJCP ÔRNYeTU*
+©HfÝÕIßw«+x<ÉíÓáÑP.@!(IÁ@ c¾R:
Ëj³÷8\Éts E2~()É)A¬õ ÷3nÍÇBkFê)ZII¢@Îkz¬àØ6îI"ÒzV¨!ÕT¿«Ýò`¥Á¨à¥;Ù7N!zètkB«õê\ÐëS u
Æ!/ }©sÈÖô:Ñ¥:ÎGJ¼î½!õ×<¬!¶kn(]°´ì¬dA·ó8Ø/I¿U9'â°×)\8>|Â0YÌuå=Gqdk7½¹ME·w¨kAopDÑ_V&pDM¿Ê¨ïçöo=tü¿<ó »6¨¯9BCYVçfKʳ8Å;õÄärS¦J=835F@Ô
+õï8ðmT¯4.|îK³%<pգ üûýorñ÷Ó¯ô
çW缿ÛïÓcSËÇ·î¹øßwʶÿ¿\î#ï¯KÇ¿I¯OuîUëá*]æºÍ\ÿTU Þw2×°YP%8WÅ¡Å2G$
+Rø§nSI¤¹DÛìÒë3¶Æl Y%4SAÔ:P,ñÁ$§Dlë,Üh"JDpm ݬâV0øòy:2DÈ~b)¾ "¢ig ¹" k*N$@>Jp#áñÜí6ùy¯Ó1X w[lÚØ¬ìÆcÍ¢#J¢HƨSv»¥7kºº×t¥
+n×p¦í§Ä¦ê×)$ F(!¦Ý®èfí8¥vR»N)]iÉë8¦¥%H$¬ ãç
+h,¼ÔÝvÞ~k;q1313R¡fÞ¤®¬5ÔbûéçòÕ_Ç1]¯õ9üôO~ÈÓûê#».¶~OÏàôý|B Õ_â¢wÈH)$P¡%
+P¡$©¨xð{Z` fÐ a fÐ a fÐ a fÐ a fÐ a fÐ a fÐ a fÐ a fÐ a fÐ `é¶Ûo1¦S¦Ûm¼Ç fÐ a fÐ Á` a
7yXØÈ¹6T1H
+¨åA|ÝMuçpÑß>tpOÒ d<ʧÏ(dZÒy U®f+9p
@ûûÂÃ`Z°ï®ø Áò80°\MÉ"|Ýüáß^w{Ð/O aô¿zËGUÏhçóWì¦wݵvw½amÙ²C»£²¯á{ÊÇñ"?ß~ïçÜ}Ï'£Þ?¾¿ ãÐÀî¯ÈýAIï˸_¯X
+ÆqµÜôóµè7êÁîhÀ(vyU'{Ê׳Ìêêáéf.ï8Å^
+æq×î»ø1a:¬õùìɵËä¬'#e²'¤qÔL!³êgæîkúÕP-q?¦ý}¾ü]ÞcçÀ?#kð-ïo#ÊÚì=X
+ÂÆ¬)9
+eh À÷×~ïÎkÌè4°¸ô«WºÇî×=ÍNéÇ),Ⱥzo¼(uò&§TJÝuzémä
+ÃÂHYX->G#j@æ'ºë{Öºó¬¿bG þTarÇ]ásäÒ\£åhQC=¬@@sÌv;: p3$êÖXLî728!ö»ÕçëÞ¥ä "nY÷μÀâ3I¤î)9Kaʵ©dn
+ðÔëEg³½æ{qæn#ïÑùè»Ûïê©wñ
+ûñ¿»Øj? >¥Gð|Br¾V~c^ùWÓXBóö®ü¬Býó$¼|êæq=ßíy×5Ðì:ç@äÍbâüuD~
+Y%Ùé³Ás
+Ta68OXǹ>`¤q¦
¦h%CÕ¶Û=#¶Ql1
+#¢j&Qæ¶HÃiATÚ£y at Q=id¼!'Â/5C¼Æ2¤]Àø7è(ÃÂBM% ÊñÐÈ68C#\|y#aÇa> $ÎÞÖØÕÁuéJÕ$hÙ¬nñ«»²ÍïFÆ m£iim¥¥-FÆÒ6¶ D`XZZXZÚZA`X`\ 51©¥
+Bä °±´¦ÂÒÂÛK
+m,,,mÛKKK{Uâ¾êYfi¥i¦i¦i¦i¥)JYfi¦ieRlÓi`ËcL
+?c
rõ«ß^uõu®u.É5*rï}[ôYxÁAw; Ts[é¬Ýßbï²o;jöWkòÇJF¸ódo9]æù÷ííãÏÒw¸@ ð¹$7*Ê&ñux1 Vu+õÏzïÁïæ{LÀÌLÀÌLÀÌLÀÌLÀÌLÀÌLÀÌLÀÌLÀÌLÀß·Yíì ]I)Ð fµyfffeÞf ¦`
+f §ï^·ãÖ¼{Ù IÎá¾UI®¾y¿:äå#Èȸó "½cwæKn4SØ5H£fCuEøSÞ:á/)aqü`1Êήh{}ot³hG-íGlùU'ìù¾jg ½ø`sÑÇåaTUÞ>ûïó8gÀB>
,¹
+A¢@>ü :÷]àvêÉÕÑ;AW÷º÷®`!½þx'Ú1u WtQó y}eº³uü¼òõÉ·ÑsAÐ1Ñ«¬M곿¯<9ôÓ!Îý£½>ΰb~Xú¼NûûÖò¿Ï;çñ¡üæQìÐáÖ·'!.aûÀ rúùß1ÖgY÷Zöª*ÏwûëqªÅ~ìâÉ®0Cì¨*§H¥Ô1,
+DE
+·Á.Ü.«?/É÷ºM7ÃXIáÕG)¼:/¯¿>Ü¿kÎdÄêwõOÈoß}O.êη ¿zÆ;ß_#BCöY5ë¬VÊ!ðVï ZL19RáÒdÏ]õÖ~{Âë8ñ2w1x4
¸UGbl«°o~Ï0åàãñÜ
+È:u1«pcY= nj^§Z´¥Úu§dFTs gÜóÉu»ö±åàpY:ÌòHèîÆÔ©Y08RÍ£¯hu¡ÐpÈP2¹Ã9&(ÕÑAÒØsWÞ·7àì-yq±M=¤O·ïÝûïèîw1óô<Ið^TÅøøýõPå !Ìru1|s7÷!sQɹùï¹_±Gã8¾doWÆ>ýô2¨_²¶I0ôê{M L
+,]0L£J×36^äI¬ÂId¤ÄÈ q(
É%6Üày¶!"
+Æ`5Xñ$¿Ì8¡bGÃåî9<Y¡cÞqÄN´
+üÄS¼tT Ò xN`D4{±äW ,1ï0G
+òÌ
+ÆKPû
+J¶mjSNÉ$Ü<ÌøxÀq#c`U¤m,
+´%É#&öÓ´¦ÛNÒ»NÓM7ZtXe$ ³MÉÈá©ÚnÓ´®³´®·sJë8ØêÎÒ»$Hê-G:ϾÔ4d(£«çQo»³3óVRÔ©é,åèT½n©æfgØa
+ÀZ#Öï½ôz'ÞÀnÁøO[à?Íñn|û~ÑÁï¿)÷W§ªC³3qÈ
ÙÎÖò§»«qÔþ£Àaíik@ ´ k@ ´ k@ ´ k@ ´ k@ ´ k@ ´ k@ ´ k@ ´ k@ ´ k@ m¶ÛÌoéÛm¼Ç fÐ a fÐ a f¯ª6;`1%§=|ùæsÖ<E¾cÙ`TÖ+He5¡Æ:ûÐ:»ëi
+,¬Eiµùf®ÁKuèjèî^3¡Æa"KºÝõæ:èÙZïEPÍWdFQ'Î^|çg>jÐ&CZï^Y(D¾ÂÊ,Õ·`æ ä9Ör,å%À9[WuÂ8»äÂ0@ÜÄÄo7º(aF®¥)`¸²j¤ïÞýçw¾¶¶÷£¨8ì²¥:÷&³F!!BC:îIup`½ûf ¼õî@öiB ¸
(@1:Z¤Sfî\©;êê0cQ:¯*Ô
^1$nUI×^×½wzÈ.Õ/Zô0#Ô*X](yå-JJðÎæ@03("J*Å#º-ð Ô^EI|æ«&êªdÈãS
aWu'½nûë¿Qpd@Ý¥ë
+ù®²Ju3dLác¡Î äz&A=÷N]_y°@ËC;Æ\Êâcç
ç4f«68³ËÂãã5&ùçG{æ·Í×z×Ï /2)y*£Ø}B@ÉY4YK»ò°ã%ØÙ}òëA®±°àoZÞWCGWöÞi(ð ë3¯¶Þé#jð¦jÖ3õ!J!
+ø8³Ó&X8Ù)yDɳ.]j5¶z=ÏÛï4QS ¼°QÂóB¬£%TV8òXÞ:ÏÍ®wH&g5HJÝ
+ÌwòîõIÄÓløPrÜÜCFeHCæ7Ô_ã?gñßãÏ7oßá¯ð_>ÅBCuùô!RÌÑÑE cX_ÎwÊß*Mü»õ}ÑXÜ×W2`îcõ¾Ì!}_Ý ?;úp<ûùoïÒ¾÷óÁ² Ãî9S&jµy®*£ûYÙs%÷ï7ç<ùX²&&f$3|
κó0ªìqdFM4ûïοcð1ðúò>üH?MùÕ|Â,Hç:züè7b×ÄÝÓ×ßw£oÍôü( >Þ8¡ùm
(Èà!ØþxãëççM»ñæ~ Á ` 0@ Á ` 0@ Á `ôÛm¶ñ¿´Ûm¶ñ ` 0ýMCËU$û{óÞkäù£Wn~÷ª.ÁU#lï÷üþßÄGóúEåý¿|S¨÷®Þübük÷èý'õß}¾
+ß(,ý-Ãæ^¯oö·êÏÅñþÝ_ìæÄýübGßÞ÷0<ó|üà ?>Úçèü4EÝù_Ì_àï~;óÏÛDÀ|ßÙIcóêÿ
+]¾z·ð¹ùÖ¾j½Åë ¿9³ø:0BÝB?¸{ÏÆ§Í'ÚÏÂJ¾Ä{N×">û_<Ü
+ÍðæôD¬L=1á¾¹Ï|ù5ÞÏÞõzªýGãóÍø¿w¾È>zý¤?/êDÿ¹ c¢ùÏô÷£ µfüýhÖù×ÂîþºÏª©3ÛÆ=ùïÍçOùÕ÷7Cûk|NzWô
+;Çïu×¢¨ç>,,¾÷ÞùÎÿ6·dLLÌM.ÀíÌ
+í\oãXdj»ù¯1þI³ü_Ò½øO}qÞ(L7
+:ϾõÓa£·W»Ö¹Íäw\»9$DDççñãc~l m¶ÛmüÛm¶Û ñ'Î{5ºÝùÇéçZ=ô¬þ2ëY÷¬fî`÷ÚóWÑê>ñþ}÷o©ÿ_~q½ýx<óоûØrø ³ÏkyÍùZç¥!V+YáçZÏP|Îϵ(;
+iEö#ïµ>uvNÅûqpû®çÆÌÃ}ïÔ[óï@zs¿ù½eÚc ÖJ
+ï®]oÊÇ»ï¯h ËÙî}êkÛö·Îβ1Z}Öw~ÕõxuîD}öÎi\$¾ú>ßÑùÑ?·ùHCõ"w~õùóüz08kSDÄÔku®÷ê¯l1K8/i
+ïÝùû>óÏ/=wòüúkùýߤx<×xïYë޽׺ùåLy<Õ"ªoZóÍ(;x3á!|r\9ì£3Ï{¼n~g§Pk_â>úù
+F/ÄÏÆãóý§ñ=üÑÆ5£²3îð| Ìÿ$ûõSõªÁ·¶ö´µoÚtðê©L;ûÞÕ%×vqÿ½ííÅ Eï½Ö<÷nÎYÓ Ð¸pþþÐÀÀ,×p âwo¬Å!£+ p&_ðÆXfX0bÁV¬ÈÊ@{
+®Ê¯þ þwía3)ßP5ÿ_¥¯¬¶éWª¯Wù?ý ?Ùc¯@reÏþhñ ÀOO. Ì~ n+2GÔÀC§
+þ2;dtþ 7éýÞ]pMçïójûþð ï´øvÖìfUê÷ÈÿªÍ*´¯¬RbWªüØeûÙý×n3
+×.]¸Ã àݸÍÜ:]»$Àà®Ü®Ýº¶ë·nº`Wn$áÛ·]30.+·ãuw30+·8Ý]tÌÈãvè!Ë·næfvàÃâ»q]¸3â»pfÆ»pfíÁ·`\WnÃuvãuµ®î»·I##M5#B}ÁW «W)[mÕæiei¦4³M4ÓJi¦SJSM,³M4ÓM4ÓM4Ò4ÒÕ¶Ý]M4²Í4ÓLÉ,³M4Ò³M4¦¦Yfi¦i¦i¥(i¥+ÛUí[mùx(À!?@«W@ÀUîEt+x^ª¥RÿR©xÑv$Uü¥U{¯B?Uè*¼
+«÷ʯç*²¥Ùø
W´Úó¤l¥ÀPUs"«Ö
+ÐúÅR©{À9\áÂ4=à<@|¢«´ªØt%Oz5ãªU."«ãN@w} >«À@½3U/Ê`x±Sî`^ ªõJr«W(À
+T8ó ùWW¿Y
f-ØØØØØØØØØØØØØØØØØØÙ+b¶+b¶+b¶+b¶+b¶+b¶+b¶+b¶+b¶+b¶+b¶+b¶+b¶+b¶+b¶+b¶+b¶+b¶+b¶+b¶JØØØØ¶+b¶+b¶+b¶+b¶+b¶+b¶+b¶+b¶+dØØØØØØØØØ¾êÛe²|V]««ë°Æa
W^«J¯¡àV&èUaUÞU`òÀ*¾NrUȪí)̩䪥;W¨ª÷C«
+¯¤Û¥<@s<
+®eW:Iø¼90&2¦#; }eaUÄ4ªì*»
+®ÑU¤ªù@tÒ«°ªú=WÏ×ÖÓ-ÂÞUÙÁUå Á(¯KJó£è*¼À?ìÏØK«ë ðyUßB«Â©T¼ßTªÒ«ØUs*»@qðDª]òø1'"«8r*¸çT°hz¯hʯùùyUêøê¶ÅV SUq Èå*³xïªU,0ÅTª]WAT÷ äR=V¾uC at pUp*ëúÅSó*Kª{aUw^ØK´U}piUøÈòÃç*½«¸ðéUòU*
+¬*½ 6JNJ÷#Ìð£Î¬=ðúk j7´]¾(åè¨*¼@<à0*Iù¨øÅW´ªøÅWt3ãªU.â«©*{J¬
+¬%L*¹
+¦^«ÓxÃiJ= ;ÀzyeAYEü7ªà©î%Lϼ± 42Tè?KÀ Ur¤¢¸ççU*£è*¹
+¯´P²¼ªÂ¤:! 9M%w_0^eVrCËI?)r«ÊUaUȪæUx w#¼fèy@}j;Àa*z¯ Ç÷ÂÌ`1U%RU4ªiTÙT301á éTª_À¡J>"«ØRÒñÚ8ªóK°]
+Qæ
W2«åòvùJ«U
W¢PÒ«ÀªûIU|0ñ_AÊ®â«ÜOaUàU{J¯gDpUyÊ®à%Wªø«ÜR¥WB«½åWS³Ó@v;Â)hªÂ«R©háà`ªÈ}@
+¯)*u êJYUú#Èz)w æU^ ;ʯȪØu*°UxÈ>ØpUp%J«ãG«ÞUzÕ+À¬LÁUÅR©uÈfgóU,©}Ê¥RÅtÄÖ\X
+¯ÈêJ+³¼ªõ]
V¯@òªòåиªõ\¡ÊíªU.Øwö T½ÅWãá©rGIüܪø<!ôȸ̪í«Qä*¼%WQ*C¶Pó ð*¼åW»©à9£J®¾%W0¼éB%}ªú¼þ:à%NÐE°ÈGÉÙù
+¯!Uè*¼WÀ°ªýÚ¥Rù¯âªU/@@ªì«ÊFCÒJ¯PªçÂ?2ÁUÌ;ÿ,Ô)F£µ%RôV T½`= ÿmÿù
+É2Êâh WÜ?üZÂ÷ÿ( ÿÿ @ <à GøeÌÁ!Äô *åU?zªh 4 4~¨5O=AJFLi£LL !AMJ§íR Ð Ð Ð4z SõU 9¦FC&hÂ`4hÄ
+2d` TQ<òh Ú4SÛôAO¨þ§ï>c&ÒFÆL2Sá40`lSâHøÖªUZªµ@ä5 );)¾H(X²I!>?f$MÒLðö><kfÊPÊ.ßuÙªiz¬ZÓ»=ÔÒ¦d]2¡®±xdÕ
+SÌò õH67)¶Û)BMÈ&mµm«mµm©$×å
Ul#DUc c#EhÔ®îéÇN:wѶ&r)ÞpO8ÞÊêðL×r²{¦¸§OX'i»JE=Ó\S§¥7xS(×]÷ÎØcS5¡'$øJH+Í2?iã<=Ûm·xÛÊþºä_Ùz^ë×ÅU«nÄ´$ò4<ÂM0(dzÕï*pé£($§0ç7>³´á¯£¦£è ?ÈI½Ý ZXDDj$d%II¶ÛmÄØ6Îp 48páÃ9Îsç9ÎsçÞ éM:îóc®9k³@\R¬Ub¢$F|±2F$$G¬«*˹C1Ó|Oä¶ÛaQjICt-óÆ*²<6É$Ù$&ÚäU¼k¥)J2Ïl
Û Jª ¢©IFOTyKk$ǯÖgRC×EÆ
+Ms6¸Ú^X^Z4Ï-tÙ5ã__4ö`ðà "P ³ùõ}¯Ö½5[k.¨¶¨¨ÐaÑly2êj ´cC4[Lº¢Ú -ÐÍÇ.¨¶¨".2¢Àf RNàL½&¦ÄÁ¡à|&)'«ÉÏéç¾4¶ÛVÛj æ:IºI³ÔÅÁ/¼8d®7\,¶jÐbÑBZÖT©5Ø$ùBM·ÑÏ}paÃM÷µm«e°¶ØsåZ·/Råz³9
+Øí0rG<6Ê.pÛM³ÂÖÁ²$ð`[i&æÅÂIKBMA33rI
$¸0Fh³\ëbidÛ->¸92å¯+ôâÕ°lf )«ò#yÖd8lkÔiíÀr×1qtÙm·I¦ºìÂM^_XIÌ &¦ÜvÇ ´,ÓÙN=:µ`¸ÓIc]»&¶Ì¬ol»Ù&L´ÎKÔ$¯hÌhiûÃa'>PI¼Ih+` @úìRH¬Èª¡¡HºÛm¸1m·ü>ã@àh}çIôÃî9i÷þä?(}B? ÒxÐÐBOÈ;º{Ø6©$ÁÐ)A'ç)$r)ÔÐȧ¹¡MÈ`h`Á&ÃÐdèu)ÄyÆM às2=ÂD=fÁ'#RàÚS¸às 748øêMí")a'3Új5Èvñ&§PqÐð;ºxS¡(©±©Ôt:´ÔJÐvâr)¨q"OÌ{MJCrØÁ¹Ì¦OAâN¡%#ß={ã¼BzNòâ`Ø§Ìæy¥?AÌäyqMN¤àj)àh49RwJnv¢IJw&BO°$ÀIñCBR$ævæÁ&BNó$ï 8s©´ÔäR49Iöð58
+îxд£´vdr =Â"ü]ÉáBA!_D
\ No newline at end of file
Copied: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16amd64-8n2c-cpusets.output (from rev 7493, mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16amd64-8n2c-cpusets.tar.gz.output)
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16amd64-8n2c-cpusets.output (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16amd64-8n2c-cpusets.output 2010-11-24 09:21:55 UTC (rev 7494)
@@ -0,0 +1,67 @@
+Machine (phys=0 total=41943040KB DMIBoardVendor="TYAN Computer Corp" DMIBoardName="S4881 " DMIBoardVersion=S4881 DMIBoardAssetTag= Backend=Linux LinuxCgroup=/dummy)
+ NUMANode #0 (phys=0)
+ Socket #0 (phys=0)
+ L2Cache #0 (1024KB line=64)
+ L1Cache #0 (64KB line=64)
+ Core #0 (phys=0)
+ PU #0 (phys=0)
+ L2Cache #1 (1024KB line=64)
+ L1Cache #1 (64KB line=64)
+ Core #1 (phys=1)
+ PU #1 (phys=1)
+ NUMANode #1 (phys=1 local=8388608KB total=8388608KB)
+ Socket #1 (phys=1)
+ L2Cache #2 (1024KB line=64)
+ L1Cache #2 (64KB line=64)
+ Core #2 (phys=0)
+ PU #2 (phys=2)
+ L2Cache #3 (1024KB line=64)
+ L1Cache #3 (64KB line=64)
+ Core #3 (phys=1)
+ PU #3 (phys=3)
+ NUMANode #2 (phys=2 local=8388608KB total=8388608KB)
+ Socket #2 (phys=2)
+ L2Cache #4 (1024KB line=64)
+ L1Cache #4 (64KB line=64)
+ Core #4 (phys=1)
+ PU #4 (phys=5)
+ NUMANode #3 (phys=3 local=8388608KB total=8388608KB)
+ Socket #3 (phys=3)
+ L2Cache #5 (1024KB line=64)
+ L1Cache #5 (64KB line=64)
+ Core #5 (phys=0)
+ PU #5 (phys=6)
+ NUMANode #4 (phys=4 local=8388608KB total=8388608KB)
+ NUMANode #5 (phys=5 local=8388608KB total=8388608KB)
+ NUMANode #6 (phys=6)
+ Socket #4 (phys=6)
+ L2Cache #6 (1024KB line=64)
+ L1Cache #6 (64KB line=64)
+ Core #6 (phys=0)
+ PU #6 (phys=12)
+ L2Cache #7 (1024KB line=64)
+ L1Cache #7 (64KB line=64)
+ Core #7 (phys=1)
+ PU #7 (phys=13)
+ NUMANode #7 (phys=7)
+ Socket #5 (phys=7)
+ L2Cache #8 (1024KB line=64)
+ L1Cache #8 (64KB line=64)
+ Core #8 (phys=0)
+ PU #8 (phys=14)
+ L2Cache #9 (1024KB line=64)
+ L1Cache #9 (64KB line=64)
+ Core #9 (phys=1)
+ PU #9 (phys=15)
+depth 0: 1 Machine (type #1)
+ depth 1: 8 NUMANodes (type #2)
+ depth 2: 6 Sockets (type #3)
+ depth 3: 10 Caches (type #4)
+ depth 4: 10 Caches (type #4)
+ depth 5: 10 Cores (type #5)
+ depth 6: 10 PUs (type #6)
+6 processors not represented in topology: 0x00000f90
+1 processors offline: 0x00000010
+5 processors online but not allowed: 0x00000f80
+1 processors allowed but not online: 0x00000010
+Topology not from this system
Added: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16amd64-8n2c-cpusets.tar.bz2
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16amd64-8n2c-cpusets.tar.bz2 (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16amd64-8n2c-cpusets.tar.bz2 2010-11-24 09:21:55 UTC (rev 7494)
@@ -0,0 +1,68 @@
+BZh91AY&SYþíº {ÿ§ÿÿ¿çóïÿúýïÞ ÿïÿð% ! "/ø`,>Núú p ð¼ô=Ï[5¯C'Àè}åß`³ÈúÒð¼@<8 $Îõ½qS{»Ùî2·³¯Z.¹Û´g»Ús^ì $ þªªgÿúª¨50~¨2` É` À §QSÊ~¨Äi &Ðh CL@Ó& 4?TmD SÔò=DÈÂ0 `0 Ó
+ª)©ú¦
+HMO)&ýMzPzA¦£Ê<£ÔzS at zOP Ô
+ @#M4OM6=L¨ i¡¡µM¤=2á ¤ýÐä øøÄ%1%ù0t+c,'¤ }CaX@ù!:ßúá^ÀÐZn0-RÓõë~¿ì;hl¶Ûm¶þô?ôw§ü+¯ºûð=1aTôTÍyV*bÚ"*J* | sÈ©
+-@(Â(ýª¢!¿yùöôúuNÞ
+j´ ÉiAy¨®¨ÚµÝÚ5Fz£®f#âT*Që֡ɶq B« MA+Òb¤ Å)¼¡)1BJè¸33PJèohÔbYdnI$ÛnÉ$24ãPÚªt§l7dHÜ3Únḩ«·r+µnÃ0ÜîÛq7kÔÕ&Ö((a(¶(¢7m#Y,M& Âi2M&I¤ÒE0Ã1E´QET¸i³UwcnÉ$ÆÛnÉ$KK%nÙ$BqînÓìÛ[m´q§§w6±¥0¦¤/UÆpëgÖpígÖpÑ¥iDVQD
eÏG<F¹çÎwçTëB§"¦¥CEàs®zë[pm¦9ôcÈé-`̳
+ ¦NaÙ(N&Uâ¡Ð`EÄÌÄDRáE4ÕRµI&R#Ebbààbàâ¡)+M4+N)-8âàã.)b#Eb¡ÑI÷
+ñÉ]8.87fe têIVÆT¥9Xe'1EÎWffffQºQ ê(¢Í(sâ$ÑETJ§`1]66âÃÐ4¼EÆUu³33(èS\
+ETtÀî8)4QEDÈu£jy·-@
+åï" * *c¨+`C@A,ÀHA2Õ³
+EUH@«@T
@1
+ {*ÖDù¼>Að
+d{Ô6Ö.^áw캪ªªùÂô#31\»CR½PÄÅUUò
+hyüï_/u|hy8XøOjöZð~;ÔrЮðjò ù¾ïW5|úÖ³àÜ v]Ø s7êkv]Ø Ùwfeݳ¾&/{Í3(äp÷
+ ͤÎ[Re$ËÓ*ch{2±EQE6Ý^ÛÙø¶MuZÑs\¬QrÐi1ËÚlÙ2bVpi¹` ËàbÖ
²m½´KÍjص¢Z(¢d÷®QDÍ:QDäß%²-õ«ÌÉ!{ÉÑdddddd]
+{WGIËírà x;!ñ¸5UUUû ° C7ÞÏOãÓÓ¶÷È ZMñçÆfgùòøS®Ãm6ã3+m±µé}Cæ~ÒM¸Úï}øé¾Ûm¶ÛmµÛm¶Úm·>qÇqð2 J¢Bh *Bªà ¯ìðÄ{tÔJ¾Bý'üñßSÆïwù\ï¯
+ç>¿Ù½xø ç ØºF8SÜÖ¼=®2×¼ú*C2EáC[ݯFlV'ʯ©:ÛE¶,ë)ÙÉI -²GbLR#[å¿=3¾/ú]c®·{-ßF"Ûc®rRN+:ãÔɽ1[téý°Àv$ÜÚ#UsîÇ».9éÁ\¿¿¿Ãå¾o¿p£1]*åcg¯¸ 7` s<úúùõ5lvø ìïñý z>|ùóçÏp ;vÞÞܲ;m¶Ûm¶Ûmeº d ½í¶W$¶»e´æG-;%û@ ïeì½ý` NÇojͲÑ+²Úq·-¶Ûo° =à x r ðì@°õþ Ð;ÃQ-H×myN¡RqU.ª¥Àc3TEINj2¨JrÐ¥¹"¤n]fY¼^mW^ilæ³gã8prãõÔ¨}aüaâÃsÐ
+äPd:Á¸`50°à d'Ù$úCÔ.I;§¥HôOtõ,ù±1¢¥U >ɨl0m$Øv 0 }jIpUsiÍ61cµkcuqðäÝÍËпéß*
&&aUVaT UPU@U T UPU@U T UPU@U T UPU@U T UPU@U T UPU@U T UPU@U T UPeq¦@ ÆÊH9!T#ªÎUçB*oB*oB*u¡B:Ð©áÆºë¯q¶Ûm¶ÛmÏÇÆ=ßM!:õëׯ^½wO¹îø I:tª®v @Û Ø
+¶Ûm·wAR¤¤N¸wnË 5v
+¶Ø¡7½UMñË˺êõ 0 {JÖ\jõ< 0h 0 ± !m¶ÛbʪªªªÁ5ºr o¾þ=¼wÞ«
+ª *¨ ª ª
+ª *«·nݹ°à&)UUVeUT ¹Q¿ªR¤ÍSk8§^8£+pfÐ)Ùt@Ã&à@o7L¥¶üYÆåÍcÎü^¿*§[
+AÀªÛé¾µÒï¥YâÓï«x¹p&oë }>õUUUÜDÛú@ÍvﳩC$ÊECRÏ«yZ};ÆJB³n·ÑêɼØê~ñ»ø¿}
ôÆÖè[«bÝî7rE%Ú9¦zÝI'S$Ör` deD P ZªªªÀÕõBY°òU=o&¾cÀï'-eÎûæ¨UTv·råæåÊØðH©)ïïîî¸þ«õÅÅÅïîº:@éNó>@¾î"þ»îöên»{ç</ û§*Óªl¦È~)LÜâbLAýÔÀj9NN'õ;ýcüHÚGÛp|9Kqdät'gC¡ö¾«ø¹úOi?lm¾{Bl={Cwæy>jh|ôºPø~ÉéÚ>¿Åñ~{zvúþbyÑD>!)K(¨§û"
+"»Véz9Û·pLBIþd
+e.-¶qK]6gQq<c\´&.kÍ
+ Iä;C)2ªLD!F HæØ*m¾æhÊNúí®³ ÍmDqbÃ|eø´@ßæToZgËÓ9Îp õ%}¨ã<=©@3¤pyºbZ2&ø;ÝG< ï
/èòañÉB,ä='E9JTp!la²ÐE!ð¾Ê\'32m8 Ý»cÖDÑW~ßùKÒâDë?Åsé×:cCIÆßÆÙ²J<=Üw6 IH$̹$ì .I"øÛ$qøìN·¥?l9þÉнêÊ¥ý£ö}ÇÛ_A¶{vñîïI!/6úãÒïÃicLßv8ÏZbbÞG¤ìqâË~}ò¢DG/±\êHß\.f®±sV8®&4ëlL_W`u8qáËm'× Z
+»
+u®uîÇ:ÛÊi¾ö£¾u8gFøÞÒDEßrxôÓlô9os\ªðb£¡»¦üfP<7¾jªî¾1Ç "b7¸»× $n³'ÑhqU×ç9¢ãQÁ'¶Î
¶ÏZ|,d)ûâÇJÒûð"÷¤N¡|$ &suJë7Äå¯Çë-Wî×Úþ÷÷þ¤~]3%þý#A«*¬Åk~«$öÙíC»¤(nÜÊ
+õd9³¹«I!E
+Úõ¢}Y'Nlî`méÕ¨¡^´Po«$§6w06ôQAízÑA¾¬ÙÜÀÛÒB=EµëEú²JsgsoJDõ×êÉ)ÍÌ
+½1aê(FÞ´Po«$§6w06ô¥Î¢ÛYA¾¬ÙÜÁÕ¤ÕÌ
Þ
+eú²NÙÜÁÕ¤(nÜÊ
+õd9³¹«I &Pݸ5êÉ:sgsV@L¡»pk(7ÕtæÎæ$CvàÖPo«$éÍÌZI2íÁ¬ ßVIÓ;:´¹¡»pk(7ÕtæÎæ%ïµt=?X£íúÞ3ÿ-¼>׸ßY<ù¡s÷¶S:ZU¬-(½=?Hãù$5Ô¾Ã9SÍx¹Ôª·U"Q¦Ië.BJzзW]¡_^¿U¦~£¾¾;ðµ2K8ðªunñMÀD£9jÙh2·y÷ã3Ä«d;'@]k»&wã^yÇLµ#ïÝý·Æ1Ë7eGI°}ðß<ªªªª¨ «@H
+k 2ªª« ä·Ý]oWWc#zVåT*B¨¨PäoäQÉß÷wï϶-wÚ§uÌÖ»ãM¯8F1uP§4¡*ªº»©M,4Csx²¡Íê1vÖu¦º¦Úôfý¦ úGë1[w pÖÌQ¦¥
+i¸öç|íÀüuß[=³Æ8`Æ)·:
+VacPÖкҵ3§LAá¿.Ûí¿ôCxfÛøán¹ÚåAáÑ*¢FçtåIiÁ§f¸¼g\ZôEÍq×3,ñ¢IYÂÃ-k-r¢"è/{Î8ã5ÜûêQ³äyéªÄ»=>aÁ=Ã)ÝRfnÁvÐÝAÍons¶£x§\c¦½*&Ò)£Ôw~QèÛNþAÏ®ZW>|¶ÛïÆ*ªª¨ ª±s*ªª« âëÃìó{lpðÒýü¼¸âc¡[F5HkI$MlD¸Üë2/n/¦.¡TÄÄF)
®Ó:Mq²ÍöðÕ{è6÷ã+ËÂæ³÷Ø/¥QTÖÕ½¹ç®-ÅTâ_µczLLKk(Xµä¶fkðcQ§01ïÂ! Çc\TaÍ9ÛV»ríË8ã¢&1skÚ29 ÖôË-ö»ÒHkî®\q¼ÍÜåÎI×9bðôkmíßÃ]÷ÃjzBI¯qáVXJ«¹O]1Vk|ç<I_íkêå¨ã9diưÝÜDpÆAÍì͵¾¸¹9Û~hçiת kØ`!©RNHHýìÈõ*¤J÷¥À¾êèß3J»å+¦ûuà4ÞS·kc4þÏ©=º|O¯EUU UUU\½ü.<
PØ7ñß~¾§¬måÏ£¹.klLrg]smX>í:8oO§N{wÓ:Ó8α;÷ÐômNú5§3
+i'iÚòÎ ghÂxåxÃ.34æÚ õó
+d`ð
+"Baf:vçgÃWcúºNp
+ at Z© BU$
Q
Z2
+ú$K´AkôÌÛµÆüRëWK§Eë¢÷»©@4u®úðßk¼o¬î÷1×|àãZ]LOQ\¼¼é8ιvëmN¤4o× sükÕ,A¸6
+<îH¦3{U:sߣ;dwr.>E3Zqfn··DiÚ+7MtÓJ×$ÚüÈjÅG½7¾{wa$¼I#/wÃ/~É*s9 ]Uتª«`ñõ}3¬;'t
+¶5yÔÍh7±»âg1©dÀǼkx&s0ö#uùãÝo@®zÁ¾.ø³¬Æu·9Ò¸â9̱Qv^6 ßÑÈ;¯a:p!;¾ù#¯£Ng»ôERñÅÁõÛ×áW}H~F
+C2ækÎoÀY1óy¸]("FJy¤pìàôà9âû`¼q¯lg¼õÔA»tÅÝK¥1.O.RP½¶©k¿sr{úÉ6ÆNº!÷ÌMDAYÂíf«~EªsxÌáÙ
+ge{OnÜíÛ´nö³£ läí²¼T
ÒFúf¶ÅUïLLéØ'¶àÓû¹ËJ]AU½q}Éjz\'@usuïÚlRõÚñr¹ö«&ýû3YªTkµ®]âY5ÉÂk)2ˤÛG|gÎÞ«[KêQ¹_
+q×-Ì¥´ÝSVn×´ËXu
+ÁÁ)ÉÁ¼ Ýh$ë Z bõ^þ²z&®ýùò¬Loã¦]|¶ë§zê ó¯Ö`'ÝÒÀ:|,o
+ßü'47ZÒ0pú¯O/9H³KÜCuìej4$q`7¸éßqSw×T\wk£6ôsã¶ÑÞ<3£;Ý5{Fs¤[æËåÏ]¸åºr½{iÛÌð;¦ÛöÆ:v¼Þʱ×^ËëÓæ
+5vÍâîóuXTºÇYaÌG¸éÏ^ÿîïç]áã5sãÃÄÆVÍo×®ÜvÒ§JÓ{iÎM;5qË;W¯<íB±ðÛ:{ÐI}.z'>Ùå¿Z¾¸×
Ä,¶q¯uòø¾VV
+ùÕf¬®ë:ÞyÓM·ÚÍó¶÷ûÃÕ?|T?wý
¦rêM eÃJ«ª¸"((êùc
+cì8ä :?x=áù¨×ÈæDþ0|ábcþâÇçC, ¨PÔ=ÎùñÂUÒP)úuJ¨¡,?Lp°þСÔlÔxÃ!¸ÀÀØ9üÐn¿ô zý°ÿÀùl( Ø?ë }>ÀNAÀJaa9éÈ]¸ª¥UE5X|øÍnPÐ((¡
!,68&w ;ÏÔt¨h¿(øÁÀ¡<Áî Ü('u ð
+Ê0Ð5$öÁAó ?!ü á)Ý'X'XhÄÁ<Çø|øO #¸49þááàÃ@û¨$üõçI uäIA
ï
ؤ vØL ¾ðâNðä aA,4ïûÐAB* JA)¤JA)¤JA)¤JA(K4£õI¾`Ý>å*MµlÁ: à*!ÜHÀ}UV ¥#`¨nDHÜJ¨AõvOÈâJ%%%DR) 5|êwd%1¼#$Á¨`,> î
+èx(8Å)`R a<E~K.IÈ\7ÁaÀs @
+ÙÈ<íõ@Nt
a;®Q!#é¨x#`A®xÁÜÛíÃî»
+I°yw ûà~â ¦*d`Ä¢A;&RH{Ã }°NÁA> ôhXp0Û0{¨|âd #ôE(7 PLà>O zÁuÁ/!¸NHF`n
+ÃX(¢X¢(¢0ÄplÔM³0üxÞ¸;²Hä %A&G¥òÜ'}pÐ>౨ê=ÁðA¸Op8 a Èæ= äâ@¸DûÃÐ5
+dnŨè=áî °tnañA$xA¸&áïá÷
+>'p;<´HHÀ¡9c¿s *ÁÒBIyÒ»ú|pÀî
+ s<§/ ûÂvv©îA$TAAüÔEÊ;mÂÇaÈ' TÕ"ä<° mÈ;âÛ~ìúwiAA\¯Ðp(sx?=OaP>A.Þ!ú<â¥TEQPzÈÑÀn|{ÂLåïó:8xA¨|Á'@õð¼ "wö|¸~øÌv
+` ù >ðwÀ,n,(<Ôê ÈXu
+0<:Ð2 F¡¾£fLûTðÜæ
+¸* AIE$³ôu¢ #ÂÃ|Ä(0X]èXGÒAO¬24 ³°`<þ!ùµ¯vGê
0}ÜÄHèÐLüöÀO
+ü±ÙäÂÂ<Eh
+¿lT-,$b$G§mZÇ]Cí¸pha˸; 5©+M0À=À'k MÔ#¸?Ì;äÔ~* `Èï; 29u PÂDHà*$$tÔPϰàç6á cÔ(Õ
+Àl;»ÈI#¨$vl8
+0jèXMCÌ<BPs û¸IèyPî è ,ÃBXà'H6©"$A÷C@üâdA(PØðWèm: " "§¶ |ª">¹E1QTS*ÁèáâîßÎÊHHó
+h4 AÛPó P7px w
íÃÝAA8ð
+5°A)A4 Ð%õHÁ(>@=CÀö¤I?þ.äp¡!ýÛt
\ No newline at end of file
Deleted: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16amd64-8n2c-cpusets.tar.gz
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16amd64-8n2c-cpusets.tar.gz 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16amd64-8n2c-cpusets.tar.gz 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,81 +0,0 @@
- ðK ì]]sã6í×ѯàãnÕ8Á7ȼ%ÓÔl²StmíhITI´Óί_ݤHHÞ¶{4¶$ yïAªÒõRx³dÅöqûo?
-b ¥´ÿRhõ
-Qý{ÄJL0ÆÙó%ÑìC$Ç=n<îËtEnïûU¾9S.Ûí!´ÓþÛ]±Ï .³?*-µùJ"9Úgì¿ÏVw£8ÿ©6ûk%Ñþè³ÿáamX«½ß°¿þbÆý5£ÆþdS<Àíÿíòq½~}íÃ@|%ã$þ=üWBqÃ3 பþ_Rä?Å£(æNHqGTÑ7'SR1â8b«$Ò:Dæ53¿!§ÆnÕEBªFT)¥-oªÐ¶<ÓÉKy)Â8â±H1!mñ$æLG 5
èKAÉÄTdÞÊBvHôÚ<±9HÛq[R0ÉcqaÌ_J
-stLUM0RÕ¨AíïXl>T/å¤9*eêaÙºDlKjS©ÙvékãÊ¢öx9[¡ñÚØoýµ¹Â\sTTE´}ߨδDhR5h¥ªssUª
-|)gìÃxl.,±¿66ªP2jþà¬Þ¶©Û\Dmß'Ì0Íqb.ù]ã ©1eLéD±DóÇ:&ÂZ]62sàÚÏ$ç²:ÊhsÁªÃ4)hlCDuybB16EÛ2üK{̹±-+%ÌɤѰ±IhÕZT~F¥9V5RùÅ,ß;Û.'ÚxÐÑëyW ¯S**OP¯T
-ãµ·<áJ6Jà_øÂ¾ð
/|áë^³Eù¹ã,f"Ýù:3c at F'é}ØÍöûl±$¬z¿ï7|sÑãûÛU±ø=[ê¾ö#Û¨8óü¿.7å¼½ó\çÿ5aLçó$Ïÿ Ø,úv=gz£ã?»?*ê|íÃCL3ü7oòÍ]1¼óügpq2ÿ§ùùãͯØýí;C÷§l³,vó|iÞ}ÿX>d2_|ÿóG;Ý¥ë|õl¾¡r¶.ÙêoæoÎGt÷ÓUôbEægÑoËlWlþ£\ÿgôï¢XÉپ̶[sµµÿüÏ?m}4&ñ7©Ù"]<dÑ>ÿÓÖJ Ñ¿~m÷ù´P!íó[c³û½yÃfÛªùâµJûÁá«t/ßP5Ë7y:ÚÒwÛGûås¶·Î³Ïl[æÅæøeÂ2ZeOæM³?¶¯¥W©iݼ1?̸bEÛ}ûE´Þï¢mEëE->ÇU{Ñ>ÛFërg¾¹·ß¤Ñb]<b¥ýWÑbu·zÜ?DëõçèÁLì,z(£ýóÞ¼¹Öí÷ÕØ"ób[F«uÄâûaõG´Ë¶óû¢XFÛMÒ»¹)³Xoç«ì>]<ÏnûboíâªoQ~û¯W\üËÙ½½ Ç£:~©ÄÁ<ótßoÖÆK¦Ë¥¹âûªWè6/÷ÑÙþøðÉS¾+§Ì¶æwÑ:Ýfl=ß+Ýýdþ+ËílVwPúqPú¶ê¶RtPã 1}÷Ê®ÌA©O·¡ÕÉ»wPþqÐ3=hÒvPÊé7ÆÁÞ»+sPæÑ2ÒvPz·xùqз{PFÛ*ÑA¯ÃAÕ9(÷éAYÛA:èuAõ_ÆAÏô ¼í ô:4¾2>=¨h;hzüeôL*Û ^Òk¤OÚ!%QÔ*ÕïßE¯MLzÛEÏt¢]bªI×â¢×&')^´CN¢¨'U.¿½6Aém=ÓvJ¥kqÑk´G/Ê;$%Òµ¸èµJo»èÛ½(ï(ªJïø>îøo»`¼6<ò)I0ÿÞ¶ÿáï1ÜÀÝþv?Ú½ö¯ò
-ó'ûk»þCsªÐþ¸Ðþëlíòýù¿Äû+ó93åpýèÄq^À¸ÿöw½ü§¬Ùÿ3óÂõ 7
êïÝPìÂD7ÿ÷Ïcæ¾lüGSjó
-ÍðùoÛ±J÷ãx»ýaÿ}ö_®óÁ>àa©ñùØ?_B<ÿWö·@öùbþ\hÿÛ"Ý-çViòh£zÂïÍÿ]³?£TkÿCàWÇ4ÂÁ¨pâÿA¤vn£ÿò_JüÀoÿ÷ý/Ñ?õö±Ìv6|`}AHpäÿnosä
-xð_ä?ªûÿù*øo>ÈÊyÞ»µÑ?þ§'ügöä? íaãmþ/³§|1|ÙüQjFø!ÿ¯ÀùôÛßü]fë!nàfÿ*þGáþ0¸Øþby:Á
ó¿ü¿øE0þnöH÷sSƱþñ8±?£¶ÿÇñßô 7Ãÿöÿó]À½ÿ§¢þûÛm]Ú¨ì¯õEûë'IÿǾê¬k@û;Ûó¸N]6í»ÿSAOøÏ¹ÂùX[Îò2ÒJk"fÕûu¾ßGäð÷]±ËòûÍaÍl·ÊÒ§¬úà±Eº[·00a*(ÊlwøDr;ȼsxöÿN·f¯þ_bÿû/ssÍ6CzÿøéøWë¿°ÿD¬Ú5þÝv ðìÿW¦¸¸
-÷ùÎ(Îÿ@àú¿ áÉÿuº½¼^þÓÖóAþÃàe @ðáÿ:[;mÚÃÊhëþOqþ³_ìL
-~ÎÖ¿eºú.ªó8V$~ÿ¡VàÇ]¿bÆccÓfOûlùR ¢ÒîãZ+ðý¢Ì^+°PZ6éI³z
-ó]ù\¯À¢^Ãÿîò2»M¿÷FóUöoWë¥ %²ÑÄÏév[;ãQÔÏbSl5D4ÎÂ~ù[z»ªP «øåÇ_ç6ÆíL×"õ~(ÍÓõÉyvæoëmg
-¿®ÒÛæï¹âª^à²Å*Í×_ª¸~¿~ÚìE^¯T"êþùx¸óßö·5§éøö×ÇÝöõÛ¯Í
áÖÿo½Müç¸ÌCÿçç@úØpÿiý_£þûRÔ% ÀGÿ±ë¿Qÿ>öÐÿ5ÎÿàUÿæqMÇNúÂëú¿±pÂhCÿ74ÆÁÅûoÿïroöêÿ9öÿð±?þëÿ`ÀNÿC8 vÛÀ³ÿYÿWmýóÿ
-Ìý2<ù?½þ/ÿ°A0N;TøðBÿÇù$Yݧÿë¶þ/f¦þoª`õmýJjÚú?%«èÑÿuþ¯ÛúÄÆ1téÿ¼^ ÿG¢qúׯdþ¯ûôݧÿëýZ?¶þ¤Q ÿKVoâþ¯Ïêÿõÿ÷÷þÀèÿ>ö·ó¿.mxÌÿ
-ÿç§ýG×ÿdÇú_ÌÿWýO&ÒØÒ+JÌPHóºÈT
-âÍý}Âÿ ë?qÿ'´V~âúÏ à9þ|ý'Áø_\üw¢¦×óÂç?xÚrýû¼Àñ&&|ø²þ÷ÿÁA!úÒäzGNõ?'RiÖ,P×ÿ¨H(áõ§ú'õ§ú,®R¤Oÿ#}úié*ªÑD[ÿÅõ³héÂxp@[ÿ£´QCþGúô?Ò§ÿþ'³FýOZ¶Q ¥ÿI×ÓÿÈYý þ÷~àÞÿ+ý÷ýþÇÚðxþ3÷|þý!ô?ÿÁü¿hkJÜ ªF
-à81v®Ë%ä)
7÷÷ þ¬ÿBý]¿Pÿã¿é×áü/(»¡8ù.<ù?ýú/ÿÁaø
ë¿B
ÿAô\ÿ
-üê[ÿ¥:Ö±¸¶rJµ× ©kúêXÿ%xmêXÿ¥i£@þ£úôÕÿµ!R©Îõ_ºÖÑz
-]ë¿zýGõé?ªOÿQ]ë¿$¯«#ÿk]æRë¿þpNÿQgõ
úÏûïü?whÃgþßÎÿâüÿôp·¿Ñÿêð±¿)»´áÃù?Aàcÿñóòöú?ÿàUÿ³ä±ú'«¦Æiî *pX÷®áÃýõ´?\ÿ<ÇÓïÿú?â¹0<ù?½þüÁqü
7ü@áÃýó¿à É>ýOtìÿ(;)p²ÿ#Oj+Dþ'µ¨héÉF=úèÓÿDþ§µªèÒÿâú1tè²q¡:ô?ZEþ'úô?ѧÿ®ý¥®CþÔBÑ¥ÿ©Fsú8«ÿ ÔÿÞ<ÇK^óÿ¸ÿÜìÿîçb·NWs3(vϵáþü/Ì ïÿÀý?Ã{ÿ/aôú?|ì?¾þ«Ûë?1þ¯ú/Ü<ô%¹)Àº ÖÖÁäM
-àó»
ÿAô_ÿ kñ'ê¿áÀÿ ë?qþÜPÌ .<ùO]6 ñÿ³úÎÿM_û»ôÍ^öhxÚúøÜÿÕõ_`üG¨ðá?HüæÁA}ñ²cý·âµÈ Ù±þ1Q¯¡ÿÁE£@{ý7gq½øÙÿ!;öÿT4΢ký·¨E;þ#õºÖ7jèÿ}ñ²/þCvÅÔ£7dgü©dGüG}5¿<ÿ!ÏÆHÿx?pëÿé"/÷}»þÏÁø_ þ6ÜÇFÿç¨ÿCÀÇþ¦viÃgþbþøØüüßç?Ìÿ
-Züäîÿ[62 â
-J«Çµ&Â-ß#<ûåÒOÿOpÿøØdÿgÌÿ®äÿ<ûÿéó?`üÎÿ
-OþO¯ÿ#ÿA@ Ø þèÿ¸þI÷éÿ¼#ÿk1ïÈÿ ÚúzíüÖ²ð>ý÷éÿ¼#ÿе,ö¼Kÿ§²^ ÿKÎë:ô%êÇУÿó>ý÷éÿ¼Kÿg³èÐÿ¹¬_êý?iXóþÏÏêÿõÿ÷÷þÂèõ?øØßrIÿï7ÿù¿Aàcýã?aðªÿqJB¹Jô¿8iêÅ4a²¡ÿÅ\Ñj_à¯}®6<ûíßýúý?|ì¢ÿáú_´?Ôÿgÿ?¹þGPÿ»ÁÝC'ÿ'×ÿÿ08Z`@ðá?þë¿@pdhþGÛúSImA(mëÊ<ΫZþG
ëMtéµ%Æ´Oÿ£}úmëL2Z?È®õ¿ëµµ]ùßIýzô?Ú§ÿÑ>ývè6¬Ù¡ÿÖ´ô?¦§yNÿ£gõ?úßûÁÅý¿ùÊYø;ÂIÿãÊôÿDHúìoþy8ýµÕ9Gýîö_¤ÌÉ.³?QvÖßýìü?W¸ÿ7|íoÙgr¸óK
ë¿A0Ðþ«ì)[õµÑ?ÿËNì/Áüo Àܯac ÿÅC¶Ë6ç¹M4ßçv¨Âýüç'ü×õ_(Ë ùÿGú¼wót¿/yZæOyÙÚÌùþoaüÒ?häÿöáyÛøÏêö¿Mwe^æÅ <ø/(æÿÿÃÆ@þo×·ÙÎ ìïÞh£ÿâdü¯$òâ däù¼íïç¿<ÿ
-ùib.ò¿{Âïî÷!$òJüé0òÿ!Ýe˹ùbþöwýO)ù_@ÙßÂÆxü{IH/ÿëë?ü7 Ècðm Ä6aüÄø/´ÿtñ_ÿý
-ù?]ü®ÿÆ
ü)þ·â¿æÿUÈÿ1ÿÓÅáú`üWØÈÿâ¿Nã?¤¸þ0|ù?Nü=ÿB¢þOü.ÏØü)þKµùñ °÷ Cù?YüÞÿAñ_ac<þÿ
ñß08 ã¿BÅ þ_¸õ0çø/Ìÿö.þÿ@úOØÈÿéâ¿ðùÿ6òºü_ÿ ÿù?]üÆ Çÿac ÿ§Ëÿ
üæÿ
-ù?RüW;ÿBþà§Í¾Ü=.ì
-û 1ÿÓåÿBþ ó
¡ü,þó? ã¿ÂÆxü9ÿÎÿà` ÿ
-îü/6v®ß¥
-ëaÊéþÏ$ÇøOàüØpçYlUqÿ|ùÀáñ`þ?°ù°ËÒå|ßëvæÚxÿÄñpü6ÆãÿÛ@îó?cþàüOØÀÿE±Ë.`¿WüÖ8ÿu=@ÈÿçÚpÿK-pþ,pü(ðÿ5ö{.~Oï³y¾ìnÃcüO0þ4Þÿßâ|îüáó?Pÿ Nüß{;Þw?¸æÿUVÿe×ÜP]@¸p½ÿÇ˾¯p×)çõ_¸ÛÿÿçÒÆeö'IB ã¶ÿç¸ÿ|íÜÿõ¢6Üùù¿ 0ÐþÿëÊÏac ÿ1ÿ×ó
üÇü_WÌþ6òó]9pü6òó]90ÿWØÈÿqòµöÅü_Pø)v áb ÿ1ÿ×ó
¡üÇü_×Ù4Æã?æÿºF®?Áõ_bÿÙñ_
-ã¿ 0ÐþÓÅaüpö7läÿdñ_×ÿ ã¿ÂÆ@þÿÅ[ñ_¸þT!ÿCÆ@þOÿÅÿÀø¯°1ÿ#ÅÆ(Iqý(aø0ò¤ýOç
Àüß0ø´Éïòl]@ Èÿâ¿Tÿÿ{ÿǰp1ÿÅáýÿ6Æãÿ¸ñ_ÿ
-ãóÆAü§Æaþ7´ÿtñ_øüÔÂÆ@þOÿÿ@ñ_ac ÿ'Ëÿ
ñ0Àøï°1ÿÓÅaü'pü6òºü_È`þ¯°1ÿ#ŵóÿ(ä?~ÚìËÝãÂÚ°ù?]þ/ä?0ÿWØÊÿÉâ¿0ÿ0þ+lÇÿã¿pþëñ_¡ÂÿÅÆÎõ»´a]L9Ýÿäÿ ÿîü/m±*î/ߨ2Ü1þ³Úÿã?§Ç û»,]Î÷ù¹n÷g®Çø)ÿ Çac<þ¿=ä>ÿ£9æÿÎÿü_»ìö{Åhó¿ oìÆXü?×ûø_jó? ¨®?Çñ¨Àÿרïmºø=½Ïæù²»
-ñ?Áø/àò¯°1ôþÿçëpç¿ÿA7þ°áÊ*.×}^à¤ÿbøO¡¨ÿ@ÀÃþ 6.³¿òIBéø cB0´?¼íÜ ò6ÜùÏçhµÿ% Æý
8þÆÿ¡ü¿$P?ÿù ÿuÿ
-ù?=0ÿOØÊÿK 9ßÿ9¡
-õ_àêÿ°1ÿ$ òà¿ÀøOàø?låÿ% úù/NÆÿJ"ÿaùÂÆPþ_ ¨ÿòtþOrä?>¦e@¸ÊÿK ¹ßÿ
Äü¿0Àü?ac0ÿ/H ä>ÿ¯4ÅùPÿ#òÿÍ@½ü¯¯ÿ8>ÿSÿAeë?BÅ0þ³éâ¿pÿ7µÿdñ_8þÎþ¡ü,þ÷Æ
¡ü'þ·â¿4®ÿUÈÿ1ÿÅáú`üWØÊÿqâ¿Nã?T¸þ0|Cù?Jü=ÿ¡þOü.ÏØ¡ü'þKµù/ÿ°÷ ù?UüÎÿ ã¿ÂÆü5þã¿aPÙ`üW¨Æ:]üÀø/µÿdñ_ÿßÞÙí¸#kôèÔûÜärm(¶ã±n÷ÌÛËvz÷¶ãnQE~@Pkûb½Hªø©ÈûÎ|cõ¿Xþú¯ò_¾±ú_¬ÿõ ä¿}cõ¿Xþü§öÿ¾±ú_¬ÿþK ÿo¬þçÉÝ÷ÿiñ_ÂÝóñð²÷ḻú_¬ÿþK ÿoÌþÊQÿ@þË7ýÏÛÿú¿óØT俼2Ãÿýn¬õ'<cüIù&Vä?%Pÿ÷Íÿ_/úÑðÄügèÿ'Á2þÇõ°Z<o¿~¸ÍãgÆþ¯mØÿI`ÿçþ?, ¥×úþ¨ÿøÆâÿrXlÿïÿûªcýPwêÀàlþ¿óûÿ±%þþ%û·XüÍ~?
-ËÃf½Ø®~û×ÿÛúo_ÿÒÐ#¾kÌëÿçßîzúÿJ`á÷MªÿÝäS¿I:ÿiûÿu;öÿäü§<éãÿ¤<cÚøW± §×¾¦ÏÿÛñûÆ¿<sÇÿzýã¤g¤ûßX1þ
-ã?¥ýOÚþï<þùä|côJû´óß³ÿ}¨yÿ@ÿßýÒþ'}ýo«ÓÿÂ|ýï£ÿSÚÿÌñ¿«¸ÿYûßýÒþ'íûÿóþ?ü×@ÿßýÒþ'íþÇKý¯ø/áóp übôJûëÿé_ã¿úÿøÆêÿö?3ÎÿbìÈJ üï|þ?lÿöýÇÅÿ®£þ/á: Ä@bò¿)ÿjÈ)0¹üù T}cô¿\þû%ÿòÑÿLù¯ö>ÿEÿg uÄÏý/ÿ¢ÿò_¾1ú)ÿuÿþ?êªá
-À1Fÿóä¿êÛúo×Î$|Ým¿o×+¦ §ýÏÿ÷þÿ0®ÿ$Àübõ¿Xþõ_ßäó?sþü·_/`L>1ù_ÌÑÿMqüËå¿xÿÀùoþËñþ'üoþëÿEþSùoßý/ÿ"ÿ)ý¿oþëÿ
ÿèÿå£ÿò_÷ýþKø²{>^ã¦yÀ!FÿËõÿ ôÿòÕÿbù/ú?H üï|þgÎQÿp ò_NI÷¿ký)ÏÿÂâë[
ÐöãÅUÓó ïtÿ_¯üÑðÄügSÑÿOaü?ëaµxÞ~;ýnw~û¿&°ÿÀþÏ7ùü\ J¯ÿô-ý4PÿñÁÿåþ°`ÿ¬üGßSÿÐ}
-Ì Éåÿ{ÏHßÿ¾åû_ hÙÿ;ÅàÿköûiXþ6ëÅvõûgÌØÿWä¿4þôuýäü[ÒýïBÍû¿~ߤú_O¼óé-Iç?]uò¿nûó3Æÿ JxÆ´ñ¯bªºjÚñü¿;ý0þfÿõÈ)ÏH÷¿-ý$XÇJ ¤ýßyü»HÿW
-|ÿë«ÿS }ì{ã"ù? ôÿñÕÿ)
-×ÿ¶ª#ù/ Ô}cõJ þóý¿öÿ¾±ú?¥ÐÇþw7ûÿð_ý|cõJ ý·õ¿Ðà¿ÏÃq`ðÕÿ)
-Ò×ÿ.pÿ»úÿøÆìÿ@éõÿØÓÿ_Ûßdôÿa ýûýÇõýþÿÎ?ÿé?fØüÿÆó_-ù/Öñ/ÿbÿ'ío¬þËñý¯ò_¾±ú'ÿÕÞç¿øþOBñß3VÿKå¿b
ÿ
-ÈùÆêü×mþ#È÷_êªá
-À1Vÿ³ä¿êÛúoÎ$|Ým¿o×+¦ §XýÏÿ÷þÓÿS¸þ óÙÿRù/êÿÈù&£ÿyó_ä¿%\^¿ÈyÅæ].ÿÅýO¬ã_,ÿÅûÎ|cõ¿Xþú¯ò_¾±ú_¬ÿõ |cõ¿Xÿ/òØÿûÆê±þ_ø/þ_¾±ú'ÿußÿ§Á _vÏÇÃËrܳ18Äê±þ_ø/þ_¾1û_*ÿEý_Ûßdô?oþú¿óÏ_ÿòÊÿ÷»±Öðño,&åÐÿ@ýß73ü½ ~ê3FÃóM ÿËøÖÃjñ¼ývúá6û¿Ó ó¿ö¾ÉèÿÃPzý§oéÿ¡úo,þ/÷õÇöÏùþ¿¯:Ö uó©nÜÍÿw1cÿ?N ø/à¼ûbÿïÿ¯Ùï§aùsجÛÕoññú[ÿíkò_hÿëóúÿÀù·¤ûß
þ¿Xø}ìÿäS¿I:ÿiãÉÿºmèÿ!!}ü/ñgLÿ*6¡ª«¦ÏÿÛsÇÿzýã¤g¤ûßÐ1þ
-ã?¥ýOÚþï<þ§ýù_ ä|côJû´óß³ÿ} þ«þ?¾1ú?¥ýOúúßÞ¨ÿJ þá£ÿSÚÿÌñ¿«ÈI`ÿï£ÿSÚÿ¤}ÿÞÿÇÿèÿã£ÿSÚÿ¤Ýÿx©ÿuÿ%|_þOiÿ3cý?ýkü@ÿßXýÐþgÆù_-ßHàýß7ùüØþ'íûÿ]Ký_¯ iÀ'&ÿù/òã_.ÿEþC¿oþËÕ|ÿ#üoþgʵwù¯û_%Ô| ì£ÿåò_-þ+ þë£ÿò_·ù*¾ÿPW
-o 1ú'ÿUßÖOÿó _wÛïÛõ)À)Fÿ3å¿â½ÿä?$ë? 0¿Xý/ÿbýÀû¿oòù7ÿEþ[ï iÀ'&ÿ'6ÿÀó_üãøËñþ'ýoþëÿÅûò_¾1ú_¬ÿùO
-¼øùÆè¹üùO ìÿ}cô¿\ÿ/ü@ÿ/ßýÏÿºïÿð_ÂÝóñð²7mÌ1ú_®ÿþK ÿo¬þËÑÿAïÿ¾Éçæüõ ¿&`¦¤û¿ßµþg`1iýoBCþSë¿oÒý½þ}ò3FÃóuOÿ? ñ?þ8¬Õâyûíô»mÞùmfìÿÀþOû?ßäóÿq(½þÓ·ôÿÑÀþÏ7ÿûÃzý³ò}¤þ+¡úÄà\þ¿÷ôýè[ê?®#Ð2 øÄàÿköûiXþ6ëÅvõûgÌØÿWä¿4TïëúÿÈù·¤ûß
÷ ìþ}ê;ýØçôóºm:Τÿ%ÿòiã_>uÕ´ãù+Æ_ÁÜñ¿Þÿ8é3ιÿMqü¹ÿíýoþsÿÛý|cô¿\ÿÎ$üòÑîûÃaÿï£ÿåúÿà¿úÿøÆèþ?w÷?v]À ãÀà£ÿåúÿà¿úÿøÆê?÷¿ýÙüöM>ÿ¹ÿíOä:1
-øÄäS"ÿÕó_§FþKqüKå¿bEþCÕ_ßý/ÿê/ù/ê?ÈùÆè¦ü×ÿcþû_%Ôÿ=cô¿@þ«¿ä¿øþCù/ßýÏÿ
-7ûÿÈýÏ"êªá
-À1Fÿ3Ýÿvûýo×Î$|Ým¿o×+¦ §ýÏÿ7ëÿÉêÿÆõ_¬þçÏ÷ÿû5ÿòM>ÿså¿úKþ«Ã× ÿåÿuÁþ_=ù/Æñ/×ÿú¯Î|cô¿\ÿ/ê¿ÈùÆè¹þ_Ô$ÿöÑÿrý¿¨ÿH`ÿï£ÿåúá¿úùÆè¦ü×}ÿÿ¾ìå¸icpÑÿrý¿ð_ý¿|cõ¿Tÿ¯ü§ò_¾Éçæþ_Ôÿ%\GüSÒýßïÆZÊ3Æ?°´þ7¡¡ÿêÿ¾I÷ÿõþ÷ÉÏ
-Oìÿ×Tôÿ`ÿãÃzX-·ßN¿Ûæß&mÿwÎÿ7Üÿ ýoòùÿ¸ Vÿ9÷ÿkéÿ£úoþ/÷õûSÏÎëßÿÐ|bðL.ÿß{Fúþ?ô-ç¿®#°dðÁÿ×ì÷Ó°ü9lÖíê÷ϱÿ¯ý%Pÿõuýäü[ÒýïBÍû¿ü÷MÿOõóz÷è5ÿ!û{ÿsSuø/¡úT¦ ¿¤®ÿaú±ï+éç¿uÛÐÿGBúø_ò)Ï6þUlBUWM;ÎÿmlsÇÿzÿë¤g¤ûÏý*ã_ ÿW¹ÿó ¼ÿùÆè?÷?þáÐÿË7FÿôÿºÞÿÈù¯ºøÆè?÷?þá°ÿ÷Ñÿý¿®÷?â¿úùÆèþ_w÷¿v]À ãÀà£ÿú]ü'ÿ¡þ_¾±úÏý6¿|Ïîü¹Î¿ÓOLþ7ó_-ù/Æñ/ÿ"ÿ!ê¯oþËñý¯ò_¾1ú)ÿÕÞ翸ÿYBñß3Fÿå¿jî@þË7Fÿ3å¿nóûßEÔUÃcþgºÿñ¶þËý*¾î¶ß·ëSSþgÊÅ{ÿÉH×`~±ú_,ÿÅú/üoòù9ÿEþ[Âuþ%ÿåÿuÁüýß$Ç¿\þ÷? ÿøÆè¹üïÈùÆè¹þ_ä?%ÿöÑÿrý¿ÈJ`ÿï£ÿåúá¿úùÆè¦ü×}ÿÿ¾ìå¸icpÑÿrý¿ð_ý¿|cõ¿XþþÈù&ÿó_Ôÿ%\ç_ò_NI÷¿ký)ÏÿÂbÒúßü§êÿ¾I÷ÿ¸Úÿ{¿ùßô+GÃóMEÿ? ñ?þ8¬Õâyûíô»mÞùmfìÿÀþOû?ßäóÿq(½þÓ·ôÿÑ
@ýÇ7ÿûÃzý³ò}OýWB÷À3¹üïéûÿзÔ$\ eÿïÿ¯Ùï§aùsجÛÕï1cÿ_ÿÒ@úÓ7ÖõÿóoI÷¿
-ïÿ8ÿñMªÿ¯|úiç?ñäÝ6ÿHHÿKþ'åÓÆ¿M¨êê4ðUÓ´ãþñ/ÏÜñ¿Þÿ8ééþ·a<ÿcüËcÿýâyÿ×sþ+ýoþèÿÏýøþWý|cô¿@ÿxéÿCýGõ_ßý/Ðÿ'^úÿÐÿSûßý/Ðÿ'^úÿà¿úÿøÆèþ?ÿ¸ÿ1rÿÏÃq`ðÑÿý.þwø/þ?¾±ú¿ÿÏyÿÉk`÷ï|þçêÿ/ý¨ÿKøµcðÉÿaÐñ,9ÿEþOqüËå¿ÈH`ÿç£ÿÅò_§-!þ ÿå£ÿò_í}þþêÿ1ú_.ÿÅý¯ÈùÆè¦ü×mþ#ï¿$ÔUÃcþgºÿí¶þÛuó _wÛïÛõ)À)Fÿ3å¿â}þüqý'æ«ÿ¥ò_ä?4pþç|þgÎÿpj N1ù_ÌEò_
-ã_.ÿÅûÎ|cô¿\þ÷? ä¿|cô¿\ÿ/ò¨ÿøÆè¹üùO ìÿ}cô¿\ÿ/ü@ÿ/ßýÏÿºïÿð_ÂÝóñð²7mÌ1ú_®ÿþK ÿo¬þëÿEÿ ìþ}ÏÿÌù/êÿ~mÀ|îÿ~7ÖúS1þŤõ¿
-ùO Ôÿ}îÿëýï1ÿ¬{úÿI0ÿñÇa=¬ÏÛo§ßmóÎo3cÿ×öØÿù&ÿ@éõ¾¥ÿê?¾1ø¿ÜÖìÿè#õ_ ͧÀ1¹üïéûÿзÔ$\G`É$àÿ¯Ùï§aùsجÛÕï1cÿ_ÿÒ@ý×7ÖõÿóoI÷¿5ïÿ*üwMªÿqú±Ï+iç?ýÉÿºm+Τÿ%ÿòiã_Å&TuÕ´ãù[Æ_ÁÜñ¿Þÿ8ééþ·!6¿ãøèÿ3+ê?xÿóÑÿýúKÿÞÿ$ÐÿÇ7Fÿôÿé/ý¸ÿEùßý/Ðÿ§¿ôÿ!ÿ!ý¿oþèÿÓ_úÿà¿úÿøÆèþ?ÿ¸ÿ±¿ôÿÁ ãÀà£ÿúÿ\üïð_ý|cõ?ÿþrÿùO û]Ïÿ\ýúKÿêÿ®û/b N1ùßÌuä¿Ç¿\þüª¿¾1ú_.ÿÅýÈùÆè¦üW{ÿj¸ÿQBMÈ5Fÿ忸ÿQù/ßýÏÿºÍÄPóýºjxpÑÿL÷¿ÝÖ».pþ#áënû}»^18Åè¦üW¼÷üqý'æ«ÿÅò_¬ÿ(ÿù&ÿó_ä¿%\üWLþ×ó_ô`ÿrù/Þÿ$pþã£ÿåò_¼ÿI ÿå£ÿåúÿ@þÛ7FÿËå¿ÈJ`ÿï£ÿÅúá¿úùÆè¦ü×}ÿÿ¾ìå¸icpÑÿbý¿þK ÿo¬þËÑÿAù/ßäó?sþú¿ëþüSÒýßïÆZÊ3Æ¿°´þ7¡!ÿ)ú¿oÒý½ÿ}ò3FÃóMEÿ? ñ?þ8¬Õâyûíô»mÞùmfìÿÀþOû?ßäóÿq(½þÓ·ôÿÑ@ýÇ7ÿûÃzý³ò}OýWBüÔ38&ÿï=#}ÿúúË ,Ùÿ;ÅàÿköûiXþ6ëÅvõûgÌØÿWä¿4´ïëúÿÈù·¤ûß
÷ ,ü¾Iò?ýè÷ÌÇþ¿íÿOþ×1ÐÿW
Bõ©L~I]ÿë0ýÜ÷Iç¿]5úß¶ÿ
-1þ `Â3¦PÕUÓù®£ÿÙã½ vÊ3ÒýocKþCuü§4 Kzÿ;ç?ÈÿùÆêÿ`ûßÞøßHþKý¿|cõJ°äõ¿êÈù¯ºøÆêÿ`3üï"ç?ØÿûÆêÿ`ûßÝìÿcÀ
-ôÿòÕÿ)
-ÀÎ/õ¿Ðâ¿ÏÃq`ðÕÿ)
-ÀÒ×ò_*èÿå³ÿ¥×ÿcOÿ
-¤¿|Ñÿ
-À>ôÿí÷_×÷ÿú¿ñçÿëô³Olþ7åò_üëøË±ÿ@õ×7VÿKå¿z¾ÿ@þË7Vÿóä¿Ú»üWÏ÷j¹Æê±ü÷¿K ÿå«ÿyò_·ùÓë?ßI¨«7 ÇXýÏÿªoë¿÷?øºÛ~ß®WLN±ú'ÿïýø¯`\ÿIùÅì¡üWCý_ù/ßdô?kþü·ñç'ÿåÿu¹üW ÿ¥À:þÅò_¼ÿIàüÇ7Vÿõÿ¢þ+üo¬þêÿEþSùoßXý/ÿ"ÿ)ý¿o¬þëÿ
ÿèÿå«ÿyò_÷ýZüðe÷|<¼,Ç=óC¬þëÿ
ÿèÿå³ÿ¥úQÿ@þË7ýÏÿ¢þ/aüùÉùeÿÉ·@c1)ÿÓÄü§êÿ¾áÿqÿ´ÿ÷~ó¿ÉW 'æ?@ÿ? ñ?þ8¬ÕâyûíôÃmÿ83ömËþOû?ßdôÿa(½þÓ·ôÿÐ@ýÇ7ÿûÃúcûç|ÿßWõ_BÝ}b
-pL6ÿßyÆýÿøá¿ñç_²ÿwÅÿ×ì÷Ó°ü9lÖíê·Ïøxý¿ÿö5ù/
-=â»Æ¼þ?pþ-éþw¡§ÿ¯Î|êÿvõïõä+Iç?mÏ«¾çüGÁ¬ñ_¾ëÝq±:lÿ»>|øßÿñUÇýOåÓv1*ëKLþoö'ýwûÃâ°ïïÿÂÿ±æþ_
-ÿYï^Pß/Iþ?/¬Wÿ,Oûÿ[ÏÃ?¨ü^8ðL}ÿ»¬ÿuÅù
-¿¾I®ÿLkùøÞÿÎõºíÉÿI1þï?1mü«xzí««¦ßÿ»÷ ³ÇÿüýOU®ÿkÅø+°±þ¯ìÿ$Pÿ÷Õÿbý_9ÿ@ÿWßXý/Õÿû5ÐýÍ7VÿKõåþ
-ìÿ}cõ¿TÿWü×@ÿWßXýÏÒÿõmþû¥|_¬þêÿZã¿ú¿úÆì©þ¯Ôÿ%Ô \Ñÿ¬ý_kêÿοÿ_|ÿïÿM¹üWCþKuüå¿ØÿI úë«ÿÅò_ô@þË7Vÿóä¿ÚûüßÿJ¨#þ{Æê±ü÷I üë«ÿyò_·ù"ßI¨«7 ÇXýÏsÿ÷mý·
-ç?¾î¶ß·ëSS¬þçÉÝÞÿpòþïÆõ_ÌþÊQÿ@þË7ýÏÿ"ÿ-áüûÿrÍÿiÍ Ç?±äüWMþKuüå¿xÿÀöÏ7Vÿ忨ÿJ ÿå«ÿÅúQÿ@þÛ7Vÿå¿ÈJ`ÿï«ÿÅúá¿úùÆêü×}ÿÿ%|Ù=/ËqÏÆ<à«ÿÅúá¿úùÆì©üõ ä¿|Ñÿ¼ù/êÿο?ù/·Ìð¿ký ÏÿÄ&ßÿ|ö¿ =ùO ,ÿ¾áÿqÿ´ÿ÷~ó¿ÉW 'æ?@ÿ? ñ?þ8¬ÕâyûíôÃmÿ83ömÃþOû?ßdôÿa(½þÓ·ôÿÐ@ýÇ7ÿûÃúcûç|ÿßþ=þ+¨«OLÉæÿ;ϱÿ[á¿óï¿dÿïÿ¯Ùï§aùsجÛÕoññú[ÿíkò_â»Æ¼þ?pþ-éþw!ÒÿW{ߤú_M>õùiç?UlBUWM{ò¿nkÎ$¤ÿ%þòôñoÚÓ?güÌÿëõtþÛÆñü7ñW`ÿ)íÒöçñïBOþWû?ßýÒþ'íü÷ì¨ÿj ÿoþOiÿ¾þ·§÷ ê¿øúß7Fÿ§´ÿãWÿÀþß7Fÿ§´ÿIûþÿ¼ÿÿ5ÐÿÇ7Fÿ§´ÿI»ÿñRÿëþKø<& ¿ýÒþgÆúú×ø/þ?¾±ú?¡ýÏó¿[¾ÿ@ðÛ7ùüØþ'íûÿ]Ký_¯`ðÉÿ¦`þüãøËÿ@õ×7FÿËå¿øþGù/ßýÏÿjïò_5÷¿J¨#þ{Æè¹üWÿ
-(üøÆè¦ü×mþ#ï¿$ÔUÃcþçÉÕ·õßÓ¿æüGÂ×Ýöûv½b
-pÑÿLù¯xï?ù ãúOÌ/Vÿå¿Xÿ%ÿòM>ÿóæ¿Èkø5L>1ù_Ìuä¿Ç¿\þ÷? Lü¾1ú_.ÿÅûò_¾1ú_®ÿùO ä¿}cô¿\þü§öÿ¾1ú_®ÿþK ÿoþgÊÝ÷ÿ ø/áËîùxxY6æý/×ÿÿ%ÐÿË7Vÿå¿èÿ üoòù¹ÿõ ¿FiÀ'éþ¿^ÿ<ùãXbþ«îéÿ%Á0þÇõ°Z<o¿~·Í;¿Íù¿éÿ%0ÿû&ÿ_ ÓßÿúþxÿóÁÿåþ°`ÿ¬óß>RÿP}bé÷L.ÿß{Fúþ?6 ø¯à:-Oþ¿f?åÏa³^lW¿ÆýEþCûßX×ÿGο%Ýÿ.Ô¼ÿKÀߤú_WÓÏ}~vþÓü¯»±ÿ'ç?å1þ @Â3¦PÕUÓÆ¿9ßÿÅøgöø_/òtÿÛsþñ/uü§4 IÛÿãßÅ@ýWÕ_ßXýÒ äcÿÛÿûÉH ÿo¬þOi ¼þ·§Çù¾þõÕÿ)
- at føßEê¿ØÿûÆêÿ ûßÝìÿcÀ
-ôÿðÕÿ)
-@>ö?ÜÖÿBÿ>Ç À/Vÿ§4 I_ÿ»Ðà¿úøÆìÿ éõÿØ×Ôÿ%ÔÀ\Ñÿ
-@>ôÿß\Þÿêÿ.Û¯YÀ)6ÿüù¯®ºä¿jò_
-¬ã=ÿuÿ.òýª¿¾±ú=ÿuö¿±Åä¿|cõ?OþëÆÿ¶ªéÿ¡¡øï«ÿÙó_ÿ»ÀýÈùÆêüW¸ÙÿÇ8ÿPW
-o ±ú%ÿUßÖɨøºÛ~ß®WLN±ú'ÿïýçüW¸þ óÙÿÜù¯Ëþ¿¯©ÿK ÿåþçÉ]ßÿëÿò_n±ù_ËUä¿XÇ¿Xÿ/Î$pþã«ÿ¥úÑÿGù/ßXý/Öÿü·òß¾±ú_¬ÿõ_ ìÿ}cõ?{ÿ¯_ù/òßèÿå«ÿyò_÷ýZÖ _vÏÇÃËrܳ18Äêöþ_×üWÍú/þ_¾1û_*ÿEþ[ù/ßdô?oþý¿ËöüWfø¿ßµþgb1)ÿÓÄõ_õßÌðÿõø©Ï
-OÌ6þ,ãüqX«ÅóöÛéÛ<þqfìÿÚýö¾ÉèÿÃPzý§oéÿ¡úo,þ/÷õÇöÏùþ¿¯:Ö uõ©æÐ/Ùüç3öÿã0þ8ÿþKöÿ^±øÿý~?Íz±]ýö¯ÿ·ýÿûº!ÿ!! ¾kÌëÿçßî"ßK`á÷M²ÿíäcWÒÏꮢÿãÉÿ$<cÚøW± U]5íxþßuÿI=þ×û§<cÆùoïgüËcÿb÷¿ÿ@í×7VÿÝÿFýWý|cõ?{ÿîÂ×ÿ¾±ú_ìþ7ò_ØÿûÆê±þ?ø/þ?¾±ú¥ÿÏÝý]hð_Âçá80øÅê±þ?ø/þ?¾1û_ªÿõ uþÉèÞþ?Ôÿ%«¯ßxÅæS.ÿÕÿR`ÿbù/ö¨þúÆê±üßÿH ÿå«ÿyò_í]þû5Ôÿ=cõ¿Tþ+rÿ£ò_¾±ú'ÿuÿ!òýºjxpÕÿ<÷¿ÝÖ»@ÿ
-_wÛïÛõ)À)Vÿóä¿nûü§ÿ§qý'æ³ÿ¥ò_Ôÿ%ÿòMFÿóæ¿ÈK8W_+ò_^±ù_˵ä¿XÇ¿Xþ÷? ÿøÆê±üõ_ ä¿|cõ¿Xÿ/ê?ÈûÆê±üùO ìÿ}cõ¿Tÿ/ü×@ÿ/ßXýÏÿºïÿÓâ¿/»çãáe9îÙbõ¿Tÿ¯ÿ%ÐÿË7fÿK忨ÿK ÿåþçÍQÿp®¾V俼2Ãÿýn¬õ'<cüIù&ôä?%Pÿ÷Íÿ_ïúÑ
ðÄügèÿ'Á2þÇõ°Z<o¿~¸ÍãgÆþ¯mØÿI`ÿçþ?, ¥×úþ¨ÿøÆâÿrXlÿïÿûªcýP7Íÿw1cÿzaÄçÝû·XüÍ~?
-ËÃf½Ø®~û×ÿÛúo_ÿÒ@û_ß×ÿο%Ýÿ.ôôÿÀùoRýÿ×äS¿I:ÿiûÿuKÿ
-éãÿ¤<cÚøW± U]5íxþßßÿ2þå;þ×ë'=#ÝÿöÜÿñ/qü§´ÿIÛÿÇ¿ù_ ìÿ|côJû´óß³ÿ=ýEÐÿÇ7Fÿ§´ÿI_ÿÛªæû?
-|ýï£ÿSÚÿÌñ¿«ÉI`ÿï£ÿSÚÿ¤}ÿÞÿÇÿèÿã£ÿSÚÿ¤Ýÿx©ÿuä¿5|_þOiÿ3cýïºÿèÿã«ÿÚÿÌ8ÿï?4üû]ÏÿíÒ¾ÿ¸øßêÿ.Ó/ßxÅäS0ÿÕÿR`ÿrù/ò¨þúÆè±üWÃ÷?ÈùÆè¦üW{ÿâþW 5 »Æè¹üWÿ
-ÈùÆè¦ü×mþ#îÐPW
-o 1ú'ÿUßÖ;îñu·ý¾]¯bô?Sþ+Þç¿ÈH×`~±ú_*ÿEþCù/ßäó?sþü·ËôKþË+&ÿëù/ú¿I0¹üï8ÿñÑÿrù/Þÿ$ÿòÑÿrý¿ÈJ ÿí£ÿåò_ä?%°ÿ÷Ñÿrý¿ð_ý¿|cô?Sþë¾ÿOÄ _vÏÇÃËrÜ´18Äè¹þ_ø/þ_¾±ú_¬ÿý$ÿòM>ÿ3翨ÿK¸L¿ä¿¼îÿ~7ÖúS1þŤõ¿ -ùO Ôÿ}îÿëõï1ÿl*úÿI0ÿñÇa=¬ÏÛo§ßmóÎo3cÿ×DöØÿù&ÿ@éõ¾¥ÿê?¾1ø¿ÜÖìÿè{ê¿þúÄà\þ¿÷ôýè;ê?οËþß+ÿ_³ßOÃòç°Y/¶«ß?cÆþ¿"ÿ¥Ï¿|c]ÿ9ÿtÿ»Ððþ/ó _ü?5wQ÷ È
-
\ No newline at end of file
Deleted: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16amd64-8n2c-cpusets.tar.gz.output
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16amd64-8n2c-cpusets.tar.gz.output 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16amd64-8n2c-cpusets.tar.gz.output 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,67 +0,0 @@
-Machine (phys=0 total=41943040KB TYAN Computer Corp S4881 )
- NUMANode #0 (phys=0)
- Socket #0 (phys=0)
- L2Cache #0 (1024KB)
- L1Cache #0 (64KB)
- Core #0 (phys=0)
- PU #0 (phys=0)
- L2Cache #1 (1024KB)
- L1Cache #1 (64KB)
- Core #1 (phys=1)
- PU #1 (phys=1)
- NUMANode #1 (phys=1 local=8388608KB total=8388608KB)
- Socket #1 (phys=1)
- L2Cache #2 (1024KB)
- L1Cache #2 (64KB)
- Core #2 (phys=0)
- PU #2 (phys=2)
- L2Cache #3 (1024KB)
- L1Cache #3 (64KB)
- Core #3 (phys=1)
- PU #3 (phys=3)
- NUMANode #2 (phys=2 local=8388608KB total=8388608KB)
- Socket #2 (phys=2)
- L2Cache #4 (1024KB)
- L1Cache #4 (64KB)
- Core #4 (phys=1)
- PU #4 (phys=5)
- NUMANode #3 (phys=3 local=8388608KB total=8388608KB)
- Socket #3 (phys=3)
- L2Cache #5 (1024KB)
- L1Cache #5 (64KB)
- Core #5 (phys=0)
- PU #5 (phys=6)
- NUMANode #4 (phys=4 local=8388608KB total=8388608KB)
- NUMANode #5 (phys=5 local=8388608KB total=8388608KB)
- NUMANode #6 (phys=6)
- Socket #4 (phys=6)
- L2Cache #6 (1024KB)
- L1Cache #6 (64KB)
- Core #6 (phys=0)
- PU #6 (phys=12)
- L2Cache #7 (1024KB)
- L1Cache #7 (64KB)
- Core #7 (phys=1)
- PU #7 (phys=13)
- NUMANode #7 (phys=7)
- Socket #5 (phys=7)
- L2Cache #8 (1024KB)
- L1Cache #8 (64KB)
- Core #8 (phys=0)
- PU #8 (phys=14)
- L2Cache #9 (1024KB)
- L1Cache #9 (64KB)
- Core #9 (phys=1)
- PU #9 (phys=15)
-depth 0: 1 Machine (type #1)
- depth 1: 8 NUMANodes (type #2)
- depth 2: 6 Sockets (type #3)
- depth 3: 10 Caches (type #4)
- depth 4: 10 Caches (type #4)
- depth 5: 10 Cores (type #5)
- depth 6: 10 PUs (type #6)
-6 processors not represented in topology: 0x00000f90
-1 processors offline: 0x00000010
-5 processors online but not allowed: 0x00000f80
-1 processors allowed but not online: 0x00000010
-Topology not from this system
Added: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16amd64-8n2c-cpusets.xml.options
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16amd64-8n2c-cpusets.xml.options (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16amd64-8n2c-cpusets.xml.options 2010-11-24 09:21:55 UTC (rev 7494)
@@ -0,0 +1 @@
+-p -v --of xml
Copied: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16amd64-8n2c-cpusets.xml.output (from rev 7493, mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16amd64-8n2c-cpusets.xml.tar.gz.output)
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16amd64-8n2c-cpusets.xml.output (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16amd64-8n2c-cpusets.xml.output 2010-11-24 09:21:55 UTC (rev 7494)
@@ -0,0 +1,108 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE topology SYSTEM "hwloc.dtd">
+<topology>
+ <object type="Machine" os_level="-1" os_index="0" cpuset="0x0000f06f" complete_cpuset="0x0000ffff" online_cpuset="0x0000ffef" allowed_cpuset="0x0000f07f" nodeset="0x000000ff" complete_nodeset="0x000000ff" allowed_nodeset="0x0000003e">
+ <info name="DMIBoardVendor" value="TYAN Computer Corp"/>
+ <info name="DMIBoardName" value="S4881 "/>
+ <info name="DMIBoardVersion" value="S4881"/>
+ <info name="DMIBoardAssetTag" value=""/>
+ <info name="Backend" value="Linux"/>
+ <info name="LinuxCgroup" value="/dummy"/>
+ <object type="NUMANode" os_level="-1" os_index="0" cpuset="0x00000003" complete_cpuset="0x00000003" online_cpuset="0x00000003" allowed_cpuset="0x00000003" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x0">
+ <object type="Socket" os_level="-1" os_index="0" cpuset="0x00000003" complete_cpuset="0x00000003" online_cpuset="0x00000003" allowed_cpuset="0x00000003" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x0">
+ <object type="Cache" os_level="-1" cpuset="0x00000001" complete_cpuset="0x00000001" online_cpuset="0x00000001" allowed_cpuset="0x00000001" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x0" cache_size="1048576" depth="2" cache_linesize="64">
+ <object type="Cache" os_level="-1" cpuset="0x00000001" complete_cpuset="0x00000001" online_cpuset="0x00000001" allowed_cpuset="0x00000001" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x0" cache_size="65536" depth="1" cache_linesize="64">
+ <object type="Core" os_level="-1" os_index="0" cpuset="0x00000001" complete_cpuset="0x00000001" online_cpuset="0x00000001" allowed_cpuset="0x00000001" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x0">
+ <object type="PU" os_level="-1" os_index="0" cpuset="0x00000001" complete_cpuset="0x00000001" online_cpuset="0x00000001" allowed_cpuset="0x00000001" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x0"/>
+ </object>
+ </object>
+ </object>
+ <object type="Cache" os_level="-1" cpuset="0x00000002" complete_cpuset="0x00000002" online_cpuset="0x00000002" allowed_cpuset="0x00000002" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x0" cache_size="1048576" depth="2" cache_linesize="64">
+ <object type="Cache" os_level="-1" cpuset="0x00000002" complete_cpuset="0x00000002" online_cpuset="0x00000002" allowed_cpuset="0x00000002" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x0" cache_size="65536" depth="1" cache_linesize="64">
+ <object type="Core" os_level="-1" os_index="1" cpuset="0x00000002" complete_cpuset="0x00000002" online_cpuset="0x00000002" allowed_cpuset="0x00000002" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x0">
+ <object type="PU" os_level="-1" os_index="1" cpuset="0x00000002" complete_cpuset="0x00000002" online_cpuset="0x00000002" allowed_cpuset="0x00000002" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x0"/>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object type="NUMANode" os_level="-1" os_index="1" cpuset="0x0000000c" complete_cpuset="0x0000000c" online_cpuset="0x0000000c" allowed_cpuset="0x0000000c" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" local_memory="8589934592">
+ <object type="Socket" os_level="-1" os_index="1" cpuset="0x0000000c" complete_cpuset="0x0000000c" online_cpuset="0x0000000c" allowed_cpuset="0x0000000c" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002">
+ <object type="Cache" os_level="-1" cpuset="0x00000004" complete_cpuset="0x00000004" online_cpuset="0x00000004" allowed_cpuset="0x00000004" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="1048576" depth="2" cache_linesize="64">
+ <object type="Cache" os_level="-1" cpuset="0x00000004" complete_cpuset="0x00000004" online_cpuset="0x00000004" allowed_cpuset="0x00000004" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="65536" depth="1" cache_linesize="64">
+ <object type="Core" os_level="-1" os_index="0" cpuset="0x00000004" complete_cpuset="0x00000004" online_cpuset="0x00000004" allowed_cpuset="0x00000004" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002">
+ <object type="PU" os_level="-1" os_index="2" cpuset="0x00000004" complete_cpuset="0x00000004" online_cpuset="0x00000004" allowed_cpuset="0x00000004" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+ </object>
+ </object>
+ </object>
+ <object type="Cache" os_level="-1" cpuset="0x00000008" complete_cpuset="0x00000008" online_cpuset="0x00000008" allowed_cpuset="0x00000008" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="1048576" depth="2" cache_linesize="64">
+ <object type="Cache" os_level="-1" cpuset="0x00000008" complete_cpuset="0x00000008" online_cpuset="0x00000008" allowed_cpuset="0x00000008" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="65536" depth="1" cache_linesize="64">
+ <object type="Core" os_level="-1" os_index="1" cpuset="0x00000008" complete_cpuset="0x00000008" online_cpuset="0x00000008" allowed_cpuset="0x00000008" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002">
+ <object type="PU" os_level="-1" os_index="3" cpuset="0x00000008" complete_cpuset="0x00000008" online_cpuset="0x00000008" allowed_cpuset="0x00000008" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object type="NUMANode" os_level="-1" os_index="2" cpuset="0x00000020" complete_cpuset="0x00000030" online_cpuset="0x00000020" allowed_cpuset="0x00000030" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004" local_memory="8589934592">
+ <object type="Socket" os_level="-1" os_index="2" cpuset="0x00000020" complete_cpuset="0x00000030" online_cpuset="0x00000020" allowed_cpuset="0x00000030" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004">
+ <object type="Cache" os_level="-1" cpuset="0x00000020" complete_cpuset="0x00000020" online_cpuset="0x00000020" allowed_cpuset="0x00000020" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004" cache_size="1048576" depth="2" cache_linesize="64">
+ <object type="Cache" os_level="-1" cpuset="0x00000020" complete_cpuset="0x00000020" online_cpuset="0x00000020" allowed_cpuset="0x00000020" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004" cache_size="65536" depth="1" cache_linesize="64">
+ <object type="Core" os_level="-1" os_index="1" cpuset="0x00000020" complete_cpuset="0x00000020" online_cpuset="0x00000020" allowed_cpuset="0x00000020" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004">
+ <object type="PU" os_level="-1" os_index="5" cpuset="0x00000020" complete_cpuset="0x00000020" online_cpuset="0x00000020" allowed_cpuset="0x00000020" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004"/>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object type="NUMANode" os_level="-1" os_index="3" cpuset="0x00000040" complete_cpuset="0x000000c0" online_cpuset="0x000000c0" allowed_cpuset="0x00000040" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008" local_memory="8589934592">
+ <object type="Socket" os_level="-1" os_index="3" cpuset="0x00000040" complete_cpuset="0x000000c0" online_cpuset="0x000000c0" allowed_cpuset="0x00000040" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008">
+ <object type="Cache" os_level="-1" cpuset="0x00000040" complete_cpuset="0x00000040" online_cpuset="0x00000040" allowed_cpuset="0x00000040" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008" cache_size="1048576" depth="2" cache_linesize="64">
+ <object type="Cache" os_level="-1" cpuset="0x00000040" complete_cpuset="0x00000040" online_cpuset="0x00000040" allowed_cpuset="0x00000040" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008" cache_size="65536" depth="1" cache_linesize="64">
+ <object type="Core" os_level="-1" os_index="0" cpuset="0x00000040" complete_cpuset="0x00000040" online_cpuset="0x00000040" allowed_cpuset="0x00000040" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008">
+ <object type="PU" os_level="-1" os_index="6" cpuset="0x00000040" complete_cpuset="0x00000040" online_cpuset="0x00000040" allowed_cpuset="0x00000040" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008"/>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object type="NUMANode" os_level="-1" os_index="4" cpuset="0x0" complete_cpuset="0x00000300" online_cpuset="0x00000300" allowed_cpuset="0x0" nodeset="0x00000010" complete_nodeset="0x00000010" allowed_nodeset="0x00000010" local_memory="8589934592"/>
+ <object type="NUMANode" os_level="-1" os_index="5" cpuset="0x0" complete_cpuset="0x00000c00" online_cpuset="0x00000c00" allowed_cpuset="0x0" nodeset="0x00000020" complete_nodeset="0x00000020" allowed_nodeset="0x00000020" local_memory="8589934592"/>
+ <object type="NUMANode" os_level="-1" os_index="6" cpuset="0x00003000" complete_cpuset="0x00003000" online_cpuset="0x00003000" allowed_cpuset="0x00003000" nodeset="0x00000040" complete_nodeset="0x00000040" allowed_nodeset="0x0">
+ <object type="Socket" os_level="-1" os_index="6" cpuset="0x00003000" complete_cpuset="0x00003000" online_cpuset="0x00003000" allowed_cpuset="0x00003000" nodeset="0x00000040" complete_nodeset="0x00000040" allowed_nodeset="0x0">
+ <object type="Cache" os_level="-1" cpuset="0x00001000" complete_cpuset="0x00001000" online_cpuset="0x00001000" allowed_cpuset="0x00001000" nodeset="0x00000040" complete_nodeset="0x00000040" allowed_nodeset="0x0" cache_size="1048576" depth="2" cache_linesize="64">
+ <object type="Cache" os_level="-1" cpuset="0x00001000" complete_cpuset="0x00001000" online_cpuset="0x00001000" allowed_cpuset="0x00001000" nodeset="0x00000040" complete_nodeset="0x00000040" allowed_nodeset="0x0" cache_size="65536" depth="1" cache_linesize="64">
+ <object type="Core" os_level="-1" os_index="0" cpuset="0x00001000" complete_cpuset="0x00001000" online_cpuset="0x00001000" allowed_cpuset="0x00001000" nodeset="0x00000040" complete_nodeset="0x00000040" allowed_nodeset="0x0">
+ <object type="PU" os_level="-1" os_index="12" cpuset="0x00001000" complete_cpuset="0x00001000" online_cpuset="0x00001000" allowed_cpuset="0x00001000" nodeset="0x00000040" complete_nodeset="0x00000040" allowed_nodeset="0x0"/>
+ </object>
+ </object>
+ </object>
+ <object type="Cache" os_level="-1" cpuset="0x00002000" complete_cpuset="0x00002000" online_cpuset="0x00002000" allowed_cpuset="0x00002000" nodeset="0x00000040" complete_nodeset="0x00000040" allowed_nodeset="0x0" cache_size="1048576" depth="2" cache_linesize="64">
+ <object type="Cache" os_level="-1" cpuset="0x00002000" complete_cpuset="0x00002000" online_cpuset="0x00002000" allowed_cpuset="0x00002000" nodeset="0x00000040" complete_nodeset="0x00000040" allowed_nodeset="0x0" cache_size="65536" depth="1" cache_linesize="64">
+ <object type="Core" os_level="-1" os_index="1" cpuset="0x00002000" complete_cpuset="0x00002000" online_cpuset="0x00002000" allowed_cpuset="0x00002000" nodeset="0x00000040" complete_nodeset="0x00000040" allowed_nodeset="0x0">
+ <object type="PU" os_level="-1" os_index="13" cpuset="0x00002000" complete_cpuset="0x00002000" online_cpuset="0x00002000" allowed_cpuset="0x00002000" nodeset="0x00000040" complete_nodeset="0x00000040" allowed_nodeset="0x0"/>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object type="NUMANode" os_level="-1" os_index="7" cpuset="0x0000c000" complete_cpuset="0x0000c000" online_cpuset="0x0000c000" allowed_cpuset="0x0000c000" nodeset="0x00000080" complete_nodeset="0x00000080" allowed_nodeset="0x0">
+ <object type="Socket" os_level="-1" os_index="7" cpuset="0x0000c000" complete_cpuset="0x0000c000" online_cpuset="0x0000c000" allowed_cpuset="0x0000c000" nodeset="0x00000080" complete_nodeset="0x00000080" allowed_nodeset="0x0">
+ <object type="Cache" os_level="-1" cpuset="0x00004000" complete_cpuset="0x00004000" online_cpuset="0x00004000" allowed_cpuset="0x00004000" nodeset="0x00000080" complete_nodeset="0x00000080" allowed_nodeset="0x0" cache_size="1048576" depth="2" cache_linesize="64">
+ <object type="Cache" os_level="-1" cpuset="0x00004000" complete_cpuset="0x00004000" online_cpuset="0x00004000" allowed_cpuset="0x00004000" nodeset="0x00000080" complete_nodeset="0x00000080" allowed_nodeset="0x0" cache_size="65536" depth="1" cache_linesize="64">
+ <object type="Core" os_level="-1" os_index="0" cpuset="0x00004000" complete_cpuset="0x00004000" online_cpuset="0x00004000" allowed_cpuset="0x00004000" nodeset="0x00000080" complete_nodeset="0x00000080" allowed_nodeset="0x0">
+ <object type="PU" os_level="-1" os_index="14" cpuset="0x00004000" complete_cpuset="0x00004000" online_cpuset="0x00004000" allowed_cpuset="0x00004000" nodeset="0x00000080" complete_nodeset="0x00000080" allowed_nodeset="0x0"/>
+ </object>
+ </object>
+ </object>
+ <object type="Cache" os_level="-1" cpuset="0x00008000" complete_cpuset="0x00008000" online_cpuset="0x00008000" allowed_cpuset="0x00008000" nodeset="0x00000080" complete_nodeset="0x00000080" allowed_nodeset="0x0" cache_size="1048576" depth="2" cache_linesize="64">
+ <object type="Cache" os_level="-1" cpuset="0x00008000" complete_cpuset="0x00008000" online_cpuset="0x00008000" allowed_cpuset="0x00008000" nodeset="0x00000080" complete_nodeset="0x00000080" allowed_nodeset="0x0" cache_size="65536" depth="1" cache_linesize="64">
+ <object type="Core" os_level="-1" os_index="1" cpuset="0x00008000" complete_cpuset="0x00008000" online_cpuset="0x00008000" allowed_cpuset="0x00008000" nodeset="0x00000080" complete_nodeset="0x00000080" allowed_nodeset="0x0">
+ <object type="PU" os_level="-1" os_index="15" cpuset="0x00008000" complete_cpuset="0x00008000" online_cpuset="0x00008000" allowed_cpuset="0x00008000" nodeset="0x00000080" complete_nodeset="0x00000080" allowed_nodeset="0x0"/>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+</topology>
Added: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16amd64-8n2c-cpusets.xml.source
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16amd64-8n2c-cpusets.xml.source (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16amd64-8n2c-cpusets.xml.source 2010-11-24 09:21:55 UTC (rev 7494)
@@ -0,0 +1 @@
+16amd64-8n2c-cpusets.tar.bz2
Deleted: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16amd64-8n2c-cpusets.xml.tar.gz
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16amd64-8n2c-cpusets.xml.tar.gz 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16amd64-8n2c-cpusets.xml.tar.gz 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1 +0,0 @@
-link 16amd64-8n2c-cpusets.tar.gz
\ No newline at end of file
Deleted: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16amd64-8n2c-cpusets.xml.tar.gz.options
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16amd64-8n2c-cpusets.xml.tar.gz.options 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16amd64-8n2c-cpusets.xml.tar.gz.options 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1 +0,0 @@
--p -v -.xml
Deleted: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16amd64-8n2c-cpusets.xml.tar.gz.output
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16amd64-8n2c-cpusets.xml.tar.gz.output 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16amd64-8n2c-cpusets.xml.tar.gz.output 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,102 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE topology SYSTEM "hwloc.dtd">
-<topology>
- <object type="Machine" os_level="-1" os_index="0" cpuset="0x0000f06f" complete_cpuset="0x0000ffff" online_cpuset="0x0000ffef" allowed_cpuset="0x0000f07f" nodeset="0x000000ff" complete_nodeset="0x000000ff" allowed_nodeset="0x0000003e" dmi_board_vendor="TYAN Computer Corp" dmi_board_name="S4881 ">
- <object type="NUMANode" os_level="-1" os_index="0" cpuset="0x00000003" complete_cpuset="0x00000003" online_cpuset="0x00000003" allowed_cpuset="0x00000003" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x0">
- <object type="Socket" os_level="-1" os_index="0" cpuset="0x00000003" complete_cpuset="0x00000003" online_cpuset="0x00000003" allowed_cpuset="0x00000003" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x0">
- <object type="Cache" os_level="-1" cpuset="0x00000001" complete_cpuset="0x00000001" online_cpuset="0x00000001" allowed_cpuset="0x00000001" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x0" cache_size="1048576" depth="2">
- <object type="Cache" os_level="-1" cpuset="0x00000001" complete_cpuset="0x00000001" online_cpuset="0x00000001" allowed_cpuset="0x00000001" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x0" cache_size="65536" depth="1">
- <object type="Core" os_level="-1" os_index="0" cpuset="0x00000001" complete_cpuset="0x00000001" online_cpuset="0x00000001" allowed_cpuset="0x00000001" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x0">
- <object type="PU" os_level="-1" os_index="0" cpuset="0x00000001" complete_cpuset="0x00000001" online_cpuset="0x00000001" allowed_cpuset="0x00000001" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x0"/>
- </object>
- </object>
- </object>
- <object type="Cache" os_level="-1" cpuset="0x00000002" complete_cpuset="0x00000002" online_cpuset="0x00000002" allowed_cpuset="0x00000002" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x0" cache_size="1048576" depth="2">
- <object type="Cache" os_level="-1" cpuset="0x00000002" complete_cpuset="0x00000002" online_cpuset="0x00000002" allowed_cpuset="0x00000002" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x0" cache_size="65536" depth="1">
- <object type="Core" os_level="-1" os_index="1" cpuset="0x00000002" complete_cpuset="0x00000002" online_cpuset="0x00000002" allowed_cpuset="0x00000002" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x0">
- <object type="PU" os_level="-1" os_index="1" cpuset="0x00000002" complete_cpuset="0x00000002" online_cpuset="0x00000002" allowed_cpuset="0x00000002" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x0"/>
- </object>
- </object>
- </object>
- </object>
- </object>
- <object type="NUMANode" os_level="-1" os_index="1" cpuset="0x0000000c" complete_cpuset="0x0000000c" online_cpuset="0x0000000c" allowed_cpuset="0x0000000c" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" local_memory="8589934592">
- <object type="Socket" os_level="-1" os_index="1" cpuset="0x0000000c" complete_cpuset="0x0000000c" online_cpuset="0x0000000c" allowed_cpuset="0x0000000c" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002">
- <object type="Cache" os_level="-1" cpuset="0x00000004" complete_cpuset="0x00000004" online_cpuset="0x00000004" allowed_cpuset="0x00000004" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="1048576" depth="2">
- <object type="Cache" os_level="-1" cpuset="0x00000004" complete_cpuset="0x00000004" online_cpuset="0x00000004" allowed_cpuset="0x00000004" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="65536" depth="1">
- <object type="Core" os_level="-1" os_index="0" cpuset="0x00000004" complete_cpuset="0x00000004" online_cpuset="0x00000004" allowed_cpuset="0x00000004" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002">
- <object type="PU" os_level="-1" os_index="2" cpuset="0x00000004" complete_cpuset="0x00000004" online_cpuset="0x00000004" allowed_cpuset="0x00000004" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
- </object>
- </object>
- </object>
- <object type="Cache" os_level="-1" cpuset="0x00000008" complete_cpuset="0x00000008" online_cpuset="0x00000008" allowed_cpuset="0x00000008" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="1048576" depth="2">
- <object type="Cache" os_level="-1" cpuset="0x00000008" complete_cpuset="0x00000008" online_cpuset="0x00000008" allowed_cpuset="0x00000008" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="65536" depth="1">
- <object type="Core" os_level="-1" os_index="1" cpuset="0x00000008" complete_cpuset="0x00000008" online_cpuset="0x00000008" allowed_cpuset="0x00000008" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002">
- <object type="PU" os_level="-1" os_index="3" cpuset="0x00000008" complete_cpuset="0x00000008" online_cpuset="0x00000008" allowed_cpuset="0x00000008" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
- </object>
- </object>
- </object>
- </object>
- </object>
- <object type="NUMANode" os_level="-1" os_index="2" cpuset="0x00000020" complete_cpuset="0x00000030" online_cpuset="0x00000020" allowed_cpuset="0x00000030" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004" local_memory="8589934592">
- <object type="Socket" os_level="-1" os_index="2" cpuset="0x00000020" complete_cpuset="0x00000030" online_cpuset="0x00000020" allowed_cpuset="0x00000030" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004">
- <object type="Cache" os_level="-1" cpuset="0x00000020" complete_cpuset="0x00000020" online_cpuset="0x00000020" allowed_cpuset="0x00000020" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004" cache_size="1048576" depth="2">
- <object type="Cache" os_level="-1" cpuset="0x00000020" complete_cpuset="0x00000020" online_cpuset="0x00000020" allowed_cpuset="0x00000020" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004" cache_size="65536" depth="1">
- <object type="Core" os_level="-1" os_index="1" cpuset="0x00000020" complete_cpuset="0x00000020" online_cpuset="0x00000020" allowed_cpuset="0x00000020" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004">
- <object type="PU" os_level="-1" os_index="5" cpuset="0x00000020" complete_cpuset="0x00000020" online_cpuset="0x00000020" allowed_cpuset="0x00000020" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004"/>
- </object>
- </object>
- </object>
- </object>
- </object>
- <object type="NUMANode" os_level="-1" os_index="3" cpuset="0x00000040" complete_cpuset="0x000000c0" online_cpuset="0x000000c0" allowed_cpuset="0x00000040" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008" local_memory="8589934592">
- <object type="Socket" os_level="-1" os_index="3" cpuset="0x00000040" complete_cpuset="0x000000c0" online_cpuset="0x000000c0" allowed_cpuset="0x00000040" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008">
- <object type="Cache" os_level="-1" cpuset="0x00000040" complete_cpuset="0x00000040" online_cpuset="0x00000040" allowed_cpuset="0x00000040" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008" cache_size="1048576" depth="2">
- <object type="Cache" os_level="-1" cpuset="0x00000040" complete_cpuset="0x00000040" online_cpuset="0x00000040" allowed_cpuset="0x00000040" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008" cache_size="65536" depth="1">
- <object type="Core" os_level="-1" os_index="0" cpuset="0x00000040" complete_cpuset="0x00000040" online_cpuset="0x00000040" allowed_cpuset="0x00000040" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008">
- <object type="PU" os_level="-1" os_index="6" cpuset="0x00000040" complete_cpuset="0x00000040" online_cpuset="0x00000040" allowed_cpuset="0x00000040" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008"/>
- </object>
- </object>
- </object>
- </object>
- </object>
- <object type="NUMANode" os_level="-1" os_index="4" cpuset="0x0" complete_cpuset="0x00000300" online_cpuset="0x00000300" allowed_cpuset="0x0" nodeset="0x00000010" complete_nodeset="0x00000010" allowed_nodeset="0x00000010" local_memory="8589934592"/>
- <object type="NUMANode" os_level="-1" os_index="5" cpuset="0x0" complete_cpuset="0x00000c00" online_cpuset="0x00000c00" allowed_cpuset="0x0" nodeset="0x00000020" complete_nodeset="0x00000020" allowed_nodeset="0x00000020" local_memory="8589934592"/>
- <object type="NUMANode" os_level="-1" os_index="6" cpuset="0x00003000" complete_cpuset="0x00003000" online_cpuset="0x00003000" allowed_cpuset="0x00003000" nodeset="0x00000040" complete_nodeset="0x00000040" allowed_nodeset="0x0">
- <object type="Socket" os_level="-1" os_index="6" cpuset="0x00003000" complete_cpuset="0x00003000" online_cpuset="0x00003000" allowed_cpuset="0x00003000" nodeset="0x00000040" complete_nodeset="0x00000040" allowed_nodeset="0x0">
- <object type="Cache" os_level="-1" cpuset="0x00001000" complete_cpuset="0x00001000" online_cpuset="0x00001000" allowed_cpuset="0x00001000" nodeset="0x00000040" complete_nodeset="0x00000040" allowed_nodeset="0x0" cache_size="1048576" depth="2">
- <object type="Cache" os_level="-1" cpuset="0x00001000" complete_cpuset="0x00001000" online_cpuset="0x00001000" allowed_cpuset="0x00001000" nodeset="0x00000040" complete_nodeset="0x00000040" allowed_nodeset="0x0" cache_size="65536" depth="1">
- <object type="Core" os_level="-1" os_index="0" cpuset="0x00001000" complete_cpuset="0x00001000" online_cpuset="0x00001000" allowed_cpuset="0x00001000" nodeset="0x00000040" complete_nodeset="0x00000040" allowed_nodeset="0x0">
- <object type="PU" os_level="-1" os_index="12" cpuset="0x00001000" complete_cpuset="0x00001000" online_cpuset="0x00001000" allowed_cpuset="0x00001000" nodeset="0x00000040" complete_nodeset="0x00000040" allowed_nodeset="0x0"/>
- </object>
- </object>
- </object>
- <object type="Cache" os_level="-1" cpuset="0x00002000" complete_cpuset="0x00002000" online_cpuset="0x00002000" allowed_cpuset="0x00002000" nodeset="0x00000040" complete_nodeset="0x00000040" allowed_nodeset="0x0" cache_size="1048576" depth="2">
- <object type="Cache" os_level="-1" cpuset="0x00002000" complete_cpuset="0x00002000" online_cpuset="0x00002000" allowed_cpuset="0x00002000" nodeset="0x00000040" complete_nodeset="0x00000040" allowed_nodeset="0x0" cache_size="65536" depth="1">
- <object type="Core" os_level="-1" os_index="1" cpuset="0x00002000" complete_cpuset="0x00002000" online_cpuset="0x00002000" allowed_cpuset="0x00002000" nodeset="0x00000040" complete_nodeset="0x00000040" allowed_nodeset="0x0">
- <object type="PU" os_level="-1" os_index="13" cpuset="0x00002000" complete_cpuset="0x00002000" online_cpuset="0x00002000" allowed_cpuset="0x00002000" nodeset="0x00000040" complete_nodeset="0x00000040" allowed_nodeset="0x0"/>
- </object>
- </object>
- </object>
- </object>
- </object>
- <object type="NUMANode" os_level="-1" os_index="7" cpuset="0x0000c000" complete_cpuset="0x0000c000" online_cpuset="0x0000c000" allowed_cpuset="0x0000c000" nodeset="0x00000080" complete_nodeset="0x00000080" allowed_nodeset="0x0">
- <object type="Socket" os_level="-1" os_index="7" cpuset="0x0000c000" complete_cpuset="0x0000c000" online_cpuset="0x0000c000" allowed_cpuset="0x0000c000" nodeset="0x00000080" complete_nodeset="0x00000080" allowed_nodeset="0x0">
- <object type="Cache" os_level="-1" cpuset="0x00004000" complete_cpuset="0x00004000" online_cpuset="0x00004000" allowed_cpuset="0x00004000" nodeset="0x00000080" complete_nodeset="0x00000080" allowed_nodeset="0x0" cache_size="1048576" depth="2">
- <object type="Cache" os_level="-1" cpuset="0x00004000" complete_cpuset="0x00004000" online_cpuset="0x00004000" allowed_cpuset="0x00004000" nodeset="0x00000080" complete_nodeset="0x00000080" allowed_nodeset="0x0" cache_size="65536" depth="1">
- <object type="Core" os_level="-1" os_index="0" cpuset="0x00004000" complete_cpuset="0x00004000" online_cpuset="0x00004000" allowed_cpuset="0x00004000" nodeset="0x00000080" complete_nodeset="0x00000080" allowed_nodeset="0x0">
- <object type="PU" os_level="-1" os_index="14" cpuset="0x00004000" complete_cpuset="0x00004000" online_cpuset="0x00004000" allowed_cpuset="0x00004000" nodeset="0x00000080" complete_nodeset="0x00000080" allowed_nodeset="0x0"/>
- </object>
- </object>
- </object>
- <object type="Cache" os_level="-1" cpuset="0x00008000" complete_cpuset="0x00008000" online_cpuset="0x00008000" allowed_cpuset="0x00008000" nodeset="0x00000080" complete_nodeset="0x00000080" allowed_nodeset="0x0" cache_size="1048576" depth="2">
- <object type="Cache" os_level="-1" cpuset="0x00008000" complete_cpuset="0x00008000" online_cpuset="0x00008000" allowed_cpuset="0x00008000" nodeset="0x00000080" complete_nodeset="0x00000080" allowed_nodeset="0x0" cache_size="65536" depth="1">
- <object type="Core" os_level="-1" os_index="1" cpuset="0x00008000" complete_cpuset="0x00008000" online_cpuset="0x00008000" allowed_cpuset="0x00008000" nodeset="0x00000080" complete_nodeset="0x00000080" allowed_nodeset="0x0">
- <object type="PU" os_level="-1" os_index="15" cpuset="0x00008000" complete_cpuset="0x00008000" online_cpuset="0x00008000" allowed_cpuset="0x00008000" nodeset="0x00000080" complete_nodeset="0x00000080" allowed_nodeset="0x0"/>
- </object>
- </object>
- </object>
- </object>
- </object>
- </object>
-</topology>
Copied: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16amd64-8n2c-cpusets_noadmin.options (from rev 7493, mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16amd64-8n2c-cpusets_noadmin.tar.gz.options)
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16amd64-8n2c-cpusets_noadmin.options (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16amd64-8n2c-cpusets_noadmin.options 2010-11-24 09:21:55 UTC (rev 7494)
@@ -0,0 +1 @@
+- -v --whole-system
Copied: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16amd64-8n2c-cpusets_noadmin.output (from rev 7493, mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16amd64-8n2c-cpusets_noadmin.tar.gz.output)
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16amd64-8n2c-cpusets_noadmin.output (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16amd64-8n2c-cpusets_noadmin.output 2010-11-24 09:21:55 UTC (rev 7494)
@@ -0,0 +1,92 @@
+Machine (phys=0 total=67106960KB DMIBoardVendor="TYAN Computer Corp" DMIBoardName="S4881 " DMIBoardVersion=S4881 DMIBoardAssetTag= Backend=Linux LinuxCgroup=/dummy)
+ NUMANode #0 (phys=0 local=8386704KB total=8386704KB)
+ Socket #0 (phys=0)
+ L2Cache #0 (1024KB line=64)
+ L1Cache #0 (64KB line=64)
+ Core #0 (phys=0)
+ PU #0 (phys=0)
+ L2Cache #1 (1024KB line=64)
+ L1Cache #1 (64KB line=64)
+ Core #1 (phys=1)
+ PU #1 (phys=1)
+ NUMANode #1 (phys=1 local=8388608KB total=8388608KB)
+ Socket #1 (phys=1)
+ L2Cache #2 (1024KB line=64)
+ L1Cache #2 (64KB line=64)
+ Core #2 (phys=0)
+ PU #2 (phys=2)
+ L2Cache #3 (1024KB line=64)
+ L1Cache #3 (64KB line=64)
+ Core #3 (phys=1)
+ PU #3 (phys=3)
+ NUMANode #2 (phys=2 local=8388608KB total=8388608KB)
+ Socket #2 (phys=2)
+ L2Cache #4 (1024KB line=64)
+ L1Cache #4 (64KB line=64)
+ Core #4 (phys=0)
+ PU #4 (phys=4)
+ L2Cache #5 (1024KB line=64)
+ L1Cache #5 (64KB line=64)
+ Core #5 (phys=1)
+ PU #5 (phys=5)
+ NUMANode #3 (phys=3 local=8388608KB total=8388608KB)
+ Socket #3 (phys=3)
+ L2Cache #6 (1024KB line=64)
+ L1Cache #6 (64KB line=64)
+ Core #6 (phys=0)
+ PU #6 (phys=6)
+ L2Cache #7 (1024KB line=64)
+ L1Cache #7 (64KB line=64)
+ Core #7 (phys=1)
+ PU #7 (phys=7)
+ NUMANode #4 (phys=4 local=8388608KB total=8388608KB)
+ Socket #4 (phys=4)
+ L2Cache #8 (1024KB line=64)
+ L1Cache #8 (64KB line=64)
+ Core #8 (phys=0)
+ PU #8 (phys=8)
+ L2Cache #9 (1024KB line=64)
+ L1Cache #9 (64KB line=64)
+ Core #9 (phys=1)
+ PU #9 (phys=9)
+ NUMANode #5 (phys=5 local=8388608KB total=8388608KB)
+ Socket #5 (phys=5)
+ L2Cache #10 (1024KB line=64)
+ L1Cache #10 (64KB line=64)
+ Core #10 (phys=0)
+ PU #10 (phys=10)
+ L2Cache #11 (1024KB line=64)
+ L1Cache #11 (64KB line=64)
+ Core #11 (phys=1)
+ PU #11 (phys=11)
+ NUMANode #6 (phys=6 local=8388608KB total=8388608KB)
+ Socket #6 (phys=6)
+ L2Cache #12 (1024KB line=64)
+ L1Cache #12 (64KB line=64)
+ Core #12 (phys=0)
+ PU #12 (phys=12)
+ L2Cache #13 (1024KB line=64)
+ L1Cache #13 (64KB line=64)
+ Core #13 (phys=1)
+ PU #13 (phys=13)
+ NUMANode #7 (phys=7 local=8388608KB total=8388608KB)
+ Socket #7 (phys=7)
+ L2Cache #14 (1024KB line=64)
+ L1Cache #14 (64KB line=64)
+ Core #14 (phys=0)
+ PU #14 (phys=14)
+ L2Cache #15 (1024KB line=64)
+ L1Cache #15 (64KB line=64)
+ Core #15 (phys=1)
+ PU #15 (phys=15)
+depth 0: 1 Machine (type #1)
+ depth 1: 8 NUMANodes (type #2)
+ depth 2: 8 Sockets (type #3)
+ depth 3: 16 Caches (type #4)
+ depth 4: 16 Caches (type #4)
+ depth 5: 16 Cores (type #5)
+ depth 6: 16 PUs (type #6)
+1 processors offline: 0x00000010
+5 processors online but not allowed: 0x00000f80
+1 processors allowed but not online: 0x00000010
+Topology not from this system
Added: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16amd64-8n2c-cpusets_noadmin.source
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16amd64-8n2c-cpusets_noadmin.source (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16amd64-8n2c-cpusets_noadmin.source 2010-11-24 09:21:55 UTC (rev 7494)
@@ -0,0 +1 @@
+16amd64-8n2c-cpusets.tar.bz2
Deleted: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16amd64-8n2c-cpusets_noadmin.tar.gz
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16amd64-8n2c-cpusets_noadmin.tar.gz 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16amd64-8n2c-cpusets_noadmin.tar.gz 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1 +0,0 @@
-link 16amd64-8n2c-cpusets.tar.gz
\ No newline at end of file
Deleted: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16amd64-8n2c-cpusets_noadmin.tar.gz.options
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16amd64-8n2c-cpusets_noadmin.tar.gz.options 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16amd64-8n2c-cpusets_noadmin.tar.gz.options 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1 +0,0 @@
-- -v --whole-system
Deleted: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16amd64-8n2c-cpusets_noadmin.tar.gz.output
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16amd64-8n2c-cpusets_noadmin.tar.gz.output 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16amd64-8n2c-cpusets_noadmin.tar.gz.output 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,92 +0,0 @@
-Machine (phys=0 total=67106960KB TYAN Computer Corp S4881 )
- NUMANode #0 (phys=0 local=8386704KB total=8386704KB)
- Socket #0 (phys=0)
- L2Cache #0 (1024KB)
- L1Cache #0 (64KB)
- Core #0 (phys=0)
- PU #0 (phys=0)
- L2Cache #1 (1024KB)
- L1Cache #1 (64KB)
- Core #1 (phys=1)
- PU #1 (phys=1)
- NUMANode #1 (phys=1 local=8388608KB total=8388608KB)
- Socket #1 (phys=1)
- L2Cache #2 (1024KB)
- L1Cache #2 (64KB)
- Core #2 (phys=0)
- PU #2 (phys=2)
- L2Cache #3 (1024KB)
- L1Cache #3 (64KB)
- Core #3 (phys=1)
- PU #3 (phys=3)
- NUMANode #2 (phys=2 local=8388608KB total=8388608KB)
- Socket #2 (phys=2)
- L2Cache #4 (1024KB)
- L1Cache #4 (64KB)
- Core #4 (phys=0)
- PU #4 (phys=4)
- L2Cache #5 (1024KB)
- L1Cache #5 (64KB)
- Core #5 (phys=1)
- PU #5 (phys=5)
- NUMANode #3 (phys=3 local=8388608KB total=8388608KB)
- Socket #3 (phys=3)
- L2Cache #6 (1024KB)
- L1Cache #6 (64KB)
- Core #6 (phys=0)
- PU #6 (phys=6)
- L2Cache #7 (1024KB)
- L1Cache #7 (64KB)
- Core #7 (phys=1)
- PU #7 (phys=7)
- NUMANode #4 (phys=4 local=8388608KB total=8388608KB)
- Socket #4 (phys=4)
- L2Cache #8 (1024KB)
- L1Cache #8 (64KB)
- Core #8 (phys=0)
- PU #8 (phys=8)
- L2Cache #9 (1024KB)
- L1Cache #9 (64KB)
- Core #9 (phys=1)
- PU #9 (phys=9)
- NUMANode #5 (phys=5 local=8388608KB total=8388608KB)
- Socket #5 (phys=5)
- L2Cache #10 (1024KB)
- L1Cache #10 (64KB)
- Core #10 (phys=0)
- PU #10 (phys=10)
- L2Cache #11 (1024KB)
- L1Cache #11 (64KB)
- Core #11 (phys=1)
- PU #11 (phys=11)
- NUMANode #6 (phys=6 local=8388608KB total=8388608KB)
- Socket #6 (phys=6)
- L2Cache #12 (1024KB)
- L1Cache #12 (64KB)
- Core #12 (phys=0)
- PU #12 (phys=12)
- L2Cache #13 (1024KB)
- L1Cache #13 (64KB)
- Core #13 (phys=1)
- PU #13 (phys=13)
- NUMANode #7 (phys=7 local=8388608KB total=8388608KB)
- Socket #7 (phys=7)
- L2Cache #14 (1024KB)
- L1Cache #14 (64KB)
- Core #14 (phys=0)
- PU #14 (phys=14)
- L2Cache #15 (1024KB)
- L1Cache #15 (64KB)
- Core #15 (phys=1)
- PU #15 (phys=15)
-depth 0: 1 Machine (type #1)
- depth 1: 8 NUMANodes (type #2)
- depth 2: 8 Sockets (type #3)
- depth 3: 16 Caches (type #4)
- depth 4: 16 Caches (type #4)
- depth 5: 16 Cores (type #5)
- depth 6: 16 PUs (type #6)
-1 processors offline: 0x00000010
-5 processors online but not allowed: 0x00000f80
-1 processors allowed but not online: 0x00000010
-Topology not from this system
Copied: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16amd64-8n2c.output (from rev 7493, mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16amd64-8n2c.tar.gz.output)
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16amd64-8n2c.output (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16amd64-8n2c.output 2010-11-24 09:21:55 UTC (rev 7494)
@@ -0,0 +1,89 @@
+Machine (phys=0 total=67106960KB DMIBoardVendor="TYAN Computer Corp" DMIBoardName="S4881 " DMIBoardVersion=S4881 DMIBoardAssetTag= Backend=Linux)
+ NUMANode #0 (phys=0 local=8386704KB total=8386704KB)
+ Socket #0 (phys=0)
+ L2Cache #0 (1024KB line=64)
+ L1Cache #0 (64KB line=64)
+ Core #0 (phys=0)
+ PU #0 (phys=0)
+ L2Cache #1 (1024KB line=64)
+ L1Cache #1 (64KB line=64)
+ Core #1 (phys=1)
+ PU #1 (phys=1)
+ NUMANode #1 (phys=1 local=8388608KB total=8388608KB)
+ Socket #1 (phys=1)
+ L2Cache #2 (1024KB line=64)
+ L1Cache #2 (64KB line=64)
+ Core #2 (phys=0)
+ PU #2 (phys=2)
+ L2Cache #3 (1024KB line=64)
+ L1Cache #3 (64KB line=64)
+ Core #3 (phys=1)
+ PU #3 (phys=3)
+ NUMANode #2 (phys=2 local=8388608KB total=8388608KB)
+ Socket #2 (phys=2)
+ L2Cache #4 (1024KB line=64)
+ L1Cache #4 (64KB line=64)
+ Core #4 (phys=0)
+ PU #4 (phys=4)
+ L2Cache #5 (1024KB line=64)
+ L1Cache #5 (64KB line=64)
+ Core #5 (phys=1)
+ PU #5 (phys=5)
+ NUMANode #3 (phys=3 local=8388608KB total=8388608KB)
+ Socket #3 (phys=3)
+ L2Cache #6 (1024KB line=64)
+ L1Cache #6 (64KB line=64)
+ Core #6 (phys=0)
+ PU #6 (phys=6)
+ L2Cache #7 (1024KB line=64)
+ L1Cache #7 (64KB line=64)
+ Core #7 (phys=1)
+ PU #7 (phys=7)
+ NUMANode #4 (phys=4 local=8388608KB total=8388608KB)
+ Socket #4 (phys=4)
+ L2Cache #8 (1024KB line=64)
+ L1Cache #8 (64KB line=64)
+ Core #8 (phys=0)
+ PU #8 (phys=8)
+ L2Cache #9 (1024KB line=64)
+ L1Cache #9 (64KB line=64)
+ Core #9 (phys=1)
+ PU #9 (phys=9)
+ NUMANode #5 (phys=5 local=8388608KB total=8388608KB)
+ Socket #5 (phys=5)
+ L2Cache #10 (1024KB line=64)
+ L1Cache #10 (64KB line=64)
+ Core #10 (phys=0)
+ PU #10 (phys=10)
+ L2Cache #11 (1024KB line=64)
+ L1Cache #11 (64KB line=64)
+ Core #11 (phys=1)
+ PU #11 (phys=11)
+ NUMANode #6 (phys=6 local=8388608KB total=8388608KB)
+ Socket #6 (phys=6)
+ L2Cache #12 (1024KB line=64)
+ L1Cache #12 (64KB line=64)
+ Core #12 (phys=0)
+ PU #12 (phys=12)
+ L2Cache #13 (1024KB line=64)
+ L1Cache #13 (64KB line=64)
+ Core #13 (phys=1)
+ PU #13 (phys=13)
+ NUMANode #7 (phys=7 local=8388608KB total=8388608KB)
+ Socket #7 (phys=7)
+ L2Cache #14 (1024KB line=64)
+ L1Cache #14 (64KB line=64)
+ Core #14 (phys=0)
+ PU #14 (phys=14)
+ L2Cache #15 (1024KB line=64)
+ L1Cache #15 (64KB line=64)
+ Core #15 (phys=1)
+ PU #15 (phys=15)
+depth 0: 1 Machine (type #1)
+ depth 1: 8 NUMANodes (type #2)
+ depth 2: 8 Sockets (type #3)
+ depth 3: 16 Caches (type #4)
+ depth 4: 16 Caches (type #4)
+ depth 5: 16 Cores (type #5)
+ depth 6: 16 PUs (type #6)
+Topology not from this system
Added: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16amd64-8n2c.tar.bz2
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16amd64-8n2c.tar.bz2 (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16amd64-8n2c.tar.bz2 2010-11-24 09:21:55 UTC (rev 7494)
@@ -0,0 +1,82 @@
+BZh91AY&SY±ñX x¨ÿ¥ÿø½ç÷ÿüÿÞ ÿïÿð% !"/ø`+|À ÇÈ>÷Zè{Ï22ô8¾ oxßBò|ûMB^O<¯< ®ð·½Î1¼½áâ<ö^^^^÷²sÕÎ{½pzô @ PSLÿýUPÿÿUUM7¨ýPL À À F))5PÈõ=@ 42 h ú Æ¢ Rz L L ` dmA©"hM5
+ "<TýP! ÓC@ Í 4
+DÈH&©²SÔô¦jò¦é2
+MFÅ'ð¤HûÁ?ä¾ð!R+"þQ
+8 V ÿ ù?àÁX ~h' MQ=ØH+Èd,#q²}ïéýÿÙþ§àÒ#M4ÓM?«û_·øßÇý+¥ºÜy^ÁUôÅOë|$HÁT(ÍòQJ*)QU ï$"óïÎÞ~~{ùéi+A%´ju²
+ âPÈ/30¤QI"
+ êT âT*Që֡ɶq B« MA)¡® ÐWW«I]A+¡® Ñpff ѹF"ÒËcrI$¶ÛvI$§ÕmS¥;d»$FáÓpÌ7
+Ä
M]»]«tæà'unÛ¼c^¤N©6±DAC1E´QEQ»lIÉdÊi0L&IÒi4M&(aa-¢(¢¥mĬKM«»vI$&6ÛvI$:ZY+vÉ${½êÛ6ïzÛmɲf:ÆX°½WÃ;Yõ;YÃFm¥YDHQE
aD]¡÷ÛFúß~6E0"Q¨aAw Ûn HoJèp[I- jY$ªVÉÒLaTUTDBÙ&!
+P-¡fÌ,,¨IRhÕ*R+HFF@$VF©T(²5«FµhÖ¥P¨ÈITª *B£!"nëÁ5Å
+É8h¸^$75&-²@åÄ a$º$$M×§MiE&¨ E¤VÐMÐ
+âBÜ(oVQ#!!!!$"¦âá©*;¹ÀµyÛ
+%Mæ)$RP HµM·$Òs²NRï.KbC[´¼¢DêMÔT¨H¨T=è)Z¨$ÂÅ%!AAJ(T(T*Ðj¥± YËi
+EUH JÂCø¢|ÁÔ>!ìÈ÷¨i=ì--¨ZÞ൪ªª«äÈÁ{¢ÒÖBáy{¥ªW¸fªª °d t¯ÉëòÃ×áaàØ7¿¬ö¯yjºIÄþ
+ç1©mÝ&)$ô?Nô§Mk_¨ faé5ÛÃ3 3Ì6Ì30ò³Ì<iç9«¯âHJQµH¨Ö¤T]5S0êéJR®Ysoü·pÆ#'ºR5oM!ÎI¤#}æ¦eÄ#ÚB5 A¬æÓ4äÙDÍo·
+ØÄLÎN1ÖOé
AÓ¥AîMô,¢/0üÜOA7 vÒÒÒÒÒÒÒk´ètyÇAîèpÈ8Jªªªªªª¯ñT¾:çÆØÛ5ÓMwI¾zyéßOGÀpøÀ +¾o<fÜ©¯x > ö|¾sÊ{ç¯m¶ÛP [ni§.6Ûm¶ÛØ|ò$RBDµ!ñDH~è"½2"ØññéSʺv´é]Õ'^Ø×+åHc;kÀ,ĺΠ7ÕçYß[6õǪdPÏm\
+èm.<ÌÃ%5`Cn-~2äç¦Uoίmq{A½^Xay/I¦²o¯^´T½y [ìg!¢A¥i4-+0©&Õò
ËæEkKÖqû¡pé!&¦R«uü¹o·,¶+b5óëÚöð×ë°6Q±®*ôÉùò1¹_~|÷çZ[å¦×\ó×_ßöï¾ûï¾ü;vÞÞܲ;m¶Ûm¶Ûmeº ( ;{Û/l®ImvËiÌZw6Kõ ÞËÙ{ùà ÞÕe¢We´ãn[m¶ß èöCÐ:x(=C°zPÌ8rã^ÝÖÅb+QÝÔ»ºBª»Ñr®áT¬JäªJ§V;¢Jâ%X¡n踳¬]ùCæ
+Ì7åê¤:0úøÁÞpäÆÔa j
+Ä, òû1">õA:
$x§õÊ«"DYÂi%Õå·` $I$Û ·
+ÝøüøûñÛm¶Ý¾géð{sz\æ-C!ÅK,0Ã0ª¬0à *¨ ª ª
+ª *¨ ª ª
+ª *¨ ª ª
+ª *¨ ª ª
+ª *¨ ª ª
+ª *¨ ª ª
+ª *¨ ª ª
+ª *¨ Æ1cm¶Û{ï7 @ m¶Ûg øª&|eB@¤$ÊUåB*kB*kB*s¡B9Щ×lóÏ=¶ÛM4ÓM4Ó½Í$$m¶Ûm¶Ûj;â$ßzªÞÀ A$ " ¾ûï¿,¤IƹréÇNÀs I$@VswwyÓ~ À r¤0¹\Îf@ D I$A0 mm[<v[%³$ï¾<xê«<xÀª ª
+ª *¨ ª ß}÷ß§N8½%ÉfK2Ø 2\À %ÿ6Û,²wuë˹§'=¯-â{3Fk
+ÝÉH·a`ÁtÊ[!Û\¤i<Éà£à `p0 ÑP8÷k.ª¬vlËÞvlå,ÍòòØ[}¿@ :Ë,Û]Y&k§]AÉEC
+G¼ñ&!¥C´RD$YFIsưw¨È¾ó§¿÷äß\mn
º¶-Þãw$RY]¡CµÏ6ÛʽÕo®O/^ jI5bI$I$ I$Ï</ Kd¶É1黲xÍÝÔîÙ8Ö®&(*L6nï7l:«E"ð¤Oú ùêU«T<ÿ¬@pÂéúßÑtâø_ ÏSK¡DØGeØ<ÝCÏ;àÈ
MÜÕ
¢8 Øu2(XT~=}cüHÒGl{o,Ybn8òþÏÜõîð}ù´J:ô¾w¥³ß³ã©ñð¸PùÞSÉ×P>ÿÝû7ñyyíÑq I¨§ºzäE=m+ÕyqäÅMFïX|ç KxÆ1¶)%Ñ"EA}×®ûLë9¥ ½BJÀT#¤
+ J Ô h
+çlÙI}`lPC" óªRc3}äËm¤U˺-ÊvNd4´D#Ъ2ê<̾ 9£$òG@ßx¾ýiÒF¿:6h;¹"8³7[C[ÅÄ">© fl6Öµí(³rT_±õ¾Ý{>p;uα Ä Ä;öÅïqï=þu$ jI5bI$ÖI$«jÞRÛÛ÷oÂs-áP¶Õ(GõÃçM2ç¡pPiÝ<ÁײHÛÊHUëÃ^ÜKNÂGèmµk¶ºÀHßµ
*üÒDF·dqV¦,-mo¶S*ÙUÇ@plÓ-vÊ`EúgÀ+zåÛ¦:N|üXl÷zÛ bc´Y9$Åí;T¯ÛõÏ©¤«uB£zbPÀògâï|aRÞ³
+ö
ëç·ç:éfê
+På¬#>[Ó-·ÅZe[ÔÎõUIïnÇ¢"äI,^ÞÙ¶í¶*&¹
+Grôæ÷<?)ùÇúô°þ'ïÏþïA]óé^
+
+ý5{l÷!ÝÒH 7n
+eú²NÙÜÁÕ¤Î"ízÑA¾¬§6w06ôêÃÔPͯZ(7ÕS;zHG¨ ö½h ßVINlî`mé!¢Úõ¢}Y%9³¹·¥"zkÖ
+õdæÎæÞ°õ#oZ(7ÕS;zRçQAíÁ¬ ßVINlî`êÒjæBo²}Y'Nlî`êÒH 7n
+eú²NÙÜÁÕ¤(nÜÊ
+õd9³¹«I &Pݸ5êÉ:sgsV@L¡»pk(7ÕtæÎæ$CvàÖPo«$éÍÌZK\ÄPݸ5êÉ:sgsV÷ܺΤQ÷}/3é[x}Ïq¾6³=ÙÍÔ=ÞÕs=ÐôÕϯùcì~ àø³Ë=®<ÃuuõÑ8ÔQR+1æíP3îe¿1zìö}ÇÂôõ!ûÃ!s5ç7àm9pMm5¼¥ÆÛÇcÛqè!Ü8«|ÚÞc^YòÅøÃ2>èiצºÖºí]µ´^×$ó¤Ý@ ÔjÄ"I5¬I3 $uíÞNÎþùÒ<ö[!iaGÃÉ'uõ²$âí_ok;+ºª éfÖ£,g¯N/ ¶´²Ï `\jl¨ÃLkÖhªÅ%¶Ò|hm¥YÅfl¡h,L&x@æ;£yw.Yã¾åLJk½ö³Þ:ËÁX¬îeHÙ`ß9¶ùÒòökÆ$íH9T¬ñ:mÇM ;QY^¸ÖÙzëzaÅÜns¶Äah"§ FBB±¢»W®£T¯H¦®wËéäCg}eæ-£@'yÎ+A^J}õàòþ1ÁÎpyð÷Ãaç¤È½0LlL×E5
+ÁÁ)ÉÁ¼&èÓA'r£M&-ç"4¨w9þ£É+¦]w}·¼ÝÛ¿ÏLãYåë@ e¹
+ªªß9üZ]{J®ñã7áÎyÏØ¦òsß®5çÅbªéÝN*b&ô4/]§K~*IcÈñ¶ëø¬éÈÒ2o4ß}VºßTËS@
+$÷{cqk]óxÖtv f0µ´a³4¨ÓS¼Û~1Ñ^ÓÝ7âôéuê$1Y&.Ðcô1s}=Yó<è ðúÂô¸·O©Zs1Dg@§eѼÞ
+2ZáJåÖD sp/ èA*@"hÔgÊ 7ÔFz¨ëÇSºø×ûr® Nv9.¯Úåç«À)ãã¤I$ [ o%¶IN½þIy÷ú²iá˱MWNúòÊØôóë2É)UkÓŪ¦É,ïlÔÞC`Îv·§¨È¨³Àí¸Ip"qȬXª*-Lå´Ô"rcË>y¦ÚíÊk|r¶Y®HZÖø¾1\Í=°V0Çq&¨1W[ÕÓ"MHÒs/(Åé1 F.÷ªYms
+cïþ4¼m!'³G©õ3Ô"ÎCèNr©àBØÃe5 Cá|¸NfdÓVwnÕÎÎgÂÕ=å¹oÝpµØ
+½·«[e¹äG¦´ [ ùÚwÎz¶Xá#x©zxÞÁÖ¬[b7ªß(¨Ü á1¼¦ÆÆü[Ç&vÝÚá©$)9@ÍUÔk7´iW¦uWw
+úG Ï4÷Î dqó4gm²
+Y
+Æ="§6ãÆÚÂÁ^5zèáÛ,5ÅxÎ"æ)ßs¦%Úwì\Ïz<óÐî'ÂÔÈ.tã©Ô
+»Å4jSB(åªZùç$CÆMCªh¯n-}óé|_Ç<ÈÜ5q²ü^Ö©jRøå-$ðÔ%/«æTäCãÂpÒW9%wÄÔB#Ô¹ÞË3u,¡-7¡E`Ó¥ ÅJ8óTéÛãÁÆÖ¯ \ÎÏ~lོñqܼ¼Ö
+L
C¼£m¶Ã:ÚµLï[+Rk¢Uô¬ÙÎg1¶{ìóËoÄ<w½eÜ
ï¥Yãw fdç;:ÊtíâxlqŸÁ¸pÔJ×n*äÝ£Q¹o1ê§iÒTè3V¢ç¨o¥MWTÖz.]³Å«jÝJ¤ÞöéøëÒtÙÓ~o(ÛïúáÅ89Áõ:³¥àß:~pO(§NàÌ;hAn ¤´î.uRùÐf=1ë'fë¾ÛÕå÷ïË&n~sËb=sICºc+J®ÎïD]½ÕÅ´¦3ÙçÓJvñóË6¨¥^;»¶âlæöô-æíݺ¦%¡âSÍÛ VLb£m$1iWÄnpäc#BSi6-Uç&bµa¾¼ÊKx¸Jy7Ú£9½£F2â3¤så¸çÇ-6ßTÞÙôËØîkÒ÷㥱l«z¿<ú-Ï.2ÍÓ½lZªê«óB<Î9meµøwÇw^UÔ;æn[vï/
yóÓnÜTâ²Ûr@ÆÛo+ׯþ
+t¡WöÓl¸ôD<Zy'.kÝËû/³äD àï©ç\ÉÜöÙÖ^ß7|I6;9S~4×KãMmøÇªÌT?Å7ã-LZÓ,¬Öå¹E'þe½~ªYbªRÉT¯È-ìð
+ ò=ôP7~`Ï'óäÿã¤x.&akÂÞà\??0,±aû XNôûµJ¨¡,tceÃóÆ¡aÐ`6Âd5_ÿÂÀ¿X ùö4P?îöÈ>ÀO&á°JA`²ÜZͪ©UQLàÁ¸OñZÌ2
+
+0º
+°
+⺰Áãê?8¨dÿ8ö
+qÂxÌ9P Ô'°P}¤H¼!f(Iîä0?9ÿ N¡)Ý'8&Ã8d;xòù
ÃPHÜ
+ A¿íà íöê¥RDHüö§ çÁ¸I%Â5 Ì(~Øa$$e @ÎÁ.ÝCi:á@°K°e×çÈ&BªU¸%ÄhøiõÒ¤Ë&¡æIÊ
+
+¢"EÃ騳(2 D#T¨$5)>ð/Ô?8OrQ))("Hû#)'̧vP_HEªH0¸X>îç0PkzRÀRp ];Å5
¤CPh
+
+ @È}°ýÀ>×1Ød ÊP¡È'@ Þ$$}sÐÌ&pop]°ZápÐ;;?X4XKX%Æ(4DÐ<Cpýpn/:T¥UEJÎÀÄ tI0à>p÷ Ð('ÀAñ
+ë
+
à {âpõÝ$n'¢$H°o°2
+ p¨ßQ00Ð.aÀ&ÁìÀjt"áp°'²HH¸5¡ªTªU*J¥, ûAÎ1päGx}ÁÐ;»#pI* 06è`POMBu jÖ,3=G{á¨O0lÁ ¸#Äy*À#¼
+Ð÷fÉ
+QÀô0Ü>#´hA Ð.c/` 9Px|HH¸¡9 a×r *ÀâDIxaplGjÁÜ û6@õtDÈP}ôHCñBüp`I*
+$ñÒ÷
+àà4Ü<"Ö<ïâ
+ø9È9
+
+¯ä(n$ìûCÜ´÷âÖwÞãE(¢*¢PÔàH#`Ô$ö è`?G_#r Ì>`ôì
+÷ ﻯGÄ;ãzpP|DHvu`°ÔX(;¨(%Ôq`æ và&Aö 2fæ7÷¨=Pj4^aPJ
+HB((Ñýàá$v°]`ï
+
Ä["ÁH<
Á>Ð`dG@¸xüõf1^yû!KHî
+^Dò®v ðÍ$Ph;
+È
+[Ý"$RZ$G-Y¾úÃßPØ((>¿xw"D°4ºà÷
+À, G¨~¸;Ç ë&`µ»ÔÀÀè(tDó 0ºDHØ*$$p¡PjrAÔ0¡\4ÝÒ"HØ*$
+Áäà ýkÌ<C¼% ¤5 <oæÁ;ÃP9+°Ø'mRDIÛõ L¡BN£pnÿÚ$HúÀàANHHÂHI!#P9=À!ÜC¼
+=Ã_ !#À3 È%Aà hAØ5¸(.@,Tðf Á8 `#¸%À¢BG v}I 'ÿÅÜN$,|V#À
\ No newline at end of file
Deleted: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16amd64-8n2c.tar.gz
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16amd64-8n2c.tar.gz 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16amd64-8n2c.tar.gz 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,50 +0,0 @@
- ¨Ø9K í_ÛÊåïëèSðq7båEýAô=
-Ç(¼öN¬ØØ'DRÝu}}5~Q »MT¥ÎóÓܱ¤XÝHªBå©,ÊÇyðïÇ+;û¿CVQäyü_SäYýgã}ý¿G~1Æf6¯þ>Ø_2cËå}?g<íöåv4úåóÝúîa¹zåºÅvø°Óøo¶ë!nñ7λÜd.TñwÖd?füg§åê˺Ç6bÃ!ÞWâ_©ÞùøûÙ_FYßÃwQÿòÅn·ÞþÛïGÙ»_«ùz;]Ϋ?ýái¿Xí³?üåûê¡})ߪ¯üÝãz¾xø·ê÷Î~?ZêÏÊÑ¿¯·QõÏFÿ{³_l׫ÿ¶üï£ÿ|ni4ù»Ý~±Ù,Wwu³ñÓÿòÿ?ϳñï
-ïfåì~1Ú-ÿ+~ªÉ¬ýùï6÷ßvËYÕBýfïvËÏUÌîvÕì»YlµúÂËGÆ¿8|©Ü,g¯ðn¹ZîÕgÿ2^ýeó¿øm±¿.~-6ûåzuü»(ùèañkõ3Wñî«ÊªõêÕ?ýú¸Í£Ín1Úïf£ÇÝv´)£ÇÙb4ûm\·7Ú-6£Çý¶úÊ]üJ9=®.ÛÇæÂhöðåáiw?z|ümôå·êvÕ§UÿÙÑý~´û¶«~øê^ÿ¿¾øm__2]oö£Ç¯ÖÿYÿf´]l¦wëõ|´Y-GåýiuÍìq3}Xܳoï>¯ïÖËM¼A.ð»*(ÿ_<»ãþÏÕwvoÀñ»:~1øCx¦åÃònõX=%¿,çóêïêËâçúlôy¹ßÃö?F~|ø_Û}õ¤¼ÛTßñvôX®ªfâçü¾ºs£/ÕÍþµúo¿ß¼{wú7óï? Eó5|@«tl~øÔþd¨ô ãæjùVh1ùáP÷fÐWzÐIóu|@ù]õýè¨ÿÉP+èAmÖ|@=ÐcÏßÌúýÔæóý9Ðð= NÒÚæøþsÐâÍ< ¯ô ®ù|@tü= ^Òúæ:æús< 7ó¾ÒæÍtÂôçx@ÍÏJÊ%]èTa.©~DÿýÙIßD_éD¯%MúYÑ-$½èta>©~DÇ?þ#ú³%¾ÿ¾Ò^I(f~GôgK)^Ô]I)æ~GôgK*}ÿý~/ê®$³J?ð=ÞJÐ4ýß»}¹ï·×ýßÕ
»ôSÐÿ öÖ£±É(83®ºdã3lÈ-Âx<²Þ
ɨ(F¾êT²Ã UÝy·)¼ù<ÍÈ,^_}D¯·Åäùz3
-«îÎÚQ°>OÆÎ£©.2ÏÚQ>©>¨úc>vÕE
É̸jÇûQ6ziÞÉÇÕ7©x¥·¹ûóñ»ç+«4·¡nÂfõ'7ñßÙqõáùº¼ú®Bõ96³ñ³ªÎ²º²¨>¬úDÛ5/ê[Ìóøýê[X=µãêû=ýênúêÞTߣ Æø¡!Yÿ|öqUKÔMLêy<©îJý!¾®uãêÆfñ_W1ª¿ÃÜê7ζ]}vuøçÄT]'Õ
-«þÝÙ7iª°kCu3FÅ$ØIQ
\3£]j«oÜøw¹syý]N²¢ºaõ·YüùÂ*6¯oÏ8Ë·q\ýnd]¼Æýóðñ»´ñ;¯"¯à«ÆOή"MLÝó
¯3Wß©jf±ßÆv]VTO/F/?gõ(ßãë'!¼üMý·¾z4Oþè&.ägWðññññ×OôëÝlÿÛ~ä³cë'ï>ïjhuYfç¸Ånd'ãÜÖÞM·O«Õru72Ç?~XϾ.æÕÇý«_Ùzåìý÷m7D
-ûÿ«0ç¼qqÿ÷ÿ#hľøuYÉ¡Ïç [ü³àLa3Çõ<cü!|7þÕï÷Ç^´øÇõ¿9Çø#hÿlótó3^ÿ%Ëú/ºÄ?®yÞò¤Å¿¨â_øý?Îñ߯7ëõÝ7Ák\néñßßoå|úl èÐF°ÿ~þ¯ú¹¿÷Ö3ÿà ÿÆÞjIWÒõÿì(nÊÙ×òn1]Î[ÚhÕf/ô[¨ÂWMºþ£·¯]ó§¤ëß@ÿüºê?aö/ÿ,§þ0c7 ßÿ§Ë]_X0ÿ÷9ÇÂWÍãõwÑ¿¿Ô¿ñ¬ÿ!¼/Ø(¦³þ׫JQQá¯ìÿ¹2þg¡àü¡úUÓYÿõ®S [þ76ÏLf]Ôîó¿ã¿\Í¿ÙÄÇ@ÿ/óÿdñ»Ì»·Ñ>ÿõk8þ#ÅþÌ9Zdúñ Äwé¦Üî±fÇwÚH_ÿ9×ÿ0pþ¯þ÷ß6}ÿærþWÿúGðiµü²\ÌÙ(E¦ÿºWç6ÒÇ[ä\ÿ`©|ÕÈô?[ß/¶ÕìÛá e9 ]ÿî2ÿýÿg áúß}¹]̧պ ÒÇÿ<3ÿC ÿG72ýÿ£ü¶®¿LËÝn=[
ûå¯Ëý·ï¶>þÇZÔ?Ã@57ÿå¦öõ¿ÿ?ú Àý¿Zéõôøy±3Ýbߪöñ?oè?dÔ?ÿ§öõ"Ñð±þYüûö]îÿ°ÿt©F¦ÿú@ÿndúïÙÿÕxÿ³ÁRÿ>û]^dúø¿¸þã¿ndúø¿èÿ@ÿnëÃû¿¸ÿíºé¿oÿWcýÏú?!pÿnnÿòQÿùWú¿"Óßþ¯Ëü¿ÌÿaÈ
-g èß ü_¬ÿAÿû Ðÿ¥þþ/êó¿ºé¿ïú_Íñçÿaø¸Úí·O³Ø{³'PLÿ ÿó¿8þëF¦ÿùôéF¸þ7¼ÿþOôéF¦ÿõ?!0û«Çÿ¡ü_Ô?cþþ/¥Èôðqýý_ºé¨ÿÔ#Ï
-ïîÿ
-¿TWùþ/ãÿrþ{zÉñ·ÕïsÆAzü÷÷ÛE9î«Ûu×å¤Íÿcü½7<ÿÂó ¤ëÿÅû·)g_Ë»Åt9oi#mý/ê?·<ÿóÿºI×ÿl½í ùSÒõoYÿþt#ÔÂì_4ÿ7ë¿A8F`Æn@'7¿ÿw0 æÿçÿbàê¿nnÿ»Øÿóµþcýö½c Îú_¯¢Õ_ÔFTxHÿ³Ppþëºé¬ÿÿGÔF·üo¢í?³.ê?·ÌÿBHÿñüÇ´6ùÿñÇ ßõBcýþ_ñüOV ÒLÿCÖÿ ú?\ÿÀù¿ndúï»þÏåüõÿP|Z-¿,söJéÈú?µþÏõÌÿéF¦ÿ!ëÿÔù¿Óÿõt#\ÿ°þOÿ¸$Hýàø¯þû®ÿs9þ¸ÿa0ÕÜ<þ÷^ÿ'êÿÐÿá¾(E¦ÿ¾ëÿä
-ýç¬ÿ!æÿ©}½Hô!ü_þ/²øyþÛ1ÿËùÿ¦þþ/êý_ºé¿gÿWãýÏKýCøPîKvzéàÿâúÿºéàÿ¢ÿý_º®ÿ
-ïÿâþOôéF¦ÿ!Ï;ø¿xþê_77ÿù¿èÿÆðe7 þ<ÿíèÿâú?ÿ¦þ
-ÂÿåéÿB ?ÀÿÅý?èÿÒLÿ ÿõù_ÝÈôßwý¯æøÏóÿ0|\íöÛ§Yì½Ù(D¦ÿù_ÿu#Ó?ÀÿÅüú¿t#\ÿÞÿEÿ'ft#Ó?ÀÿÅú¨ÝÜ<þåÿ¢þ!<'`Ù
-èD¦ÿëÿèÿÒMGýç²?D
w÷¿TWùç?BèÿóßÓÛH¿5.öÿÿð¤Ç¿]óénù¹º]w]nIÚü?Æß{Ëúë/':I×ÿ÷oSξwérÞÒFÚú_Ôn-×ÿ!pö¯týÏÖÛ?%]ÿ6æÿ!Ðÿ£¡þfÿ¢ù¿aý 8Îÿróû`þïéÿÃSøª¹qüïbÿKÌÿÕú7ù?þ={ ÍtÖÿzþ¢6¢ÂCÒø
ó|ÿ×Mgýü?¢6ºå³`óÌdÖEýç.cþAbüç?¦µ!Èÿù²ø÷]ÿ'4Öÿyþxþ'+ éE¦ÿ!ëÿú?\ÿÀù¿ndúï»þÏåü¯ÿ-õàÓjùe¹³PLÿCÖÿ©õ_pÿ
úÿt#Óÿõêü_ôÿC`ýÝ×ÿ¬ÿSë?3ÿC`ö_72ý÷]ÿçrü6pÿØhææñ¿÷ú?µÿ?ú ç_ôÿ+E¦ÿ¾ëÿä
-ý³þÿ§öõ"ÑðÙþ/²øyþÛ!ÿËùÿ¦þþ/êý_ºé¿gÿWãýÏKýCøPîKvzéxÿçúÿºéàÿ¢ÿý_º®ÿ
-ïÿâþOôéF¦ÿ!Ï;ú¿èÿÀýº¹yüÊÿEýC8ö¿ô)E¦ÿ!Ï;ú¿¸þç¿éF¢¨ÿÅúodñø¿¸ÿý_ºéàÿ¢þ!0ÿ«þû®ÿÕÿyþ«Ý~û4½7{
Èô¨ÿÅü/ÿºéàÿbþý_º®ÿ
-ïÿ¢ÿý_ºéàÿbýOÌþêææñ(ÿõáØÿÒÿ¥þþ/®ÿC ÿK7]ôÃÑ¿5íú?ÿâùÏÿý7\PLÇñßÉNþ=ÞÝÿYéß¾°ô"èÿýz³~Xß}<iñ¯ý¿Î³þ#ôøïï·r>Ý-?W·ë®Ë-¼ÿ{ËõÇ9ÐIºþ_¼¿röµ¼[Ló6ù?k¹þþݤë¶ÞvÐü)éú·!pÿ'ê_7Bý'ÌþEóÑÿá»ÜüþßÁ (ÿ{ÖÀà(|ÕÜ8þw±ÿ
-òÿ¹q¬ÿÁ¾g Îú¿Á:ÿuþ?\ÿÀ÷ÝtÖÿÁÿ'j£[þ7uÙgë¢þsÿEÿãù¯imòÿ<ÿ,þ}×ÿ
-Íú_ã?xþ/+éE¦ÿøVàü_72ý÷]ÿëÂÿÇ®ÿAø´Z~Y.æì"Óÿõ¿ÂáüGÎÿ!p÷ndúçùoÖÿÒpýç?¾ý×Lÿ}×ÿºÿYÿ
ì 4sóøÏójàþ_¥Èôßwý¯õ¿þEÄü?µ¯þ³Aý_áàÿòô!ÅÈóù_®ÿBàùºéHÿW8ø¿¨ôéF¦ÿý_ú¯6°þå¾d þþ/ú¿!pü×LÿCú¿BíÿÊéÿ@ÿnëú¿jýÇWê ý_ºéÈóëõ?sÿîÿÐÍÍãïþ¯Pû?2êÂ1ô)E¦ÿ!Ï<èù?<ÿQ7ýÿ+§ÿ,þ ÿýÿèÿÒLÿ ÿõù_ÝÈôßwý¯æøo©W»ýöi{oö
-éàÿbþÇÝÈôð1ÿþ/Ý×ÿ÷Ñÿ þ/ÝÈô?¼ÿ+°þfusóø?ÿõ?1#@ÿRdúø¿¸þþ/ÝtÔÿrþ <üóÿ«êèÿÿÙÓv»Xí§óíò×Ŷ{íó¿Ë÷?g
-÷ÿC(gå4F£J$ú¿[Wò_·ÓíºSíó¿Ëú?ÞêÂãbõDéë¥þ7ÛŮҽ¸týgÿAdïMNýë¥ãøo¼øí/ñýÏW_¯®òßÿtÿ~½Y?¬ï¾¥?Éñ¯zëøïï·r>Ý-?W÷ë®Ã=IÊÿÔñ÷¾ ÿBê?Ît"ÐÿËæ¯M9ûZÞ-¦Ëùëm´Ïÿí
þs[Ðÿ ¡ ðU#Ðÿl½m×ü)éú·
§ÿ~ÝHõß}ö/ÿÖÿÅoÿóµÜþþß¾¤}üwóÿܱþÃý_ª¹uüïgÿWh¼ÿ®ÿA0 @Ít×ÿz÷zKÚ¨ôþó¬ÿ îú?l ´Ñ-ÿg&³.ê¿ÞÿÅüïð¤Æ¿Þ dÓôü¿¯? aü
-À¦Ïÿm(¸ÿBÕᲬbúO* ÿÁ1ÿóÝõT ¶=ÿ×ÿ
þVË/ËŽRúO* >þ»¸@ý`õÝõT Vÿ/óXÿU7Òõ¿°ýgú@ÿnúO* ®ÿà÷ÿ@0ú×Ìíã{Øöõ¿ÿ?ú Ô±Éèÿ×PÿI`ÛÇÿüRÿýÿbþÚ×HÿÀÿeèÿB Ïþ/ßÈÿrþçëF¨ÿÁý_ú@ÿnúï×ÿÕxÿ³¡ þ!|(÷%» ½õ?¼ÿë?8þëF¨ÿáý_ôB ÿK7Òõ¿Áý_Ô?ú¿t#ÔÏþ¯ÆúsÜÿû?tsûø?ÿúPÇ&£ÿK+Bý÷ìÿºÌÿûù?<ÿ[7"ýÿËÒÿ
@ÿáý_Üÿþ/Ýõ?¼ÿúÀü¯núï¹þWsüçù>®vûíÓ,vÞì "Ôÿðþ/Öÿ
Àñ_7Býïÿbþý_º®ÿ
-îÿ¢þ!Ðÿ¥¡þ÷±þfusûø?ÿúPÇ&£ÿK+Býïÿâú?ú¿tÓEÿõ.÷-:û7Ò®ÿú.Äó?]Î÷ÿVM×ñ_tðï¨ðÎþϨSøçÿBèÿýz³~Xß}<Éñ·Õï=ã =þûûí¢Oã`¹ºërKÞÿëø{o¸ÿÂó,ç :I×ÿõwSξwérÞÒFÒúÿÜZÿºI×ÿl½í ùSÒõoC`ý7ôÿéF¨ÿÙ¿hþÑÿáÇn@'7¿ÿ÷âÿkÌÿ}ÎñÇÝÜ8þwPbþÿ Cÿ?ì={ ÍtÖÿzwúÚ
-IãÆú ¨~ÝtÖÿÁþ'j£[þ76ÏLf]Ônÿ
ÿãñ¯imòÿãAÿ¤ò_æÿ¡±þoXÿB<ÿÀô"ÓRù/Áú_ȹþóÝÈôTþ«CþïrþWÿÜÿáÓjùe¹³PLÿIå¿$þÂsý¿ºé?©üWZýCþ/äôÿC`ý/Ý×ÿRÊIü?qK0õïÿºé?©ü`ü6pÿØhææñ¿½üÄÿ2ú <OÀØèD¦ÿ¤ò_ú?>ä¬ÿ!æÿ©}½Hô!ü_<ÿ,þ}û¿.÷XÎÿ@ðüGÝÈô?¼ÿËSÿ¸þ«þ{ö5Þÿl0Ô?å¾d þþ/®ÿ@àø¯þþ/ú?!Ðÿ¥áúßðþ/îÿÀñ_72ý÷íÿj¬ÿÙþO4~èææñ(ÿõá¹f7 þûö]æÿ}`þÏÔDÿ©ÁE
'û¿ý_dñÞÿe¸ÿý_ºéPÿúÀõ_ÝÈôßwý¯æøÏóÿ0|\íöÛ§Yì½Ù(D¦ÿù_ÿu#Ó?ÀÿÅüú¿t#\ÿÞÿEÿ'ÿºéàÿbýOÌþêææñ(ÿõá¹f7 þ÷1ÿþ/ÝtÔ¿üy *¼»ÿ«ø¥ºÊ<ÿBçø¿ÿÞFrüq±ÿgü'=þûûí¢OwËÏÕíºërKÒæÿ1þÞ[Öp@ÆINÒõÿâýÛ³¯åÝbº·´¶þõ[Ëõýë&]ÿ³õ¶æOI׿
-ùøu#ÔÂì_4ÿ7¬ÿá Çn@)7¿ÿw0 æÿþ?´ÿ鿯ñ¿ý/1ÿWëßxæÿ ø÷9{ ÅtÖÿzþ¢6¢ÂCÒø
óôÿ꦳þþQÝò¿Y°yf2ë¢þs[0ÿ 1þÇóÓÚäÿÇü?Yüû®ÿëÿ<ÿC<ÿô"ÓÿõCý®ÿAàü_72ý÷]ÿçrþg5Ô?O«ååbÎ^@)2ýYÿ§ÖÁý?èÿÓLÿCÖÿ©ó!Ðÿõt#\ÿ°þOÿh ¤þPþºé¿ïú?ã°û À@37ÿ½×ÿ©ýÿÁÐÿáy½Ndúï»þOÞÐ?ëÿaùj_/ýg ÿ
-ô!ÅÈóßþ/Îÿ ðü7ÝÈôðQÿèÿÒLÿ=û¿ï6XêÂr_²ÐLÿÃû¿<
× pü×Lÿ ÿýèÿÒpýopÿWÆý(ÝÈô?äùoGÿý¸ÿC77ÿCù¿¨Ç Ðÿ¥þ<ÿíèÿâú?ÿ¦þ
-ÂÿÅúodñø¿¸ÿý_ºéàÿ¢þ!0ÿ«þû®ÿÕÿyþ«Ý~û4½7{
Èôð1ÿã¿ndúø¿ÿ@ÿnëÃ×ÿ¢ÿå¯þþ/ÖÿÀì¯nnÿòQÿ ÿK)2ýü_\ÿ@ÿn:êߤùxJTxgÿ¯¾^]åsú¿tÿËðÉm$ÇßÏbüGÿýývQΧ»åçê~Ýu¸'Ióÿ:þÞóüoÙÆù¿Rú1ÿmÊÙ×òn1]Î_o#iý¯Önÿ åÿu#Ðÿl½m×ü)éú·
cý'øu#Õ÷Ù¿hþo¸þ!Þ~Çù¿Znÿow µÿîrþ[ú!pù_7·ÿýøÿBãýç?`0ö½qìÔÒ]ÿëUôúKÚ¨ôþóÜÿ£îú?$mtËÿf¡¶ý[õ2ÿ!5þÇ ÚHÏÿÛêÆ0þIÒçÿ6Üÿ!ÿÉ
- at zê?© Pzþ/ËüÎÿu#ÔR öü_cþ
-îÿðiµü²\ÌÙ(E¨ÿ¤@éã¿Ë,ë@`úO7Bý' äÿÇüÖÿÑtý/¥ @ÿY þ!Ðÿ£¡þ
- ¥ë?8Çý?7 ©æöñ¿½ Pûú_Ãÿý?˯ôÿkE¨ÿ¤@íã~©ÿþ1ÿOíëE¤ÿlhÿ)
-ÿAÿý_¾ÿåüÏÓPÿÃû¿¨ôéF¨ÿ~ý_÷?
-êÂr_²ÐPÿû¿× pü×PÿÃû¿èÿ@ÿn¤ëû¿¨ôéF¨ÿý_õ?ç¸ÿå¯ÛÇÿü_Ô?úögôiE¨ÿý_ù_0ÿç¿éF¤¨ÿÑÿ
@ÿáý_Üÿþ/Ýõ?¼ÿúÀü¯núï¹þWsüçù>®vûíÓ,vÞì "Ôÿðõ¿XÿÇÝõ?¼ÿùôéFºþ7¸ÿúÀônúÞÿÅú(ÝÜ>þäÿ¢þ!Ô·?£ÿK+Býïÿâú?ú¿tÓUÿNtòç¨ð$ÿWuçùºÇÿåü÷ä6ão·ñG ÿþ~»(çÓÝòsu¿î:ÜÁüß³þzõ
óµôÿâýÛ³¯åÝbº¿ÞFúú_nÿ åÿu#Ðÿl½m×ü)éú·
cý'ôÿèFªÿî³Ñüßä\ÿP»/8ÿWËíïÿí öñ¿áÿÉý¿£ò5sëøßÁþ×Aÿ¡ñþo¸þÁØ÷ìÓ]ÿëU´úKÚ¨ôþó|ÿ×Mwýü?6ºå³`óÌdÖEýçAHÿñüǤ6Òóÿ6 ? aü{®ÿs9ÿ·¡`ýgñüOV ÒPÿÃ×ÿaþçÿºê¿çú?ù_(¸ÿ§ÕòËr1g/ ¡þ¯ÿÃýÿ¸ûG7Bý_ÿù?¬ÿ£éúßàõ¨LþëF¨ÿëÿ\ê?8Çý?7 ©æöñ ú?ôÿ@¨W_2úÿµ"ÔÏõòFýúÿ1Äü?µ¯þ3ÿöVÆç¿½xþnúçùooú¿t#Ô¿þ¯ÆûÏCñ¡Üìô"Ô?Ï{#pü×Pÿ<ÿí@ÿn¤ë<ÿím@ÿnúçùooîÿÐÍíã?Ïû©{ßþ/õÏóßÞ<ÿM7"ýÿËÐÿ
@ÿáý_Üÿþ/Ýõ?¼ÿúÀü¯núï¹þWsüçù>®vûíÓ,vÞì "Ôÿðþ/Öÿ
Àñ_7Býïÿbþý_º®ÿ
-îÿ¢þ!Ðÿ¥¡þ÷±þfusûø?ÿúP÷¾ý_Zêxÿ×ÿ!Ðÿ¥úO¬øuNTxÒù¦ðõ¿ tÿËñïémtÿ±ÿw¡êÿãïéñßßoå|º[~®n×][4ÿ¯ã。ÿÂs8 ÐIºþ_¬röµ¼[Ló6ÖÿjýçÖðüO|ñ×MºþgëmÍ
®ë?A þu#ÔÂì_4ÿÏèÿÅp ] J¹ùý¿ÿOcþïsÿ8þëæÆñ¿úóýú1dï¹ô§Îú?¤ÿEm$çÿl[æ $Æÿxü[Zü_ÁøcÅ?©üGñ?4Öÿë¿Bçÿ±^dúO*ÿ!xÿ9ßÿ1pö¯þÊtXÿ¿ÿUã?ýÿ>_9{¥ÈôTþCÿ/<×ÿ Ðý¯þʤíÿ?¬ÿW/ Ô?ÖÿÐpý/¥ü$ÿSÔ? æÿu#ÓRùÁølNÿ?Øhææñ¿½üÄÿ2ú!<G½NdúO*ÿÑaüÏúÏYÿBÌÿSûzè?µHTx²ÿç?AÅ¿oÿ×¥ÿÛrþç?éF¦ÿáý_úÀ?ÝÈôß³ÿ«ñþg¡þ!|(÷%» ½ÈôðqýÇÝÈôðÑÿ þ/Ý×ÿ÷qÿ'ú¿t#Óßþ¯ÆúÍéÿÀýº¹yüÊÿEýCx »Èôß·ÿë2ÿïóxþn$ú7ÿ¥ÿ,þ ÿ÷ÿ@ ÿK72ýü_Ô?¾øéF¦ÿ¾ë5Çÿ
áãj·ß>ÍbïÍ@!2ýü_ÌÿBàø¯þþ/æ Ðÿ¥áúßðþ/ú?!Ðÿ¥þþ/ÖÿÀì¯nnÿòQÿ#Àn@'2ýü_\ÿ@ÿn:ê,;ùó@TxwÿWñK}UFÿÎñ9ÿ9½äø[ãâú/ã?<éñßßoåüåðm¤Íÿcü½·ôC8ÜÿËJI×ÿ÷oSξwérÞÒFÚú_ÔnÏÿÀônÒõ?[o;hþtýÛP°þüºê?aö/ÿîÿÁPßÇù¿Vn~ÿï` Ìÿ}àøaLá«æÆñ¿ý/1ÿWë?~ú0~?a Îú_¯¢Õ_ÔFTxHÿ³PpþÆÝtÖÿÁÿ#j£[þ76ÏLf]Ôîó¿ã<ÿ1
-Aþ¿pÌÿCÅ¿ïú?¡±þo¹ÿB<ÿô"Óÿõºþ×ÿ0pþ¯þû®ÿs9ÿ ©VË/ËŽRdú²þOÿõ?0p÷ndú²þOÿþ¬ÿ£áúßõjýgóôÿèF¦ÿ¾ëÿ\ÿÁÜÿÁv ¹yüï½þOíÿgýoÇõWúÿ"ÓßõòþëCùj_/ýgÿÏ ÿç¿<ÿ
ÏÓLÿÃû¿rêý_ºé¿gÿWãý/. Sÿ>û]^dúø¿¸þã¿ndúø¿èÿ@ÿnëÃû¿¸ÿý_ºéÈóßþ¯@ÿ'îÿÐÍÍãÿPþ/êÂáþÓÿ¥þ<ÿí æÿ0ðü7ÝHôoþ/Ö ÿðþ/Ëý?èÿÒLÿú_Ô?æu#Óßõ¿ã?ÏÿÃðqµÛof±÷fO þþ/æ!pü×Lÿ ÿó?èÿÒpýoxÿýèÿÒLÿ ÿëB`öW77ÿCù¿¨ûOÿVdúÞÿÅüú¿tÓQÿÙÉ¢Âü_ñ*CÿÎñ9ÿ=½äø[ãªË éñßßoå|º[~®n×]["ÿ{ÖÁpX~áü_+éúñþmÊÙ×òn1]Î[Ú¬ÿ[Çó?!0ý§týÏÖÛ?%]ÿ6¬ÿþÝõ0ûÍÿáúúþ;Îÿµróû`þïyþ
¯Çÿ.ö?Aþ/7þ_ã÷ì4ÓYÿëU´úÚ
-IãVdÿCàû¿n:ëÿàÿµÑ-ÿ
hûϬúÏgþAbüç?¦µ!Èÿù²ø÷]ÿ'4ëÿpÿxþ'+ éE¦@ý®ÿAàü_72ý÷]ÿçrþ7 Rÿ>_9{¥Èô¨ÿÃõÜý£þõèÿÀú?º®ÿ
-_ÿóÌþëF¦ÿ¾ëÿ\ÿÁÜÿÁv ¹yü¨þÏÿÀp~Ñÿ¯þû®ÿ7ëÿ°þ7ÿ§öõ"ÑÆóßÞ²øóü··ÏÓLÿ<ÿí@ÿndúïÙÿÕxÿãùo(>û]^dúçùooÿºé翽èÿÒpý翽èÿÒLÿ<ÿíÀýº¹yüçùo?5îþ/ÈôÏóßÞ
-<ÿM7ýÿõß Èâðqÿú¿t#Ó?ÀÿEýC`þW72ý÷]ÿ«9þóü?W»ýöi{oö
-éàÿbþÇÝÈôð1ÿþ/Ý×ÿ÷Ñÿ þ/ÝÈôð±þ'fusóø?ÿúpè~éÿÒLÿ ÿ×ÿ!Ðÿ¥ú7¹ìèϨðÎþ/_}½ºªºþ/ Ýãÿr |rÉñ·Æ[úÿ â¿¿ß.Êùt·ü\ݯ»÷$iþ_ÇßûëÿâígÿkE ÿóߦ}-ïÓåüõ6Öÿjýç.ãþ
¯þgëm»æOI׿-<ßÿ!Ðÿ£©þ»ÏþEósýB¼ý3ÎÿÕrûû»¨}üwóÿÜYêÉ©|ÍÜ:þ÷ãÿú·¬ÿÁø÷ìÓ]ÿëUôúKÚ¨ôþó|ÿ×Mwý@6ºå³mÿuQÿÁæ¤Æÿx dRéù-a? aü
- ¥Ïÿm(xþxþ'+ éE¨ÿ¤@éù¿Àú 8ÿ×PÿIÚóù_(¸ÿ§ÕòËr1g/ ¡þ
- ¥ÿ.³¬ÿ»t#ÔR Aþ¿pÌÿA`ýÝH×ÿR
- ô±þ&ÿu#ÔR týç¹ÿ Ô¿fnÿÛ µ¯ÿ5üÿõ¿0ÄÛÏý¿zê?© Pûø_ê¿ ÿCÌÿSûzé?ø¿,ý_ñïÙÿåù_Îÿ0ðü7Ýõ?¸ÿËRÿèÿÒPÿýú¿ï6Ô?å¾d ¡þ÷qýÇÝõ?¼ÿþOôéFºþ7¸ÿú@ÿnúïÙÿÕXÿsû¿ pÿnnÿòQÿâí§ÿK/Bý÷ìÿºÌÿûù?<ÿM7"ýÿËÑÿ
@ÿÁý_÷ÿ@ ÿK7Bý_ÿúÀü¯núï¹þWcü/xþ«Ý~û47{
õ?¼ÿõ!pü×PÿÃû¿ÿ@ÿn¤ëû¿¨ôéF¨ÿáý_¬ÿÙ_ÝÜ>þäÿ¢þ!ÄÛOÿ^úÜÿÅüú¿tÓUÿ¯3¢Âü_ÕUç?BèÿóßÛH¿5Þf?Aü÷÷ÛE9î«ûu×áæÿ¾`ýÙñ ôÿâýÛ³¯åÝbº¿ÞFúú_nîÿÀåÝô?[oÛ5Jºþ-óÿ èÿÑTÿÝgÿ¢ù¿ÉéÿPßÿçÿZ¹ýý¿Ý Ô>þ7ü?¹eþá@5·ÿìôïÿëLö]bºë½VIµÂÞÿ³ÂsþÚ×Mwýü?6ºå³`óÌÄþC3ÿ 5þÇóÚHÏÿÛøW? aü{®ÿs9ÿçùo(âù¬ ¤¡þ?ÿù?ÿëF¨ÿëÿ4æ¡0Ô?O«ååbÎ^@)Bý_ÿû p÷nú¾þóXÿG7Òõ¿ÁëÿPÿü×Pÿ=×ÿ¹Ôp<ÿ Ô¿fnÿªÿCÿúþsÿ¯Zúï¹þOÞ<ÿþ1ÿOíëE¤ÿlhÿ)@ÿaü?ÿó?<ÿM7Býïÿ¢þ!pùW7Bý÷ëÿj¼ÿÙPPÿ>û]^úÜÿe¸þã¿núÞÿEÿ'ú¿t#]ÿÜÿEýC ÿK7Býþ÷AàþÝÜ>þäÿ¢þ!Ô÷þ/µõ?øùoÌÿaàùoºé?ñ0¸¨ðdÿWAÿaü÷qÿú¿t#Ôÿðþ/êu#ÔÏõ¿ã?ÏÿÃðqµÛof±ófO ¡þ÷±þ/ÿºêxÿó?èÿÒtýopÿõþ/Ýõ?¼ÿõÿ 0û
«ÛÇÿü_Ô?úþÓÿ¥¡þ÷qýý_ºéªÿÄ_gD
wö¹âxUnèÿBÐ=þ/ç¿'·ÿÿÏúÿ â¿¿ß.Êùt·ü\ݯ»÷D0ÿ÷<ÿÃaúÅù¿VúñþmÊÙ×òn1]Î_o#}ý/·¬ÿ!§ðU#Ðÿl½m×ü)éú¯äÏ÷øu#Õ÷Ù¿hþor®ÿC¨ïÿóÜþþßn jÿþÜæÔ?C嫿Öñ¿ý¯þCãýßpýÉÞÓ¨îú_¯¢Õ_ÒFð®ïÿ1ÿg³xõÚ×Mwýü?6ºå³`óÌdÖEýÌ3ÿ 5þÇóÚäÿYÿ0þ=×ÿ¹ÿÛxþxþ'+ éE¨Öÿy#pþ¯¡þ{®ÿs9ÿ³¡àû?O«ååbÎ^@)Bý³þÏ»t#Ô?ëÿ¼XÿG7Òõ?ÖÿyÐÿ£¡þ{®ÿs©ÿà÷ÿ@0ú×Ìíã?ëÿüÌÔ÷ûÕ"ÔÏõòfýúÿ!Äü?µ¯þE
'Õÿ±6¾Ðÿ@ÿáÎ;Äù_<ÿM7Býçÿªõ£þ!Ðÿ¥¡þûõ¾ÿÆÿ"£þ!|(÷%» ½õ?ÿ«Ö¿ÛÀ¨ ÿu#Ôÿpþ¯Zÿyá¸þþ/ÝH×ÿóôêý_ºê¸óßëÎqÿ7îÿÐÍíãÏþ¯Zÿõ@Ò¯ôiE¨ÿáÎ;è¿`þÏÓHÿPÿ+Ðÿ
@ÿáü_Ïõ¿ÿ@ÿnúÞÿÅý¿ÿÕPÿ=×ÿjø¿úðqµÛof±ófO ¡þ÷±þ'ÿºêxÿó?èÿÒtýoðú_Ìÿ@ ÿK7Býïÿbý_Ìþêæöñ ú_\ÿpH¿Òÿ¥¡þó=×ÿbþý_ºé¢ÿ]%üùôq6ݬÿQ~WþOþîÞFTx÷óC\ÿ¯f Ô?üºé8þ¢D
'Õÿ3
çù¯:ǿެÖwßBrüq9ë?BHÿþ~»(çÓÝòóCÇi@Òûÿaÿgý_ 9
-PJºþ_¬¿röµ¼[Ló6Ò×ÿsk¹þÁQøªI×ÿl½í ùSÒõÏúÏ(èÿÓPÿ ³Ñüßd\ÿpÀó¥Üüþßÿ¯1ÿ÷ôÿa((|ÕÜ8þwP¿¤þKn<óÿÂ{ö é¬ÿõ*îôµÿúÏBÁù?¾ÿ릳þö?QÝò¿Y°yfâÁ
þsgÿEÿãñ¯imòÿ
cþ,þIå¿:ÌÿCcýßòüoñü_V ÓLÿIå¿$ûÿr®ÿaàü_72ý'ÿêÿkÿXÿçÕòËr1g/ þÊIü?EÎõÜý§þÊIêÿõ¿t#\ÿK)ÿ%ñÿÄÀÔ? fÿu#ÓRù/Áølàþ&°ÐÌÍã{ù/Ñùþ pÿ¯VdúO*ÿÕaüÏ翲þÿ§öõ"Ñðú¿Èâß·ÿ«qþç xþ£ndúÞÿSÿèÿÒLÿ=û¿ïqúGð¡Üìô"Ó?ÀÿÅõÿu#Ó?ÀÿEÿ'ú¿t#\ÿÞÿÅýèÿÒLÿ}û¿ë6Ðÿ û?tsóø?ÿúp ý_Zé¿oÿ×eþßæÿ0ðüGÝHôoþ/Ö ?ÀÿÅý?èÿÒLÿ ÿõù_ÝÈôßwý¯æøÏóÿ0|\íöÛ§Yì½Ù(D¦ÿù_ÿu#Ó?ÀÿÅüú¿t#\ÿÞÿEÿ'ú¿t#Ó?ÀÿÅúýÕÍÍãÿPþ/êÂ! ôiE¦ÿëÿèÿÒMþWë¹ðÔÏÞÙÿ嫯Pïÿ¦ÿkx:Å?þ¿TÓß éñ/Øÿ3þÃÿj`EmÔñ/ø;\î«ÿÏÿváý]Ï?ì5ÿøwXì½BÒü/êßóý}ï8ÿSLþ«¾²KzЦ7ô;æ!Ä Nïû3Ù$3.LÞÕõ¸ÜíFÙá÷_ÖÛÅònUýq¹Ú/¶ò×Eýo¼OÞ=¬£8>"#c;6¿[ïïÛã_]0*þìg~@ÒÆ'jC4ÿ+8ÿCÿÇÅãrõeÞFKÿo¬iÎÿÏÿðî¯u=úËâñïë}ùðûQÍØÇ!¾þñä?mã×GckÃÄÙó>íóçF&Pþ0Û/}ùx
/ƧM|\çTEÈN.ø°Üî¿|@Íéÿw»Ü/>³¯¿ÿÎZ>,þ³¼[ì/°¹5§ßä_ÊÍæä8þ$§?Åj½:ûѨþäøÅ¿N®0Ùé÷ð×?ýmúiU=vÕ5/^ðÇõÓj¶¸ø9¯þÜ\ý¿=Ïÿ½7gÑüÛÿYÌÊåã?¿J§?Åß>¶K^îT8û1ÿãéîp'§'ÏMÖüêÉCså«{Ún^¾ú¯ÖFúÿyõò_Vfrïÿ.
»ìÿ=ëÿa°YÕ;ìåÿQJHÿw0{\¡Uÿ§þþ
-×ÿ0#0£àuÒIÿëUÜæ!n#}ý?39ßÿ dïé ×Lçñ?õзDùÿÀü?øcó¿Ìÿ@ÈÞs°fô?`þ·ñþsýÃKþ7äULIKÿúÓô¯
-ÛÂfÍÃĸ1;ýCó¬ÿáÉ®äÿBý3ß]æÿÂxÂ_pÿ3~b2wzÁeþÏûà&§\æÿ¬·ãI8¹ %ÿµåÿ²Fþ/«îé´fþ/Ïìøô§häÿ|õ\ÐÌÿsö -ù¿¬-ÿµåÿ²Fþ/¸±=»à"ÿÇÖ]ÐÈÿåùøô×òÙ«ù¿ù¿´÷?#jCäÿñôÿ H?6ÿËú_®%ÿÕCZÿ/S¤¨ÿwìÿ¤Åÿçú/ç¾N:ë¿Àæÿbý'æÿ'!þæÿBcýõ¿0ÿÞäìüÕ ÿáòþJþç¿AxÉÿù¼
-Î8)û7q§Ù¿*ÂkNs¹Íi.ûÁIÿ´!xÿ/,÷BH?vÿ'û\Ѷÿ³hîÿôbìÏ/8ßÿébNñäÆþÏÉO6Íý#;ÎíÉ-ùߢ-ÿ[4÷Üäì{¸¶ÿÓ^peÿ§?û&¯ìÿOïdKþ·hËÿmùßâÊþOÓ¢¹ÿsä'g4ò¿&·§M¼ÿ-^ÍÿÌÿþ8$ôÿÐü_aØÿ#¸üjQió\þû¿1ÄÛ?«þ£àuøþ/JÉHÞÿ£ÿïÿÃÓ)þõn·¬Þm´çûóùÜÿ«Nú¿/wñ¬iý»ë¨Ýtÿy°ÿÇÒÿ !þÐýÿû!ßOØÿ+&Aÿú\ÓÿCÿÿ.³ÏÌYõw¬õÙÈy®,þÐ$èëÿàú?CJÞ·ù?|Óÿá|°û?r79Ù1î¯ø?òÂ^Ьÿmó³&Zü¾ÍÿáþøªqzÁ5ÿÇøô{¸âÿÈÏnÔµúß'|ÿ÷ù?|ÿÃ_ñ¸¼8ý®ÔÿØ\ü5ÿG8»à5ÿÕÿáéÿøqHèÿ±û¿¹þáÜöÁýßÚH[ÿú?¸þáØÿRðJIÓÿXÔÀÿ<÷@HÿDÔ$þ9ý?:Ç?çÿóâÝÿÏõ?&{oX\/ ú0ÿW4òõÿ ¼äÿ¬wc7,Î
-ÇÏp!wç9ÀýcóôC8¤dò¶ü_~eÿwp'³¼ÿóÖúÓOhæÿ?» ¹ÿÛÙñi-ù¿¼-ÿ_Ùÿì째ÿùÓ¢ÿùÓO¸¶ÿûìZòy[þ/oËÿå×ò§Ù»üjþ/;ý&¯äÿjîù«ù¿üÕü_ÎüßCBÿÍÿñüßÌÿ©"mýÿcýõý1ÿ§4ýÑ üOa-ó?ã/êEñ7?Îñ·àü_ÆüøWúED ÿàÙÿCH?ðügú!ø÷¬þ®ýcë¿óýÂKþ·EùN.õÕg~¹®ð lþúpHÉÙ¶ü¯½²ÿs\Åôüý §4ó¿g¹W{%ÿN+Û¶ü¯mËÿÚ+û?³ü¬kùßpzùߪ;mâJþ7smÛò¿¶-ÿkÛò¿¶-ÿk¯åÃøôǼÿøÓ^ËÿÚWó¿ùß´÷?Ññ²÷®ÿAH?6ÿOÿÆÎ_æÿUÖÿÏÿåúç×IgýpþÏ3ÿ !þØýÿA0ö½ááïzIÐÿpùçÿþ«øgþÇe
&©¨³ÐxRÅù4TØÉÄMlìb~LôÍÿ°þ/Ã|hËÿ+ûÿªÞ"_p±ÿ/?Ý1®ä¼;ɽ+ùÂ]Ðÿ mùp%ÿc²³oòêþ¿ÓO¸vþ«9ýkûÿ&§´äB[þ'´åµó_sw¬+ùÌûÚù¯gÏÃkùðjþ'0ÿóãöþg¬¤
-Aþ§°ù ñÇÿËú®þËüû'iCÔÿçìÿ¤Å¸ÿõ _útµÒYÿÿ3Ìÿ!HÕÿQñ?x¾ÿAH?pÿëÿ@<ÿW5 ú0ÿÛÐ?ó¿ Nê¿æÎÄ×Óò¿ùÙ ÖV#xìi
-¸úË¢È&aÌ~æ$AÿØü/ßÿ!Rr®-ÿë®ìÿËÆ'CÝýÅùÍüïøtK»rþ£1'§º¶ü¯kËÿº+ù__d±Ýµü¯ÉO/hæsçN/¸¶ÿÏ~-ù_×ÿumù_wmÿ=û)®ä]~z«¯íÿ;ækù_÷jþ×1ÿûãÐÿc÷ÑÿáÚáÌÿé!mý¸ÿë?QðJIÓ!jC´þÏü?Nñ¿/wÓÕzûX>Lëí·´6Ò×ÿ+ØÿCȸþ¯þ«wþÝNë¿FÇü°Á9ûãMÁó?!|'þóÇeÏ þ
çþo¯Ä9ïéH¿¯þ*þ¹ó¬ÿ
-áõø^ÛùtU>¦/úÐ>ÿ+.â_8Ïõ?óã±q
-¨.úÿµzòëïK£VýW?Ó¿Íáþµþß7OûÅvôïëí}&ºè¿úÅ~º/ïm´ÿæRÿ®`ýgT»nºÿ«ùz+o#yü7Ea9þCøûÿûÃ_«aã?!B!B!B!BÈOÊÿH§â È
-
\ No newline at end of file
Deleted: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16amd64-8n2c.tar.gz.output
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16amd64-8n2c.tar.gz.output 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16amd64-8n2c.tar.gz.output 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,89 +0,0 @@
-Machine (phys=0 total=67106960KB TYAN Computer Corp S4881 )
- NUMANode #0 (phys=0 local=8386704KB total=8386704KB)
- Socket #0 (phys=0)
- L2Cache #0 (1024KB)
- L1Cache #0 (64KB)
- Core #0 (phys=0)
- PU #0 (phys=0)
- L2Cache #1 (1024KB)
- L1Cache #1 (64KB)
- Core #1 (phys=1)
- PU #1 (phys=1)
- NUMANode #1 (phys=1 local=8388608KB total=8388608KB)
- Socket #1 (phys=1)
- L2Cache #2 (1024KB)
- L1Cache #2 (64KB)
- Core #2 (phys=0)
- PU #2 (phys=2)
- L2Cache #3 (1024KB)
- L1Cache #3 (64KB)
- Core #3 (phys=1)
- PU #3 (phys=3)
- NUMANode #2 (phys=2 local=8388608KB total=8388608KB)
- Socket #2 (phys=2)
- L2Cache #4 (1024KB)
- L1Cache #4 (64KB)
- Core #4 (phys=0)
- PU #4 (phys=4)
- L2Cache #5 (1024KB)
- L1Cache #5 (64KB)
- Core #5 (phys=1)
- PU #5 (phys=5)
- NUMANode #3 (phys=3 local=8388608KB total=8388608KB)
- Socket #3 (phys=3)
- L2Cache #6 (1024KB)
- L1Cache #6 (64KB)
- Core #6 (phys=0)
- PU #6 (phys=6)
- L2Cache #7 (1024KB)
- L1Cache #7 (64KB)
- Core #7 (phys=1)
- PU #7 (phys=7)
- NUMANode #4 (phys=4 local=8388608KB total=8388608KB)
- Socket #4 (phys=4)
- L2Cache #8 (1024KB)
- L1Cache #8 (64KB)
- Core #8 (phys=0)
- PU #8 (phys=8)
- L2Cache #9 (1024KB)
- L1Cache #9 (64KB)
- Core #9 (phys=1)
- PU #9 (phys=9)
- NUMANode #5 (phys=5 local=8388608KB total=8388608KB)
- Socket #5 (phys=5)
- L2Cache #10 (1024KB)
- L1Cache #10 (64KB)
- Core #10 (phys=0)
- PU #10 (phys=10)
- L2Cache #11 (1024KB)
- L1Cache #11 (64KB)
- Core #11 (phys=1)
- PU #11 (phys=11)
- NUMANode #6 (phys=6 local=8388608KB total=8388608KB)
- Socket #6 (phys=6)
- L2Cache #12 (1024KB)
- L1Cache #12 (64KB)
- Core #12 (phys=0)
- PU #12 (phys=12)
- L2Cache #13 (1024KB)
- L1Cache #13 (64KB)
- Core #13 (phys=1)
- PU #13 (phys=13)
- NUMANode #7 (phys=7 local=8388608KB total=8388608KB)
- Socket #7 (phys=7)
- L2Cache #14 (1024KB)
- L1Cache #14 (64KB)
- Core #14 (phys=0)
- PU #14 (phys=14)
- L2Cache #15 (1024KB)
- L1Cache #15 (64KB)
- Core #15 (phys=1)
- PU #15 (phys=15)
-depth 0: 1 Machine (type #1)
- depth 1: 8 NUMANodes (type #2)
- depth 2: 8 Sockets (type #3)
- depth 3: 16 Caches (type #4)
- depth 4: 16 Caches (type #4)
- depth 5: 16 Cores (type #5)
- depth 6: 16 PUs (type #6)
-Topology not from this system
Copied: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-2m4c2t.output (from rev 7493, mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-2m4c2t.tar.gz.output)
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-2m4c2t.output (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-2m4c2t.output 2010-11-24 09:21:55 UTC (rev 7494)
@@ -0,0 +1,35 @@
+System (phys=0 total=2032544KB Backend=Linux) "Kerrighed"
+ Machine #0 (phys=2 local=1016272KB total=1016272KB)
+ Socket #0 (phys=1)
+ Core #0 (phys=0)
+ PU #0 (phys=16)
+ PU #1 (phys=20)
+ Core #1 (phys=1)
+ PU #2 (phys=17)
+ PU #3 (phys=21)
+ Core #2 (phys=2)
+ PU #4 (phys=18)
+ PU #5 (phys=22)
+ Core #3 (phys=3)
+ PU #6 (phys=19)
+ PU #7 (phys=23)
+ Machine #1 (phys=3 local=1016272KB total=1016272KB)
+ Socket #1 (phys=1)
+ Core #4 (phys=0)
+ PU #8 (phys=24)
+ PU #9 (phys=28)
+ Core #5 (phys=1)
+ PU #10 (phys=25)
+ PU #11 (phys=29)
+ Core #6 (phys=2)
+ PU #12 (phys=26)
+ PU #13 (phys=30)
+ Core #7 (phys=3)
+ PU #14 (phys=27)
+ PU #15 (phys=31)
+depth 0: 1 System (type #0)
+ depth 1: 2 Machines (type #1)
+ depth 2: 2 Sockets (type #3)
+ depth 3: 8 Cores (type #5)
+ depth 4: 16 PUs (type #6)
+Topology not from this system
Added: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-2m4c2t.tar.bz2
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-2m4c2t.tar.bz2 (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-2m4c2t.tar.bz2 2010-11-24 09:21:55 UTC (rev 7494)
@@ -0,0 +1,35 @@
+BZh91AY&SYåë· Cÿó@gÿôïÿïßð `? diA&LÐL48ÈÓ&&&L&! 440hq¦LMLM2C at h
+2h`Ðã#L0dÐdÐÀ 1ÆF142a4È
+ 4É¡@`© 4OI½CHhLSO&§£)Á÷¿í%¾ÿSÒºO|zá¤úSR¼OvïÁðÅñðù.ËHÖHÒ-¥¶oYÎÒú±kùYRª{Rp,¨JIBJH²¢*Ie!h¤ðê
+üÁC°P? 4àÈ4bè±bË,±bÏæ]bÅ,YbÅB
Pyùà 4õèóýK[ô^¤¤²IT©Q#ÐÒ\À.9D¥zÁì `À©@¼Ñv[5g,²Ë-a°(±©SCSbóP91:ÄÍ%Ô
+\Øqr{Z¹°ÕÍ«
+\uUÙl ô¤¤'z!üARK=ÃÎ`qHprpta9³Ù£FELÊv¥KLËIKÍ%¤&é*Dý`Ü{eé¥Jnæ±víå7v6¢dÚzæeç7ÎFwF
#Sd^lY ¡ÐF×FÒÄäYK8K4A¡g²i,ÉÀ²N0sn©ã0§#ÈQc¤øÂ6' 8©¹³ Á@©5âÜ ò:Ôæ ¸0à{Aö`v<A@ }`þ È:Àà
+Ыˬ:ºÌ^_LRº3u¦o.½*ÒË«¯uÞ
+c3Ò`?;̰`@È>ÐvåÁÜ æ äðdäàÐàôÔàÜ
+óPwÌÀúA@Õ&í$£xúé^Ö¶C1ûáæ
+m¥ézòÒ|óóÂà¼ØT¨à²CU¨ iA.ö`ĹRH?LþéñNMéS?q"GíàüI>Wù¿ü.üϧù
+>ä§©dvï20¤ÂKöE^d©
ÓÓ)¶5+Y¢Æ,S{\¼TÉèÒf`Á<Ýs4X¢,̶ÕgpÔT°
+ÍÌ2£3y1%Iró먴Äô¬Qg©iµCɽÁi:¤´NyE&µ#ß¶çJ8
+KÍ8$çmx]½ÛqÍÕìYøX~@\Ë
7ÿÝû¾û|?vVýÖpâÅsbçÑdhñò^¼AèÛ
+l#Dp-,£SCÇtÃczy±ëÎÔ`±¥9NöàÁ§«Ú¿&¶FË#9é5Ä=ºÍ¬4;Ùà¹ÚR5Pݬ²ê3G)Ü]\ÃBó\0ÔÕiÅQf¦Ëe0úòó$é«ÔXpá-%3,Qp<TjÌâÒi×,6-ïÕ¦`®®õË_6îgnÓæ
+0ËM§N´ýê4VVgÏÄÌÆ¹`P9¹Ô±cBÒTÞ5pß3poðz0iwFLLƦ%8´¹$¨oÏ=õ;#~jÝyW·V²ÎUÖ\4rQckÏ>ð=),ìI´W=#¸8I¢M-9UeÊ_lKí¤Áºgc3
+ÆZØÉ®¦M0Ô2¸-,ËE·ÈÐÊJQвl\s7¾ªP(i¢ÊÚVÓSàk5ào7%æÌ¶T¹ÂdÛ\Ü
+¹°ælI7msyy¼Ñs®ºávfÉ1\ó8*E)Fæò¦0jj`ÁWQbQRFNÍivû3¥©»ÐåÇ:M)'HñÝ-8\´ÔÞ_4~Q0X¦Y\©©ÎTÐè
+Fèho0p 2º,¦Ë78Üð³ É«V¨ÌÐñÃiÐ|NÍ'ÏTæm.àt6;KÎûK ìc3 :4c¬´Ò)Í8>¿Cö*ÏYT^wK®û½KÞ×~Õ*ªfRY¢ªLOí?|ÌúÜU_ÑÅ`$ò} ñ4úX#ë ©Ù?ÒMgôLÎùìÀi¬¨>°Zv g¶{Þé¢t©õ§ûÍÉ¿þÙ;gÕ5OÙ*^T5yá<'ì vÄîÝ=äÒq¤qîÜàÏ@<p0>¶f}³ y§âOX=SÀòI-8¤Àþ@à)XpwÀÈ=é÷à :yN`þSÍ,èpj
+ÙÖ <Á¨@`³è²X9¤IyÉ9(A@°(A :á2û&éºi>3p83(ϦQ.PP3uh.P}`wH2H,êàØ wÞ
+å÷N3ªvKËKNS8É8Ôtù)?æÑ34@qÁ`P?ROrq|Ðå7fÀêÀ@Ñ'Âj ~LN°àñUT@py ÷¼øg´°<ÒàÐ
+¤A¡=r
+±'´Ô0`´© ppÊâ <¨.
+Èj((E`rÁÔ`âÏã0Dª·vH5Aö§¬,é¨À^h û>gtÕÛY>@NàJPvÀ¼üÓÌTéÀd¤8&& zAp; üé9$Ĥ©ýpN ¼òã ÔO`4IdØ:ÀîÏ, j
+m iÄÙ9HAèI`l¼S²Ë?ù2
+ÁØ
+ s¸ÁÚØ©JMÁÔvPìIæ
+àN È3(wÜP>@d9lØæAÞíKBàðJ¸
+§¸°
+Á¨&A`\Ptª&'Ω%Q Ô
+æ
+ä@ T8$á8àÐàê
+Á 7ã8§Æâ
+Á÷'îÁ7wÎ<Á5iÐ vÀP(i(³*`È
+Ü÷;Ñ%åâ
+@À% óèÁPiã Ù'¦nÑ4ÐÊùÀ'Ì óNô°3=R* ðà¸=ħ00`ÖwÈÀ zA¨0Ï0o*pIÈùý$ *uÍgärO½&ðØP;7¸<@èà5Èù¸9ÒÀØp$õ?ü]ÉáBC®Ü
\ No newline at end of file
Deleted: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-2m4c2t.tar.gz
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-2m4c2t.tar.gz 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-2m4c2t.tar.gz 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,10 +0,0 @@
- ³Ó9K í]]oÛÈÍëêWÌc´é|é§nRìfѦXÄÉî£@QcørìüúÞ!%Ù²eÙîÚ´>çÀ5ßÃ{8$ÈËKa}nuûwëT¶ÿxóàgLøÎðî·Ðºû^ãRá¶/¤î
-3O2kX5mR3öf¶(ˬ8PÎ×Íb×þU]¦.Ø_[©ÈþJ;û}öO«UVÖG0°íí½ÇþÒ:}ÝþôòñGÁ¼rûû¦)ë°3_ÌËzÍéçϾ ø_Ö/'¤ väÙòrì$/ç~ùý+×ÿ³"Éýe%ÖÕú˧¿²÷¿~aø'&§/ù6V?ø>iZ_UY±Mu|üð=´+LlßRÑI¤§5Ù÷Ðz$bÉþýnR^4Y,Y7P1i²ÙnÑ"´¬}È ¼k2$,=Iª,ísh®Yµµ±NìÒNªUȽðMøwêÏS_µYY¬ÓÂ1gKF§òbòÚ_&Ô?ý zì,÷lîYÕxÖ6)ËUgyêYzu=²ÆW,okÊY¥yyFÅÚPMY.O«æÍÛ%i±<?g'çÔTCÍÒ¤vÚ²6gÕR.Ú"dsVS´b˦^¾vÔéé´òõI^¬ò³Í¨íÚWÓEYÎYUP%m²fófVKÇ9óMè"tFâáËÎÛÐ)IOEÿ%YUViѲerz2¥¾³y22Ϫ°õMdíÛÈM6óZÔêÞÄÓd-ÜmÌçdµ¦+Ö³YFÃÝþoLG}ÊYV·«d9©Êo¾fyR$Ú9LvÔíÆ¦nq»º£=ê î'U·yëQÝÑØÔ-oU·ä7ÕMiP÷xÕMÝêvuË=êP÷xÕMk×ÈÔ}à¼Ûí93qP÷S«;~>u±©ûÀyw¼GÝ1Ô=âµ[MÝλÅ3uXÝjlê>pÞö¨[AÝ#V·ºq½ûE©ûY¯wK36uãz÷R÷ó®Ý£»WëÝP÷VÝ£»WëÝP÷VÝ£»WëÝ/MÝÏx½{t÷*q½û¥©ûùÖn5º{¸Þ
-uoÕ=º{¸ÞýºÕ}ÿ÷>ÿÿÜçúÿs¡LïÿOÿãlçÿoüÿÀG.ÛdyÔ¯N+i´f_ßM(ç§Úû£Í©
-9ïV''´1¶9ÌFV%Êyt<¿Ì¹]Wçø[R]Ïe<äü¶ÙÙe7t5Bv9¿ÉN^¤
¬âzÓÚat´·ý\vȪËùí$W:'¬Gý{µ~¤_¯æöc+ÊâWÚ¶sv]IUíÌEõv;^&³n¡ u9|ºL²<-ûñimu×Ïñ¢îóÖ5ú~BïC
Ë!ÄýÖùïOÇÓ/amÛ´¶õ»rU¤~wª}Îv¦ój·Îû2ϳö?}u³ÜÙè2§õóéÇ]q«ºÁ}X-|·y¦WÁ¯$_±ÄÕäOÍÙ|Oòñª®v«L«_¨y¼1¤O[2@´1¥ë6KYuVyîýì¥bßú_ÐéLóO>èù?Eå¶Bàù¿!p»ýç|Ü×þá4!øéøo9ì?î²ÿc<zøüO(eÜöüÏ©pþç¤Àùß Àóðyþ0xþê×µ<ÿ W¢îÑÝS
?Ôç?áó
-üaFwOþ0/MÝxþþ0P7ÿ?Ô}PÝÃ_`á¸ëþÏcøÝåÿ£¼¼ÿ#\¸ÿ#( ÷À5ÿÁ
kkþ?ZZ)£½þ?JÞ5ãº6<¢ùÿîÝëÿ£E$Üãÿ#¸RG{üBßú\÷ÿYúþ?»Þèÿ0®ßn7üs½ßÔ
-ÿ)Üïÿ#îû¹éÿ£µ}zÿp~í9sÃÿ'æJtcû-§£K®
-¡´2±S²îJæf½¤Lo¢uÎûÓUñu]MÛØFjx"Éõ5¿¡ÜzöÛÙy ®¤è½Æ{Ï}ܵþ¾Ú?ÚÇáõ_
-ç®ûXÃ-Öÿ!ÎYð½¢£ÑqDme³VP-DRÐNÍûËz´ïéèÔ/Ë´ãȳQ
-¹-FE¸¤bÔ2ýOå\hMj:(0m9êÏ:ºDL(¤¥\R¢LhÁèø±)3G¿95ÒuìddX¦bÖñM)ZQi/e㮣*ZuÍlp¡E)|õ£#Ò,ÄN)A(B}H)º±iiS!£Ð·eC´¥LL§êçk&¢
ytŲ¢Ãá ¹àq(Å:,^w½Ââ\m~ȽE@AAAAAAAÁÿÒr»=I÷ã¬Î!Ö7¡9Ãçô!e"ÒÑ¡.&i{ÞRcTC5µY<ڪ׾oZòîw3WE&Ö¿gË2ýêçÔÜÆÿç°ÿzø?¦ÿcÿgÜeÿAâÿØËø.¤'¹ÿßÀû°ÿçuÄÿÁû° îQ=Ë÷a!þÏkQ÷èb·!þÔ÷a!þÏ+ÿ3ºØmÿóÒÔ÷a!þÔ÷a!þÔýÇÞõÚp×ýÁãÿHÞÅÿ±÷ âÿ þâÿ þÏmëÿðñtÿG þÛ xxü©ïÿGûÅÿ¡6îÿz½Oüè>ñâûÄÿQüþñÂ<ÿAAAAAAAAðOÊqÅÿy¯«¸ÃÿÆo/ý¿Tÿ£ÓðÿxÿÛï÷¼ç@AAAAAAAGÈ?¯÷ Àóáñ
-
\ No newline at end of file
Deleted: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-2m4c2t.tar.gz.output
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-2m4c2t.tar.gz.output 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-2m4c2t.tar.gz.output 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,35 +0,0 @@
-System (phys=0 total=2032544KB) "Kerrighed"
- Machine #0 (phys=2 local=1016272KB total=1016272KB)
- Socket #0 (phys=1)
- Core #0 (phys=0)
- PU #0 (phys=16)
- PU #1 (phys=20)
- Core #1 (phys=1)
- PU #2 (phys=17)
- PU #3 (phys=21)
- Core #2 (phys=2)
- PU #4 (phys=18)
- PU #5 (phys=22)
- Core #3 (phys=3)
- PU #6 (phys=19)
- PU #7 (phys=23)
- Machine #1 (phys=3 local=1016272KB total=1016272KB)
- Socket #1 (phys=1)
- Core #4 (phys=0)
- PU #8 (phys=24)
- PU #9 (phys=28)
- Core #5 (phys=1)
- PU #10 (phys=25)
- PU #11 (phys=29)
- Core #6 (phys=2)
- PU #12 (phys=26)
- PU #13 (phys=30)
- Core #7 (phys=3)
- PU #14 (phys=27)
- PU #15 (phys=31)
-depth 0: 1 System (type #0)
- depth 1: 2 Machines (type #1)
- depth 2: 2 Sockets (type #3)
- depth 3: 8 Cores (type #5)
- depth 4: 16 PUs (type #6)
-Topology not from this system
Copied: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t-offlines.output (from rev 7493, mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t-offlines.tar.gz.output)
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t-offlines.output (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t-offlines.output 2010-11-24 09:21:55 UTC (rev 7494)
@@ -0,0 +1,53 @@
+Machine (phys=0 Backend=Linux)
+ Socket #0 (phys=0)
+ L3Cache #0 (4096KB line=64)
+ L2Cache #0 (1024KB line=64)
+ L1Cache #0 (16KB line=64)
+ Core #0 (phys=0)
+ PU #0 (phys=0)
+ PU #1 (phys=8)
+ L2Cache #1 (1024KB line=64)
+ L1Cache #1 (16KB line=64)
+ Core #1 (phys=1)
+ PU #2 (phys=4)
+ PU #3 (phys=12)
+ Socket #1 (phys=1)
+ L3Cache #1 (4096KB line=64)
+ L2Cache #2 (1024KB line=64)
+ L1Cache #2 (16KB line=64)
+ Core #2 (phys=0)
+ PU #4 (phys=1)
+ PU #5 (phys=9)
+ Socket #2 (phys=3)
+ L3Cache #2 (4096KB line=64)
+ L2Cache #3 (1024KB line=64)
+ L1Cache #3 (16KB line=64)
+ Core #3 (phys=0)
+ PU #6 (phys=3)
+ PU #7 (phys=11)
+ L2Cache #4 (1024KB line=64)
+ L1Cache #4 (16KB line=64)
+ Core #4 (phys=1)
+ PU #8 (phys=7)
+ PU #9 (phys=15)
+ Socket #3 (phys=2)
+ L3Cache #3 (4096KB line=64)
+ L2Cache #5 (1024KB line=64)
+ L1Cache #5 (16KB line=64)
+ Core #5 (phys=1)
+ PU #10 (phys=6)
+ L2Cache #6 (1024KB line=64)
+ L1Cache #6 (16KB line=64)
+ Core #6 (phys=0)
+ PU #11 (phys=10)
+depth 0: 1 Machine (type #1)
+ depth 1: 4 Sockets (type #3)
+ depth 2: 4 Caches (type #4)
+ depth 3: 7 Caches (type #4)
+ depth 4: 7 Caches (type #4)
+ depth 5: 7 Cores (type #5)
+ depth 6: 12 PUs (type #6)
+4 processors not represented in topology: 0x00006024
+4 processors offline: 0x00006024
+4 processors allowed but not online: 0x00006024
+Topology not from this system
Added: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t-offlines.tar.bz2
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t-offlines.tar.bz2 (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t-offlines.tar.bz2 2010-11-24 09:21:55 UTC (rev 7494)
@@ -0,0 +1,39 @@
+BZh91AY&SYäÞÍN Taÿ¥ÿüï=ßÿô½ë^Àÿïßð @ ø`_Ü
+zÀQÐÜt2T%cw Ü@¥³R5«)¤É Õh!2 Èh4ÀCT£*~ª"jC@
+A È §úÕHÄÈÀ 211110 Ä12`I¤B*4 @È ¦Ò ÐÐ 8h 42h¦h Ð*H @i£SLÈMhê2É4ômA=MÉêOÿáÎCðü'ùä%¡ÐHÂÃü ¡/`þYz°.,(íÓ?-
+î±ü_søÿùV£]u×]þñû¼ÒºÓµ}Ðë$Hà ògÄH"Z$D)T ó$#½ÍJ)J~+¤HN»øq§
ÕU^¯Û=trÞ²£ÍÓCÍ)êg5wUaÕæ5£G7IÒ7wEkyºxÐ,Ùyµ§q¶Ø|ZmøÓnï6ØÆê¨Scuë·VÒÔ-Õ½NËÖxµ¶ÛÅÍ;¶¦Ûaª¥wwwTÛyUSªuOoOÌÌIº!
B³Smµ*ª7hÃ2אּ¼}UgTDákF«Ì±¬ÖËÊÝ̲ê̶˾ôk.=5á®Sw \HÔ"FA5
+tÙU{UwÞ2æõ¦fl $9¨¤Iª1EÕ°X*)!X0ÉÐBÛÅÖJáµÕ¸¡¾fîÒq(1b±F,IÞä$FÅ2+²r£,wË,
+òÈNÎ*¶¶ÝeÌÃ-¥¥JCI£F°$ÜpÅXª¢È¥ÈDb¨(¨II*( Á$I½ TDlHÒ$ ¤±¨bU æ =¡àÐüÁ¡5ôn~k=ð®²-pª
+Ö¹ß) d>@íñWW^=ª²©EhdWBºõ|? ý¿;ç[m¶Ûm¶Ûm¶Ûm¶Ü ÖbV¥jV¥jV¥jV¥jV¥jV§Êù6FÌ3D1Ð F"F4Hht9¡¦F´¸hu«¢´ÐêÜÓK«
+ÃaXÃWaX¬aÿóè'AúªLç, ÷Òü9ü:ç?=ó¨n]J¥)SÚTr
+nèþRNqmjÖYwÀ4Ï<禼ôÎõÓ®¸ñIH©"I=¢DOP+ß=ì}»¹¹t«÷1ÛNí³ñiëå$²9ÔôµRm¿_Ù¹¦t¼×¡ö òÞ¤ë]ñÃYg»s«ë 1hélT·vþþ6Ï_â1°~ Û¿
+¹wìöÎïÆqzÛu»¶ÞÐ^ÙÖÙk½}àÛõãfû\9cÀÎ1®÷·,ôÇyå×\ ` Ã]j±Oc/7ì VCÌ,¨5
é
+äxlì@üÁè0Ð=áËYU{Ýz«òa¸X6çç¬ýAÐ2´,ðÀyñ
+BÁñ°xø\>@üAøÃ`>âK"¤È$IÔï¤ {û¯ÊÛm¶¶¶¶¶´DDDS¸
!Dk hêÅ6eÃçïá$i»r'ݹóy$II$II$IQ>¡:NE$I$R at dE$I$R at dE$I$R at dE$I$RA©r at c]H¤É$HH¤É$HH¤É$HH¤É$H#qÉr at crE$I$R at dFê]]ÝÝÝÕÝ]ÕÝZÛm¶¿'Ä'¼ø
+ (@QE
+(@P¢ª!TB¨kv+$MËm¶µijÕ¶Õ/D¡
+h¢"*§¿½øìÞ-¶ÛKV-¶ÛWÐOѳfå«m¶ÚÕ¥ÚP¥h¢"*§$%è2yyyy) 2I'}»v·nÝ»vS©FI×QI§%ÉN¥I§Ô¹UUUÐUUUVÀª«BÕDEE >ß$0òèKßX>&Ýñ3[Ý·ÇT]áªky˺I.ö^¹Ñ' BI!Ø\£,,¿>x9 0å$ ÒiÊÓ*¦rçb5>Åiû)=\sªUUUUUUUUUUUUU\ " 1UUV=á '%ÐùÒ{>ÿßþªú>¼|)õgïRO(|²]du½]:ÜC£ë@ê}iú©îõI§15·n8}á9N\jüÀ´ÿÔ6
ÿ¬LNC=¦âÂÚ
ÖK
=='!È´ü?áçiwÇé?²OðþïÏÐ&°×ñ}^Nnäw%ÉUR¾ÔI)$DÃÞÛíÀý¤ð¢ú_×_D¦ÀÎì9â£Ë$$×]fNþι®ÇÈa`Keî%î¹.B¡
+%k $:0¤"SA30§%dz'Z fµ)ÙG·j[NéȱÜ(ɲJlDd ¬òh7ÝÑhºÕ§Zï_Oƹ;gyÃV¸ïyEáMj;Ù4Ƹb7¢hýªß~î
Ѫ'%*£]3U^JVf½5:7²{HC0úp8ÃνkÓá<ù?0&mUUUUUUUUUUUUUVÕUUZ|| \ ÄéÓmyQöÒÝÚNìbrú+9ØÍK~þü- ÍfÎÛã9Ö56ªwí§Úö¶ù¢êRh/d8ZÒOãç
á²@ÛÛ£oÀøkì
+VT7=¾¾ s¾õ¾ÎrgNüíÄ^¶×¯W
+q4ÙÐH®á}¹q¾ü³&¬AnÌC^[Ù</µ}lÛqäítò
+×H! ùÈ2 Étt£Ì`±,aB+&XȸEðhw÷.ÙÝvRG'_yrí×e$q"xEÝsC³rí×e$q"xEðhw÷.ÙÝvRG'XºªC³rí×e$q"xE 4;8÷.ÙÝvRG'_yrí×e$q"xE 4;8÷.ÙÝvRG'_yrí×e$q"xEðhw÷.ÙÝvRG'_yrí×e$q"xEòùÁÿh×sÿ{Ï]ç[ÀHÇÀöcI-§¯\aîÏzráÆ÷Z°Í«;òm.ºÝÖÃ{Ýôã×.:Sj¼NM«sûä:`$FR¡J¢äê®øæEª«;_{gß\ôæ½4ÿ nÐ|Dãz$±QIBo×:Nu]ËÛ-ÃâGïdß:[Y,n×ÏvwÝÔ½=Gða$Þ=³Ö<g]9Ù}hÕ
.ëuÅfÞ±rZ¥ß³kme¦qKQ:g7Z'ój°e¡
+¢i,³^Þ°$Þ ÷Ù¹cíNo at K©8àªI'~;ï{3Å5ëÎI%|©ãᨪÖ;sXzMfòqÜÏî!'ÔBNþcèéó~ñ.¸oÎx¦÷älÆêÜõõ^óÄÍë_6OÏp¯}y¾¾9×X ê,ç
+|.º2mý¦,°¢k©X¼Åkç«£s-U{,~:ñ¯=÷ÂèN·©®¶äð½rw¿YÞr²@ÐÖjSÂs^ Lä<Y
+µµ£
+kÖmGÖ¢÷ÝKÆ¿5¸X xà®ý(¨w±hWó#ÙÈUXðV-UùÙ¢¦ù³zä:ÞÇYÒs u§âl!9_0×ys^»ø|w¯ï¨H²u½sÒë¼UÇ ñË\kòPQ5_;ë N/sÃÖüo½|wvOsßÎ@ TÍ4È&¨
T!*$Î3Ì£Z¯Þ÷swIÆ-jÚÖA9e8ç±¼;;²I ï;ë® {¼öììÎuã$d
ìµÄï¬ÒUI6Öï¥ü~àæ$IÌHþ;rÛlºâØÆ´¹©àl=ã¡¡òèk,:³®ª+l 0$Òk
| ,ï <:¦aÇÎõ¯>r¡"É|®ó:À$$¹Éö¨j«ä¹m¾-k-¥õÇ(§~è¶mO®0ÖÑ.»+ÝNÀ£ªeS®¶è!<ØUbùmXíÙ®2 WÖÀ:õë³°ÙzÍß^¸^YëP
&Æ7Ýo (s¶fmÖë`ÐÞh»º«Ü\¹O7×ͳyiB"¨:¦ÔBoà[1[m¹_[ì
+¶PjCv¹µ¥±&¬ÕÓ> Ó¥wËÌ¡xÁ°5¥ ª},-_YZËßRñ!ÆG>Ä$c[þD.n®ì¹âËie¶,¥+M0E{kÎv&uÉDN¯o8ºÙ ÚUèåß¶_Iñçµ/£ÊróÛÅ/[6\×W\éw7Ò@Í:_:õë{ÎÏ]çI½']Âå:=/6ºÐä±TÃ%³¥)Bó0ºÈë6jï$ól6Zwa:7<JvnÙ¦%%G!«'NÕéËr3ÆÂD¯bÉZYÐË8Öì8Ã9£
+æZQJÇm-M^yñãE,¡Ë%¡` ØZgk4âÜù§Q2ζÅùg\ñlZ¯Ç \6\®èg>IÑ8í¶z«zé{O*UÄw¾y³æ0Öл 5ÌK|3Äî¥Ýï}ëfL@Å,µëÀ <+Î)A:·{À&(7¬æÄYе¯µ´ÏÞ¿éíyu×[ö~ÏëÇØ
+ #Îvh-z
+øoÓ\ñêù@?,= | 3ïUUUVªª&é
+ÿ¸H[_£ýCéÃõUÃ=ßHx¯ëư_@ý$=Ð{}pÿFa?|>6
+k®lBÄ,M|¿Ã·!±4 Z¨{(YÛÏ$}Oó'xyò'´0¿¨L
Ðx éPNzÂÁ¨w0TC |.$IùHt!¹
+0¸~¡ÿ7í!í¾Ä<Ä:Q¼ ܦ}"MàÈ}!AÑ4¾àbB$Ì¢Ä9â[¢á¸PpBÁa,L0ù2ÐI!,X at X°°±aaaQ°Y«?ïAÌ!!($4%PjB¤CiBªx`IP¢(P{rw
Á¤¬ä¤9CÚ øÉb^ıYpvýY®-Ì+}6'É
+%¢gâ·éñåçßäC¨Pn
+A$ýÑ"OêÔ,²°9áà tùÈYb¡2$IÀy× }½bDI××Z
àÉ<$'¼>o0¢à»êÜHÐO`HpuoØ((/ {äq"Màò$°eAbIÔ²Gªä(L%plØEÂ=²&¢h
+ÎØOp~÷¸:ºàHå 7
+·`ßuPx¶"jo?7³B¬ºCÈI<|¢x ìÁ`º$~ïj·ÙÖÞD4
+¸z wÁBDÈ\5^=¤@sðuäDIzÉná8D0«gÔýpÈW@Û`ì
+ð õPpa©bD5ëæ
vèCR ¨$¬?ü'väp÷;äGÖÕ dt5ÃÃë×ÁæòuYáöÂ@ñþ"O!"O@Ø{H{ &ÀàpÆ¡èI;ÆßAûþ¯?^ ÀvCÙùðyÌ(
ÌCK ï ÀnÜI4
+ná¼Ï¥Aä@ðPJ
+9DX9ê À^HP½}\d
~ËÂp°âDí{Q:PhëY¼ª¤"JDÄ$IS¿¨`
¸h°n/|¢DØ
¡ æX
ÈhÚ=íC°P+Ä
³Ä1Ç$"Nab"M4&T·¸y'ð h(2N¾ÊMð Uø!Ü'É¡öõ¸!ë¼7$xsêD<à Ô:a:L·"DGîP!Ô(:Tªm¥ô }@~ÙG:"¥Q* Oâ'°*B$³¸0BØh è ¼(((>߸Q¡ñKhC,CÌ©
+@B$ÿw '®ÿø»)Â&öjp
\ No newline at end of file
Deleted: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t-offlines.tar.gz
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t-offlines.tar.gz 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t-offlines.tar.gz 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,53 +0,0 @@
- GwdK í[s#9r
çÕúõhGØcÜ
- ÷ÍëµÝpxwÂ~STÕ£y²ÔÓ½¿Þ@QÒ¢ÔuÉBöÊy>Î¥[*²Hf 8Hh_o¼kþÉÍÂ4ÿ´ûôi½ÚÖÇþiBT$eú¿¥:ÿÿ?im)rZÿ¤´uÁýTS¾·x86Õ¡(~:Voß;®ë÷ïýFüߦ»úÅ_y«}ÖÄø;k=âÏÁ÷⿬¿¬´Ãã_¯úÄ?þ¹©7ã/~ñ¾5FãLüâÏÀøowËzÔEÐSÿÆ9ïñCý³04þé?jàUÐ_ÿ¥VÎÇøkcÐÿ³0.þýV½ÏÑÆ?µëß¿µZë\¼Nb7àõO
ù9ãñÿâU"þ׿é}Qú·?£ã?ë1ñÝâÏÀxý÷ï Féß#þ¿í}Qñw?£ãß?üãÆèÿYßÿ£âö
Ññïû?.þÿ±0:þ®ÿ9FÅý?£ãßÿö\ü
-âÏÁèøÏûcÔý?ò¿,èQú?£ã¿©ö}Ïì{;þƼÿ3.Íÿ
-bGxüBðé?"7?úNÆçÿúcTûþ
qñ߯æ?~oM¿stµÿ:Æü²ý·*åÿÐþç'Eòö~Õ:;wÖØöGÕñX¨Ó?íõênÿºÚ6õa]W_êö9&Î߬wj}.³Ù5÷õáôC
.åoqúßÔÕöÓ®ç9:ôïõõËñ_ nþÔJ´øc½ùË®©Ö¿+Ém\éÏ¿?;àº>ý¾ÐV
¹7³Ë~9ÖËÇ
-ëçfvqÀ¿,Õ§/¡5ÊðÛêü=/]iÔÙVæÛóºxÿsX5õÇjñùü óWøÃj]ÿWuWOù̪Sü±Úïû7»ó7ù/ÛÝöìbnK~@úå_ªëßpáâ?ýáÏ·¿lãeùÝkoò÷»í¢¾üüy]}<ÿµqÚøþ»^¬«ÕæézîÂŧøó/ÛÃéÇ×q¾Ôí7ù£/HÀÊøñÿ1ãü/ããßhTüáÿda\ü«øÅ>ªß9:óñfïÅø/-Ãø»3ÑÐlôÇlÛÿÎõ?í0iýòXÿÃÂÀø·^ýâÛMëÿSúëÿYÿf·ßwwßz^½ãÿ[ÿï=Öÿ²@ÿbw¨o«ñ9wÇ7Ïì;çM#{ÿÒYÌÿ²p1ÿ#á ,húßß;®ÒìϾZ|®îêÛÕòstê_½ôøÒÐ?z
-MÿÍý¡®]#Aý¿³©ÿOÃEèý¿Bÿ/ Æÿ¯öùçïÿQÿ³ ½ËfþïëÃ&úc÷¿kuWU°áùgQÿiâ¿Ø=lß6oÿËx ýç í¿lFéQ-îì×þ?ÖÔ*åÿUü?ø¯¶Ëú«îqïÿqÿeÿãê¯> îþß¿ÿiôÿ<¤f÷?1]ÿÛÍÇúp»ût{¬WSÀÝú¹þËëüIÿ¿\èúNO¼ÝWfÕ¬vÛ³s¾ÿ·i¼ýsù_ÙÐõß|ÛSÇÿú*ÿ«þ9øe»ú´ªhB×ÿbw_êíâÛi ðJ: »ÿ¹þ'
õ?,xþEC×ÿ¯Õ·cºû¯ÇÝbU5«/«æR)ÃçÿGýf¿h&ÈÿßWzysûFMÀNýÿæÿ,·mþãB ÿ§Lèú_×_êõwÏ1¼ÿw&(èäÿdCÕ¿Éåÿÿzüóø?Ú{ø?äB×&ÿü_,$ýCþr¡ë?ÿþ/4Ä/ºþ3ù?0ÿËü²¡ë?ÿó¿,Àÿ!ºþ§ð\éß+ø¿YиûÍùÿiýAüÈÿ³ðÂÿú ë?ÿþ/,ô.ªþûl0ÊÿQÂÿÁ=þSø?Üuýö
-÷hèúÂÿñ2ÿã5öåÁ ,ºþ3ù?Ðÿ³ ÿlèúÀÿqåÿtÚAÿ,|¨
-M\èúÏäÿ@þø?dCצúð²ú² ÿ?qýÿÃÂÿÅÂÿê®ÿ<þõ, ÿ'áú/ûoüóH?ÿµZëúW!ÿÿ#?câ¿Û¦cú£_ûúoL`¼'ã¿>%.è×þ«2>þ/ÕÔJcÿ/FÅÿyÿç~çèÿ§ñÚêÿ!þù¡Å¿Ýÿû¸ús÷ªõ«¥_þç<þ¥3¸ÿcá"ÿûAYÐôÿìýÚWÏÕ]}»Z¾raù¤_:ÔÿaãÙÐôßÜêjÙ5ÑÿèËþ?>Ðbñÿ«}þ9ÃûgÆÿ,`¼/qú¿¯8êÝÿ®iÖuGhxþÇÙõ¿,LÿÅîaÛ¼yáíéPÿ
÷d3Jÿ'ÿOïsôÿ1Îytòÿå5ÚñÜÿ©ûÃûìÿÂ=þSïÿRbÿFR³
- r¡ëêý_JìÿÂHÒ?ä/ºþ§®ÿQbÿFPþG6týO½ÿKý_Áþ/²¡ëêú%öaõ?dC×ÿÔõ?ÊSýÔÿbõ?d3Aþ¢úù?ûB ÿ§LèúºþGý_AþO6Tý÷Y>ÆÿQbý/ôøgò ýgÁ©9v]ÿYüFÁÿÅBÒ?ä/ºþ3ù?àÿbëÿdC×&ÿæYÿC6týgò`þø?dC×ÿþ+ý{
ù_4îþE3Aþ?ÿ÷ÿ,\ú?PÿStýgò`ýz
-Uÿ*WýÔÿgÿ)üî*ÿýÿxÐp®ÿ)ü/ó?^äY°0 ®ÿLþôÿ, ß#ºþ'ð\ù?vÐ?ª¦B ºþ3ù?ÿeþÙÐõ©þü, þl&Èÿçñ`üÏÂ¥ÿõ?¤A×&ÿÖ²ülëÖãGúù?Î÷ÿQ!ÿÿ#?câÿ¼ýgÏsôÿSûïÓþO^ÃÿÃ)þíö¯?ÿ4tüâ_Úã.ÇÿðK¤ÿç©ÿ}µø\ݽµô°ñÒÀÿÃî÷eCÒs¨«eç`Dÿï¡.úÿ D{
-úøÿõ>ÿáý?üÿ\ ÿÍ(ýß×MõÇî×4ëÎÀç5Èÿ±0Iü»móö9·ÿ¥õ¨ÿÁÚÙÑÿiú·ÿ9ÏÿTí?ããÿ¸ýGsïÿNëÿüãß½ü{`ýÿvü§Ðÿó]¬ YÿÝË¿®ÿjç´Aþ
¤È_.dýw/ÿ~ÿoãO0ÿÃÊ?ȬÿîåßëÿÆÿðóúÿ²!ë¿{ù÷ÀõßIÿA[ìÿÇÖˬÿîåß#æÿBiQÿ¬ÿ
-=ÿß¹ü{ÿÓÇã¡B ÿ§LÈúï^þ=Æÿi4öÿ`ù?Ùõo²ù?àÿaÿ\þ´ÿ,¤ýßáÿYÿ¹üð±ôùË
¬ÿ\þø¿X@¾G6dýçò`þø?dCÖ.ÿæYÿC6dýOâÿ¸Òi1ÿËÆÝ¿hèùÿLþÜÿ³páÿ@ýOqõÉÿa°þ½¨ÍÿáàÿàÿIüîÚÿýßXÐp¬ÿIü/ó?^äY°0 ¬ÿ\þôÿ, ß#²þ§ð\ù?
-Ð?ª¦B ²þsù?ÿeþÙõ«þü, þlèùÿLþÿY¸ð þ8ÈúÏUÿë?YÞe3\ÿº°õOKÿ!¶Êèøüÿó ýÎÑ?þ©ý/ÓþO>`ÿ?hño7íÚþyàø?Å¿tXÿÅÃÅøÁx@4ý?Oþï«ÅçêîÍ ÿþ}Y"ÿÇüß²¡é¿¹?ÔÕ²kзÿ÷eP^µýðÿcá²ÿ´¢`üÿjNßþ?é¿ôæ´þùÿÍ8ýß×MõÇî×4뮽Àç?Bþiâ¿Ø=l7Ï1üþ¯tí?ïÉfþOÀ½ÏѯýO¾wA«ÿo÷AûBü7 é>ÇðþßÒ þÐãß½ ¼»ÿ÷/Çý?©ÙÅ
-p¹Ðõß½ ¼[ÿåËù£0ÿËBÒ?ä/ºþ»¾ÿ·Éýsò²¡ë¿{x§þõUþW;ÔÿdõÿeC×÷ðîþß¾Ð0
-ë?XÀúoÙÐõß½ |øü_ð
-û² ¿·l&Èÿw. ïÔÿÿ³´ªÿñ?O!ÿS&týw/ Þÿ;°ÿÈÿɪËÿõ¿,ÐãÉÿö
´ÿ;ür¡ë?ÿþ/þ!¹ÐõÉÿÿXÿ'ºþ3ù?0ÿËü²¡ë?ÿó¿,Àÿ!ºþ§ð\éßkø¿YиûÍùÿÉügù?ípÿÏÂ¥ÿõ?¥A×&ÿü_, þ§l¨úW¹ü¨ÿÏ=þSø?Üuþõ_YÐp®ÿ)ü/ó?^äY°0 ®ÿLþôÿ,Àÿ!ºþ'ð\ù?.¡>TM
&@.týgò ÿËü²¡ë?Sýø?YÀ|¯l&ÈÿO[ÿÃòÿópéÿ@ýiÐõÉÿõ, ÿ'ú?Fá/oæv¿ûµ>Ü«/ßÝú½eþ}Òиÿgý½lFôÿ¶ÿÎ_'úù¿¬Õ*XÒþ¯:þÿ£â¿Û¦z£_ûÿîÿX@û/áúÜüðÿêú
-A@ûÏÁø?oÿÞóýãÿ4þ7íúOÄ??¤ø/v4áûqýý{À¾ùßßâ_Zäy¸Ìÿbý4Hú¶~î«Åçꮾ]-_;Çðüwþo°þO6$ý7÷ºZv Fôÿúçá¢ÿOÀhDAÿ¿Þç3bþG[ÿY@þO6£ô_6qÔ»ÿ]Ó¬ë®<Ððü³Ú#ÿÃÁ$ñ_ì¶ÍÛçÞþÖ£þhÿe3Fÿ'û_ÿsôkÿc«ï¼:íÿgâhÿ9ÿÇíßzcxÿouP?äøwÿ¸ÿS;þSèÿyHÍ.* É
¬ÿîò?×ÿ·ó?þ/þ!¹õß]þgøý¿M@ÿ ülÈúï.ÿ3pÿ§Çñ?Öÿ±ýdCÖwùõþ6ØÿÔÿ
-YÿÝåFÌÿ
Túg ~/ÙÐóÿåFø?½*qÿÏÂSàÿ YÿÝ寸?Æþo, ÿ'¢þM6ÿü?,ãËÿö§æØJ0dýçòÀÿÅBÒ?ä/²þ3ù?àÿâõ_eCÖ.ÿæYÿC6dýçò`þø?dCÖÿ$þ+ýó¿,hÜýÿÏãÿð¸ÿgáÂÿúâ ë?ÿë?X@ýOÙõ¯rù?<êÿ³@ÿ$þwÿ-±ÿ/îÑõ?ÿãeþÇkìÿÇ
X4dýçªÿþø?dCÖÿþ+ÿ§SúgáCÕThäBÖ
.ÿò¿,Àÿ!²þsÕÿÿÌ÷ÊÿÏTÿã.ü¨ÿ!²þsù?°þäÿd3\ÿ~ÀÎ?'úù?Î÷ÿQÁ¡þcâÿ¼ÿgÏsôÿyûo¼v?¤ø·û¿víþÜwüosÁ_öÿÃú.ÇÿÎa?@Yôÿ<÷¿¯«»·ö>þã ÔböÙôßÜêjÙ9ÔÿGáÇþ?(äÿY¸ìÿúaÐÇÿ¯÷ùçÈÿiùÿÍ(ýß×MõÇî×4ëÎÀç5Èÿ±0Iü»móö9·ÿ¥Eý/0ÞÍýæûcøüIKBÑþ30>þûô8Çðþßê`ÈñÏUÿý?©ÙÅ
-p¹õ«þ?ò?,$ýCþr!ë?WýÌÿ²ù_Ùõ«þ?Ö°úÿ²!ë?×úoø?YÀúoÙõiý·Eýo°ÞS6ôüÿTë¿[ÿgl ©þ?ê?²ðø?eBÖ®õßÐ?ÈÿɨÍÿÿäøçò ýg!íÿÿ\ÈúÏåÿÿ
¤È_.dýçòÀÿÅÖÿɬÿ\þÌÿ² ÿlÈúÏäÿÀü/ðȬÿIüWú/-üß,hÜýÿØÿ¡íÉÿû.ý¨ÿ)
-²þsù?°þ½¨ÍÿaàÿàÿIüî:ÿý_XÐp¬ÿIü/ó?>Þ
-BÿXECÖ.ÿúàÿ
-YÿSø?®üNè
US¡ Yÿ¹ê ÿËü²!ë?SýÔÿáõ?dCÏÿO]ÿÃüÿ³péÿ@ýiõËÿõ, ÿ'áúïeù¸ ÿCYëËöÆ_ÿ1ñÞÿ³ç9úÅÿ¼ýO@ÄRüÛý_»vî;þ¿ÜÿÏ¡þãÿdAÒÿóÜÿ¾Z|®îÞÚzøøß;ìÿÅî÷eCÒs¨«eç`Dÿï¡.óZ¡ÿ}üÿzÎü6ÿ³þ_6£ô_6qÔ»ÿ]Ó¬;·ÿqVcÿg&ÿb÷°mÞ>Çðö¿´%ü_, ýÍýæû£çüqλ ãÏùÆÇÿqÿçÞÿ[ê¿#þù!Ç?Sýôÿ<¤f+ÀåBÖ¦úÿØÿ¤È_.dýgZÿ
-ÿ'(ÿ ²þsÕÿGýPÿ_6dýçZÿõ_,`ý·lÈúϵþõÿYÀúoÙÐóÿSÿ¾Èÿ©÷ÿ,<
þOõiý·Býÿ
-Qÿ&ÿþÈñÏåÿ@ûÏBÚÿþ¹õËÿÿIÿ¿\ÈúÏåÿÿä{dCÖ.ÿæYÿC6dýçò`þø?dCÖÿ$þ+ýó¿,hÜýÿÏäÿÀý?þÔÿYÿ¹êÿcýz
-Qÿ½6åÿpðp@ÿ$þwíÿ°hÿ9Ðp¬ÿIü/ó?^käY°0 ¬ÿ\þôÿ, ß#²þ§ð\ù?òÐ?ª¦B ²þsù?ÿeþÙõ«þü, þlèùÿLþÿY¸ð þ8ÈúÏUÿë?YÞe3\ÿnÀÎ?'úù?Î÷ÿQÁ
ø?8ÿçý?{£_üÏÛãÓü/âRüÛý_»vµÿsüú.Æÿð¤ÿç¹ÿ}µø\ݽµôðñ ÿÏöÿ
-IÿÍý¡®#ý¿þy¸ìÿãí(èãÿ×ûüsFäÿ´Åø÷e3Jÿ÷õaGý±ûß5ͺs+ðáùg5ò,LÿÅîaÛ¼}áíi=Ö°ñlÆèÿ4ÿÛÿÃçLjÐþ30>þûô8Çðþ?vÿñçÿLõÿÑÿó]¬ YÿêÿÃÿÍCÒ?ä/²þ3ÿÆú/PþA6dýçªÿú¿, þ¿lÈúϵþõYÀúoÙõký7Ö±õß²¡çÿ§[ÿíË ±íúoìÿÅÃSàÿ Yÿ¹êÿ£þÈÿɨÍÿÿäøçò ýg!íÿÿ\ÈúÏåÿÿ
¤È_.dýçò ÿÃÖÿɬÿ\þÌÿ² ÿlÈúÏåÿÀü/ðȬÿIüWú/-üß,hÜýÿÚÿqªÿñ?þÔÿYÿ¹üXÿÁ
ÞECÔ¿ÊæÿPðp@ÿ$þwÿ-Ú4Ü¢!ëÿÇËü×ù_,À¢!ë?ÿC£ÿgùÙõ?
ÿãÊÿéþYøP5 ¹õËÿü/ðȬÿ\õ?0ÿËêÈÿÚÿ¡ZÿG ý³péÿ@ýiõËÿõ, ÿ'áúïUòã~þkµ
-ÖõÿýßXÿÝ6ÓÿýÚÿóø8DûÏÆ{²®ÿy¦ö_Ùö°õÿÇñÿcâÿ¼ÿsÏsôÿùøßxìÿÊ)þíþßÇÕÇø»×_-ýò?F9ª\»ÿ+ò?<\äbÃ;,Húö~í«Åçꮾ]-_;GßüOêþµ.Sþ7¶Ð?ÈÿȤÿæþPWËÎÀùmSý÷2@ÿ< ÿ
-}üÿzÎùäÿ@þO6£ô_6qÔ»ÿ]Ó¬ë®<Ððü³ÉÿüO~&ÿb÷°mÞ>Çðö¿´ðÿóö_6côòÿô?GÏùãwA'ÿO@ûÏÁøø?îÿÔãÃû«Gü9 Ç?×þ/èÿYHÍ.*È
¬ÿ\û¿ ÿÃBÒ?ä/²þsíÿÿï
-Yÿö Øÿìÿ"²þ3Õÿ°XÿÇêȬÿLõ?,öfõ?dCÏÿO\ÿÃ)ìÿÂÈSàÿ Yÿêø¿YÞeCÔ¯b £üðÿ°@&ÿG@ûÏSsì #²þsù?àÿb!éòYÿ¹üð±õÿ²!ë?ÿó¿,Àÿ!²þsù?0ÿËü²!ëÿÇþKù_4îþECÏÿOåÿ8ÕÿL¿äÿèÿYÿC6dýçò`ýz
-Qÿ*ÿ£ÿrü'ñ¸ëúØÿ
-÷hÈúÄÿñ2ÿãµÁý7|¢!ë?ÿý?ðȬÿ)üWþO§ôϪ©ÐÈ
¬ÿ\þäYÿC6dýçªÿÿ'¨ÿ!zþâú¶<ù?°þø?dCÖ&ÿÆúOÿÍpý;ÿèïÿÐ!¨´ÿ«
-ÎÂÿÁÁø?ïÿÙóýãÿÔþ¯áÿaÿvÿ×®ÝûÿÏ÷ÿ+ÿgábü?`<
-þçþ÷Õâsu÷Ö^ÐÃÇÿÞaýðˤÿæþPWËÎÀü*CÊÿÅ?àþ
Ëþ?>Ð>þ½Ï?§oÿßêß§úßN;Ìÿ±ülFéÿ¾>lâ¨?vÿ»¦Ywn><ÿãl ÿÃÀ$ñ_ì¶ÍÛç~ÿWZìÿÀÆ{²£ÿÓüoÿsôkÿc«ï¼:ÿL²£ýg`|ü÷ÿèqáý¿ÕÉÿøçÿLõÿÑÿó]¬ Yÿ¹êÿcþ
¤È_.dýçZÿù_à÷
-Yÿêÿ{Ìÿ²úÿ²!ë?×úo¬ÿbë¿eCÖ®õߨÿÀüÞ²¡çÿ']ÿJmÛõßÿóðø?eBÖ®õߨÿäÿdCÔ¿Aýÿ÷
-9þ¹ühÿYHû¿Ãÿ!²þsù?àÿb!éòYÿ¨ÿÿ®Áú?ÙõÉÿú<Àÿ!²þQÿÿ]ÿlÈúÄÿq¥ÿÒÂÿÍÆÝ¿hèùÿéügù?ìÿËÄ¥ÿõ?¥AÖ?êÿ¿kPÿS6Dý«lþÔÿgÿIüîÚÿú,h¸?DCÖÿ$þù¯
-ò¿,XECÖ.ÿúàÿ
-YÿSø?®üNè
US¡ Yÿüù_àÿ
-Yÿ¹êÀÿÉæ{eCÏÿOçÿÎh]>ÖÿÀø
KÿêH¬ÿ\þ¬ÿdù?Ùׯ-_.èçÿP6 Ó&é_§áÿà`Lü÷ÿìy~ñ?oÿã 0 þâßîÿÚµûsßñ¿QÎk÷ÿ+Ñÿ³p1þ
-/ì ² éÿyî_->WwoíÝwüºÓþïÞaý7ÿˤÿæþPWËÎ@ßü_«ò¥þy@ÿ/úøÿõ>ÿù¿þ@¾_6£ô_6qÔ»ÿ]Ó¬;·ÿqVcÿg&ÿb÷°mÞ>Çðö¿´%ü_, ýÍýæû£çüqλ ãÏùÆÇÿqÿçÞÿ[ê¿#þù!Ç?Sýôÿ<¤f+ÀåBÖ¦úÿØÿ¤È_.dýgZÿ
-ÿ'ï
-Yÿêÿ{ÔaõÿeCÖ®õßXÿÅÖˬÿLë¿
-êÿ³õß²¡çÿ§[ÿüÊ©vý7Öððø?eBÖ®õß𳠽˨Íÿÿäøgòx´ÿ,¤ýßáÿYÿ¹üð±ôùË
¬ÿ\þø¿XÀúÙõËÿù_àÿ
-Yÿ¹üÿe
þÙõ?ÿãJÿ¥Áü/wÿ¢¡çÿ§ò´õ?KeÍÉÿûàÿ
-Yÿ¹üXÿÁ
ÞECÔ¿Êæÿ(áÿàÿIüîºþCûÏûC4dýOâÿxÿññoÐ?7|¢!ë?ÿý?ðȬÿ)üWþOþ9øP5 ¹õËÿü/ðȬÿ\õ?àÿdõ?dCÏÿO\ÿöû?bý'ðȬÿLþ
õ, ÿ'ú?Få/o7Ûýî×úp{¬¾|ë÷ú/áÿâûÉfDÿßkϧsÂûù¿t*ù¿u[ÿþ¯üÿóÀýÎÑ?þ©ýO÷Æ£þ´ø·@wmÿÞûþÿ·øû?ópqÿ?`<
-þÍ?ûjñ¹º{c3øaãÿ6ÿW:¬ÿdë?dCÓs¨«e×`Dÿ .óÿ3
þ_ÿ_íóÏÞÿ;£0þgù?ÙÓÿ}}ØÄQìþwM³®;ò@Ãó?ÎüÓı{Ø6ocxû_Æ í?hÿe3Jÿ'Hïsôkÿc«ï¼:íÿdZÿÚÿüâÿ¸P÷9÷ÿÖ8øs@wîþß¿ÿiôÿ<¤f äB×wný/çt@þ
¤È_.týw|ÿoÓxúç ë=dC×wNýë«ü¯vð³ý?dC×wîþß¾Ð0
-ë¿Y@ýÙÐõß] bøü_ð
-õYßK6äÿ;@têÿÊÿéµÅý?O!ÿS&týwÞÿ;Pÿ
äÿdCÕ¿ÉåÿÀú_èñÏãÿphÿYpj@C×&ÿü_,$ýCþr¡ë?ÿþ/PÿO6týgò`þø?dC×&ÿæYÿC6týOáÿ¸Ò¿WÿeAãî_4äÿóø?pÿÏÂ
ÿõ?ÅA×&ÿÖ°ú²¡ê_åò þ?ôøOáÿp×õ?°ÿ3îÑÐõ?
ÿãeþÇëü/`ÑÐõÉÿþø?dC×ÿþ+ÿ§ÓúgáCÕThäB×&ÿò¿,Àÿ!ºþ3ÕÿÿÌ÷ÊfüÿÆÿ,\ø?PÿCtýçñx¬ÿdù?Ùпë¿óÏ~þkµ
-Öõ¯Ó þFÅ·Mõ>G¿öÿ<þäXÀþo²yKÿûÃn1´~íÿÓøÏÿ¤´s¥EûÏÁwã¿·wõìÏ÷Ûm¼
-/â_Úãb^¦ÛÒÂÄBÏÓö»¾Ðffçaæ}9+¬õ¥*-7Þ¥73W¨ødUèÙlnláOÑ¥Wºó¹
-ÆÍ]a¼3åóóLP³ùéyºÐAY7+â?aâfÊ«fñd¥.T:ûéÈø4å}(¯f6´GªÒ*Sèø¦ã¡ZµñÐxíèÂÎoýìt¨v>¾7OGªÇ#]|R|ÛóÂj[e|'>;#y|Ùôéy8[³yü`
ÇÜLyÕ¿ÒÇ÷Þ¾}:4½Ôêøm9¾¥thiãRØYú\óÇ/ ÄoÉÆsYüóÎÞ@©Mü\îôªætè¬j?¤oMÙÒt¬{cæ>~Ö¾¢ÄNÇÇ×7Þí<¾íY¡Ë2ê¿Ùøe{ú.
-ëMÙ~]³Ù,Æ!}ªß@ü}éæ³øâ æ1¢í6¤oÅ¥O5{:2½C=óe1÷ñmeü2Ú/K»xúxq¥åµEÐ:¤(ÆxíÂé+p.+Æß©ô±¬}<Ú¥ÏÛø=Æ7ÒwîBéâ%Ö^4êéµË"Í!êq_ÌãÏÛgºté=ÏÚ7¢Ò^mC: ¨}ûfçÁÇi¾Ôø=þûôHFüìÌ¥7Ö>¢4\úÊ1áìøiÚÍç^ŸýÒ^Ëé©ß!xàxàxàxàÇÿ£ÇÍ¢ùÚÁr¦æ®47Õ¦Ni)k½*Ãì&%Ïëã±>)©JÝþäx{xØnWÛ»âéï×»ÅçzYüÀI¸ïæÿûÕöÓzïçÿ5Þ¿Èÿǯþ_/ÕÝáï~/Ã/õv¹;Ü®ñoÿVocôëÿØ6õ:¥TOÕfµþ£ËÍnY¯ÿ.þÙþXl«MÿzMûü¿ÿï(þ·Þmÿþ/üâ_ÿëÂüìÕ¿ýû_oM½ßGIħÎÚüñßÿ^6ÍHüìæñgÉjV¤E%ñ§©X}ñ¿¿yZrZ´oTÝWãU{wLÜ,v:ý¢ýMzÉôô+sóiÿ~ü>¦?ÞÖ_õ>U}üYºÜEëgk?Ù¯ûç£×U|õøø´âKû².öǺhbs<ûª.6ºX|Õ~µ(õ¾Ø4ø»ôªXlv_âaMzõÅbýiýp¼/ͱ¨ûU±Ù|->}/ô¯ÿ)î¢ÙÇoÇøYãWüµXoâ§ÙÆ+vÛܦsï·ñ»íªÙåñv±_Çw÷µXıøª}ñµÙuuÿév½¹ù¸»ÛmVûôUzn~.˧·ñøýzwú¾o«õên»©·M¶ÝTËeüíqí·¬«øÖñiÆ¢ýÉÕ¡y¨Ö7ûݯõ¡ØTÛê®N/ô»óKM¿ÏKMãR~©ÍÂÏFý¸KͼÏKÍàRw©
w©Ù÷y©Y\j£.5mÜ¥æÞç¥ööXMãRûÎ¥¦Ì»ÔÊ÷y©½=VÃ¥öÝTÿ¸KÍ¿ÏKíí±.µïv ów©
÷y©½=VÃ¥ö·:V½ÏK
-yµ÷ì¿ÏK
-yµû)Üw:]ÄÚÈôG^kït¾ µ×ÚLwèw:aÔÚÈkíæ;ô;1 at níýåÖô;2 at rmd»æàµöNç]{÷ü>9
ø[ãÿ ^¹ à
\ No newline at end of file
Deleted: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t-offlines.tar.gz.output
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t-offlines.tar.gz.output 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t-offlines.tar.gz.output 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,53 +0,0 @@
-Machine (phys=0)
- Socket #0 (phys=0)
- L3Cache #0 (4096KB)
- L2Cache #0 (1024KB)
- L1Cache #0 (16KB)
- Core #0 (phys=0)
- PU #0 (phys=0)
- PU #1 (phys=8)
- L2Cache #1 (1024KB)
- L1Cache #1 (16KB)
- Core #1 (phys=1)
- PU #2 (phys=4)
- PU #3 (phys=12)
- Socket #1 (phys=1)
- L3Cache #1 (4096KB)
- L2Cache #2 (1024KB)
- L1Cache #2 (16KB)
- Core #2 (phys=0)
- PU #4 (phys=1)
- PU #5 (phys=9)
- Socket #2 (phys=3)
- L3Cache #2 (4096KB)
- L2Cache #3 (1024KB)
- L1Cache #3 (16KB)
- Core #3 (phys=0)
- PU #6 (phys=3)
- PU #7 (phys=11)
- L2Cache #4 (1024KB)
- L1Cache #4 (16KB)
- Core #4 (phys=1)
- PU #8 (phys=7)
- PU #9 (phys=15)
- Socket #3 (phys=2)
- L3Cache #3 (4096KB)
- L2Cache #5 (1024KB)
- L1Cache #5 (16KB)
- Core #5 (phys=1)
- PU #10 (phys=6)
- L2Cache #6 (1024KB)
- L1Cache #6 (16KB)
- Core #6 (phys=0)
- PU #11 (phys=10)
-depth 0: 1 Machine (type #1)
- depth 1: 4 Sockets (type #3)
- depth 2: 4 Caches (type #4)
- depth 3: 7 Caches (type #4)
- depth 4: 7 Caches (type #4)
- depth 5: 7 Cores (type #5)
- depth 6: 12 PUs (type #6)
-4 processors not represented in topology: 0x00006024
-4 processors offline: 0x00006024
-4 processors allowed but not online: 0x00006024
-Topology not from this system
Added: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t-offlines.xml.options
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t-offlines.xml.options (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t-offlines.xml.options 2010-11-24 09:21:55 UTC (rev 7494)
@@ -0,0 +1 @@
+-p -v --of xml
Copied: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t-offlines.xml.output (from rev 7493, mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t-offlines.xml.tar.gz.output)
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t-offlines.xml.output (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t-offlines.xml.output 2010-11-24 09:21:55 UTC (rev 7494)
@@ -0,0 +1,77 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE topology SYSTEM "hwloc.dtd">
+<topology>
+ <object type="Machine" os_level="-1" os_index="0" cpuset="0x00009fdb" complete_cpuset="0x0000ffff" online_cpuset="0x00009fdb" allowed_cpuset="0x0000ffff">
+ <info name="Backend" value="Linux"/>
+ <object type="Socket" os_level="-1" os_index="0" cpuset="0x00001111" complete_cpuset="0x00001111" online_cpuset="0x00001111" allowed_cpuset="0x00001111">
+ <object type="Cache" os_level="-1" cpuset="0x00001111" complete_cpuset="0x00001111" online_cpuset="0x00001111" allowed_cpuset="0x00001111" cache_size="4194304" depth="3" cache_linesize="64">
+ <object type="Cache" os_level="-1" cpuset="0x00000101" complete_cpuset="0x00000101" online_cpuset="0x00000101" allowed_cpuset="0x00000101" cache_size="1048576" depth="2" cache_linesize="64">
+ <object type="Cache" os_level="-1" cpuset="0x00000101" complete_cpuset="0x00000101" online_cpuset="0x00000101" allowed_cpuset="0x00000101" cache_size="16384" depth="1" cache_linesize="64">
+ <object type="Core" os_level="-1" os_index="0" cpuset="0x00000101" complete_cpuset="0x00000101" online_cpuset="0x00000101" allowed_cpuset="0x00000101">
+ <object type="PU" os_level="-1" os_index="0" cpuset="0x00000001" complete_cpuset="0x00000001" online_cpuset="0x00000001" allowed_cpuset="0x00000001"/>
+ <object type="PU" os_level="-1" os_index="8" cpuset="0x00000100" complete_cpuset="0x00000100" online_cpuset="0x00000100" allowed_cpuset="0x00000100"/>
+ </object>
+ </object>
+ </object>
+ <object type="Cache" os_level="-1" cpuset="0x00001010" complete_cpuset="0x00001010" online_cpuset="0x00001010" allowed_cpuset="0x00001010" cache_size="1048576" depth="2" cache_linesize="64">
+ <object type="Cache" os_level="-1" cpuset="0x00001010" complete_cpuset="0x00001010" online_cpuset="0x00001010" allowed_cpuset="0x00001010" cache_size="16384" depth="1" cache_linesize="64">
+ <object type="Core" os_level="-1" os_index="1" cpuset="0x00001010" complete_cpuset="0x00001010" online_cpuset="0x00001010" allowed_cpuset="0x00001010">
+ <object type="PU" os_level="-1" os_index="4" cpuset="0x00000010" complete_cpuset="0x00000010" online_cpuset="0x00000010" allowed_cpuset="0x00000010"/>
+ <object type="PU" os_level="-1" os_index="12" cpuset="0x00001000" complete_cpuset="0x00001000" online_cpuset="0x00001000" allowed_cpuset="0x00001000"/>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object type="Socket" os_level="-1" os_index="1" cpuset="0x00000202" complete_cpuset="0x00000202" online_cpuset="0x00000202" allowed_cpuset="0x00000202">
+ <object type="Cache" os_level="-1" cpuset="0x00000202" complete_cpuset="0x00000202" online_cpuset="0x00000202" allowed_cpuset="0x00000202" cache_size="4194304" depth="3" cache_linesize="64">
+ <object type="Cache" os_level="-1" cpuset="0x00000202" complete_cpuset="0x00000202" online_cpuset="0x00000202" allowed_cpuset="0x00000202" cache_size="1048576" depth="2" cache_linesize="64">
+ <object type="Cache" os_level="-1" cpuset="0x00000202" complete_cpuset="0x00000202" online_cpuset="0x00000202" allowed_cpuset="0x00000202" cache_size="16384" depth="1" cache_linesize="64">
+ <object type="Core" os_level="-1" os_index="0" cpuset="0x00000202" complete_cpuset="0x00000202" online_cpuset="0x00000202" allowed_cpuset="0x00000202">
+ <object type="PU" os_level="-1" os_index="1" cpuset="0x00000002" complete_cpuset="0x00000002" online_cpuset="0x00000002" allowed_cpuset="0x00000002"/>
+ <object type="PU" os_level="-1" os_index="9" cpuset="0x00000200" complete_cpuset="0x00000200" online_cpuset="0x00000200" allowed_cpuset="0x00000200"/>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object type="Socket" os_level="-1" os_index="3" cpuset="0x00008888" complete_cpuset="0x00008888" online_cpuset="0x00008888" allowed_cpuset="0x00008888">
+ <object type="Cache" os_level="-1" cpuset="0x00008888" complete_cpuset="0x00008888" online_cpuset="0x00008888" allowed_cpuset="0x00008888" cache_size="4194304" depth="3" cache_linesize="64">
+ <object type="Cache" os_level="-1" cpuset="0x00000808" complete_cpuset="0x00000808" online_cpuset="0x00000808" allowed_cpuset="0x00000808" cache_size="1048576" depth="2" cache_linesize="64">
+ <object type="Cache" os_level="-1" cpuset="0x00000808" complete_cpuset="0x00000808" online_cpuset="0x00000808" allowed_cpuset="0x00000808" cache_size="16384" depth="1" cache_linesize="64">
+ <object type="Core" os_level="-1" os_index="0" cpuset="0x00000808" complete_cpuset="0x00000808" online_cpuset="0x00000808" allowed_cpuset="0x00000808">
+ <object type="PU" os_level="-1" os_index="3" cpuset="0x00000008" complete_cpuset="0x00000008" online_cpuset="0x00000008" allowed_cpuset="0x00000008"/>
+ <object type="PU" os_level="-1" os_index="11" cpuset="0x00000800" complete_cpuset="0x00000800" online_cpuset="0x00000800" allowed_cpuset="0x00000800"/>
+ </object>
+ </object>
+ </object>
+ <object type="Cache" os_level="-1" cpuset="0x00008080" complete_cpuset="0x00008080" online_cpuset="0x00008080" allowed_cpuset="0x00008080" cache_size="1048576" depth="2" cache_linesize="64">
+ <object type="Cache" os_level="-1" cpuset="0x00008080" complete_cpuset="0x00008080" online_cpuset="0x00008080" allowed_cpuset="0x00008080" cache_size="16384" depth="1" cache_linesize="64">
+ <object type="Core" os_level="-1" os_index="1" cpuset="0x00008080" complete_cpuset="0x00008080" online_cpuset="0x00008080" allowed_cpuset="0x00008080">
+ <object type="PU" os_level="-1" os_index="7" cpuset="0x00000080" complete_cpuset="0x00000080" online_cpuset="0x00000080" allowed_cpuset="0x00000080"/>
+ <object type="PU" os_level="-1" os_index="15" cpuset="0x00008000" complete_cpuset="0x00008000" online_cpuset="0x00008000" allowed_cpuset="0x00008000"/>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object type="Socket" os_level="-1" os_index="2" cpuset="0x00000440" complete_cpuset="0x00000440" online_cpuset="0x00000440" allowed_cpuset="0x00000440">
+ <object type="Cache" os_level="-1" cpuset="0x00000440" complete_cpuset="0x00000440" online_cpuset="0x00000440" allowed_cpuset="0x00000440" cache_size="4194304" depth="3" cache_linesize="64">
+ <object type="Cache" os_level="-1" cpuset="0x00000040" complete_cpuset="0x00000040" online_cpuset="0x00000040" allowed_cpuset="0x00000040" cache_size="1048576" depth="2" cache_linesize="64">
+ <object type="Cache" os_level="-1" cpuset="0x00000040" complete_cpuset="0x00000040" online_cpuset="0x00000040" allowed_cpuset="0x00000040" cache_size="16384" depth="1" cache_linesize="64">
+ <object type="Core" os_level="-1" os_index="1" cpuset="0x00000040" complete_cpuset="0x00000040" online_cpuset="0x00000040" allowed_cpuset="0x00000040">
+ <object type="PU" os_level="-1" os_index="6" cpuset="0x00000040" complete_cpuset="0x00000040" online_cpuset="0x00000040" allowed_cpuset="0x00000040"/>
+ </object>
+ </object>
+ </object>
+ <object type="Cache" os_level="-1" cpuset="0x00000400" complete_cpuset="0x00000400" online_cpuset="0x00000400" allowed_cpuset="0x00000400" cache_size="1048576" depth="2" cache_linesize="64">
+ <object type="Cache" os_level="-1" cpuset="0x00000400" complete_cpuset="0x00000400" online_cpuset="0x00000400" allowed_cpuset="0x00000400" cache_size="16384" depth="1" cache_linesize="64">
+ <object type="Core" os_level="-1" os_index="0" cpuset="0x00000400" complete_cpuset="0x00000400" online_cpuset="0x00000400" allowed_cpuset="0x00000400">
+ <object type="PU" os_level="-1" os_index="10" cpuset="0x00000400" complete_cpuset="0x00000400" online_cpuset="0x00000400" allowed_cpuset="0x00000400"/>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+</topology>
Added: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t-offlines.xml.source
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t-offlines.xml.source (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t-offlines.xml.source 2010-11-24 09:21:55 UTC (rev 7494)
@@ -0,0 +1 @@
+16em64t-4s2c2t-offlines.tar.bz2
Deleted: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t-offlines.xml.tar.gz
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t-offlines.xml.tar.gz 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t-offlines.xml.tar.gz 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1 +0,0 @@
-link 16em64t-4s2c2t-offlines.tar.gz
\ No newline at end of file
Deleted: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t-offlines.xml.tar.gz.options
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t-offlines.xml.tar.gz.options 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t-offlines.xml.tar.gz.options 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1 +0,0 @@
--p -v -.xml
Deleted: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t-offlines.xml.tar.gz.output
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t-offlines.xml.tar.gz.output 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t-offlines.xml.tar.gz.output 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,76 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE topology SYSTEM "hwloc.dtd">
-<topology>
- <object type="Machine" os_level="-1" os_index="0" cpuset="0x00009fdb" complete_cpuset="0x0000ffff" online_cpuset="0x00009fdb" allowed_cpuset="0x0000ffff">
- <object type="Socket" os_level="-1" os_index="0" cpuset="0x00001111" complete_cpuset="0x00001111" online_cpuset="0x00001111" allowed_cpuset="0x00001111">
- <object type="Cache" os_level="-1" cpuset="0x00001111" complete_cpuset="0x00001111" online_cpuset="0x00001111" allowed_cpuset="0x00001111" cache_size="4194304" depth="3">
- <object type="Cache" os_level="-1" cpuset="0x00000101" complete_cpuset="0x00000101" online_cpuset="0x00000101" allowed_cpuset="0x00000101" cache_size="1048576" depth="2">
- <object type="Cache" os_level="-1" cpuset="0x00000101" complete_cpuset="0x00000101" online_cpuset="0x00000101" allowed_cpuset="0x00000101" cache_size="16384" depth="1">
- <object type="Core" os_level="-1" os_index="0" cpuset="0x00000101" complete_cpuset="0x00000101" online_cpuset="0x00000101" allowed_cpuset="0x00000101">
- <object type="PU" os_level="-1" os_index="0" cpuset="0x00000001" complete_cpuset="0x00000001" online_cpuset="0x00000001" allowed_cpuset="0x00000001"/>
- <object type="PU" os_level="-1" os_index="8" cpuset="0x00000100" complete_cpuset="0x00000100" online_cpuset="0x00000100" allowed_cpuset="0x00000100"/>
- </object>
- </object>
- </object>
- <object type="Cache" os_level="-1" cpuset="0x00001010" complete_cpuset="0x00001010" online_cpuset="0x00001010" allowed_cpuset="0x00001010" cache_size="1048576" depth="2">
- <object type="Cache" os_level="-1" cpuset="0x00001010" complete_cpuset="0x00001010" online_cpuset="0x00001010" allowed_cpuset="0x00001010" cache_size="16384" depth="1">
- <object type="Core" os_level="-1" os_index="1" cpuset="0x00001010" complete_cpuset="0x00001010" online_cpuset="0x00001010" allowed_cpuset="0x00001010">
- <object type="PU" os_level="-1" os_index="4" cpuset="0x00000010" complete_cpuset="0x00000010" online_cpuset="0x00000010" allowed_cpuset="0x00000010"/>
- <object type="PU" os_level="-1" os_index="12" cpuset="0x00001000" complete_cpuset="0x00001000" online_cpuset="0x00001000" allowed_cpuset="0x00001000"/>
- </object>
- </object>
- </object>
- </object>
- </object>
- <object type="Socket" os_level="-1" os_index="1" cpuset="0x00000202" complete_cpuset="0x00000202" online_cpuset="0x00000202" allowed_cpuset="0x00000202">
- <object type="Cache" os_level="-1" cpuset="0x00000202" complete_cpuset="0x00000202" online_cpuset="0x00000202" allowed_cpuset="0x00000202" cache_size="4194304" depth="3">
- <object type="Cache" os_level="-1" cpuset="0x00000202" complete_cpuset="0x00000202" online_cpuset="0x00000202" allowed_cpuset="0x00000202" cache_size="1048576" depth="2">
- <object type="Cache" os_level="-1" cpuset="0x00000202" complete_cpuset="0x00000202" online_cpuset="0x00000202" allowed_cpuset="0x00000202" cache_size="16384" depth="1">
- <object type="Core" os_level="-1" os_index="0" cpuset="0x00000202" complete_cpuset="0x00000202" online_cpuset="0x00000202" allowed_cpuset="0x00000202">
- <object type="PU" os_level="-1" os_index="1" cpuset="0x00000002" complete_cpuset="0x00000002" online_cpuset="0x00000002" allowed_cpuset="0x00000002"/>
- <object type="PU" os_level="-1" os_index="9" cpuset="0x00000200" complete_cpuset="0x00000200" online_cpuset="0x00000200" allowed_cpuset="0x00000200"/>
- </object>
- </object>
- </object>
- </object>
- </object>
- <object type="Socket" os_level="-1" os_index="3" cpuset="0x00008888" complete_cpuset="0x00008888" online_cpuset="0x00008888" allowed_cpuset="0x00008888">
- <object type="Cache" os_level="-1" cpuset="0x00008888" complete_cpuset="0x00008888" online_cpuset="0x00008888" allowed_cpuset="0x00008888" cache_size="4194304" depth="3">
- <object type="Cache" os_level="-1" cpuset="0x00000808" complete_cpuset="0x00000808" online_cpuset="0x00000808" allowed_cpuset="0x00000808" cache_size="1048576" depth="2">
- <object type="Cache" os_level="-1" cpuset="0x00000808" complete_cpuset="0x00000808" online_cpuset="0x00000808" allowed_cpuset="0x00000808" cache_size="16384" depth="1">
- <object type="Core" os_level="-1" os_index="0" cpuset="0x00000808" complete_cpuset="0x00000808" online_cpuset="0x00000808" allowed_cpuset="0x00000808">
- <object type="PU" os_level="-1" os_index="3" cpuset="0x00000008" complete_cpuset="0x00000008" online_cpuset="0x00000008" allowed_cpuset="0x00000008"/>
- <object type="PU" os_level="-1" os_index="11" cpuset="0x00000800" complete_cpuset="0x00000800" online_cpuset="0x00000800" allowed_cpuset="0x00000800"/>
- </object>
- </object>
- </object>
- <object type="Cache" os_level="-1" cpuset="0x00008080" complete_cpuset="0x00008080" online_cpuset="0x00008080" allowed_cpuset="0x00008080" cache_size="1048576" depth="2">
- <object type="Cache" os_level="-1" cpuset="0x00008080" complete_cpuset="0x00008080" online_cpuset="0x00008080" allowed_cpuset="0x00008080" cache_size="16384" depth="1">
- <object type="Core" os_level="-1" os_index="1" cpuset="0x00008080" complete_cpuset="0x00008080" online_cpuset="0x00008080" allowed_cpuset="0x00008080">
- <object type="PU" os_level="-1" os_index="7" cpuset="0x00000080" complete_cpuset="0x00000080" online_cpuset="0x00000080" allowed_cpuset="0x00000080"/>
- <object type="PU" os_level="-1" os_index="15" cpuset="0x00008000" complete_cpuset="0x00008000" online_cpuset="0x00008000" allowed_cpuset="0x00008000"/>
- </object>
- </object>
- </object>
- </object>
- </object>
- <object type="Socket" os_level="-1" os_index="2" cpuset="0x00000440" complete_cpuset="0x00000440" online_cpuset="0x00000440" allowed_cpuset="0x00000440">
- <object type="Cache" os_level="-1" cpuset="0x00000440" complete_cpuset="0x00000440" online_cpuset="0x00000440" allowed_cpuset="0x00000440" cache_size="4194304" depth="3">
- <object type="Cache" os_level="-1" cpuset="0x00000040" complete_cpuset="0x00000040" online_cpuset="0x00000040" allowed_cpuset="0x00000040" cache_size="1048576" depth="2">
- <object type="Cache" os_level="-1" cpuset="0x00000040" complete_cpuset="0x00000040" online_cpuset="0x00000040" allowed_cpuset="0x00000040" cache_size="16384" depth="1">
- <object type="Core" os_level="-1" os_index="1" cpuset="0x00000040" complete_cpuset="0x00000040" online_cpuset="0x00000040" allowed_cpuset="0x00000040">
- <object type="PU" os_level="-1" os_index="6" cpuset="0x00000040" complete_cpuset="0x00000040" online_cpuset="0x00000040" allowed_cpuset="0x00000040"/>
- </object>
- </object>
- </object>
- <object type="Cache" os_level="-1" cpuset="0x00000400" complete_cpuset="0x00000400" online_cpuset="0x00000400" allowed_cpuset="0x00000400" cache_size="1048576" depth="2">
- <object type="Cache" os_level="-1" cpuset="0x00000400" complete_cpuset="0x00000400" online_cpuset="0x00000400" allowed_cpuset="0x00000400" cache_size="16384" depth="1">
- <object type="Core" os_level="-1" os_index="0" cpuset="0x00000400" complete_cpuset="0x00000400" online_cpuset="0x00000400" allowed_cpuset="0x00000400">
- <object type="PU" os_level="-1" os_index="10" cpuset="0x00000400" complete_cpuset="0x00000400" online_cpuset="0x00000400" allowed_cpuset="0x00000400"/>
- </object>
- </object>
- </object>
- </object>
- </object>
- </object>
-</topology>
Copied: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t-offlines_noadmin.options (from rev 7493, mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t-offlines_noadmin.tar.gz.options)
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t-offlines_noadmin.options (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t-offlines_noadmin.options 2010-11-24 09:21:55 UTC (rev 7494)
@@ -0,0 +1 @@
+- -v --whole-system --cpuset
Copied: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t-offlines_noadmin.output (from rev 7493, mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t-offlines_noadmin.tar.gz.output)
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t-offlines_noadmin.output (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t-offlines_noadmin.output 2010-11-24 09:21:55 UTC (rev 7494)
@@ -0,0 +1,53 @@
+Machine (phys=0 Backend=Linux) cpuset=0x00009fdb
+ Socket #0 (phys=0) cpuset=0x00001111
+ L3Cache #0 (4096KB line=64) cpuset=0x00001111
+ L2Cache #0 (1024KB line=64) cpuset=0x00000101
+ L1Cache #0 (16KB line=64) cpuset=0x00000101
+ Core #0 (phys=0) cpuset=0x00000101
+ PU #0 (phys=0) cpuset=0x00000001
+ PU #1 (phys=8) cpuset=0x00000100
+ L2Cache #1 (1024KB line=64) cpuset=0x00001010
+ L1Cache #1 (16KB line=64) cpuset=0x00001010
+ Core #1 (phys=1) cpuset=0x00001010
+ PU #2 (phys=4) cpuset=0x00000010
+ PU #3 (phys=12) cpuset=0x00001000
+ Socket #1 (phys=1) cpuset=0x00000202
+ L3Cache #1 (4096KB line=64) cpuset=0x00000202
+ L2Cache #2 (1024KB line=64) cpuset=0x00000202
+ L1Cache #2 (16KB line=64) cpuset=0x00000202
+ Core #2 (phys=0) cpuset=0x00000202
+ PU #4 (phys=1) cpuset=0x00000002
+ PU #5 (phys=9) cpuset=0x00000200
+ Socket #2 (phys=3) cpuset=0x00008888
+ L3Cache #2 (4096KB line=64) cpuset=0x00008888
+ L2Cache #3 (1024KB line=64) cpuset=0x00000808
+ L1Cache #3 (16KB line=64) cpuset=0x00000808
+ Core #3 (phys=0) cpuset=0x00000808
+ PU #6 (phys=3) cpuset=0x00000008
+ PU #7 (phys=11) cpuset=0x00000800
+ L2Cache #4 (1024KB line=64) cpuset=0x00008080
+ L1Cache #4 (16KB line=64) cpuset=0x00008080
+ Core #4 (phys=1) cpuset=0x00008080
+ PU #8 (phys=7) cpuset=0x00000080
+ PU #9 (phys=15) cpuset=0x00008000
+ Socket #3 (phys=2) cpuset=0x00000440
+ L3Cache #3 (4096KB line=64) cpuset=0x00000440
+ L2Cache #5 (1024KB line=64) cpuset=0x00000040
+ L1Cache #5 (16KB line=64) cpuset=0x00000040
+ Core #5 (phys=1) cpuset=0x00000040
+ PU #10 (phys=6) cpuset=0x00000040
+ L2Cache #6 (1024KB line=64) cpuset=0x00000400
+ L1Cache #6 (16KB line=64) cpuset=0x00000400
+ Core #6 (phys=0) cpuset=0x00000400
+ PU #11 (phys=10) cpuset=0x00000400
+depth 0: 1 Machine (type #1)
+ depth 1: 4 Sockets (type #3)
+ depth 2: 4 Caches (type #4)
+ depth 3: 7 Caches (type #4)
+ depth 4: 7 Caches (type #4)
+ depth 5: 7 Cores (type #5)
+ depth 6: 12 PUs (type #6)
+4 processors not represented in topology: 0x00006024
+4 processors offline: 0x00006024
+4 processors allowed but not online: 0x00006024
+Topology not from this system
Added: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t-offlines_noadmin.source
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t-offlines_noadmin.source (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t-offlines_noadmin.source 2010-11-24 09:21:55 UTC (rev 7494)
@@ -0,0 +1 @@
+16em64t-4s2c2t-offlines.tar.bz2
Deleted: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t-offlines_noadmin.tar.gz
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t-offlines_noadmin.tar.gz 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t-offlines_noadmin.tar.gz 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1 +0,0 @@
-link 16em64t-4s2c2t-offlines.tar.gz
\ No newline at end of file
Deleted: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t-offlines_noadmin.tar.gz.options
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t-offlines_noadmin.tar.gz.options 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t-offlines_noadmin.tar.gz.options 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1 +0,0 @@
-- -v --whole-system --cpuset
Deleted: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t-offlines_noadmin.tar.gz.output
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t-offlines_noadmin.tar.gz.output 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t-offlines_noadmin.tar.gz.output 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,53 +0,0 @@
-Machine (phys=0) cpuset=0x00009fdb
- Socket #0 (phys=0) cpuset=0x00001111
- L3Cache #0 (4096KB) cpuset=0x00001111
- L2Cache #0 (1024KB) cpuset=0x00000101
- L1Cache #0 (16KB) cpuset=0x00000101
- Core #0 (phys=0) cpuset=0x00000101
- PU #0 (phys=0) cpuset=0x00000001
- PU #1 (phys=8) cpuset=0x00000100
- L2Cache #1 (1024KB) cpuset=0x00001010
- L1Cache #1 (16KB) cpuset=0x00001010
- Core #1 (phys=1) cpuset=0x00001010
- PU #2 (phys=4) cpuset=0x00000010
- PU #3 (phys=12) cpuset=0x00001000
- Socket #1 (phys=1) cpuset=0x00000202
- L3Cache #1 (4096KB) cpuset=0x00000202
- L2Cache #2 (1024KB) cpuset=0x00000202
- L1Cache #2 (16KB) cpuset=0x00000202
- Core #2 (phys=0) cpuset=0x00000202
- PU #4 (phys=1) cpuset=0x00000002
- PU #5 (phys=9) cpuset=0x00000200
- Socket #2 (phys=3) cpuset=0x00008888
- L3Cache #2 (4096KB) cpuset=0x00008888
- L2Cache #3 (1024KB) cpuset=0x00000808
- L1Cache #3 (16KB) cpuset=0x00000808
- Core #3 (phys=0) cpuset=0x00000808
- PU #6 (phys=3) cpuset=0x00000008
- PU #7 (phys=11) cpuset=0x00000800
- L2Cache #4 (1024KB) cpuset=0x00008080
- L1Cache #4 (16KB) cpuset=0x00008080
- Core #4 (phys=1) cpuset=0x00008080
- PU #8 (phys=7) cpuset=0x00000080
- PU #9 (phys=15) cpuset=0x00008000
- Socket #3 (phys=2) cpuset=0x00000440
- L3Cache #3 (4096KB) cpuset=0x00000440
- L2Cache #5 (1024KB) cpuset=0x00000040
- L1Cache #5 (16KB) cpuset=0x00000040
- Core #5 (phys=1) cpuset=0x00000040
- PU #10 (phys=6) cpuset=0x00000040
- L2Cache #6 (1024KB) cpuset=0x00000400
- L1Cache #6 (16KB) cpuset=0x00000400
- Core #6 (phys=0) cpuset=0x00000400
- PU #11 (phys=10) cpuset=0x00000400
-depth 0: 1 Machine (type #1)
- depth 1: 4 Sockets (type #3)
- depth 2: 4 Caches (type #4)
- depth 3: 7 Caches (type #4)
- depth 4: 7 Caches (type #4)
- depth 5: 7 Cores (type #5)
- depth 6: 12 PUs (type #6)
-4 processors not represented in topology: 0x00006024
-4 processors offline: 0x00006024
-4 processors allowed but not online: 0x00006024
-Topology not from this system
Copied: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t.output (from rev 7493, mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t.tar.gz.output)
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t.output (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t.output 2010-11-24 09:21:55 UTC (rev 7494)
@@ -0,0 +1,57 @@
+Machine (phys=0 Backend=Linux)
+ Socket #0 (phys=0)
+ L3Cache #0 (4096KB line=64)
+ L2Cache #0 (1024KB line=64)
+ L1Cache #0 (16KB line=64)
+ Core #0 (phys=0)
+ PU #0 (phys=0)
+ PU #1 (phys=8)
+ L2Cache #1 (1024KB line=64)
+ L1Cache #1 (16KB line=64)
+ Core #1 (phys=1)
+ PU #2 (phys=4)
+ PU #3 (phys=12)
+ Socket #1 (phys=1)
+ L3Cache #1 (4096KB line=64)
+ L2Cache #2 (1024KB line=64)
+ L1Cache #2 (16KB line=64)
+ Core #2 (phys=0)
+ PU #4 (phys=1)
+ PU #5 (phys=9)
+ L2Cache #3 (1024KB line=64)
+ L1Cache #3 (16KB line=64)
+ Core #3 (phys=1)
+ PU #6 (phys=5)
+ PU #7 (phys=13)
+ Socket #2 (phys=2)
+ L3Cache #2 (4096KB line=64)
+ L2Cache #4 (1024KB line=64)
+ L1Cache #4 (16KB line=64)
+ Core #4 (phys=0)
+ PU #8 (phys=2)
+ PU #9 (phys=10)
+ L2Cache #5 (1024KB line=64)
+ L1Cache #5 (16KB line=64)
+ Core #5 (phys=1)
+ PU #10 (phys=6)
+ PU #11 (phys=14)
+ Socket #3 (phys=3)
+ L3Cache #3 (4096KB line=64)
+ L2Cache #6 (1024KB line=64)
+ L1Cache #6 (16KB line=64)
+ Core #6 (phys=0)
+ PU #12 (phys=3)
+ PU #13 (phys=11)
+ L2Cache #7 (1024KB line=64)
+ L1Cache #7 (16KB line=64)
+ Core #7 (phys=1)
+ PU #14 (phys=7)
+ PU #15 (phys=15)
+depth 0: 1 Machine (type #1)
+ depth 1: 4 Sockets (type #3)
+ depth 2: 4 Caches (type #4)
+ depth 3: 8 Caches (type #4)
+ depth 4: 8 Caches (type #4)
+ depth 5: 8 Cores (type #5)
+ depth 6: 16 PUs (type #6)
+Topology not from this system
Added: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t.tar.bz2
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t.tar.bz2 (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t.tar.bz2 2010-11-24 09:21:55 UTC (rev 7494)
@@ -0,0 +1,52 @@
+BZh91AY&SY"ÿ gx¥ÿ°þwÞïÿñ?ï~Àÿïßð @ ø`">8 WÀIÝ¢|¼p ×ÀzÚ\}÷Î ÕÀdåÉUÎcRÈtíÎuÖ- t :§ïÕ?ÉOÚªPÔÿT
+0TÔjc@É !10 ¦ j½UJz
+¨@ hh %?T¢M2¡¦CF@ P¦!< Aê ÄP bx£j4 êR@ÔÓM2Å2z4Ð 2ê zÊl§ê$ûD7@¯ê ó 2 (spBîH¬?À'pBàÀH¤0 t¨ µH÷`L@úN¯[Õõ®%ï{Þþ¿±ìñj ¶:éx;ÄQuXQÆ¿ $(-
HH¨${DDâ¤$HSÃÍÝu×]J]uÃ1ùw fúÿ?°ô2Ið|z´Mh©V7³íî³»·yfpá´È4 Å$> ²á©Èõ¶çVMa$uïs|ÃæÉ¬:Ó²W{^KÖí´\½ÁVíµ¼v
ÛjX»ÛhÛÄm\¸ëݽ)]¢âºw·k׸*ݶîæÈ·m¢åî
+·m¢ÒjI$MR[ºN¤é4M&èZÀ뻨ìÑÛ{TRËÜnÛdDRdAQ]LÞS©2oHѼ¤B[ñ$PïHð4|uÈ» £¾×cÀ£DGÀ3à5Z·cVm ÄÀ$6@Ð4 ;h%üXIE=(@`ÎT#AYP@#¶ AfrØDfIºµqqºH®«®ñÂq»uo6Åo½8éèçå HuÜÒÝÖf`aÀFfbFs¥Ó,ÅLÊñºEÆÎLfgÄVæå)!ÀOÂÁË3 ñI
+(c  $@I20 ¹²Ë¦XªÏà"""³u2ÜÌÊdDDDBE"TBB¢ºC"ÈÈ""$?ª YòÉÂÃ,A«$Ë*°«2Åëê¿> ô~×Ö¸7?E
XSæÀ`¶BÅ®A µnCoû
4 P;ýèÞyçÃѧA8â Ht
õ»Õ_zªý½=Ý 1I&V,V*ÅX«b¬U±V*Å-jÖjÖjíÞ;Ý'¥ÍÉÅÌå!(@b@ÁBXÈ@a 1'
+
R b"¡8PÄ(0`0D 2KV+=º×R`?Hq`æºåק϶søïÊêU)J ú¨7
+9èáØ6=d²æÛU.²ïk=sÛuÖu×mwÛà>BJI!ò
$Þ
+û°$Iñû2:ùyõtíWócË^{çë×ä`{±du¨%éj*¤ßu~_36ªÖ:+°r>ÊM±¾ªì^Ó½Zû[¥Ã¶6ßîãlvôÞ#àÿ oã
+úxÜ8òΫ31ãÆvïnóß3Azgke·ü¿9î$îã{LsxÆ6À^öéØéÇûÁ
×âõÎ×uçlgVc~>[ã
+h+!ìFÞÂõèpnP|AØ?@`;Ô4ptëéÞU^÷^ªý¨p
+ÁúAúCñ@d?(;C`ùÁà0Á ÀzÁ`Èz!ä>´\>ÿ0üáþ$¡H©!]!Ü,O¶IóÁÞI6[@)J Û[÷Ã|ýy¾¾x¯nsôÛ~ûþxðG^½:yùç9mã¡2XÚ@6 À¦Ò`XÚLKIHHfTGxB£)´I`Si0 ,
+m&%M¦ I:m&%M¤À$°)´6 ̨
á±Ói26 À¦Ò`XÞf$Àe6 À¦Ò`XÚLKIId)Pa±Ói0 ,
+m&%M¤À)Yjª¨R ¹$dM^!*Uª!TB¨YEeVQYEe¢D*x·!Y ·ZÀ´ c*aÑa0·3Û-´ ÛtÝݵ tI
+,Ç1Ìx Z(UªÃ@Kl¶Ð ·JÌË+µeÿdÈ
ã6ÇqÀ¦Ò`2dÈgÏIçÏ<mY
+UÀRR¬ÁÛÇ·mñíãÏn9Þ{xöñíÛ|@Ön h¶n FÙ=O· fÅG¤üæï¤DGË mO´iàA³C ^C7ÕSt·ld Ì
3ÎųÀ(®¶líi¦kÍ$fÚ²BH5I5ÖÓUM)ÏkuªõþÃÞûj¯]ßÈ ®,¥RUW Õ]ºùÙꬪÌÌðYUî¥à !$³êã@Hì
ãZ8Ç#ÃUUDDBmfÙ`äBÏ#Ù¨_hÄ1Bg`»WCQãØÍpâD0ï O(®Hj%ç1 n2$¸¡ H+Ëë×kÒª`íxOЯo§âgVèsÃÅÜçÏ%ê $"¨ ¡¿ä9u'¾´®®)Ïzµ+J
C<_wÜ6N¸Åö¤¾âôBU!"*H©
+
+½,LB&£Õdà*5© R ±%ZçFeEb4ÈpÔ# ¨
+½í`Ú«@lZºodƬc8bÅoËPÕ_øÛA0BÈ#Ý+
+ÑÜÍûH±7Ê£f «ç6xª:¨b6åäò]ûß
+« Ufè mTëE«ªGæ·líÒ_5úSÉ<ñÏæ®Ci"Þ<bÍRÒ^Ìxʯø±lݾc®aåÚÉVËݬæÚÍÙipí${ªYSÓFº²)HH)¦fcZÖ_ØÓQ¬)$ÊUà l&°ÂbvÆùmh«sÛxvűÛh«Õ1º±r½±ºÕÚÍ«Í!ÆwåÄ/¦Õ1R©§<Y$ëXFüÚ¶ÄBú¦¹µWPH^÷íAÍÖÇKÎüó~»j¤Þ VUtBîÍ%ÒemTÓ¿$º^yq18Àé<øÛÔ8·Õ*§^/uï{Ø`¢bXÄKÐPB9ÑÛ´Ó_Þëe3ºmÓW¿9ÜÞ0°hªK±*÷j}ÜçsxÂÁ¢©.īݩ÷sÍã ÑSbUîÔû¹Îæñ
ER]W»Sîç;Æ
+Iv%^íO»îoX4U%Ø{µ>îs¹¼a`ÑTbUîÔû¹Îæñ
ER]W»Sîç;Æ
+Iv%^íO»îoX4U%Ø{µ>îs¹¼a`ÑTbUîÔû¹Îæñ
ER]W»Sîç;Æ
+Iv%^íO»îoX4U%Ø{µ>îs¹¼a`ÑTbUîÔû¹Î½SD²§ý
+áÝÒðw÷à8wÞÊtf[X,C9e%!k¥Q³ÍfIm|vÆn}<1à¿3~m^Ò¨wFÞ;Æòò.":
+Rμ¶vhBãÏýÌ D©)©I%")QREÓÜÜc©ª¬ñ~-u×Ué¯ñµìj»ö Ú«7@j®¼wïovìlÛU%¬Ç/±7ú%m·ÛjnÕ±,g/¡iÖ,ç©2ÊÄÀÙizh hÊ T¡ÔEªn²ùôß5³XÛ-FRV$QLLN¸$ºòÉKÚÓyS§,o©®Ë`ï£fléñHh@`Làe
+:N[Ó®Ù¤B©#9½àç30ÚÓ;ÙÅÀÀàCK7"+eåV!C=³¥ËCXFy»bù¼ÕJÍ^þÈ åþþ×+Äm'ë½B}0ê¾gBà ¤JÙØU5¶Eõt2
+ÙËÖÀXhô¾mòó¸ë×§ 3¼Þmëã¹äË|Z3·2¬a¾/j2ͤÓj±;ªI73jSmth©ÅMéKËLX)/*JVT8ºûbÉ©1¶¥¯]r©D ¸ÊLFò"MÌÀ ½T¢Àðu{ÛÕfAc_yj1[Ü.ìæ×æqj¢ôw¦:¼1Èùá¯wH^n§R'ºêZÒg§Hï30 8y
&ÁÀZºA]v½¯»véZß-¾Õ@ æíKWêºùX¯BͳMµAA¶ôÍ©ªµNÔòZì©«ZÕ|ôãfÕ1»0îïi ¾ZlÖ¬
+eD¨ªAçHͤâñ'JLsj¦ßA/¥=6b³-³U2I:i(5m-Î:1|LÉ%µÆÖÒõIÔ¥nÛÅæÛR)Pß¶øã@H_Óq$³>]ïJ_N,®2¤9 êD®ÐPDý"è+"
+àÎÆt¹Ì¡»ÈD*ÑWw;qÅÕ×§¹çÍÛ ½ÏµÖt
+ÇDh·<Þ\3ZZ[«ã@(Of¡Ö¢9¨Z`Ãj½;äΰã8p ÁR¤à©qxÎYª3Òö¿ó³Yµ5°yc
+$äÙSm#IKÕÛ^ ¦ÐåLà¾Ûz)¾êÒC,J·LæÚÛ}¶ÂËU¯{¥)O!ÂïR¹°Ã·ë8D{[gµéRøHU#º^;ðc´tÖ3tßúõãp°oºbµìTÖûÜ¾ÛæýÃmT¦:Z¬^õ*nÅöÈZß\Lí{)âõ'Y¯pL¯j©\ÖõÜV?mL<íÛUºII0m[VuHm×ûÚtcYí{opÐIzwÏÃϾ`¼¹ñ!iï.iAMÖæé÷
+ o&fr/ÔFî <hÀWϾFíøuâüTä0èpÅÚIªRªªff"E2ÖÅ¡¦Ë8È.k5$¨Æo|ZÒjY0]mUKÆýl uNs»öá7Ûf/µªËÁnl±G6RÍ®BÃmk7âÝz§pd4µ¾/×;gbÕ~~ ¸n¹
+&Ü!ú§tçË|÷WÚöUª¾zc¾$Øf³B¹ÛkYë×Îu®g¦wÏã8æ·VÙ¶Üï~:Z÷ßZáÆüv¿=-ÅØ+fk-kïmgùüÿWÉëþë®·íý¿êÇå
+ #àòh?8Z¬+Õn·÷
Âßààô+øÕz W5]ÈU¢?0ì-¿ü3þûòýup×ÞÛöch/ ýA>È>À?ôÌÎ@0m¶µ¸K°nð[9ppа6@HPnæ/olIøòÛ |ðü!³ª@䪰>`Ø<0T°|î üìÂá÷è ãÙý>WÜ'°$;`=`à¾~PHqCù@! Ðzh+ø$C0r & Ð/».!(,!Ô> UD*¢Q
+¨eeeeeeeª!UªUD*\%Íÿî6P9@© ª
+ÈTo"D4%P}Á}á=䤤¢QEòð`µ\,@ûà d>Aè´,°X$K"./׿ݸÜ3`ä2Pgë·ëôàëã!:)Ð'p à,ýàH|çp÷l`°?(~Ðê¸>Ûñ²Á1@È$9`ü/¼íëZÁÄÜ»öèì¿säp±ÅÃ` ¼P}ÒA!¼ °eÁÂ<I=÷ @ÈtX'!ÈI¸lp
+ùH
+ Pd?yp|üÃ÷þÀîïH~ 8fÞAÆÝAèÜ
+øííìøè'ðá.õzz
Aè îy
èIûÞ¡°làöõ Ð8¨M¸X2|: y°y"H
ê|e¼Èt %XC>çï!]}ÃÈßAÈ{Á:BÒ ýC`¯.Á6 ¢$|ÿÀóà9
+¼Þ$GãÙ ÈrØWwä®`AìõÕ¨KYîþ¢G¨==àùÁÁ x8
+È#°P}pTÓÀ?fî´÷C¸z¨PJÜ «@ öà2Ö Ý®Àq3ò¨=Ch=ÁÒ AR
tA!ͨh=áî
+ä%úÃp Aì¶ð9HÜàÜ' òAÜ
+
+
+Âw¬
Þ¤
+D$*xî nZÃàÜ8
+
+§¨}!ÂX `{à p mõõÝò
+z øâ¨$1ÏDHP±$Cp¤H*
+\=CÐÀ
+jHI0"$*üóÓA=âàä'ÀÀuî¡= Ø;;l·@È$HîªUA7ÕéáôA$ëRTª%H0ï0>!R$BÏ0ÀJM! ÷°nx
+PP|ÃÇA;ÚmÀKö$w AõR$CöÌ!ð@ñw$S
/ð
\ No newline at end of file
Deleted: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t.tar.gz
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t.tar.gz 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t.tar.gz 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,88 +0,0 @@
- øÓ9K í]sIr®uký¾´#ì9õ]ÀÞybmc7Þ8çÑ[ø
- ©ö×»
- 9 1Ct%»Rò}°;ú`
-"ûíªÎz3Kn\ÿ/nof¦ÿ?ïj Ñûü«^þ¬;üúÈ;2^)§õ;¥7þ]㫼<ìûv×4ï>Þmîõ+Çu»=ÇâEÇ»ÛÌF¿Å_[g½V.¤ø[¯âÏÁoŶ}X¬?mF;Gp8Æû7âo¬ áEüÓ¯ö]£F{¯ <þ9àÝ~¿ÙýÃõþs·¾Ýìn·éOÿÖÓeÐýǺïïÓ%Ñ|jWå×ôí߯6·ÝòÒïÃñ·Íº]uéþý?þ÷?5ÿ¿Û¬ÿñoþ§æÿþ×Ïù)¨û÷¿¿ß÷Ýv»Xߥ:9äÏÿþ÷ümÚÜ4ý];wÍ~ñ÷üÝæ?ÿø~;ÿº_ÌÚesx£êý~ñ1
îny?Ûìºü
ÃWò·Ì¿dÞÚ>ä¿þÚíóooº/³nÛ/6ëÇ¿Ë×ým³ì>§-ÿd¿l^¶é»§?¤Ö|^uÍm×l÷]ÓïgÍj¿k¶m׬f]3û2iÚíbÖì»m³êwé+wù+m3[m>§ÃúüÏlhfËOËý¼¹í÷M;Û.ÕêKóéKúVûômÓÿMúO3ï~Õì¿îÓÏ>â/Ír~uºb×ýM>÷vþåf½è7»æv3Û.Ó»ûÒÌÒ1û¢Có¥ßîe;ÿt³\½ÿ¸¹Û¬ÛüQx=5?yÿþém<~¾Á?ïv¹¸[¯ºu£m&ïÛÛÛôîÇ>eÕ|\¤·þnÜäø7»þ¡]¾ßn~évͪ]·w]þFxÿþôRÓß祦q©_jøQßîR3ßç¥fp©Ñ.µøí.5û}^jéRÓöÛ]jîû¼Ô~®¦q©½r©)óí.5ÿ}^j¿?WÃ¥öê ª¿Ý¥¾ÏKí÷çj¸Ô^@§ßîRßç¥öûs5\jÿ[çjïóRC^íûKvL¿ÏK
-y5â¥æ¾a
-÷;]. at b8~Ëkí;]/@fx}ÃtþNZ#^kß0ß¡¿ÓäÖ¾¿ÜþN\#Þ×Â7¼Ö¾Ó5d×¾g~ÜÊoù?ÓEÑy×ýÚ_ø?Ó
-þOò]ípôÖ4&Å 6zêlt!«ÕNã$?i¬
-^5Ö8oi|0w|UL¦Æ6Î
ôO´J7q:µÑ¸©kLpÆ?ÿ;ÕdzüwºÑQÙ$õô¿8éMVMÒɼnT>ûñÈôÏTÑ7A7!Nl<©¼U&ÍM>T«ã¡6ª½Õ6ÁÉñPíBz'nTGºôÒÛ6V[ßøôNB>v¢¢¦oºfÇúf2M?Xc¦é 7QAMé½Þ>¿N?¨ÕéÓr&JùPoÓÒØIþ¹¦@LMç6ô7.8{|>×Aä%Ws<tÒL½¤2¤·¦¬7&0cÒ ÞGþLL;¾ßÔô¯Ò×&Ó㻦·=IÃOÇO6}GÂ?Æã×d2IqÈ jâã'¾îÓÞRÈgèá@ó§âòO5y:2¿C= ¾ô6¼OÆáÃÒ.>]\ùÇ
-ÇÚ&jsÓ vñø8ÎâFôcYûx´Ë?{º?¤¯èi:0½Cx§.z.±ÃE£¾·obºtxh¦éïO´wù=OoDå7½X÷»|@:PÃÆ Rò> Çÿ?½ò
>!;qù^I.dOxrü8/í¦Ó RÜL¾·oú^ÎçÿýñÂ/¼ðÂ/¼ðÂ/¼ðÂ/¼~ ×ûYÿ¥o¢~¢¦Î÷ûŪËi)kòqò´ÖíÔV^þf³{X¯ë»æéÏÙ}w¾å7Ëÿ¾Èÿï¿îÇï3¬ÿ
-VÉý?lèÿÁÁoÄÿ¶û¼Hïx×Ayü½Òñçàø§ß÷ÝjË`xÿct)þÁZ
øsp=þ³íï¡ñ>jòúoÔèÿÅðøç¥MúE0ðþo.jã£Aü9(¿Ùn»¯ÅBqÿ7£þY Ä¿ïºööæÉ*wõ¯ûr8ó"þ.ôcá)ÿÿãÒÞ:QPôÿdÕ¼Ù¶³ûö®»Yܾz«úW/õï=ôÏÞECÑvÁ_Óü)åú·iýs ¡Ñõ?xöOÿ;ý³p>ÿOà~ ýÏ»Ý*ÍúÓãÿ¦ïÝà<PyþÇZüoÿló°R(V>ÿsN{Üÿ9@¾G6ú?ÔóRV×L®rÃýâø/Ö·ÝStÿ ÄjüsùþÐs\ÿÃEþGÿä>ÿ9X¨ú^Jén¶í®_äö'¿yòùTùÿ
-Uÿý×íx㿾Èÿhþ/,ü¼^|Zt·¸
ªÿCk³ç ¬ÿ¡,/ªþgy·ëÖ³¯ÇWÓ×õo_è?è ¡|ECÕÿ/í×ýÍæÓM»ßof¶_|^ô_çýû ÿ':@ÿ!çÿçí®»½I_¸YµÛ×ÏqUÿþ/¯5ò,<
þ/Põ¿~X}ìvy°ïú+º¸>þûý{øXÈë¼\húWõýþ¨ñ×ÿá.ý÷4Ü¢¡ê¿ºÿúgþÙPõ?ªÿãâùÏjý³ð¡í[ÜäBÕuÿò?,`ü
-Uÿµýþ/àÿ
-Uÿãú?^ÿÁø¿Y@þ¢!çÿkû?ðüϹÿý?¥AÕÿ¸þó¯=üß,X4
-Mÿº¾ÿÃÁÿÁ5þÕû ÿËBn»\¨ú¯îÿ@ýþɪÿÚý?4ÖX@ÿÙPõ_Ýÿþ,`ü
-UÿÕû`ýø?dCÕuÿÖXÿC6äümÿò,Àÿ!ªþ«÷ÿ@ÿòú$/Áú/ÛòåÁþ£Õú]:* ÿñÞÿ³ôãÿ|ÿ×ÁiÄJüûù®koï [>ÿwë<Íÿó &¢ èÿÙû³mg÷íÝÕ½àËóÞCÿ<`ýO6ýö¿¢ùSÊõo±þÇò}²!ëðì4ÿw
-úgá<ÿþßÒ(Ñÿ¼ÛÒ¬?=þoú~9|+ðòüµù?ÞÿÙæaÝ8GùüÏ9
-ÿÿɦ@ÿÇõ_Â9Ýÿ³êZåü¿²Èÿ³PÿÇý?JÎQ>þ'¨ñ¯^ÿþ?,äý_Pÿ-ªþ«×#ÿÃúÿʪÿêõßð²úoÙPõ_½þõ,X(_4TýWïÿþo, þ[6Tý[ÿ}¡ý?xÐØýY4äüíúoäÿXx
-ü_2¡ê¿zý7ü?,äõ?H^.4ý«êþ\ÿÿG}¨ñ×ÿá.Öú² áþ
-UÿµýèÿËü²¡êTÿÇÅóÕúgáCÛ·¸È
ªÿêþäXÀø/ªþ«û?àÿbþÙPõ_»ÿ?úÿòþÿ²!çÿ+û?ÿçáÌÿþâ ê\ÿÇËù¿×þo,¦]¿ÿÿjü«÷ÿ@þ
Üv ¹Põ_Ýÿú0ý
-UÿÕû`ýôÿ
-UÿÕýèÿÇÆÙPõ_Ýÿõ_àÿ
-UÿÕýXÿaþÙóÿµýÈÿ± ÿl¨ú¯ÞÿýXÈë¼\ëßSvþ92Ìÿq²ÿ1bÿ
-âÿ¼ÿgé9Åÿôþ¯ópø3@?ßuííð`Îÿé¿1ïÿ-ü?,ÍÿMza2
-þ½?ÛvvßÞ]Ý~hþï £óü߬ÿ±úoÙPôØÿýæO)Ïÿ[àÿaú
-Yÿgÿ
óåû+¬ÿ³p>ÿOà~ ýÏ»Ý*ÍúÓãÿ¦ï÷/ÏÿXëÿcá-ñmÖýsÏÿÃþ< ß#ý× ç(^ÿ1ZYäÿY(ÿãþ%ç(ÿ?ÔøW¯ÿÿ
¼ÿê¿åBÕíúoôÿäù_ÙPõ_½þþoPÿ-ªþ«×£ÿ'Ê
-Uÿµë¿ê?X@ý·l¨ú·þûBÿ>ÀÿÉÆîÏ¢!çÿ+ÔUþPÿi1þ³ðø¿dBÕõúoøXÈë¼\húWõýþ¨ñ×ÿáÐÿÿ¡áþ
-UÿÕýÐ?ðȪÿQýÏ6·þøÐö-nr¡ê¿ºÿù0þ˪ÿêýÿáÿbþÙPõ_½ÿ?üß, ÿ¿lÈùÿZþë¿úgáÜÿþÒ ê\ÿÇËù?úÿsaaø
-Mÿº¾ÿÃÂÿÁ5þÕû ÿËBn»\¨ú¯îÿ@ýþɪÿêý?°þÃúȪÿêþôÿcã¿l¨ú¯îÿÀúðȪÿÚþôÿáþÙóÿÕú£ÿùàÿ
-UÿÕû ÿ7yýË`ý[ÊÎ?Gû?tʾKG¥_áÿà þÏûcxüîÿ:8ôaÿ~¾ëÚÛá;Àÿìÿ
-ÿY8ÿ«B>@ý?{¶íì¾½»º|yþÏ{èôÿ
-Eÿý߯hþrý[Ðÿ
äûdCÖÿàÙ?iþïôÏÂÙüÀý@%úw»Uõ§ÇÿMß/o^ÿ±ÖEä8xKügu?àåó?ç4ê?XÀüO6ú?®ÿÎ1ìþU\Ô*çÿEþ
âø?îÿQròñýÿ¹ Æ¿zý7ü,äý_Pÿ-ªþÑÿÿÇ ýeCÕõúoÔ²úoÙPõþÿ?ðȪôÿÿ1@ý·l¨ú·þûBÿ¨ÿfBc÷gÑóÿê¿Oë?±ÿ/O!ÿK&TýW¯ÿÿ
¼þÉË
¦Ußÿúo¨ñ×ÿá.Öúÿ± áþ
-UÿµýúgþÙPõ?ªÿãâùÏj
-ý³ð¡í[ÜäBÕuÿò?,`ü
-UÿÕýð± ÿl¨ú¯ÝÿßÃÿÍÖ{eCÎÿWö ÿÏÃÿý?ÅAÕÿ¸þ
ó¯üß,Xl (þu}ÿÿjü«÷ÿ@þ
Üv ¹Põ_½ÿêXÀôO6TýWïÿõÐÿC6TýW÷ ÿÿeCÕuÿÖYÿC6TýW÷`ý¬÷Êÿ¯Ýÿù?àÿ
-UÿÕû ÿyýË`ýkGÙúçÀ0ÿÇéþ?êÐÿþúÄÿyÐÂsÿéý_GãHñïç»®½¼,aþSÿ8ÿ»ôÂd@$ý?¶íì¾½»¶|yþÏè¬ÿɤÿÃð¯kþrýcýô
-]ÿCgÿù¿súgá|þÀý@Eúw»Uõ§ÇÿMß/ï^ÿI¿Eþ
7ŶyX÷×ÏQ>ÿs.ÂÿÍò=²)Ñÿq¸üåë?úPÿû}Êãÿ¸HÁ9ÊÇcâÏ9þà×ÇÿËúïÿ7yÿÔË
¬ÿðòùÔùÿ
-YÿàWõÿõßýÿX@ý·lÈú/( '¬ÿZú/,/²þ
-À¯ëÿ¢þÛ8Ô±úoÙõ_P NÐÀþ?<hìþ,zþxøUýÿFýwDþ
§Àÿ%²þ
-À¯ÿõ߯ÂÿÃB^ÿäåBÔ¿ªîÿ0ðp@ÿ¨þw¹þþ,h¸?DCÖmÿôÏü²!ëLÿÇÅó5
-úgáCÛ·¸È
¬ÿÚþäXÀø/²þ+û?,ü_,Àÿ!²þGõ\ôÿþoÐï[6ôüeÿÿY8÷ ÿ§4ÈúÕÿñrþï
ÿ ¢!ê_W÷Xø?8 Ç¿vÿäYÈmà Yÿµý¨ÿaÓ?Ùõ_»ÿÖX@ÿÙõ_Ûÿþ,`ü
-YÿµýXÿeþÙõ_Ùÿþ?<Àÿ!zþ¿²ÿù?àÿ
-Yÿµû ÿyýËpý6þydÿCY|Ô&é_ÇÑÿ
ø?oÿYzañ?½ÿëÃóâ_Jüûù®koo ;tþå7þHCR4ð³p6ÿWFa=@ý?[¶íì¾½»ºüÐüßAÿÚçù¿þy@ý·l(ú?lÿ~Eó§çÿöXÿcù>Ùõ?xö_8ÿW:Ïÿ-öÿäálþo¸¢Dÿón·J³þôø¿éûåðÀËó?Ö:üoÿló°î£|þçÿÌÿdS ÿãò/á×êIøÊheÿg¡8þÛ£|üO þ,Pã_PþMªÿÖÈÿ²÷Aý·\¨ú/(ÿ¦Ô+ü/Xÿ
-Uÿåߤúo
-ÿ'¨ÿ
-Uÿåßõ_ýy°P¾h¨ú/(ÿ¦Ôkþo, þ[6TýSôï=ú?± ±û³hÈùÿáåßEþ/åì¡þ[cþÏÂSàÿ Uÿåßúoíáÿa!¯ÿAòr¡é_U÷è ÿÔøëÿpë?
-þ4Ü¢¡ê¿ºÿúgþÙPõ?ªÿãâùÏæ6 Ð?Ú¾Å- at .TýW÷ ÿÃÆÙPõ_Ýÿõàÿ
-Uÿãú?.úÿ{ÿ7èÿ/rþ¿ÿÃú£ÿõ,ù?ÐÿSTýëÿx9ÿ÷ùËÐ?
-Mÿeüþ¨ñ¯Þÿù_rÛ%8@äBÕuÿêXÀôO6TýWïÿõÐÿC6TýW÷ ÿËÆÙPõ_Ýÿõ_àÿ
-UÿÕýXÿaþÙóÿÕú¨Ãú¯Bþø?dCÕíþèÿÍC^ÿäå2Xÿ²óÏaþýtû¿°Pÿçý?KÏ1,þ§÷Eü9 Ä¿ïºövø°Cçÿ'ûÿEìÿÎÃÙü_§&¢ èÿÙû³mg÷íÝÕ½àËóÞCÿ<@ﲡèÿ°ÿûÍR®«ü?, ÿlÈú<û'ÍÿþY8ÿ'p?EþçÝnfýéñÓ÷Ëá[ç¬õÈÿ±ðøÏ6ë~À9ÊçÎaÿGðü'ý× ç(^ÿ1ZYäÿY(ÿãþ%ç(ÿ?ÔøW¯ÿÿ
¼ÿê¿åBÕíúoôÿäùÙPõ_½þþoPÿ-ªþ«×cÿ,/ªþ«×£þÔ˪ÿqë¿/ôïü,hìþ,rþ¿Vý·9Öâù§Àÿ%ªþk×£ÿyýMÿª¾ÿCÃÿÁ5þãú?úÿ#4Ü¢¡ê¿ºÿúgÏ{²¡êTÿÇÅóÕúgáCÛ·¸È
ªÿêþäXÀø/ªþ«û?àÿbþÙPõ_½ÿ?ÖY@ÿÙóÿÕüèÿÏɹÿý?¥AÕÿ¸þóôÿçÂbÃÑÐô¯ëû?üPã_½ÿò¿,ä¶KpÈ
ªÿêþÔÿ°él¨ú¯Þÿë?, ÿl¨ú¯îÿ@ÿ?0þ˪ÿêþ¬ÿ° ÿl¨ú¯îÿÀúðÈÿ¯æÿ°ÇþèÿËü²¡ê¿zÿè
¼þÉËe°þuÙ/§ó(}H¿äñ_©ìÿÿ£>%ñÞ ´ðÃâÿtÿ÷yÿ§þ/<âßÏw]{;xØ¡óÿ_ãïbÄó?ÿˤÿgó϶ݷw×6/Ëÿeý{ýó ½Ë¤ÿÃð¯kþrý[ãÐÿ
ô
-]ÿCgÿ¤ù¿Ð?çóôÿFþçÝnfýéñÓ÷ËÁ{ç¬3ùÞ
ÿÙæaÝ_?GùüϹúðü'ýËÏ1pý'Ïúîsÿ}ðàþ_òø?n RpòñßX
õÈñ/( ¿>þó?áÿ`!ïÿúo¹õ_P ^>ÿÚ"ÿÃò=²!ë¿ üªþõEþGGÔ²úoÙõ_P NXÿµýX°P¾hÈú/( ¿®ûBÿÁXôaõß²!ë¿ ÿ`áÿdAc÷gÑÐóÿÃÀ¯êÿÂÿåuDþ
§Àÿ%²þ
-À¯ÿþ¥þ
ÿ
¼þÉË
¨UÙÿa"ê¿Y ÇTÿ»Xÿ èÿÇûC4dýWöè<ïɬÿ1ýÏVGè
mßâ ²þkû?ÿaã¿lÈú¯íÿÿø?dCÖÿ¨þãþoÐÿ_6ôü]ÿòÿ<û?ÐÿSdýêÿx9ÿ÷ÆÀÿÍÅ¢!ê_Wïÿ¡àÿàÿÚý?ÿe!·]D.dý×ö þLÿdCÖíþXÿaý?dCÖmÿúÿ±ñ_6dý×ö`ýø?dCÖmÿÖXÿC6ôüeÿò,Àÿ!²þk÷ÿ@ÿòú$/áú·óîÿîð°Pÿçý?Ï1,þO÷ÿ÷¹ÿ3â_Rüûù®koï ;tþ|LÿyüÏKÿ8ÿôÂd@$ý?{¶íì¾½»¶üÐüßAÿFgýÿ¨ÿ
-Iÿýß_×ü)eùÿ<ÿ³Æaýè_6týýÎÿ;ìÿàÿcá|þÀý@Eúw»Uõ§ÇÿMß/o^ÿI¿Eþ
7ŶyX÷×ÏQ>ÿsþoïMþë¿åç(_ÿÉwÜÿ9(ÿãþç(ÿU?äøW«ÿØÿ¼ÿê¿åBÖµúïp¨ÿ¶Èÿ²ü¯lÈú¯VÿÐÿÔˬÿjõßáXÿú/,/²þ«Õcý7ê¿X@ý·lÈúµþûBÿÁÁÿÉÆîÏ¢¡çÿǯÿ>ªõ
-ã?O!ÿK&dýW«ÿÇúoøXÈë¼\úWÕýþÈñÕÿá.×PÿËûC4dý×ö@ÿ,Àÿ!²þÇô\<ÿY£ >´}[\Èú¯íÿ@þÿ²!ë¿¶ÿþ/àÿ
-YÿÕúÿýþoÐÿ_6ôü%ÿGÿôϹÿý?¥AÖÿ¨þóo°ÿ//Ñõ¯«û?üã_»ÿò¿,ä¶KpÈ
¬ÿÚþÔÿ°élÈú¯Ýÿë?, ÿlÈú¯íÿ@ÿ?0þˬÿÚþ¬ÿ° ÿlÈú¯íÿÀúðÈÿ¯ÕÿÃýÈÿ³ ÿlÈú¯Ýÿý¿YÈë¼\é{³_õ7ÛÍ/Iõûöó°òÑáù÷²<þuü9'+|Àþ_ö°¬Iú×1Fôÿa¡ þÏÛÿcXüOïÿúÿAüëC?ßuííð
- >ÿìÿ5ÖÿY8{þWZ¡\ý?[ÿ¶íì¾½ën·¯£|þï=ôÏæÿ²¡è¶Ù]Õü)çíñüÏô/²þÏþIóýÿx8ÿ§ `þ/ýÏ»Ý*ÍúÓãÿ¦ïÝà<PyþÇÚôeäxKügu?àåó?ç°ÿÿɦ@ÿGûá×êZåü¿2Èÿ³PÿÇíJÎQ>þ£¨ñ/hÿ@êÿ Ñÿ
¼ÿú?È
ªÿöþ
-þ/ï
-UÿíHý4üß, ÿl¨ú/hÿ@Yÿ5ØÿåªÿöþÚ£þô
-Uÿí(ú÷þO4v
-9ÿ?¼ýÁÿ~Eþ
§Àÿ%ªþÚ?Pú?hÿyýMÿeÅà$ÿÿjüÇõ¸õ
þ¿,h¸?DCÕuÿôÏ÷dCÕÿ¨þç?«5ô϶oqUÿµýèÿÍÆÙPõ_ÝÿÿðȪÿqýûxÿ7ØÿC6äümÿÿY8ó ÿ§8¨ú×ÿñrþïµÿ
- at ECÓ¿®ïÿðp@íþèÿÅCn»\¨ú¯îÿ@ýþɪÿêý?°þÃúȪÿêý?Ðÿÿ²¡ê¿ºÿë¿,Àÿ!ªþ«û?°þÃü²!çÿkû?ÿcþÙPõ_½ÿúÿ°×ÿ y¹Öÿ²óÏaþýtû¿±Pÿçý?KÏ1,þ§÷öÿaÿ~¾ëÚÛá;ÀÏÿ]4ÿ³ù¿l(úöþlÛÙ}{wu/øòü÷Ð?ØÿS6ýö¿¢ùSÊõouÀó?пlÈú<û'Íÿúóp6ÿGÿoqèÞíViÖÿ7}¿¾xyþÇZüoÿló°î£|þçFýÿɦ@ÿÇõ_Â9×Vùãÿ¸ÿGÉ9ÊÇÿâÏ5þµë¿
-ê?XÈû¿ þ[.Tý×®ÿöÈÿ°|l¨ú¯]ÿmPÿÅê¿eCÕíúoôÿæÁBù¢¡ê¿výw@ý'¨ÿ
-UÿãÖ_èßø?YÐØýY4äüåúoüO!ÿK&Tý×®ÿöðÿ°×ÿ y¹Ðô¯êû?<üPã?®ÿÃaÿçoûC4TýW÷@ÿ,àyO6Týêÿ¸xþ³Ú@ÿ,|hû· ¹Põ_½ÿ?ò?,`ü
-UÿÕýð± ÿl¨ú¯Ýÿ?ÀÿÍúÿËÿ¯íÿÀó?gþôÿUÿãú?^Îÿ½Æþ?<Xl (þu}ÿGÿjük÷ÿ@ÿ/rÛ%8@äBÕuÿêXÀôO6TýWïÿõÐÿC6TýWïÿþ,`ü
-UÿÕýXÿeþÙPõ_Ýÿõàÿ
-9ÿ_ÛÿüðȪÿêý?Ðÿ
¼þÉËe°þ§ó(kÚdý àÿ` þÏûcXüOïÿ:äü/â_
Jüûù®koï ;tþå¯ÍûÿEõ?ÎçÿFa=@ý?{¶íì¾½»ºüÐüßAÿéÁ?Íÿ=ôÏ÷eCÑÿaÿ÷+?¥<ÿouÿìÿ+²þÏþçÿJöÿVÈÿ³p6ÿÏu7¸¢Dÿón·J³þôø¿éûåðÀËó?Özôÿeá-ñmÖýsÏÿÃþÏ<`þ'ý× ç¸þT\Ô*çÿCþ
âø?îÿQròñßø³@íúoÔñ÷Aý·\¨ú¯^ÿü/Xÿ
-UÿÕë¿QÿÁê¿eCÕõúoÔ²`¡|ÑPõ_½þýY@ý·l¨ú·þûBÿ> þÝECÎÿW¨ÿÎþ/åì¡þÓ`þÏÂSàÿ Uÿµë¿ü?,äõ?H^.4ý+ôÿÿA Æ\ÿ»ìÿÿ?îÑPõþÿ?ðȪÿQýÏVè
mßâ ªþÑÿÿÇ ã¿l¨úGÿÿø?dCÕ?úÿÿ ÿ¿lÈùÿZþëþÔ²pæÿ@ÿOqPõ?®ÿãåüßkÿ7
-Mÿº¾ÿ#ÂÿÁ5þÕû ÿËBn»\¨ú¯îÿ@ýþɪÿêý?°þÃúȪÿêþäYÀø/ªþ«û?°þËü²¡ê¿ºÿë?,Àÿ!rþ¿ZÿuXÿÕÈÿ± ÿl¨ú¯Ýÿý¿yÈë¼\ë_{ÊÖ?û?téY
-C*÷ÿ
ÿ£>%ñÞ ´ðÃãïÿÙÿ«£q?¤ø÷ó]×ÞÞ¶`þ¯:ø¿Fþ
³ùÿ$½0IÿÏæm;»oï®m_ÿ;è?(¬ÿ³þÿ²!éÿ°üë?e¨þóøï9®ÿ#ÿÏú?È®ÿ¡³ÿáóÿ_Çç°þÏÃùü?û(ô?ïv«4ëOÿ¾_Þ¼<ÿSÈÿpð¦øÏ6ëþú9Êÿÿ±|lJô\ .?ǰûÿaÖç¢Îþ}èÿû}Êãÿ¸HÁ9ÊÇcÖX Ç¿ üúø^ÎÿÒqÿ9Èû¿ þ[.dýÏÿ£¶Èÿ°ü¯lÈú/( ¿ª}ÿÑþOPÿ-²þ
-ÀËÇk
-ê?XÿC6dý_׿}¡ÿ`ú¿±úoÙõ_P NÐpð² ±û³hèùÿáàWõáÿò:"ÿÇÂSàÿ Yÿà×ÇÿRÿÆÂÿÃB^ÿäåBÔ¿ªîÿ@ý7äøêÿpë?¨ÿeAÃý!²þkû? àÿ
-Yÿcú?.ÿ¬QÐ?Ú¾Å- at .dý×ö ÿÃÆÙõ_ÙÿaáÿbþÙõ?ªÿãåø
ÿ¬÷Êÿßÿqèÿeë¿xþçáÜÿþÒ ëTÿÇËù¿7þo,6ü
-QÿººÿÃÂÿÁ9þµû ÿËBn»\Èú¯íÿ@ýþɬÿÚý?°þÃúȬÿÚþôÿcã¿lÈú¯íÿÀú/ðȬÿÊþôÿáþÙÐóÿüVûàùø?dCÖíþèÿÃB^ÿäå2\ÿE3û?t*ïÿªðpPÿçý?Ï1<þO÷Bü9 Å¿ïºövð°Cçÿ'ûÿEÌÿy8ÿç LDAÒÿ³÷gÛÎîÛ»k{Áçÿ¼þy@ÿÙôØÿýuÍR®õ?&ï
-]ÿCgÿ¤ù¿óÐ?çùôÿFþçÝnfýéñÓ÷ËÁ[ç¬3Øÿ
7ŶyX÷×ÏQ>ÿs.ÂÿÁæ²)Ñÿqý·üÃîÿYõÁEýén qÿç <þû£|ü7Vaýrük×£ÿyÿÔË
¬ÿÊõßùÐÿW6dý×®ÿÿÔˬÿÚõßèÿÂü²!ë¿vý7ú¿±úoÙõ?jý÷
þöÿàAc÷gÑÐóÿã×ø¿u@þ
§Àÿ%²þk×ÃÿÃB^ÿäåBÔ¿ªìÿ0õß,ã?ªÿÃ]¬ÿôÿdAÃý!²þkû? àÿ
-Yÿcú?.ÿl:úçàCÛ·¸È
¬ÿÚþäXÀø/²þkû?àÿbþÙõ_¹ÿ?úÿòõ^ÙÐóÿýxþgáÌÿþâ ëTÿÇËù¿7þo,6
-QÿEüþÈñ¯Ýÿù_rÛ%8@äBÖmÿêXÀôO6dý×îÿõÐÿC6dý×ö ÿÿeCÖmÿÖYÿC6dý×ö`ý¬÷Êÿ¯ìÿ@þø?dCÖåþèÿÍC^ÿäå2\ÿE-?ÎìÿÐ1ZþU¾
-ÀÿÁ@Iü÷ÿ,<Çàø
îÿ!ïÿ
-öÿaÿ~¾ëÚÛÁ;ÀÍÿsü]Äþï<ÏÿÂd@$ý?{¶íì¾½»¶|Yþ/ëß{è¬ÿɤÿÃþï¯kþrý[cñüÏöÿ
-]ÿCgÿ¤ù¿óÐ?góÀý@Eúw»Uõ§ÇÿMß/o^ÿ±Î ÿÇÂâ?Û<¬ûëç(ÿ9ú/0ÿMþë¿åçvÿϪ.jóÿé¸ÿsPÿÇý?
-ÎQ>þ«Èñ¯Vÿõ_¨ÿ`!ïÿúo¹õ_þ;ë¿ÿaýeCÖµúïÇñõ_, þ[6dýW«ÿÇúoô`ÁBù¢!ë¿Zýw8Ö£þÔˬÿQë¿/ô,ü,hìþ,zþ¿Výw8Ö#ÿÇÂSàÿ YÿÕê¿ú7þòú$/¢þÁ þë¿àÿ¨9þ£ú?ÜÅúöâAÃý!²þkû? àÿ
-Yÿcú?.ÿl:úçàCÛ·¸È
¬ÿÚþäXÀø/²þkû?àÿbþÙõ_ÿÿ£ÿþoÐï[6ôüeÿÿY8ó ÿ§8ÈúÕÿñrþïÿ ¢!ê_W÷Dø?8 Ç¿vÿäYÈmà Yÿµý¨ÿaÓ?Ùõ_»ÿÖX@ÿÙõ_Ûÿþ,`ü
-YÿµýXÿeþÙõ_Ûÿõàÿ
-=ÿ_ÙÿüðȬÿÊý?Ðÿ¼þÉËeþ÷Iø·7«ÙÍvóKý¾ý<lçÇ#üwÈÿ³ý¿d3xü¿É
-æÿÒ1*û.£ÿø?oÿ[záñºÿëàÐÿJüûù®koo =ôù?ø¨|ôyÿÏèàÿcáìù^¢ÿgëß¶Ý·wÝÍâöÕsÏÿ½GýØÿC6ýÏ6»«?e¨þãPØÿô
-Yÿgÿõ?çê¿Y8ÿ'p?EþçÝnfýéñÓ÷Ënp¨<ÿc·ÈÿpðøÏ6ë~À9ÊÿÓð°|l
-ô´Î1ìþU\ÔùùO+ü?ÅñÜþ§äåãñgÿö¤þþ/òþOèÿ ªþÚ?Pú?(üÈÿʪÿö¤þ¨ÿæýdCÕAûÿÛxø¿XÿC6Tý´ ôÐõ, ÿl¨ú/hÿ@ѿ𲠱û»hÈùÿáíHý4ò,<
þ/Põ_ÐþÒÿA{øXÈë¼\húWõý¨ÿfÿqýîÒÿú4Ü¢¡ê¿ºÿúgþÙPõ?ªÿãâùÏjý³ð¡í[ÜäBÕmÿCþÿ²¡ê¿ºÿþ/àÿ
-Uÿãú?.öÿðþo°Þ+rþ¿ÿ#:£µ·GÿÿY8÷ ÿ§4¨ú×ÿñrþïµÿ
- at ECÓ¿®ïÿððp@õþÈÿ²Û.Á"ªþ«û?Pÿ没ê¿zÿ¬ÿ°þ²¡ê¿ºÿýÿXÀø/ªþ«û?°þËü²¡ê¿ºÿë?,Àÿ!rþ¿ÿã°ÿ>ú?ðüÏü²¡ê¿zÿôÿa!¯ÿAòr¹®ÿõæ´ëϯó<îÿ£â»tÉÏÿðÔg`üóʾ0,þ§÷ÿ4DÄ¢ø§i@ ãÿ¯ÄßêâøºÑÚ¥ù¿ùiô÷Ä¿(þpJüCü9(?åLDü9(zèkÓÇ5dÏ×SrÝ+ÏÚ½|þ3ÊÂÿÅBéÍ|Ñ7iÎm§ÎûþðW«Å~ߨãï?mvÝânþ¸X÷ÝnÙµ»Ã¿1)táýr}ù
-9ù&¼[ðñ/Rú_LéýßÎAºÿ{Üÿ9(¿våç Äßhÿ,ÅÕëOÒs\ÿu÷ñ_ñ
÷9ÑÍ»Õß6}»üCÑ!Fã|hîÿxrÀv]wüz£Ó`&çü¼ïnhlÉÙÿ:ë¾AúÚX£ÜÉÿ±nOÑSï¼Q'|Xìú¯ÏßàxÐÙü»Eß}lg÷§~?-ݵwÝþxN¬:;ÅÛíö×"á&Swú&ÿu½Y|¦ZNÈ_ü[ûqùë.ð?ýõæçuºìÒ1ø7ùÇÍÃzÖÿgüuÙ~<ý²qÚ³þ»-ÛÅêézêâÙOñ××»ã!ßǯ䷾ +Åã?á¤ùÅøÏAiü Ó?ZüâÏA±þ `ÒüÏ,Åÿv>¬45)<ǵüߥÿ[Çþ?,hdçDS|ÿ'$ I÷ÿ,ÆrO&ÍÿâÏAiü¯½«ãÿÅþÚyÔ²ðÿûSÓQêB8åþïpÿg¡4þSÂ9HñGþ
âù?Á Fÿø?Y(?aôüÿ'Åñ'LÊIñÇý
ÒøGÂ9Hã¿Fü à-ü¶Õ§« À
\ No newline at end of file
Deleted: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t.tar.gz.output
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t.tar.gz.output 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t.tar.gz.output 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,57 +0,0 @@
-Machine (phys=0)
- Socket #0 (phys=0)
- L3Cache #0 (4096KB)
- L2Cache #0 (1024KB)
- L1Cache #0 (16KB)
- Core #0 (phys=0)
- PU #0 (phys=0)
- PU #1 (phys=8)
- L2Cache #1 (1024KB)
- L1Cache #1 (16KB)
- Core #1 (phys=1)
- PU #2 (phys=4)
- PU #3 (phys=12)
- Socket #1 (phys=1)
- L3Cache #1 (4096KB)
- L2Cache #2 (1024KB)
- L1Cache #2 (16KB)
- Core #2 (phys=0)
- PU #4 (phys=1)
- PU #5 (phys=9)
- L2Cache #3 (1024KB)
- L1Cache #3 (16KB)
- Core #3 (phys=1)
- PU #6 (phys=5)
- PU #7 (phys=13)
- Socket #2 (phys=2)
- L3Cache #2 (4096KB)
- L2Cache #4 (1024KB)
- L1Cache #4 (16KB)
- Core #4 (phys=0)
- PU #8 (phys=2)
- PU #9 (phys=10)
- L2Cache #5 (1024KB)
- L1Cache #5 (16KB)
- Core #5 (phys=1)
- PU #10 (phys=6)
- PU #11 (phys=14)
- Socket #3 (phys=3)
- L3Cache #3 (4096KB)
- L2Cache #6 (1024KB)
- L1Cache #6 (16KB)
- Core #6 (phys=0)
- PU #12 (phys=3)
- PU #13 (phys=11)
- L2Cache #7 (1024KB)
- L1Cache #7 (16KB)
- Core #7 (phys=1)
- PU #14 (phys=7)
- PU #15 (phys=15)
-depth 0: 1 Machine (type #1)
- depth 1: 4 Sockets (type #3)
- depth 2: 4 Caches (type #4)
- depth 3: 8 Caches (type #4)
- depth 4: 8 Caches (type #4)
- depth 5: 8 Cores (type #5)
- depth 6: 16 PUs (type #6)
-Topology not from this system
Added: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t.xml.options
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t.xml.options (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t.xml.options 2010-11-24 09:21:55 UTC (rev 7494)
@@ -0,0 +1 @@
+-v --of xml
Copied: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t.xml.output (from rev 7493, mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t.xml.tar.gz.output)
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t.xml.output (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t.xml.output 2010-11-24 09:21:55 UTC (rev 7494)
@@ -0,0 +1,87 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE topology SYSTEM "hwloc.dtd">
+<topology>
+ <object type="Machine" os_level="-1" os_index="0" cpuset="0x0000ffff" complete_cpuset="0x0000ffff" online_cpuset="0x0000ffff" allowed_cpuset="0x0000ffff">
+ <info name="Backend" value="Linux"/>
+ <object type="Socket" os_level="-1" os_index="0" cpuset="0x00001111" complete_cpuset="0x00001111" online_cpuset="0x00001111" allowed_cpuset="0x00001111">
+ <object type="Cache" os_level="-1" cpuset="0x00001111" complete_cpuset="0x00001111" online_cpuset="0x00001111" allowed_cpuset="0x00001111" cache_size="4194304" depth="3" cache_linesize="64">
+ <object type="Cache" os_level="-1" cpuset="0x00000101" complete_cpuset="0x00000101" online_cpuset="0x00000101" allowed_cpuset="0x00000101" cache_size="1048576" depth="2" cache_linesize="64">
+ <object type="Cache" os_level="-1" cpuset="0x00000101" complete_cpuset="0x00000101" online_cpuset="0x00000101" allowed_cpuset="0x00000101" cache_size="16384" depth="1" cache_linesize="64">
+ <object type="Core" os_level="-1" os_index="0" cpuset="0x00000101" complete_cpuset="0x00000101" online_cpuset="0x00000101" allowed_cpuset="0x00000101">
+ <object type="PU" os_level="-1" os_index="0" cpuset="0x00000001" complete_cpuset="0x00000001" online_cpuset="0x00000001" allowed_cpuset="0x00000001"/>
+ <object type="PU" os_level="-1" os_index="8" cpuset="0x00000100" complete_cpuset="0x00000100" online_cpuset="0x00000100" allowed_cpuset="0x00000100"/>
+ </object>
+ </object>
+ </object>
+ <object type="Cache" os_level="-1" cpuset="0x00001010" complete_cpuset="0x00001010" online_cpuset="0x00001010" allowed_cpuset="0x00001010" cache_size="1048576" depth="2" cache_linesize="64">
+ <object type="Cache" os_level="-1" cpuset="0x00001010" complete_cpuset="0x00001010" online_cpuset="0x00001010" allowed_cpuset="0x00001010" cache_size="16384" depth="1" cache_linesize="64">
+ <object type="Core" os_level="-1" os_index="1" cpuset="0x00001010" complete_cpuset="0x00001010" online_cpuset="0x00001010" allowed_cpuset="0x00001010">
+ <object type="PU" os_level="-1" os_index="4" cpuset="0x00000010" complete_cpuset="0x00000010" online_cpuset="0x00000010" allowed_cpuset="0x00000010"/>
+ <object type="PU" os_level="-1" os_index="12" cpuset="0x00001000" complete_cpuset="0x00001000" online_cpuset="0x00001000" allowed_cpuset="0x00001000"/>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object type="Socket" os_level="-1" os_index="1" cpuset="0x00002222" complete_cpuset="0x00002222" online_cpuset="0x00002222" allowed_cpuset="0x00002222">
+ <object type="Cache" os_level="-1" cpuset="0x00002222" complete_cpuset="0x00002222" online_cpuset="0x00002222" allowed_cpuset="0x00002222" cache_size="4194304" depth="3" cache_linesize="64">
+ <object type="Cache" os_level="-1" cpuset="0x00000202" complete_cpuset="0x00000202" online_cpuset="0x00000202" allowed_cpuset="0x00000202" cache_size="1048576" depth="2" cache_linesize="64">
+ <object type="Cache" os_level="-1" cpuset="0x00000202" complete_cpuset="0x00000202" online_cpuset="0x00000202" allowed_cpuset="0x00000202" cache_size="16384" depth="1" cache_linesize="64">
+ <object type="Core" os_level="-1" os_index="0" cpuset="0x00000202" complete_cpuset="0x00000202" online_cpuset="0x00000202" allowed_cpuset="0x00000202">
+ <object type="PU" os_level="-1" os_index="1" cpuset="0x00000002" complete_cpuset="0x00000002" online_cpuset="0x00000002" allowed_cpuset="0x00000002"/>
+ <object type="PU" os_level="-1" os_index="9" cpuset="0x00000200" complete_cpuset="0x00000200" online_cpuset="0x00000200" allowed_cpuset="0x00000200"/>
+ </object>
+ </object>
+ </object>
+ <object type="Cache" os_level="-1" cpuset="0x00002020" complete_cpuset="0x00002020" online_cpuset="0x00002020" allowed_cpuset="0x00002020" cache_size="1048576" depth="2" cache_linesize="64">
+ <object type="Cache" os_level="-1" cpuset="0x00002020" complete_cpuset="0x00002020" online_cpuset="0x00002020" allowed_cpuset="0x00002020" cache_size="16384" depth="1" cache_linesize="64">
+ <object type="Core" os_level="-1" os_index="1" cpuset="0x00002020" complete_cpuset="0x00002020" online_cpuset="0x00002020" allowed_cpuset="0x00002020">
+ <object type="PU" os_level="-1" os_index="5" cpuset="0x00000020" complete_cpuset="0x00000020" online_cpuset="0x00000020" allowed_cpuset="0x00000020"/>
+ <object type="PU" os_level="-1" os_index="13" cpuset="0x00002000" complete_cpuset="0x00002000" online_cpuset="0x00002000" allowed_cpuset="0x00002000"/>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object type="Socket" os_level="-1" os_index="2" cpuset="0x00004444" complete_cpuset="0x00004444" online_cpuset="0x00004444" allowed_cpuset="0x00004444">
+ <object type="Cache" os_level="-1" cpuset="0x00004444" complete_cpuset="0x00004444" online_cpuset="0x00004444" allowed_cpuset="0x00004444" cache_size="4194304" depth="3" cache_linesize="64">
+ <object type="Cache" os_level="-1" cpuset="0x00000404" complete_cpuset="0x00000404" online_cpuset="0x00000404" allowed_cpuset="0x00000404" cache_size="1048576" depth="2" cache_linesize="64">
+ <object type="Cache" os_level="-1" cpuset="0x00000404" complete_cpuset="0x00000404" online_cpuset="0x00000404" allowed_cpuset="0x00000404" cache_size="16384" depth="1" cache_linesize="64">
+ <object type="Core" os_level="-1" os_index="0" cpuset="0x00000404" complete_cpuset="0x00000404" online_cpuset="0x00000404" allowed_cpuset="0x00000404">
+ <object type="PU" os_level="-1" os_index="2" cpuset="0x00000004" complete_cpuset="0x00000004" online_cpuset="0x00000004" allowed_cpuset="0x00000004"/>
+ <object type="PU" os_level="-1" os_index="10" cpuset="0x00000400" complete_cpuset="0x00000400" online_cpuset="0x00000400" allowed_cpuset="0x00000400"/>
+ </object>
+ </object>
+ </object>
+ <object type="Cache" os_level="-1" cpuset="0x00004040" complete_cpuset="0x00004040" online_cpuset="0x00004040" allowed_cpuset="0x00004040" cache_size="1048576" depth="2" cache_linesize="64">
+ <object type="Cache" os_level="-1" cpuset="0x00004040" complete_cpuset="0x00004040" online_cpuset="0x00004040" allowed_cpuset="0x00004040" cache_size="16384" depth="1" cache_linesize="64">
+ <object type="Core" os_level="-1" os_index="1" cpuset="0x00004040" complete_cpuset="0x00004040" online_cpuset="0x00004040" allowed_cpuset="0x00004040">
+ <object type="PU" os_level="-1" os_index="6" cpuset="0x00000040" complete_cpuset="0x00000040" online_cpuset="0x00000040" allowed_cpuset="0x00000040"/>
+ <object type="PU" os_level="-1" os_index="14" cpuset="0x00004000" complete_cpuset="0x00004000" online_cpuset="0x00004000" allowed_cpuset="0x00004000"/>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object type="Socket" os_level="-1" os_index="3" cpuset="0x00008888" complete_cpuset="0x00008888" online_cpuset="0x00008888" allowed_cpuset="0x00008888">
+ <object type="Cache" os_level="-1" cpuset="0x00008888" complete_cpuset="0x00008888" online_cpuset="0x00008888" allowed_cpuset="0x00008888" cache_size="4194304" depth="3" cache_linesize="64">
+ <object type="Cache" os_level="-1" cpuset="0x00000808" complete_cpuset="0x00000808" online_cpuset="0x00000808" allowed_cpuset="0x00000808" cache_size="1048576" depth="2" cache_linesize="64">
+ <object type="Cache" os_level="-1" cpuset="0x00000808" complete_cpuset="0x00000808" online_cpuset="0x00000808" allowed_cpuset="0x00000808" cache_size="16384" depth="1" cache_linesize="64">
+ <object type="Core" os_level="-1" os_index="0" cpuset="0x00000808" complete_cpuset="0x00000808" online_cpuset="0x00000808" allowed_cpuset="0x00000808">
+ <object type="PU" os_level="-1" os_index="3" cpuset="0x00000008" complete_cpuset="0x00000008" online_cpuset="0x00000008" allowed_cpuset="0x00000008"/>
+ <object type="PU" os_level="-1" os_index="11" cpuset="0x00000800" complete_cpuset="0x00000800" online_cpuset="0x00000800" allowed_cpuset="0x00000800"/>
+ </object>
+ </object>
+ </object>
+ <object type="Cache" os_level="-1" cpuset="0x00008080" complete_cpuset="0x00008080" online_cpuset="0x00008080" allowed_cpuset="0x00008080" cache_size="1048576" depth="2" cache_linesize="64">
+ <object type="Cache" os_level="-1" cpuset="0x00008080" complete_cpuset="0x00008080" online_cpuset="0x00008080" allowed_cpuset="0x00008080" cache_size="16384" depth="1" cache_linesize="64">
+ <object type="Core" os_level="-1" os_index="1" cpuset="0x00008080" complete_cpuset="0x00008080" online_cpuset="0x00008080" allowed_cpuset="0x00008080">
+ <object type="PU" os_level="-1" os_index="7" cpuset="0x00000080" complete_cpuset="0x00000080" online_cpuset="0x00000080" allowed_cpuset="0x00000080"/>
+ <object type="PU" os_level="-1" os_index="15" cpuset="0x00008000" complete_cpuset="0x00008000" online_cpuset="0x00008000" allowed_cpuset="0x00008000"/>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+</topology>
Added: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t.xml.source
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t.xml.source (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t.xml.source 2010-11-24 09:21:55 UTC (rev 7494)
@@ -0,0 +1 @@
+16em64t-4s2c2t.tar.bz2
Deleted: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t.xml.tar.gz
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t.xml.tar.gz 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t.xml.tar.gz 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1 +0,0 @@
-link 16em64t-4s2c2t.tar.gz
\ No newline at end of file
Deleted: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t.xml.tar.gz.options
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t.xml.tar.gz.options 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t.xml.tar.gz.options 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1 +0,0 @@
--v -.xml
Deleted: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t.xml.tar.gz.output
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t.xml.tar.gz.output 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t.xml.tar.gz.output 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,86 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE topology SYSTEM "hwloc.dtd">
-<topology>
- <object type="Machine" os_level="-1" os_index="0" cpuset="0x0000ffff" complete_cpuset="0x0000ffff" online_cpuset="0x0000ffff" allowed_cpuset="0x0000ffff">
- <object type="Socket" os_level="-1" os_index="0" cpuset="0x00001111" complete_cpuset="0x00001111" online_cpuset="0x00001111" allowed_cpuset="0x00001111">
- <object type="Cache" os_level="-1" cpuset="0x00001111" complete_cpuset="0x00001111" online_cpuset="0x00001111" allowed_cpuset="0x00001111" cache_size="4194304" depth="3">
- <object type="Cache" os_level="-1" cpuset="0x00000101" complete_cpuset="0x00000101" online_cpuset="0x00000101" allowed_cpuset="0x00000101" cache_size="1048576" depth="2">
- <object type="Cache" os_level="-1" cpuset="0x00000101" complete_cpuset="0x00000101" online_cpuset="0x00000101" allowed_cpuset="0x00000101" cache_size="16384" depth="1">
- <object type="Core" os_level="-1" os_index="0" cpuset="0x00000101" complete_cpuset="0x00000101" online_cpuset="0x00000101" allowed_cpuset="0x00000101">
- <object type="PU" os_level="-1" os_index="0" cpuset="0x00000001" complete_cpuset="0x00000001" online_cpuset="0x00000001" allowed_cpuset="0x00000001"/>
- <object type="PU" os_level="-1" os_index="8" cpuset="0x00000100" complete_cpuset="0x00000100" online_cpuset="0x00000100" allowed_cpuset="0x00000100"/>
- </object>
- </object>
- </object>
- <object type="Cache" os_level="-1" cpuset="0x00001010" complete_cpuset="0x00001010" online_cpuset="0x00001010" allowed_cpuset="0x00001010" cache_size="1048576" depth="2">
- <object type="Cache" os_level="-1" cpuset="0x00001010" complete_cpuset="0x00001010" online_cpuset="0x00001010" allowed_cpuset="0x00001010" cache_size="16384" depth="1">
- <object type="Core" os_level="-1" os_index="1" cpuset="0x00001010" complete_cpuset="0x00001010" online_cpuset="0x00001010" allowed_cpuset="0x00001010">
- <object type="PU" os_level="-1" os_index="4" cpuset="0x00000010" complete_cpuset="0x00000010" online_cpuset="0x00000010" allowed_cpuset="0x00000010"/>
- <object type="PU" os_level="-1" os_index="12" cpuset="0x00001000" complete_cpuset="0x00001000" online_cpuset="0x00001000" allowed_cpuset="0x00001000"/>
- </object>
- </object>
- </object>
- </object>
- </object>
- <object type="Socket" os_level="-1" os_index="1" cpuset="0x00002222" complete_cpuset="0x00002222" online_cpuset="0x00002222" allowed_cpuset="0x00002222">
- <object type="Cache" os_level="-1" cpuset="0x00002222" complete_cpuset="0x00002222" online_cpuset="0x00002222" allowed_cpuset="0x00002222" cache_size="4194304" depth="3">
- <object type="Cache" os_level="-1" cpuset="0x00000202" complete_cpuset="0x00000202" online_cpuset="0x00000202" allowed_cpuset="0x00000202" cache_size="1048576" depth="2">
- <object type="Cache" os_level="-1" cpuset="0x00000202" complete_cpuset="0x00000202" online_cpuset="0x00000202" allowed_cpuset="0x00000202" cache_size="16384" depth="1">
- <object type="Core" os_level="-1" os_index="0" cpuset="0x00000202" complete_cpuset="0x00000202" online_cpuset="0x00000202" allowed_cpuset="0x00000202">
- <object type="PU" os_level="-1" os_index="1" cpuset="0x00000002" complete_cpuset="0x00000002" online_cpuset="0x00000002" allowed_cpuset="0x00000002"/>
- <object type="PU" os_level="-1" os_index="9" cpuset="0x00000200" complete_cpuset="0x00000200" online_cpuset="0x00000200" allowed_cpuset="0x00000200"/>
- </object>
- </object>
- </object>
- <object type="Cache" os_level="-1" cpuset="0x00002020" complete_cpuset="0x00002020" online_cpuset="0x00002020" allowed_cpuset="0x00002020" cache_size="1048576" depth="2">
- <object type="Cache" os_level="-1" cpuset="0x00002020" complete_cpuset="0x00002020" online_cpuset="0x00002020" allowed_cpuset="0x00002020" cache_size="16384" depth="1">
- <object type="Core" os_level="-1" os_index="1" cpuset="0x00002020" complete_cpuset="0x00002020" online_cpuset="0x00002020" allowed_cpuset="0x00002020">
- <object type="PU" os_level="-1" os_index="5" cpuset="0x00000020" complete_cpuset="0x00000020" online_cpuset="0x00000020" allowed_cpuset="0x00000020"/>
- <object type="PU" os_level="-1" os_index="13" cpuset="0x00002000" complete_cpuset="0x00002000" online_cpuset="0x00002000" allowed_cpuset="0x00002000"/>
- </object>
- </object>
- </object>
- </object>
- </object>
- <object type="Socket" os_level="-1" os_index="2" cpuset="0x00004444" complete_cpuset="0x00004444" online_cpuset="0x00004444" allowed_cpuset="0x00004444">
- <object type="Cache" os_level="-1" cpuset="0x00004444" complete_cpuset="0x00004444" online_cpuset="0x00004444" allowed_cpuset="0x00004444" cache_size="4194304" depth="3">
- <object type="Cache" os_level="-1" cpuset="0x00000404" complete_cpuset="0x00000404" online_cpuset="0x00000404" allowed_cpuset="0x00000404" cache_size="1048576" depth="2">
- <object type="Cache" os_level="-1" cpuset="0x00000404" complete_cpuset="0x00000404" online_cpuset="0x00000404" allowed_cpuset="0x00000404" cache_size="16384" depth="1">
- <object type="Core" os_level="-1" os_index="0" cpuset="0x00000404" complete_cpuset="0x00000404" online_cpuset="0x00000404" allowed_cpuset="0x00000404">
- <object type="PU" os_level="-1" os_index="2" cpuset="0x00000004" complete_cpuset="0x00000004" online_cpuset="0x00000004" allowed_cpuset="0x00000004"/>
- <object type="PU" os_level="-1" os_index="10" cpuset="0x00000400" complete_cpuset="0x00000400" online_cpuset="0x00000400" allowed_cpuset="0x00000400"/>
- </object>
- </object>
- </object>
- <object type="Cache" os_level="-1" cpuset="0x00004040" complete_cpuset="0x00004040" online_cpuset="0x00004040" allowed_cpuset="0x00004040" cache_size="1048576" depth="2">
- <object type="Cache" os_level="-1" cpuset="0x00004040" complete_cpuset="0x00004040" online_cpuset="0x00004040" allowed_cpuset="0x00004040" cache_size="16384" depth="1">
- <object type="Core" os_level="-1" os_index="1" cpuset="0x00004040" complete_cpuset="0x00004040" online_cpuset="0x00004040" allowed_cpuset="0x00004040">
- <object type="PU" os_level="-1" os_index="6" cpuset="0x00000040" complete_cpuset="0x00000040" online_cpuset="0x00000040" allowed_cpuset="0x00000040"/>
- <object type="PU" os_level="-1" os_index="14" cpuset="0x00004000" complete_cpuset="0x00004000" online_cpuset="0x00004000" allowed_cpuset="0x00004000"/>
- </object>
- </object>
- </object>
- </object>
- </object>
- <object type="Socket" os_level="-1" os_index="3" cpuset="0x00008888" complete_cpuset="0x00008888" online_cpuset="0x00008888" allowed_cpuset="0x00008888">
- <object type="Cache" os_level="-1" cpuset="0x00008888" complete_cpuset="0x00008888" online_cpuset="0x00008888" allowed_cpuset="0x00008888" cache_size="4194304" depth="3">
- <object type="Cache" os_level="-1" cpuset="0x00000808" complete_cpuset="0x00000808" online_cpuset="0x00000808" allowed_cpuset="0x00000808" cache_size="1048576" depth="2">
- <object type="Cache" os_level="-1" cpuset="0x00000808" complete_cpuset="0x00000808" online_cpuset="0x00000808" allowed_cpuset="0x00000808" cache_size="16384" depth="1">
- <object type="Core" os_level="-1" os_index="0" cpuset="0x00000808" complete_cpuset="0x00000808" online_cpuset="0x00000808" allowed_cpuset="0x00000808">
- <object type="PU" os_level="-1" os_index="3" cpuset="0x00000008" complete_cpuset="0x00000008" online_cpuset="0x00000008" allowed_cpuset="0x00000008"/>
- <object type="PU" os_level="-1" os_index="11" cpuset="0x00000800" complete_cpuset="0x00000800" online_cpuset="0x00000800" allowed_cpuset="0x00000800"/>
- </object>
- </object>
- </object>
- <object type="Cache" os_level="-1" cpuset="0x00008080" complete_cpuset="0x00008080" online_cpuset="0x00008080" allowed_cpuset="0x00008080" cache_size="1048576" depth="2">
- <object type="Cache" os_level="-1" cpuset="0x00008080" complete_cpuset="0x00008080" online_cpuset="0x00008080" allowed_cpuset="0x00008080" cache_size="16384" depth="1">
- <object type="Core" os_level="-1" os_index="1" cpuset="0x00008080" complete_cpuset="0x00008080" online_cpuset="0x00008080" allowed_cpuset="0x00008080">
- <object type="PU" os_level="-1" os_index="7" cpuset="0x00000080" complete_cpuset="0x00000080" online_cpuset="0x00000080" allowed_cpuset="0x00000080"/>
- <object type="PU" os_level="-1" os_index="15" cpuset="0x00008000" complete_cpuset="0x00008000" online_cpuset="0x00008000" allowed_cpuset="0x00008000"/>
- </object>
- </object>
- </object>
- </object>
- </object>
- </object>
-</topology>
Copied: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t_merge.options (from rev 7493, mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t_merge.tar.gz.options)
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t_merge.options (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t_merge.options 2010-11-24 09:21:55 UTC (rev 7494)
@@ -0,0 +1 @@
+- -v --merge
Copied: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t_merge.output (from rev 7493, mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t_merge.tar.gz.output)
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t_merge.output (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t_merge.output 2010-11-24 09:21:55 UTC (rev 7494)
@@ -0,0 +1,34 @@
+Machine (phys=0 Backend=Linux)
+ L3Cache #0 (4096KB line=64)
+ Core #0 (phys=0)
+ PU #0 (phys=0)
+ PU #1 (phys=8)
+ Core #1 (phys=1)
+ PU #2 (phys=4)
+ PU #3 (phys=12)
+ L3Cache #1 (4096KB line=64)
+ Core #2 (phys=0)
+ PU #4 (phys=1)
+ PU #5 (phys=9)
+ Core #3 (phys=1)
+ PU #6 (phys=5)
+ PU #7 (phys=13)
+ L3Cache #2 (4096KB line=64)
+ Core #4 (phys=0)
+ PU #8 (phys=2)
+ PU #9 (phys=10)
+ Core #5 (phys=1)
+ PU #10 (phys=6)
+ PU #11 (phys=14)
+ L3Cache #3 (4096KB line=64)
+ Core #6 (phys=0)
+ PU #12 (phys=3)
+ PU #13 (phys=11)
+ Core #7 (phys=1)
+ PU #14 (phys=7)
+ PU #15 (phys=15)
+depth 0: 1 Machine (type #1)
+ depth 1: 4 Caches (type #4)
+ depth 2: 8 Cores (type #5)
+ depth 3: 16 PUs (type #6)
+Topology not from this system
Added: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t_merge.source
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t_merge.source (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t_merge.source 2010-11-24 09:21:55 UTC (rev 7494)
@@ -0,0 +1 @@
+16em64t-4s2c2t.tar.bz2
Deleted: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t_merge.tar.gz
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t_merge.tar.gz 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t_merge.tar.gz 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1 +0,0 @@
-link 16em64t-4s2c2t.tar.gz
\ No newline at end of file
Deleted: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t_merge.tar.gz.options
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t_merge.tar.gz.options 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t_merge.tar.gz.options 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1 +0,0 @@
-- -v --merge
Deleted: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t_merge.tar.gz.output
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t_merge.tar.gz.output 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t_merge.tar.gz.output 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,34 +0,0 @@
-Machine (phys=0)
- L3Cache #0 (4096KB)
- Core #0 (phys=0)
- PU #0 (phys=0)
- PU #1 (phys=8)
- Core #1 (phys=1)
- PU #2 (phys=4)
- PU #3 (phys=12)
- L3Cache #1 (4096KB)
- Core #2 (phys=0)
- PU #4 (phys=1)
- PU #5 (phys=9)
- Core #3 (phys=1)
- PU #6 (phys=5)
- PU #7 (phys=13)
- L3Cache #2 (4096KB)
- Core #4 (phys=0)
- PU #8 (phys=2)
- PU #9 (phys=10)
- Core #5 (phys=1)
- PU #10 (phys=6)
- PU #11 (phys=14)
- L3Cache #3 (4096KB)
- Core #6 (phys=0)
- PU #12 (phys=3)
- PU #13 (phys=11)
- Core #7 (phys=1)
- PU #14 (phys=7)
- PU #15 (phys=15)
-depth 0: 1 Machine (type #1)
- depth 1: 4 Caches (type #4)
- depth 2: 8 Cores (type #5)
- depth 3: 16 PUs (type #6)
-Topology not from this system
Copied: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t_ncaches.options (from rev 7493, mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t_ncaches.tar.gz.options)
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t_ncaches.options (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t_ncaches.options 2010-11-24 09:21:55 UTC (rev 7494)
@@ -0,0 +1 @@
+- -v --no-caches
Copied: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t_ncaches.output (from rev 7493, mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t_ncaches.tar.gz.output)
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t_ncaches.output (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t_ncaches.output 2010-11-24 09:21:55 UTC (rev 7494)
@@ -0,0 +1,34 @@
+Machine (phys=0 Backend=Linux)
+ Socket #0 (phys=0)
+ Core #0 (phys=0)
+ PU #0 (phys=0)
+ PU #1 (phys=8)
+ Core #1 (phys=1)
+ PU #2 (phys=4)
+ PU #3 (phys=12)
+ Socket #1 (phys=1)
+ Core #2 (phys=0)
+ PU #4 (phys=1)
+ PU #5 (phys=9)
+ Core #3 (phys=1)
+ PU #6 (phys=5)
+ PU #7 (phys=13)
+ Socket #2 (phys=2)
+ Core #4 (phys=0)
+ PU #8 (phys=2)
+ PU #9 (phys=10)
+ Core #5 (phys=1)
+ PU #10 (phys=6)
+ PU #11 (phys=14)
+ Socket #3 (phys=3)
+ Core #6 (phys=0)
+ PU #12 (phys=3)
+ PU #13 (phys=11)
+ Core #7 (phys=1)
+ PU #14 (phys=7)
+ PU #15 (phys=15)
+depth 0: 1 Machine (type #1)
+ depth 1: 4 Sockets (type #3)
+ depth 2: 8 Cores (type #5)
+ depth 3: 16 PUs (type #6)
+Topology not from this system
Added: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t_ncaches.source
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t_ncaches.source (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t_ncaches.source 2010-11-24 09:21:55 UTC (rev 7494)
@@ -0,0 +1 @@
+16em64t-4s2c2t.tar.bz2
Deleted: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t_ncaches.tar.gz
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t_ncaches.tar.gz 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t_ncaches.tar.gz 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1 +0,0 @@
-link 16em64t-4s2c2t.tar.gz
\ No newline at end of file
Deleted: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t_ncaches.tar.gz.options
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t_ncaches.tar.gz.options 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t_ncaches.tar.gz.options 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1 +0,0 @@
-- -v --no-caches
Deleted: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t_ncaches.tar.gz.output
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t_ncaches.tar.gz.output 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16em64t-4s2c2t_ncaches.tar.gz.output 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,34 +0,0 @@
-Machine (phys=0)
- Socket #0 (phys=0)
- Core #0 (phys=0)
- PU #0 (phys=0)
- PU #1 (phys=8)
- Core #1 (phys=1)
- PU #2 (phys=4)
- PU #3 (phys=12)
- Socket #1 (phys=1)
- Core #2 (phys=0)
- PU #4 (phys=1)
- PU #5 (phys=9)
- Core #3 (phys=1)
- PU #6 (phys=5)
- PU #7 (phys=13)
- Socket #2 (phys=2)
- Core #4 (phys=0)
- PU #8 (phys=2)
- PU #9 (phys=10)
- Core #5 (phys=1)
- PU #10 (phys=6)
- PU #11 (phys=14)
- Socket #3 (phys=3)
- Core #6 (phys=0)
- PU #12 (phys=3)
- PU #13 (phys=11)
- Core #7 (phys=1)
- PU #14 (phys=7)
- PU #15 (phys=15)
-depth 0: 1 Machine (type #1)
- depth 1: 4 Sockets (type #3)
- depth 2: 8 Cores (type #5)
- depth 3: 16 PUs (type #6)
-Topology not from this system
Copied: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16ia64-8n2s.output (from rev 7493, mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16ia64-8n2s.tar.gz.output)
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16ia64-8n2s.output (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16ia64-8n2s.output 2010-11-24 09:21:55 UTC (rev 7494)
@@ -0,0 +1,117 @@
+Machine (phys=0 total=48346688KB Backend=Linux)
+ Group0 #0 (total=24182720KB)
+ NUMANode #0 (phys=0 local=6045632KB total=6045632KB)
+ Socket #0 (phys=0)
+ L3Cache #0 (9216KB line=128)
+ L2Cache #0 (256KB line=128)
+ L1Cache #0 (16KB line=64)
+ Core #0 (phys=0)
+ PU #0 (phys=0)
+ Socket #1 (phys=0)
+ L3Cache #1 (9216KB line=128)
+ L2Cache #1 (256KB line=128)
+ L1Cache #1 (16KB line=64)
+ Core #1 (phys=0)
+ PU #1 (phys=1)
+ NUMANode #1 (phys=1 local=6045696KB total=6045696KB)
+ Socket #2 (phys=512)
+ L3Cache #2 (9216KB line=128)
+ L2Cache #2 (256KB line=128)
+ L1Cache #2 (16KB line=64)
+ Core #2 (phys=0)
+ PU #2 (phys=2)
+ Socket #3 (phys=512)
+ L3Cache #3 (9216KB line=128)
+ L2Cache #3 (256KB line=128)
+ L1Cache #3 (16KB line=64)
+ Core #3 (phys=0)
+ PU #3 (phys=3)
+ NUMANode #2 (phys=2 local=6045696KB total=6045696KB)
+ Socket #4 (phys=1024)
+ L3Cache #4 (9216KB line=128)
+ L2Cache #4 (256KB line=128)
+ L1Cache #4 (16KB line=64)
+ Core #4 (phys=0)
+ PU #4 (phys=4)
+ Socket #5 (phys=1024)
+ L3Cache #5 (9216KB line=128)
+ L2Cache #5 (256KB line=128)
+ L1Cache #5 (16KB line=64)
+ Core #5 (phys=0)
+ PU #5 (phys=5)
+ NUMANode #3 (phys=3 local=6045696KB total=6045696KB)
+ Socket #6 (phys=1536)
+ L3Cache #6 (9216KB line=128)
+ L2Cache #6 (256KB line=128)
+ L1Cache #6 (16KB line=64)
+ Core #6 (phys=0)
+ PU #6 (phys=6)
+ Socket #7 (phys=1536)
+ L3Cache #7 (9216KB line=128)
+ L2Cache #7 (256KB line=128)
+ L1Cache #7 (16KB line=64)
+ Core #7 (phys=0)
+ PU #7 (phys=7)
+ Group0 #1 (total=24163968KB)
+ NUMANode #4 (phys=4 local=6045696KB total=6045696KB)
+ Socket #8 (phys=2048)
+ L3Cache #8 (9216KB line=128)
+ L2Cache #8 (256KB line=128)
+ L1Cache #8 (16KB line=64)
+ Core #8 (phys=0)
+ PU #8 (phys=8)
+ Socket #9 (phys=2048)
+ L3Cache #9 (9216KB line=128)
+ L2Cache #9 (256KB line=128)
+ L1Cache #9 (16KB line=64)
+ Core #9 (phys=0)
+ PU #9 (phys=9)
+ NUMANode #5 (phys=5 local=6045632KB total=6045632KB)
+ Socket #10 (phys=2560)
+ L3Cache #10 (9216KB line=128)
+ L2Cache #10 (256KB line=128)
+ L1Cache #10 (16KB line=64)
+ Core #10 (phys=0)
+ PU #10 (phys=10)
+ Socket #11 (phys=2560)
+ L3Cache #11 (9216KB line=128)
+ L2Cache #11 (256KB line=128)
+ L1Cache #11 (16KB line=64)
+ Core #11 (phys=0)
+ PU #11 (phys=11)
+ NUMANode #6 (phys=6 local=6045696KB total=6045696KB)
+ Socket #12 (phys=3072)
+ L3Cache #12 (9216KB line=128)
+ L2Cache #12 (256KB line=128)
+ L1Cache #12 (16KB line=64)
+ Core #12 (phys=0)
+ PU #12 (phys=12)
+ Socket #13 (phys=3072)
+ L3Cache #13 (9216KB line=128)
+ L2Cache #13 (256KB line=128)
+ L1Cache #13 (16KB line=64)
+ Core #13 (phys=0)
+ PU #13 (phys=13)
+ NUMANode #7 (phys=7 local=6026944KB total=6026944KB)
+ Socket #14 (phys=3584)
+ L3Cache #14 (9216KB line=128)
+ L2Cache #14 (256KB line=128)
+ L1Cache #14 (16KB line=64)
+ Core #14 (phys=0)
+ PU #14 (phys=14)
+ Socket #15 (phys=3584)
+ L3Cache #15 (9216KB line=128)
+ L2Cache #15 (256KB line=128)
+ L1Cache #15 (16KB line=64)
+ Core #15 (phys=0)
+ PU #15 (phys=15)
+depth 0: 1 Machine (type #1)
+ depth 1: 2 Groups (type #7)
+ depth 2: 8 NUMANodes (type #2)
+ depth 3: 16 Sockets (type #3)
+ depth 4: 16 Caches (type #4)
+ depth 5: 16 Caches (type #4)
+ depth 6: 16 Caches (type #4)
+ depth 7: 16 Cores (type #5)
+ depth 8: 16 PUs (type #6)
+Topology not from this system
Added: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16ia64-8n2s.tar.bz2
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16ia64-8n2s.tar.bz2 (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16ia64-8n2s.tar.bz2 2010-11-24 09:21:55 UTC (rev 7494)
@@ -0,0 +1,48 @@
+BZh91AY&SYü+ËoÇÿÐÞóßÿö=ïÿÿïÿòÀ kø`&þù\ |ó Cnø ^óKóÎÉAOCËÄ À )w0 rË(º\èÈ"
$ýSOÿÕUÿõUH?T S0TTSôÕ?JhÓF i§êSÙR§§ª©é?J
+42
+ SõISM5&Ô4Ð h Ð "¤¦ Ð 4 TP 4£LÈL¡ê 2oTÑ=M 6i´`3@ Àpy `sÍ
J2#(ÂI'õÔ~a7B¤t¨JÀ'4GC ùÆDBO Ý0Fl_ªIUX*ªù<DÆ$ $!$©$80sp{89ÁÀ9ÎøP_«õ½}TZÉ(DW0%%I%mM§N&ézÓÝ4ͦ$©lkz°¥%.%iÃT)%Kæ%®Ó·Nt¤éÍQE°Ã
+ÁELc[0QDVÃ7ETÞq¢N`B(n(¤ÙR©¼¶
+mkm[hRÀd$¥°C£dµ$¥³2MÁ-µ(^m³waEf-vìÔÞ½²"nÝ»$9RF[&¤JU»^eYfES²æEÖeUUVeY:
+¶¤¶f[´##-$%-IjIKf7f`(B ·b+a¢)Òmµ$¬²<¤!z Q`Ë£Cê*s2Ap
+¤m i° ÚAÒ.B$ ¬IbîßøåHÌH&Iq$rFb),`©[PÄ©Vn0Èö¶Z¶SÅ$
+ÊÓ32dI0̵*·s2!2µ,Û@0©ÊÜ«m2,µ"ÌÝÌÈÌÉe`3R2ÍÜ̪M&éôÄMÆÃ-ìͶL&Lï[®Æó9Ýôⳤµ$èÛ9ÎKmÓDÊ22¸3&ªÛºÝ%Hq%²ÙP RÅX &ÓtØÙl¶[I-DC»2ºåѺ\ÌËÄNm»»¦nZFJ$F]ÙZ£!uÊÎfwC¾&ìæÛ»»wå]iD;²®¹tNn1lÄbªØÒbËV×D:ßÂvF1&1QGL&"FBT%c!ÂX©VÔ°©A`²-²*RÙ*TT¡d¶RD¶Ê,BY
+*Jh*D-ÈáÌ6NSò&v³øk˯}boùéΤý¡×ÿÃ_csWU^EU@UV àª@@@ ÄÅ!!!p÷ïx^-ò[%§e8gV0rÆÓ0ZZZZ`fì ÕÖ§²×·©ã-êxËz2Þ§·©ã-êxËÐÊxãÔñâxË¢2Ø
Ìz¹Äg}~M¸ [£G ¾w é Ym
SÆÄ¤÷å6&Å
1baLXS&ÅûâCóá¡ã|üwòÚìÆvÏr¶íõ=\scùé¿N`;É> èÖý5ÏNq×·=3@Õøâ@æÈö>ÀØ0Dö
+Ä,ûü!AÕªÆEB¥É È>a `<Wµq¿LãïÆpÍÖ8Îv¸ÕÛÐjÁ±
+ÞÕ͸¸ÅÅ«S[mH¨YJX)äIe#9#¥ÓLãëÁ°FáCä÷{~oÍì÷jrjrܲI[I~ ÎRÞ¶Ûd¶Ûz }u×Þ Ý `}uÕë×p´í©£-ºµ«nM®[¨í«mu×m»-SUrÉm¶ô ¾ à Û|··ÒÕ·)ÉZ)e+L2åÎfIsssa\%¹L93\Ê`d0ÌÍLfÉr.RÂÛ-³4Qj«[? {½Ä$$ÞsÖßݺÜÄ;`8H¡¸_KcÓ*ªª¨UU¨*ªªUUI;¹öÀí Ûëåïå¶Û[m»|ùýüÝóýØ>!Ë<¿, òYä³ 9eË###j«qÄ
+ª *¨ ª ª
+ª *¨ ª ª
+ª *¨ ª ª
+ª *¨ ª ª
+ª *¨ ª ª
+ª *¨ ª ª
+ª *¨ ª ª
+ª *¨ ª ª
+ª *¨ ª ªÃ0Ã0;v 9À Û|Âw$yHòã8ññññã8ã8ò&$Öµk\I5«nÒªªÅU¶ *¨Z¶ÕUBئµnßÇ,ñUg·nݼ] ÙÒÎp -¶Öb3\¹$¼xÛk6!³ªUjX¬H-ÅbB¶Ûm³ 9eË.ꬪÎúª«9UY98âU T UPU@U víÓ§N:víÛ·^
¬ç b8Ä¶Ô ,fh nnîî8>aÎpÁQõëxÙÝgzRrÌoS%¹Ä3%yIáeíu5·In#f""¢,*DïÂn§dÑ<ìã~
îk/'å` Õ]¼*º<<7Çéº Áø=g»»ôóؼ-ézN½Ö¦×¥üE¶q¨ÝHxYûy ü@Ú½Ä 7@ 6«ªJ¬ç ¶Ûp)&Éâ"X$"Iîî 7M<xÛ Ô!MÓ)¤ñõÀ5½;²@
5J'íµd,`ì?rGîÃpJ0Jc6,SB¦j5µ¶Û_oåö£öæòI~Úݼj}¯·m´#R4p
+ÇÓñ÷Çî÷qÕË(ð&£I¤v&ÃFFÒwL£rhÒMGbHÃ2ev¹v¸U [Ñ jBq'm}äÔï±£0~o»©÷ª%
J"TBB~¸#èúâBLhë<>[;ÀÆ:©²òd¸É²jrÙ$\Lb ¿;ã ÍÚBÑ$¶8D1YH#Z3dÃ}¸ÕòçÆ1&ÌÛ×8pàëRÌn1r8ݽÕßUÒñ¿
+¶c~8ñú³Ä3·;óuÅ.8+4ÖmÄIêî÷Ô
+½AêzAaÞ´+4E5Ö¹Q»s-¹£4Qní]o´ÆÆÛãm¿|3ûÉÓõ×Àü íߦUÕYyÕ^<þUn mW1TYÎ Õ^Oܽ?jÙ¬Ïà÷¯w1eë3ùàL7qÕé7¸¦4÷]x»ÖÅï1¬õêãÆ$rß8ç¯HZõÁ}{å||kuq1=ÙzNêéÛr»wþO/¨ÄyQÐ'|bqÎîz]òñé¿}®«vìLzôg¯HéNÞ³»Üû¾ÚNxéqå{ùxxc~1\a¬$õ'[å6t©éÃ5áÓG´HZ{{l6x¶ëßløoªºÄéØ=¼õòO;'^ݽ´èåásãwã¾¼8Û}é©O+«W.A¹éR9±<-Ü'·äßo,ºãsbg8íÙ` ©òÿßGùûÿ{ÿì߼ϡëíÿÞSì|µ[ts=h~[¦yͽô"%ªÛ êâHg<ÛßB)ÙòZº=°Ã<¹ò'{èE;>KU·G Vl3ÄÏ 2y·¾S³äµ[tzfÃ<@Éò'{èE;>KU·G Vl3ÄÏ 2y·¾S³äµ[tzfÃ<@Éò'{èE;>KU·G Vk9áºg<ÛßB)ÙòZº9Ï-Ó<ÉæÞúNÏÕmÐAÌõñ$3Èmï¡ìù-VÝÏPÏ2C<ÉæÞúNÏÕmÐAÌõñ$3Èmï¡ìù-VÝÏPÏ2C<ÉæÞúNÏÕmÐAÌõñ$3Èmï¡ìù-VÝÏPÏ2C<ÉæÞúNÏÕmÐAÌß{c¿ëϰÛoÿºúmÝKR>ÿcn¶Ûu¶Ø÷}/£öø>ýôwÇÍÂ>ªDïQqöm~ÎAúûnñúò×ÙÓëòëÇÄGÞç=ã±yÖü¥ÄsP]
+ÂF5¡©ÜŲ£d¨ê¼S^1Y¤T%IÃ'bnãKSp¼H[±$x9ïÚÐ
+ªæ*«9Ëm¶ÛmÀ<¼{ß*í5êØDõNÞÁ϶Øt©;½wí·
ãUáv¯ÚÐÖp"ÉF1ér#OO×N8«7ÇF}DOvü5-z\ bc #9g"X&rU77K]«k¤C>ÃmË*íxÌD&Kw
©ãÓáD[!íß fá×=ô½jÝ[$yÔ¶ZÔ['1RÅ$²JT±áp÷çE¦ª§Zy\*'lLH²v¸0ìÁ«"ŤéZå¼bÙ×q#*±5I<,Åñf3sâÄwâkZ$ ½ñbãoxÁ'cµ®1μ5½ü Mú]±×Á¾3yÓCs_«¡ÑiÛn3ÐAææM¢LÝZ¡ÂÔÃe¼¬@psäàù7ÍüUÝãÓã]â=áC¶Ûm¶Ð Ú®b©*³
+ª¶;WÏã~
+ómñ|~Õ¶õ¾&¸s[c ¯åøõ»ò|
íæ;õ{íõë6ztâã;33¬óXH[sÙ¹Øô7n'<ö¼ksjÛo~qíþ;Öt¼s`ÅÕëвBú#3uf÷É· Q¡{%pë7ZÅÀv
æÑ¤A@iNGKÖXA̯31è×Û¾XÛmµ±Æó{® !#1¤¢Ù%JJNäÓ¡&ÊCº
+4ð
+7¤tðã.Æq¥ü;²ÌªÏ7h ¹n¶ÛßVçéTí·GgªkÝ'üõá:ù^áwÞrºg
,»÷,Þ«eÆàxM)vëÆXÞO\±+:¸®«¾Æªç9é[kUæÄ*H"ïÒó[g±ÄG<íÇEqoc|ÚI°Ú«eÍcnºvÜïÓf¹]K3·<3m[,²·Á0nó@Ù¤¶ü6ô1ÌÕñü?9Îs¹àëàïrA¡n, ö
+!Ý!<¤$^2з#¹6cKÝÞÓÃO9ÎsÎs Ç« ¨¨RÆýöøWë®þâ#^g<À rÝ |ʯx'=åïMøÝ©6±È¥Ë'l0Z¸ÁlÖÖí[ËqÎv:R;¼]vÌæg3®T·õ¦|ÄOkëÀX÷=jmÒÆ
+]ëÝX¼\®XºÇ6o[nÆë,ÛKeÖȶXF±P¹HÊV+YÆlÞ¥»¼dM³+lLç½Ó,ÕD*JYÏ=4hÚN«ÆÓm\³IcÑ
%³Ìd1&s7«ß
+1í\ùW^ü~58#:
+ÅÞY.Ùåï æhX®f]ÞE·8Æøk|a¾±ï:VÙÐ=m¾9HøØÙÛ9ͺ¸béq¦û{$,Y6U±vßêæÜhо֥v±åG>S®Û&ØbU3³3&ÄÄÂL6¬Ívh&¦¹í÷Äcvõeã5½Ã5¡"dÁM²ÊÜÉ$8Î,ÊÜbawçls´sÓ<âjºÓÂÌ»bf·£19éy`{Ã|ÿÒ$ :ãq|ÒAïîºÚe«^
+wºëÆ8æl`Æüä2{N:ÜÖ4t uôZÝܾÈ~B'^$5YÀÃz 3ÝÎnJ0Ót+B(I2LÛÝË9%£
+ánØÖ,Öøß;½·ç·æÏOHod
'wg\xI¯+*²ìåÎ'زspYÝq)V[¶°oÄÆ&ÎJÚyÖ1âÀÓê®3ú`|ìåÃÌõë×0©ç}Ù)Ò\Ä8ðI7s±Åùæÿ+6²¦'0×V6LIµq¶uonÛû®îÀà=Ë{xnÎ;Ý®nXÆ®qYÂç8æ7Ûv*±=£MüyÛ;xí¿ \ºØ>/CpëÒÙ×£ZÞJ{Öý1Åfã>è'óg^9É'HÏ-]³oÇpÇ@í·^=/NqµÛ¦qßw£ÁÛ:s¾ye¿ã>üßîgòãV]a>Áεs¢D³1Ò®ræt5¶ô fg?Ú¯Û·E+¥ù¿?[Ê©ó
ab°¤3
+µônùi
+¦æþÿOñjÉÒA ÈdW¥þ*úè<(Û{áë7À´Uþ@ÀPÆ!Ô>=¿T6ñ
,-¢:<ÃÔY)&~Hwþ ýîÊ?ÀÚy÷ÃÝ´=Ð÷ùÆt:MuÅÑòüI9õøÇ[e¥õ ~ >
þ[%P r
+ëùÃôÄ<Äâ!þ¨zCô?Z }0ðÜ>±#o:8Î衡롨'Îü |@Üh@{Àü zÔC$ ¾¤Jõïõ½?áç3ð!CÚ
+ L¸; Ð`2P5âá'¨L@Áú¡¼>¸urôT0`uä@ôô!P©R¤"رJT|ãè×̬>PÀbP!PMü|E·`bNa|èÏÈn0Á6âÐÌ?¦ úû¨óûÈØ,õ=°ÿËîa@ r;D<°!è N<ê*[bظ
+â L 8:|Þ öGÎ(dæµ$Pâ$ °¡çØ'È <È<ùA!è6À2°>ϱР`(>QzuÔÀó üCèýùâ@ð!{a{ÃÈ>ÈyÐ`_¤2ä=ÈÜGH´#ÓÝ "zz?2Ó!ñ÷ñuù@ÐE¼~ÓÚ{Ô{ÃÄ<ä1ÿÕ; N¡åà8W`múÚ$ z
+_÷â@öaòï
+@è(Y7
+ý@Û=ÃÊ!?1²AÀä<ì9@ýd|CÐ=óäCâöÄ}4H²PH(= qýä$úûO¾÷°uáåÜ$û¡°t æ8ïÛâG¸z> >:0Ôöû@vPõIx
>¤'D7A#õ ÈO¸Xd¿!ñ
+ zØ>P?JÃ9
+Ãi$ ôCÞñ
+ R¨øD(08¾ÿîÑR@D ½7¤|îÜh'ÊÊlÐ(7pÀ×p4(ïÔ
+D{B± M@M¿c @¸£H`1X #ËÌl8Ê=á9 /]Â(Üd LÑü'~ ÞJ(|ø~DHúâ@=C×ÑQ>P¢A23Ü@P=ßx>0ø@í°`ÄÞ âîH§
+ey`
\ No newline at end of file
Deleted: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16ia64-8n2s.tar.gz
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16ia64-8n2s.tar.gz 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16ia64-8n2s.tar.gz 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,59 +0,0 @@
- ãaJ íÝÛH¥ëZO¡ØEüdßu¬wd»56;¥Ú½¤AL EÐHdÍæ<ý¤²
-²'xÈI?ßLw»T2Î@Dp7i§þÇÙÎÿûW"©ÉBhþ×d!9ýÙxúßoü`u©Mݱõÿýð>\ëjóx¬òÃû÷?|^ëm±ûÎëV#âÂbZùßÊå5>#óo³Ô6ùwI0ÿzù_îÝoåïÑ$8=çû
üSg½ïëÛÀûdÊâ¯Pÿ&ç«ã±¬/ÁßÞ'ï~_íø}óÇÿ±ÚÕ
ÕÇ]µÚ¾ËËÍû÷ß¾òñï?¦þÝoù×bûôí¯y÷µ|Xm_b¿ýq]Õü9(åîýãþ}U¾ÿü~/7«wÕïű¨ÿ¾ù'æô&õ_¿Còî·U^=VÇÓ?òÝr³-wëwõgôýîñëçÕáô²æÕúü2úãÏÿòçobÒ$ù§úSö®¨ý¿m¾ðS¹.þøo¿j7·ÿ¤ïÅçúÃðí[wûÍÓ±XæÛ÷ÅCóï.®áU\5Ë«6âªc;×Íñº®çuqÝLb}çÂ^8Ù
KyáÆ\¸àÒÎ
ËxádnÆ7âÂÙÄÏ:nÎ'»pSQW.¤½Y§
-Ò+Ç©Ã+ç¬ûl8y^9NF]¹0ë>ÎÆ_9üú_oý÷ëê+vý· ³Þúoàú/W_?U¾ýÛIa~fëÏá<}ÿå§wõWþqXþöMÁ3KfÍW~züí·úb<¥ÁØÓWþ¹ÑßÃóÜ,µIæNßíÿÈ÷í¯,³³¤ùÊßUñûocBæ|Nÿæã.o}Íúlüù'h¾Û?¶97Ï}þÊ?¶Og³$KOÿæCq¨Ú?sÛäôüßCQ>çË/í¯¶]¹û·|½úö»YýC»Óûüï÷þ¦õ¼KÏ¿Ï/ÛüsëçoÎ×àßWËm^|Í?oÏÔvóí§þuw8íùêÌ\â¯4ïþ©ùÏ?Bxþ þ÷c±ü²-Õ·¯Øüìôþë?~Yüº«?×ç÷iý>?»åªýk>åkðéëþòßüsùõkQý¯¢þ¯ú¯éü[¶O_©V¿ÿRif²tþÍÿùo·åò[OwaÍÓoo_ÿõøíÌÎç¶õÞ<î¾üù/S3OÎÿÇõêEëc´þºõmÿõ¿xá¯y<ì/þzßüuñçoaëùSn-ӫѾÿ®ãßÿµwÜÿEÐÍÿCýìT?¼Mú9Ï}3
-Ì?¿Ê
W«¯Ó|âó2Cÿü×Ó×âóþ#ò_ÿ'}Õ .ÿõëLæBÆü#ÿªÜÛrý$ù DëßëxÿÿjsXå絬1ï1°þcm/ÿÞ%×<ð¿1`À2ðÉÛ]Xû/Bôøÿ¼kµØçË/ùzµ(Þ£IõwÆÿÐÿCýGÿN.²[ÿäfDëYÆh¾Í°þmGÿ6Ô/£þpÖLÿ1³Éüßeõá¦0Ppþs^»þ¿hhïѤ:îù?8Ïñ'ÿºyÝóÿõô4õ¨ÿëCýëf¬þO'k. FáQþxkéÿ@ÿb÷°ú6öcú¿!òßxáñ?tò_? ðüÒÿÉG ½ôWÕ¡øüXÆ bPÿÆvôï2¨§s?åË/¼ ¨D¤ÿêi?éøoºÏõøRÿ~Ý¿«ª_)"ýoW¿¯¶ãß#nýï¤ÿÔqü`©|Õô¿,7«Ãj·|ZÔiv¾¿0¬ßÑ ÿ±3Þ#ÒÿäOÇEùÛ"?ËeWÅïEõô×ï?þ§úÇ@õëF¶þ¿É«Eý
Å×|?øúïøýûðüç;ð]ø0` ' ÿ÷æÆÿsÜfp\UÃbê¸ù¿ã?è Ô@ÿ ÄÿÅúODùÜÿÕ½ÿÛSý?Þÿ¯¡ýK5"ýOîÿêú?]fèÿpò}ÚÊÇõ7}ô?µÿëÿ·áøáC^åÔ½^DúGø¿xþ¡øU#Òÿäþ/×óyú?!¤7 ÍôðyÎÿ!Pþºÿü_ÿCè820`À ÐÿusDãÿäþ¯îüßÇþO8ÿ×@ÿâÿòô!årÿWÚ÷qýÂÜÒ¦þõ¿¸þõ¿t#Ò?¢þçXÿK7"ý#ü_ÿ!8*_5"ý#ê±ÿÖÿÒHÿû¿ºû?© <ÿÁPþªÿü_<ÿ¡ãÈ`ÀL@ÿ×Íÿû¿ºç¿}¨¿ÌñOæ, ¦þ
-ÄÿÅþDùGÔÿâú/º¿t#ÒÿÔþ¯Zì=ÿ×!PüºérÿWü7ÿ!|Ü«Ãã²*Êo
-éáÿâúÖÿÒHÿú_ôBàù_Ýô¨ÿÅó(ÝÈÖÿþ/Îÿ!t0` èÿº9¢ñPÿ˳þ'Îÿu3Nÿ6ÖòuA£ðñþ¯úïMæý_Ææ¿*÷å¶\?I>qùwÿÏÖà ó :ÿÕæ°ÊÇâs}µÖ£®ÈÀøßÿ7ù÷ç¿0àú0`À [=þï7OÇboû|ù%_¯ÅÃÐ{4ïÿoÆÿ`XÿC0TL´þåaæÛëßvôoyþWàu#ÓÌì_2ÿwYJýC¸i ÿß×®ÿ/¶Å±x&ÓqÏÿÁñüÎþuóºçÿ1êé?1\ÿ@ýëf¬þÏþ?Ù{4
-òÿØÄú? Äåÿäÿ6ÅçߤIÊü#åòú_¡ë3ÿ
`iF¤ÿ«öôçú_ôÿC`ÿGÝôÕþõ?°ÿ£nDú¿jý/®ÿÅñ×ÿt#ÒÿUû?úsý/ÿÀþºéÿªõ¿ü¹þõê×lýÿõ¿ý{qÿÂóø>ü0ÐÐÿ{kDãÿäõ¿ºóÇ6°ý£fúO þ/OÿQþ¯Úÿñÿë?ØÿQ7"ýOîÿêú?]ÆþoNþ¯OCù¸ÞðF þ§öõýßõ1|È«º×Hÿ ÿåùìÿ¨þ¯ÚÿñÿþOìÿ þþ/Îÿ!Pþºÿü_ÿCè:20`À ðéãÖÆÿ«öüæÿ²ÿpþ¯þÄÿÑÿ
@ÿÉý_iÿë¿æ0Íô¨ÿÅõ_¬ÿ¥þõ¿8ÿÀú_ºéQÿã?Gå«F¤Dý/öÿÀú_ºérÿWwÿ'5çÿ!Ê_5²õÿç? t0` h>¹5¢ñrÿW÷ü·.ãøÀ's S@ÿâÿbÿO¢ü#êqýÝ_ºéjÿWbzþ¯ë¿(~Ýô?¹ÿ«7þã?»cux\VE¹ã@!"ý#êqýëéF¤Dý/ú?!ðü¯nDúGÔÿâù¿ndëÿ ÿçÿº0À|ú¸5¢ñQÿõ?!pþ¯qú±¯
Gù¿Læý_Ææ¿*÷å¶\?I>qùwÿϺùGÿjsXåcñ¹¾ZëQWd`üïÌÿü{ðü<ô3`ÀA}çO8ù¸1Ñãÿ~ót,ùv±Ï_òõjQ<½Gêñç¿ñ?ÖÄ`ê-P/Ñú_1o3¬ÛÑ¿
-þ?u#ÓÌì_2ÿwYJýC¸i ÿß×®ÿ/¶Å±x&ÕqÏÿÁ±þ@ªæuÏÿcÔ/Ò=4Pÿ¨ÝÕÿÙÿ'{FáqõoéÿÿÿÓ"ê5û?Ìÿõåòú_Ýúõ ÷ÿ ØÀ`éÑÿþìÿ¨þýyþû?êF¤DÿGÿ,¯þýyþû?êF¤Dý/êÕ¯ÙúÿÕë
ûÿïÀwádÀþß#ÿ'¯ÿÕÿûà9þC°í5#ÐéÿÑÿ
@DÿG®
ÿ@`ÿGÝô?¹ÿ«ëÿt¡ÿÂÉÿõis(×Þô!ÒÿÔþ¯üßÿ!|È«º×HÿÿÏ@`ÿGÝôèÿHÿ'öÐHÿÿçÿ(ÝÈÖÿý9ÿÐqd0`À& ÿëæÆDÿÇÀñçÿºèß]×ÿÎõ¿ý_DùÜÿvòÏú(æ0Íô¨ÿEýC`ý/ÝôÕú_þ/ ¬ÿ¥þ¯êÿ
-gÿ× 8*_5"ý#ê±ÿÖÿÒHÿû¿\güOM ÿ¡üU#[ÿ¿¦ÿ+ëYêAÇÁþ¯#ÿ'÷
ÞøÏó_|2g0Åôo ýÙÿ(ÿú_\ÿ
@÷nDúÚÿ¾ÿõ_!PüºérÿWoü ÇwÇêð¸¬rÇ[BDúGÔÿâþÖÿÒHÿú_<ÿçu#Ò?¢þýß(ÝÈÖÿõ¿8ÿÐqd0`À& ÿëæÆDý/ÿÀù¿nÆé?ºä×£ü_&sõ¿ ÍUîËm¹~|âòïÿµ)ó :ÿÕæ°ÊÇâs}µÖ£®ÈÀøßÿ7ù÷õß0àú0`À ÏoMôø¿ß<e¾]ìóå|½ZCïÑdz¼ÿ¿ÿaý7ÁXjP1Ñú_1o3¬ÛÑ¿
-ÜÿÇÀxÝÈô3ûÌÿ]RÿîbÀ
çÿ·æµëÿmq¬Þ£ÉtÜóp¬ÿõuóºçÿ1êé?1\ÿ@ýëf¬þÏþ?Ù{4
-«ÿxCÿ¸üüQÿ«©ÿÀü_Qþ'¯ÿXÿëFØÀ`éÑÿý °ÿ£nDú¿jÿÇoõ¿Xÿû?êF¤Dý/ÿèþÓHÿþ<ÿýu#Ò?¢þõê×lýPÿûÿïÀ÷ádÀO·F4þO^ÿ«;ÿgý/6°ý£fúO þ¯@ÿQþý¹þýu#Òÿäþ¯®ÿÓeþ'ÿ×§Í¡|\ox#ÐHÿSû¿úþïÀú>äUNÝëE¤ÿËòüöÔHÿþôB`ÿÝôðqþò×lýàÿâüB×Áþ¯[#ÿýÇÿëF ÿèfÂcý_&¡ÿ(ÿû¿Òþþ/×!Ì-`éQÿë¿XÿK7"ý#êqþõ¿t#Ò?¢þǬÿ¯þõ¿ØÿëéF¤ÿÉý_ÝýÔxÿ`(ÕÈÖÿþ/ÿÐud0`À&àÃÇÿû¿ºç¿}ð Ç>³ bú7ú_ìÿ ADý/®ÿB ûK7"ýOíÿJLÏÿpýůþ'÷õÆÿpüðqw¬Ëª(w¼(D¤ÿë?XÿK7"ý#êÑÿ çu#Ò?¢þÏ@ üu#[ÿø¿8ÿÐud0`À& ÿëÖÆDý/ÖÿÀù¿nÆéßøXÏWFáQþ/yÇþFç¿*÷å¶\? >qùwÿϱþøüWÃ*XÏõåZ¹$ãgþßäß»þ7xègÀ_ÿ?þï7OÇboû|ù%_¯ÅÃÀ{4Éþ«ÿÉXÿ3® (&^ÿËò0Bómõo;úgÿOu#ÔÄì_4ÿO<õáöÓ (8ÿ¿^½þ¿ØÇêûïÑ${üþÿiþï-Ïÿ@0ý«æÏÿ#Ô/Ò¿aÿ'Ô¿nFëÿl ½G£ð¸úOIHèÿÿÔF~âóoÒfÿù¿>²üÇ ÿ»õmqüGP_i SLÿqÀõÿBÿÇç!°ÿ£ndú+ 6¬ÿ~ÿÇç °ÿ£ndú+ 6üüß«ÿÿ,¯þã
-
-ë¿×ÿ1µ<ÿýu#Ó\°øñ?µÔ?ª_7Âõÿ¨`ú©þWHéÿð|¾? ôôÿÞ²ñ?® Xì¸ù¿OéÿÅ`Û?jF¢ÿàÿJ3ú¿Èò?µÿ«ßÿ)pýû?êF¦ÿ©ý_]ÿ§Ë2ú? ü_6òq½á@2ýOìÿzÉÿÍñ¼ʩ{½ÈôðñüöÔLÿSû¿zýcàÔ? öÐLÿ ÿçÿ(Ý×ÿ¯îÿâú?G`ú¿î Ùø?µÿ«×ÿ15ìÿóÝHôïõ¿,ý_dùÚÿö÷¹þané ÓLÿú_\ÿ
Àú_ºéPÿó?¬ÿ¥þþ/ÿ¯þõ¿ØÿëéF¦ÿ©ý_ÝýÔ:ÿ`(Õ×ÿ¯_ÿç? ¼lÍ`À«ôݲñjÿW÷ü·OåøÀ's SDÿáÿbÿO²üêqýÝ_ºébÿWbúþ/®ÿB øu#ÓÿÔþ¯þørüðqw¬Ëª(w¼(D¦ÿë?XÿK72ýêÑÿ çu#Ó? þÏ@ üu#\ÿ¿~ý/Îÿ!\820`À ÐÿuÈÆ@ý/ÖÿÀù¿nFê?ÒñuI£ð(ÿÉ\0ô!ÿªÜÛrý$ù Äåß5þ¿SýwæÿúDç¿ÚVùÃâX|®¯Öz
-ÿOgþßäß»ûÐý0`pÆròqc¢ÇÿýæéX,óíb/¿äëÕ¢xz&Óã÷ÿñ?ÿ¸§hý/ËÃͷ׿
-õ!Pÿºé?fö/ÿ»õß1ÜÅ4
-ÎÿoÍk×ÿÛâX
-¼GéÈù¿sÿ!ðün^÷ü?Fý"ý'¬ÿú×ÍXýí²÷hWÿ)ñþqù?Ù?mìÇ >ÿ&Mó@ÿ¸ò_úÖg<ÿÁ ÓHÿqå¿DýÿÀþºé?®ü¨ÿcÂúØÿQ7"ýÇÿÔÿbÿ7ÜÓHÿqå¿$ý§ÿû?êF¤ÿ¸ò_ú_úÇ@õëF¶þUþKRÿËgÜÿð|¾? ô\}¸5¢ñ?®ü`þïãøÁ¶Ô@ÿ ÄÿåèÿB Êÿäþ¯^ÿ'qýû?êF¤ÿÉý_]ÿ§ËýNþ¯OCù¸ÞðF þ§öõýßõ0|È«º×HÿÿÏ@àùOÝô?¹ÿ«×ÿ18ú?!°ÿnDúGø¿8ÿ@ùëF¶þðqþ¡ëÈ`ÀL@ÿ×ÿû¿zý3ÿpþ¯þÄÿÒÿ
@ÿÉý_ißÿÅõ_sKfDúÔÿ¢ÿëéF¤Dý/Îÿ °þnDúø¿ÇÊWHÿú_ìÿõ¿t#Òÿäþ¯îþOÚ|ú`(ÕÈÖÿþ/ÿÐud0`À& ÿëÖÆÿÉý_Ýóß>¸ã?ÌY L1ýÿý?!ò¨ÿÅõ_téF¤ÿ©ý_é÷äú/_7"ýOîÿêÿ!áøáãîXUQîx+PHÿú_\ÿÀú_ºéPÿõ0ðü¯nDúGÔÿâù¿ndëÿ ÿçÿº0ÀôÝÑø¨ÿÅú8ÿ×Í8ýûXË×£ü_&sþ/có_ûr[®$¸ü»ÆÿWÿùGÿjsXåcñ¹¾ZëQWd`üïÌÿü{ðü<ô3`ÀAS÷=þï7OÇboû|ù%_¯ÅÃÐ{4©þ«ÿaýG¦~Ø¢õÿey£ù6Ãú·ýÛàéÿÀX72ýÇÌþ%ó¥Ô?{0`À@aÀùÿÍyíúÿb[«÷hR÷üë¿`àä_7¯{þ£~þëRÿ¨ÝÕÿÙÿ'{FáqõoèÿÿÿÓ"ê5û?Ìÿõåòú_Ýúõ ÷ÿ ØÀ`éÑÿþìÿ¨þýyþû?êF¤DÿGÿxW7"ý#ú?òüöÔHÿú_Ô?ª_7²õ@ý/
îÿCx¾ß
zúohü¼þWwþïãøÁ¶Ô@ÿ ¤ÿcJÿQþý¹þýu#Òÿäþ¯®ÿÓeþ'ÿ×§Í¡|\ox#ÐHÿSû¿^òsüð!¯rê^/"ý#ü_<ÿýu#Ò?¢ÿ#ýØÿA7"ý#ü_ÿC üu#[ÿø¿8ÿÐqd0`À& ÿëæÆDÿGÏñçÿºèßAêú¿ò?¹ÿ+íïÿrýÂÜÒ¦þõ¿¸þõ¿t#Ò?¢þçXÿK7"ý#ü_ÿ!8*_5"ý#ê±ÿÖÿÒHÿû¿ºû?©ñ<ÿÁPþªÿ_ÝÿÅþ :0ÀôÝÑø?¹ÿ«{þÛo8þ#ðÉÀ#пÔÿbÿO¢ü#êqýÝ_ºéjÿWbzþ¯ë¿(~Ýô?¹ÿ«7þã?»cux\VE¹ã@!"ý#ü_\ÿÀú_ºéQÿþO<ÿ«þõ¿xþå¯Ùú? þçÿ:0ÀôÝÑø¨ÿÅú8ÿ×Í8ýëùjÓ(<Êÿe2ßÿ¦ÿëúÎUîËm¹~|âòïÿcÿOñù¯6Uþ°8ë˵sIÆÿÎü¿É¿w)×ÿ àú0`À ý'ÿßøñ¿y:Ë|»ØçË/ùzµ(Þ£Iöøó_ÍøLJÿ/d"ÔK¼þåaæÛëßvôoSËõ?u#ÔÄì_4ÿO<õáöÓ (8ÿ¿^½þ¿ØÇêûïÑ${üþÿiþï
-ýgÿªyåóÿõôd\ÿ@ýëf´þÏ@Ñ{4
-«ÿüÿô\Èü ±f°øü4eý/²üÇ ÿ»õmÿ!ØÀ`é?® Ø þ_èÿ±þöÔLÿqÀõßïÿ²ÿ3öÔLÿqÀÿ{õ¿2Ãñÿt#Ó\°aý÷ú?6ÿCý`ÿGÝÈôW ,~üO-õê×pý?ª Øþ_ìÿèÿð|¾? ôôÿÞ²ñ?® Xì¸ù¿OéÿÅ`Û?jF¢ÿáÿ
-ô!åjÿW¿ÿSàúöÔLÿSû¿ºþOeô@8ù¿>måãzÃ>dúØÿõÿõ1|È«º×Lÿ×÷±ÿ3öÔLÿSû¿zýSKÿ'öÐLÿ ÿçÿ(Ý×ÿ¯ïÿâüÂ
#0ý_wlüÚÿÕëÿÇñçÿºèßü_YBÿYþ§ö¥ýý_®ÿB[:À4#Ó? þ×!°þndúÔÿâüëéF¦@ý/ÿ¯þõ¿ØÿëéF¦ÿ©ý_ÝýÔZÿ`(Õ×ÿ¯ïÿâù/[30`Ààªý_wlüÚÿÕ=ÿíSpüGà9)F¢¨ÿÅþdùÔÿâú/º¿t#ÓÿÄþ¯Äôü_)×!PüºéjÿWüO9þCø¸;VÇeU;Þ
-"Ó?ÀÿÅõ¬ÿ¥þõ¿èÿÀó¿ºéPÿç? Pþº®ÿ_ßÿÅù?G`ú¿î Ùø¨ÿÅú8ÿ×ÍHýÇüº QxÿËdÞyú¿ÎUîËm¹~|âòïÿkú¿0ÿ×'>ÿÕæ°ÊÇâs}¹Öc.ÉÀøßÿ7ù÷ûÿÐý0`PSßö9ÿ¿5ñãÿ~ót,ùv±Ï_òõjQ<¼Gìñç¿ñ?þõ¶¥õ¯ÿey¡ù6Ãú·ýÛõ_0pÖPÿ³Ñü?ñÔ?ÛO0` 0àüÿxõúÿb[«ï¿Gìñûÿ§ù¿7¬ÿÁ° ´j^ùü?Bý"ýë¨ÝÖÿÙÿ'zFáqõÑÿ!2ÿ'ÿ§eÿÇ7,ÿS×ÿêÖ´!åø¡¾Ò, ¦þÙÿñÀþºéýß
-ìÿ¨þÙÿñ@óndúgÿÇ·û?êF¦@ý/êÕ¯áú?û?¾ïÀwàdÀþß;@6þO]ÿ«;ÿ÷)ý¿l`ûGÍHô°ÿãAö|+°ÿ£ndúÚÿÕõº,£ÿÂÉÿõis(×Þô!ÓÿÄþ¯üßÿ!|È«º×LÿìÿøV`ÿGÝÈôÏþoöÐLÿìÿøV üu#\ÿgÿÇ7Â
#0ý_wlügÿÇ·çÿºè?¶d£ðèú_þ/²üOíÿJûû¿\ÿ
0·tiF¦@ý/®ÿB`ý/ÝÈô¨ÿÅùÖÿÒLÿ ÿÇ,ÿ¯þõ¿ØÿëéF¦ÿ©ý_Ýý´þõÀPþª®ÿ_ÝÿÅþ^¶f0`ÀÁUú¿î Ùø?µÿ«{þÛ§ÖpüGà9)F¢¨ÿÅþdùÔÿâú/º¿t#ÓÿÄþ¯Äôü_)×!PüºéjÿWüO9þCø¸;VÇeU;Þ
-"Ó?ÀÿÅõ¬ÿ¥þõ¿èÿÀó¿ºéPÿç? Pþº®ÿ_¿þçÿ.0` èÿºdã? þëBàü_7ãôÛññFáãý_îúUÎÓÿalþ«r_nËõäkNõßÿëÿjsXåcñ¹¾Zë)ü?ùïîÿA@?ô3`ÀÁºnMôø¿ß<e¾]ìóå|½ZCïÑdzüþ_3þÃñWàtÿey£ù6ñú·Á³þ3ê_72ýÇÌþ%ó±þ;»0`À@aÀùÿyíúÿb[«÷h29ÿwã?>ÿëæuÏÿcÔ/ÒÂúï¨ÝÕÿÙþ'{FáqþÄKÿ¸üì6öc&ôÿ@å?®üWdýÇÓú¿gÿ76° fDú+ÿÙÿñ¼þÐÿýu#Ò\ù¯Èþ߯ÿ
Àþºé?®üÄÿZÿ,¯þãÊEÖÿ>ÿÏþOØÿQ7"ýÇÿÿ©¡þ1PýºÿGÿÿõý?ïÀ÷ádÀþß[#ÿãÊ æÿ>ÐÿÁ¶Ô@ÿÑÅÀ
Gû¿ý_DùÜÿÕ½ÿ[qýû?êF¤ÿÉý_]ÿ§Ëú? ü_6òq½á@"ýOíÿêû¿CÂñ¼ʩ{½ôðñü®ÀêF¤ÿÉý_®çÿrôB`ÿÝôð9Îÿ!Pþºÿü_ÿCè:20`À põáÖÆÿÉý_Ýù¿6ãøóÝôï þ/OÿQþ'÷¥}ÿ×!Ì-`éQÿë¿XÿK7"ý#êqþõ¿t#Ò?ÂÿÅñ£òU#Ò?¢þûÿB`ý/Ýô?¹ÿ«»ÿöÿÅ`(ÕÈÖÿþ/ÿÐud0`À& ÿëÖÆÿÉý_Ýóß>8ÏñOæ, ¦þ
-ÄÿÅþDùGÔÿâú/º¿t#ÒÿÔþ¯Äôý_\ÿ
@ñëF¤ÿÉý_½ñ?$ÿ!|Ü«Ãã²*Êo
-éáÿâú®ÀêF¤Dý/ú?!ðü¯nDúGÔÿâù¿ndëÿ ÿçÿº0À\}¸5¢ñPÿ˱þ'Îÿu3Nÿ³XË×ÂÇû¿ê×Ì¥ìÿalþ«r_nËõäÿÿÏ:Çü#ε9¬òűø\_õ¨+20þ¿4ÿwó7xègÀÄ$ '7&züßoÅ2ß.öùòK¾^-¡÷hrwþ+CÿxVPL´þåaæÛë¿çÿþu#ÓÌì_2ÿwYFýC¸i ÿß×®ÿ/¶Å±x&×qÏÿÁ±þ#Nþuóºçÿ1êé¿Pÿ¨ÝÕÿÙÿ'{FáQþxËþâòòÚëÖÿ
-§ú_&0ÿDù¼þWèä¿~ `ÿG6° fDú¿jÿÇpZÿ7<ÿýu#ÒÿUû?ÇÃó?ØÿQ7"ý_µþ×Iÿ)ë`°T¾jDú¿jÿÇpªÿEÿöÔHÿWÿNõ¿¨T¿ndëÿ׬ÿNõ?ÿð|¾? ôôÿÞÑø?yý¯îüßÏñ
-lÿ¨þÿõ òÕþßü_\ÿÀþºérÿW×ÿé2KÿÿëÓæP>®7¼èC¤ÿ©ý_/ø¿
-Çò*§îõ"Ò?ÂÿÅóØA7"ý_µÿãÙÿåéÿÀþºéáÿâüå¯Ùú?ÀÿÅù?KG`ú¿nhü¿jÿÇoþ/öÀù¿núwÿWJÿQþ'÷¥}ÿ×!Ì-`éPÿþ/¬ÿ¥þõ¿8ÿÀú_ºéàÿòÿ!8*_5"ý#ê±ÿÖÿÒHÿû¿ºû?© <ÿÁPþªÿü_<ÿá/¬0`pÕþ¯Û#ÿ'÷uÏûàSÿ|2g0Åôo þ/öÿ Ê?¢þ×!Ðý¥þ§ö%¦ßÿë¿(~Ýô?¹ÿ«?þÿ>îÕáqYå·
ô¨ÿÅõ¬ÿ¥þõ¿XÿÏÿêF¤Dý/ÿ@ùëF¶þðqþáÒÁþ¯Û#ÿõ¿Xÿçÿº§ÿy¬åëFáQþ/¹ÔÒÿ
`lþ«r_nËõä×øÿ¬£ÿBtþ«Ía?,ÅçújG]ñ¿3ÿoòïûa?ô3`ÀAåüÿæDÿûÍÓ±XæÛÅ>_~É׫Eñ0ôM®ÇÿjÆÿ`ÏC°gÅDëYÆh¾Í°þmGÿõ@pÖLÿ1³Éüßeõá¦0Ppþ{^»þ¿ØÇjà=\Ç=ÿç9þCSªyÝóÿõôXÿ@ýëf¬þÏþ?Ù{4
-«ÿøúèÿ ÿÿÓ²ÿãÛAÿÉëuë?Ö <ÿÁ ÓHÿìÿøf`ÿGÝôÏþoöÔHÿìÿøf°T¾jDúgÿÇ7û?êF¤Dý/êÕ¯Ùú?û?¾ïÀ÷àdÀþßÛ#ÿ'¯ÿÕÿûà9þC°í5#ÐÂþoQþÙÿñÍÀþºérÿW×ÿé2KÿÿëÓæP>®7¼èC¤ÿ©ý_/ø¿Ùÿüʩ{½ôÏþoöÔHÿìÿøf`ÿÝôÏþoÊ_7²õö|+\:20`À Ðÿu{Dã?û?¾8ÿ×@ÿâÿÊèÿB Êÿäþ¯´¿ÿËõ_sKfDúGÔÿâú/ÖÿÒHÿú_ÿA`ý/Ýô¨ÿÅñ£òU#Ò?¢þû@`ý/Ýô?¹ÿ«»ÿÀóÿå¯Ùú?ÀÿÅóþÂÁW
-èÿº=¢ñrÿW÷ü·>ãøÀ's S@ÿâÿbÿO¢ü#êqýÝ_ºéjÿWbzþ/Ãõ_¿nDúÜÿÕÿ
-ÇwÇêð¸¬rÇ[BDúGÔÿâúÖÿÒHÿú_ôBàù_Ýô¨ÿÅó(ÝÈÖÿþ/Îÿ!\:20`À Ðÿu{Dã?¢þëBàü_7ãôoB¬ç«M£ðñþ¯úïMæþô]Ñù¯Ê}¹-×OB\þ]ãÿsÆ0ÿâó_m«üaq,>×k=æÿùÿZþÜÿ ègÀ$%ÿßøñ¿y:Ë|»ØçË/ùzµ(Þ£Iöøó_ÍøLÆý?.̸ xý/ËÃÍ·Ö¿íèߦõ!pÖPÿ³Ñü?aÿO·0`À@aÀùÿðêõÿŶ8Vß&Ùã÷ÿOóÏþL 5óÊçÿêéß$\ÿ@ýëf´þÏ@Ñ{4
-òÿØzúOÿÈü 6òc6û?Ìÿõå?® Øðø:ù·!åø¡¾Ò, ¦þã
-
-êÿ¢ÿ£?ÕÿÊxþû?êF¦ÿ¸`Ãúï>ÿÕ£ëÿA`ÿGÝÈôW løù¿;þÛõÿ0X*_52ýÇ Ö¿ïè¿þóüöÔLÿqÀâÇÿÔRÿ¨~Ý×ÿ£
-
-è¿ãÿõ§ú)ý?ïÀwàdÀþß;@6þÇ k7ÿ÷)ý¿l`ûGÍHô ü_ ý_dùÚÿÕ½ÿÛ¸þýu#ÓÿÔþ¯®ÿÓeýNþ¯OCù¸ÞðF þ'ö½äÿæøáC^åÔ½^dúø¿xþû?êF¦ÿ©ý_®ïÿ¢ÿû?èF¦ÿó¿nëÿW÷qýÃ
#0ý_wlüÚÿÕÿû:àøóÝHôïþ/GÿYþ§ö¥ýý_®ÿB[:À4#Ó? þ×!°þndúÔÿâüëéF¦ÿã?Gå«F¦ÿë×ÿbÿO¬ÿ¥þ§öu÷Rëxþ¡üU#\ÿ¿~ý/ÿð²5®ÐÿuÈÆÿ©ý_Ýóß¾iÊñOæ, ¦þ
-ÂÿÅþdù¿~ý¯ë¿èþÒLÿû¿Ó÷qýůþ§öõÇÿã?»cux\VE¹ã@!2ýü_\ÿÀú_ºéPÿþO<ÿ«þõ¿xþå¯áúÿõý_ÿC¸pd0`À& ÿëÿú_¬ÿ óÝÔ¬åëFáQþ/ygéÿB0:ÿU¹/·åúIðAË¿kü. Ì?øüWÃ*XÏõåZ¹$ãgþßäß»ûÐý0`Ð0ãüÿæÄÿûÍÓ±XæÛÅ>_~É׫Eñ0ðM®ÇÿjÆÿ`Xÿ
-CsÒ"ÔK¼þåaæÛëßvôoÙÿů¡þ#fÿ¢ùâ©w0
-`ÀÂóÿÛóêõÿŶ8Vß&×ã÷ÿOóÏúÏ ©æÏÿ#Ô/Òqýõ¯Ñú?ûÿDïÑ(<®þSâ3ú? Dæÿäÿ´ú_Íþó}dùºþW·þ£
-ã?X L32ýú?òüöÔLÿþ¬ÿýu#Ó? þÇÊWLÿ×ïÿÈþØÿQ72ýêQÿ¨~Ý×ÿ¯^ÿ+Ðÿáù|~@è èÿ½=²ñêú_Ýù¿OéÿÅ`Û?jF¢ÿáÿòô!åÿúý× °ÿ£ndúÚÿÕõ²ÿ#ÿëÓæP>®7¼èC¦ÿý_/ø¿Yÿüʩ{½Èô}ÿWÂóxüS72ýú?Òÿ ýt#Ó?ÀÿÅù?Ê_7Âõÿëû¿8ÿpéÈ`ÀL@ÿ×íÿþ
ã?Îÿu#Ñ¿Cø¿2ú¿Èò?µÿ+íïÿrýÂÜÒ¦þõ¿¸þõ¿t#Ó? þçXÿK72ýêqüà¨|ÕÈô¨ÿÅþXÿK72ýOíÿêîÿ¤õúG`(Õ×ÿ¯ïÿâùaÍ`À«ôÝÙø?µÿ«{þÛ§&ãøÀ's SDÿáÿbÿO²üêqýÝ_ºébÿWbzþ¯ë¿(~ÝÈô?µÿ«?þ§ÿ!|Ü«Ãã²*Êo
-éPÿë?XÿK72ýêÑÿ çu#Ó? þÏ@ üu#\ÿ¿¾ÿó0ÀôÝÙø¨ÿÅú8ÿ×ÍHýǶ|¼ Qøxÿû¡~w ý_Fç¿*÷å¶\? >Ñù·Æ%ìÿ !>ÿÕæ°ÊÇâs}¹Öc.ÉÀøßÿ7ù÷õ_0Àú0`À ÆsþsâÇÿýæéX,óíb/¿äëÕ¢xx&×ãÏ5ã0ôÿbh*íRz×ÿ²<Ð|aýÛþmó?Ô? _7BýGÌþEóÿÄSÿî`À
çÿ·çÕëÿmq¬¾ÿM®ÇïÿæÿÞÐÿÁPªyåóÿõôd\ÿ@ýëf´þÏþ?Ñ{4
-«ÿøþù?ù?-ë½dùºþW·þ£
-ã?X L32ý_¿ÿcÊúØÿQ72ýú?²ÿ3öÔLÿ¬ÿõV°T¾jdúôäùìÿ¨þYÿë@õëF¸þÏú_oç;ð=ø0` ' ÿ÷öÈÆÿ©ëuçÿ>¥ÿ
-lÿ¨þc5
-ö9ú¿ÈòèÿÈõìÿ¨þ§öuë¿Ðÿ
âäÿú´9ë
-oúébÿ×þoÖÄð!¯rê^/2ý_ÓÿåÎþ/®ÿ@`ÿGÝÈôÍþ§óßu@ý#`ÿÝÈôðñüÊ_7Âõÿ+ú¿ÜÙÿÅþÏ.0` èÿº=²ñÿýÝÙÿÅçÿëF¢ð¥ô!åjÿWÚ÷Ñÿané ÓLÿׯÿñùëéF¦@ý/®ÿB`ý/ÝÈôýú_\ÿÁà¨|ÕÈô¨ÿÅþXÿK72ýOíÿr}ÿýßå¯áúÿõë±ÿ¿°f0`ÀÁUú¿nlüÚÿÕ=ÿíyþOæ, ¦þ
-ÂÿÅþdùÔÿâú/º¿t#ÓÿÄþ¯Äôû?rýůþ§öõÇÿã?»cux\VE¹ã@!2ýú?rýëéF¦ÿkÖÿúæÿ¢ÿÏÿêF¦@ý/ÿ@ùëF¸þ}ÿçÿ.0` èÿº=²ñÿõ¿¾ù¿Øÿçÿº§ÿ,ÒñuI£ðñþ¯úu&siBÿ±ù¯Ê}¹-×OB\þúÆ:Ëü#ε9¬òűø\_õþê;ÖÀ ègÀçÿ·&züßoÅ2ß.öùòK¾^-¡÷hR=þüשÿ1\ÿ`ãù/ÅDëYÆh¾Í°þ{ý?ÙÿG`ÝÈô3ûÌÿ]QÿîaÀ
çÿ7çµëÿmq¬Þ£IuÜópã?
-TÍëÿǨ_¤ÿzR@ý# þu3Vÿgûì=
Gùlâúïô\¸üì6öcÖÿ Ê\ù¯Èý¿pZÿOXÿ
-, ¦þãÊEö§õÖÅÀþºé?®üWdÿÇoã?û?C`ÿGÝôWþ+rýï¤ÿÔqü`©|ÕôWþ+²þw£ÿ@ÿöÔHÿqå¿ãj¨T¿ndëÿQå¿"ý¿áTÿ+áùÏwà»ð2`À@O@ÿïÍÿqå¿ó<Ç6ðø¯fúO þ/Ö Êÿäþ¯îýßë?ØÿQ7"ýOîÿêú?]fèÿpò}ÚÊÇõ7}ô?µÿëÿ·áøáC^åÔ½^DúGø¿xþû?êF¤ÿÉý_®çÿòôB`ÿÝôðyÎÿ!Pþºÿü_ÿCè820`À ÐÿusDãÿäþ¯îüßÏþO8ÿ×@ÿâÿ
-ô!årÿWÚ÷qýÂÜÒ¦þõ¿¸þõ¿t#Ò? þûÿb`ý/Ýôðqüà¨|Õô¨ÿÅþXÿK7"ýOîÿêîÿ¤&ðü?Cù«F¶þðñü#0ý_7G4þOîÿêÿöÁÿ|2g0Åôo þ/öÿ Ê?¢þ×!Ðý¥þ§ö%¦ïÿâú/_7"ýOîÿêÿã?»cux\VE¹ã@!"ý#ü_\ÿÀú_ºéQÿþO<ÿ«þýyþå¯Ùú?ÀÿÅù?#0ý_7G4þ#ê±þ'Îÿu3 ÿ]ù°µ{õh>Þÿå~HLºþ/còßüW´é¯E|þ³f¸`þÏý°-à=Çk¬çù/öGVÐÌxý×ýyÁ
-`Hÿ&3]ý{Ëõ?MV¢zo{ÌLúîôw_ã±þËYirþßÊêXïÞ?ËÜܽ+vÕê°]忯NßÀû¹y·-ùvÑ|`ê`qóweµ©§§¿µs;7Öe¼éÜãõÿuõµØýV
-Þc@ÿÆþøÏúÞýëI«ï^}ýTVùöoïO¤é<}ÿå§ÖþqX¾}½~
'³Ùå~=®_Ü<Möþ¾¬ßÿüÍ&Ozñ>îòöKêÏù¤õÅ¡zúã4dé¬ýS5ËÏùòKûEíü£Ø®þ-_¯ç8oæÆ]üù~ÿç/Ñü¶¶]¹k}ãiû·h¾ø)ÿ¼}~Åû\Úþþõ¿,~ÝÕ»ú5{éü©|Ü-W¿çåþø5?}Ý¿ø~ÙæÛÿÞ
yæ}ûÿ¾ZnóâëóÏ`g©½HÖ/¿îç|û>ê_×ç+¹h}nþW[¾úËãaÿÇWo¿ÿ?Ô¿¼þ\Æ¿ÇàüÏ%Ýû¿cý/6¼7Éûú¿ÿÿñÿÔ¢¢ÖÆ=^`@ÿÿÇIÿ û¿b¿YËSK>gÜ1ã¹kyÈߣÉtÜþO=%àúäG.ÅjfìóÞÿgýãóÞÿgýÉ<¬ñú¿âþö÷ÿyþÂûÿõ·OÐÚþã×Ùý7¾NÞ¼·ûo硽ûïüÜÎSöæÎfó4°äüý0^ÿàý®ÿB8oÉ&/îÿ;ûÇ~oÒÛÿ³ñ¤·ÿïS^¼ ³ÿoæ³Ô%¾õÎþ¿«ïHiÖþ^Úÿ¿xýÿ¤»ÿêÏ÷³öoÑÝÿ7OÚ/èìÿ7>7kÿ½ýÿz0»øûÿÉÐþ2´ÿôöÿMÙÅ:ûÿ¦&mÿ½ýÿúoÚ¹øÞþòÝýÿûÿ÷Ãøû?xÿç¿ ü¹ùÏýDÿ ÷ÿ9ÿðªí;0<{vkÆÿxÿ¯ñÿrÿïúÏÿ5÷ÿzëÿ6ðü/ã4waµ×?vÿÏQÿþÜÿ3ÎZç]ûøï¬NI0ý¿dfõ-£³ÿgsû.sÖ¤¿ÜÿËìÜ>õÝãõÝÿãþ?óLÖßÿ³é¼ub4ëÿóÖÚRÊúû6¤iû;t÷ÿfsöºûf6?ÃÀþ_6´ÿõöÿ45mì
ý¿õíïÐÛÿ3Ù,´ÞþµÉÅ
ØÿËöÿ²¡ý¿¬¿ÿçwq©ûû3\|Þþ_|ïíÿeßÝÿ˸ÿw?¿ÿc÷ÿRÖÐÚóûs#ÐPZZÿîÿqýÃÄú0`0&XÖÿásÆ3þïË㱨'Ò÷hýýý¬{þ×eôCH~4å¬ZÆè^Oâ÷
Öïüý:êÏÿëfìüߣÏÿgôÿ ðùÖ0ûg=43^ÿ`ÿÏAøÓÿãf³:)©»(ÿoìÜÙKPjçf¼àÿ¹¨þïR;ˬ_ÿÏlIB¿áý0^ÿ`ÿë?C8[2üPýß÷ÿ8´1¾ïÿ1>
-íïÐ;ÿofan[/èúqóÖÑz?Tÿßù|ÏÿcÒÙ̵ÎÿgvÖþ-ºþ´þ-ÛoÑóÿ¼ÛrÀÿãü?~Èÿã_8ÿ\þ=ÿO2K.ÒÝ÷ÿØÌµ_ð=ÿÿ®ÿÇÓÿs?¿ÿÏÿsýBÛÿÓª@-*!jýéÿáüÂØÍz02pôÿܱã@ÿO¸ÿ`|þÁçÿ¹þÁ$?V ×Ëxý_sÿ/pÿïFü¹ÿçë$÷¼Û÷|þ?I;õ¿gÎ¥¦×üÛ4ÛÛÞ4Ã;å¿3fs..ÝãõÞÿcÿç-0Tÿ;¼°ÿç\ëp~xaÿÏÚV{ïÐßÿ³mí9
~ýo7owÎCûahÿ/ô÷ÿì,dí¡¿ÿÚÐ~AoÿÏÍ2Û~~ýï]\¨ý¿0´ÿöÿBÿ¯ÎeÚþzû>Ë.®Cÿ/øl~oÿ/|wÿ/pÿï~ÿïÿñüÎùÿç- at jQ Që?Èý?®ÿ@¸ÎÊ>|?Xrÿïæÿ-úü_àþñùÿ£ÿÿs=Í×ÿ5÷ÿºõ_w¬ÿ¡µÿgMS?kÿ³MߤS <¸ÔZóÂÀìr0
-³àìrÐ&næi8¸Æëÿû½ýÿúFý#8oÉØ¡ó¶ßÿ×zÓÚ³½ý¿`;Eë½ý¿Ô¶KÛþþßÌÔ÷¤Ö^ØÿµZëÚïìÿ=¿¢·vcûRp]ü
-@¸ìâ×èo ÎRÛ~ÁÀ Ú ´Cö
àõýâÝ
-@Ó¾Öý
-ÀÔØöµþÞ ýî åàÝ0þþÞÿ£ÿÂsÁoöÿÕIÔú²ÿ/ë?A¸ÎÊ>ü·fìø¢Ïÿîÿ!ðù?Îÿ û#ûq*f¼þÁçÿèÿðçþõé<&iíÿ¥&¥³Îù¿Yâfóþî_ìþùYÈLÎù?ï²9Îßãõ>ÿÇþoÎ;2éÐþ_Ú?ÿçö~PÚ?ÿ¶_ÐßÿËlëa:tþ/}iÿ¯½õÿKûÛMuÏö^8ÿ7¿øúçÿ.ê ¦/lÿYkÛ?äÀö_:´ýmÿ¥ýí?ïÌE
.zÛ.±¿Åõ?çéþÞö_úÝí¿Û÷Ãøû?xÿëÿúýO{Ô¢¢Öçÿ¸þáJ+û0`ð½À%<ÿwsÆÿ}þ/åþñùÿcý)û¿ªf¼þÁýÿxþBëü_H²Ä¸öþIRçý¼Óÿ¯ÙH_8þ.ÿÍ6]n Îf3ÇzÃwÄxý÷ÿxþÂyKÆ
-íÿ¹îþIÂÉåÚû~æs×þÝý¿Ô¦¾µÿçzû& I«æ¤ªÿéöÿ\wÿÏû좡Úÿs½ý?»xÁûÙÅuØÿsCûnhÿϽPÿ³9vÝ~AoÿoöuèíÿÙ$ÍÚ/øÞþûîþãþßý0þþÞÿ£ÿÂsÿӶÏÿ©#jý¹ÿÇù«¬ì3`ÀÁP°ä3ÿ3þoòãbW¾æÛÅ×Õ×òðùMªãö¬M¹ÿ!áþ!B!B!B!B!ò_ÿ4¦
-
\ No newline at end of file
Deleted: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16ia64-8n2s.tar.gz.output
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16ia64-8n2s.tar.gz.output 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/16ia64-8n2s.tar.gz.output 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,117 +0,0 @@
-Machine (phys=0 total=48346688KB)
- Group0 #0 (total=24182720KB)
- NUMANode #0 (phys=0 local=6045632KB total=6045632KB)
- Socket #0 (phys=0)
- L3Cache #0 (9216KB)
- L2Cache #0 (256KB)
- L1Cache #0 (16KB)
- Core #0 (phys=0)
- PU #0 (phys=0)
- Socket #1 (phys=0)
- L3Cache #1 (9216KB)
- L2Cache #1 (256KB)
- L1Cache #1 (16KB)
- Core #1 (phys=0)
- PU #1 (phys=1)
- NUMANode #1 (phys=1 local=6045696KB total=6045696KB)
- Socket #2 (phys=512)
- L3Cache #2 (9216KB)
- L2Cache #2 (256KB)
- L1Cache #2 (16KB)
- Core #2 (phys=0)
- PU #2 (phys=2)
- Socket #3 (phys=512)
- L3Cache #3 (9216KB)
- L2Cache #3 (256KB)
- L1Cache #3 (16KB)
- Core #3 (phys=0)
- PU #3 (phys=3)
- NUMANode #2 (phys=2 local=6045696KB total=6045696KB)
- Socket #4 (phys=1024)
- L3Cache #4 (9216KB)
- L2Cache #4 (256KB)
- L1Cache #4 (16KB)
- Core #4 (phys=0)
- PU #4 (phys=4)
- Socket #5 (phys=1024)
- L3Cache #5 (9216KB)
- L2Cache #5 (256KB)
- L1Cache #5 (16KB)
- Core #5 (phys=0)
- PU #5 (phys=5)
- NUMANode #3 (phys=3 local=6045696KB total=6045696KB)
- Socket #6 (phys=1536)
- L3Cache #6 (9216KB)
- L2Cache #6 (256KB)
- L1Cache #6 (16KB)
- Core #6 (phys=0)
- PU #6 (phys=6)
- Socket #7 (phys=1536)
- L3Cache #7 (9216KB)
- L2Cache #7 (256KB)
- L1Cache #7 (16KB)
- Core #7 (phys=0)
- PU #7 (phys=7)
- Group0 #1 (total=24163968KB)
- NUMANode #4 (phys=4 local=6045696KB total=6045696KB)
- Socket #8 (phys=2048)
- L3Cache #8 (9216KB)
- L2Cache #8 (256KB)
- L1Cache #8 (16KB)
- Core #8 (phys=0)
- PU #8 (phys=8)
- Socket #9 (phys=2048)
- L3Cache #9 (9216KB)
- L2Cache #9 (256KB)
- L1Cache #9 (16KB)
- Core #9 (phys=0)
- PU #9 (phys=9)
- NUMANode #5 (phys=5 local=6045632KB total=6045632KB)
- Socket #10 (phys=2560)
- L3Cache #10 (9216KB)
- L2Cache #10 (256KB)
- L1Cache #10 (16KB)
- Core #10 (phys=0)
- PU #10 (phys=10)
- Socket #11 (phys=2560)
- L3Cache #11 (9216KB)
- L2Cache #11 (256KB)
- L1Cache #11 (16KB)
- Core #11 (phys=0)
- PU #11 (phys=11)
- NUMANode #6 (phys=6 local=6045696KB total=6045696KB)
- Socket #12 (phys=3072)
- L3Cache #12 (9216KB)
- L2Cache #12 (256KB)
- L1Cache #12 (16KB)
- Core #12 (phys=0)
- PU #12 (phys=12)
- Socket #13 (phys=3072)
- L3Cache #13 (9216KB)
- L2Cache #13 (256KB)
- L1Cache #13 (16KB)
- Core #13 (phys=0)
- PU #13 (phys=13)
- NUMANode #7 (phys=7 local=6026944KB total=6026944KB)
- Socket #14 (phys=3584)
- L3Cache #14 (9216KB)
- L2Cache #14 (256KB)
- L1Cache #14 (16KB)
- Core #14 (phys=0)
- PU #14 (phys=14)
- Socket #15 (phys=3584)
- L3Cache #15 (9216KB)
- L2Cache #15 (256KB)
- L1Cache #15 (16KB)
- Core #15 (phys=0)
- PU #15 (phys=15)
-depth 0: 1 Machine (type #1)
- depth 1: 2 Groups (type #7)
- depth 2: 8 NUMANodes (type #2)
- depth 3: 16 Sockets (type #3)
- depth 4: 16 Caches (type #4)
- depth 5: 16 Caches (type #4)
- depth 6: 16 Caches (type #4)
- depth 7: 16 Cores (type #5)
- depth 8: 16 PUs (type #6)
-Topology not from this system
Copied: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/1alpha.output (from rev 7493, mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/1alpha.tar.gz.output)
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/1alpha.output (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/1alpha.output 2010-11-24 09:21:55 UTC (rev 7494)
@@ -0,0 +1,5 @@
+Machine (phys=0 local=8299024KB total=8299024KB Backend=Linux)
+ PU #0 (phys=0)
+depth 0: 1 Machine (type #1)
+ depth 1: 1 PU (type #6)
+Topology not from this system
Added: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/1alpha.tar.bz2
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/1alpha.tar.bz2 (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/1alpha.tar.bz2 2010-11-24 09:21:55 UTC (rev 7494)
@@ -0,0 +1,14 @@
+BZh91AY&SYæ%I µ¥ÿô Hgÿò?_ªÿïÿð P§½k=ÞõzJ!F4y&GPÈê4 204©íSÒi¦ji h I¢4=!ê4h¦ 4´¤)êz!µ4Ðѵ4 d Ð I4Ð54zG¦µ h Ð
+2mKÈ_1W&,&C"Ä"ME¥µ
+¨H<ÇäZbj`LM"WaÛND=ê®;·S^Àäqâ_eµÑTk½Ú2ýÔ+ª^¹¨,ß6Ýw»
+6¦§I#©ZV¬ %¦Ñ(H7(«¥(sÁ°I O¥S²
+,x4ãÎéÂó´Æ´Äâzk"-Ì@aí¢Br%d®CÒcjÚÙòRÔË
+Ó6hlfªªf¡¾C=Faß¡²Uú#v ÆZ"ßÊUlé{õêpá<2¸© ( °@ Jħj$ÅkFÒ·Æt|=ç7ÍôÚäÊ}Øj\0³9bÐÛj ,§°l7¦0^LeàÌøu©/{Õ«¸B&¸qE~}ýHteÔ|GxL0q.¬@ÆÔ2ÀÉÜÐÊ:Øm³ mÔMHz,®b£9a¤ÈNéµ`ȵDdªè3pç#Bn%!ο¶ô ÕÊXqr!ó!I=û»E2)GFÀ¼K°1fEpÂFÚ¸{ê&`!é
ùâñ`1 at dufפ!bÆÕË9ÔaÂA.
+Ú¦×fyZðåQÑDÐÙduBd/+"
+)eK!»sÂöWµªG?»úàï(×ÈjvÍ| TÔ¡º[ ,ë-ù_£¤iÓ ½f"ÃÅ
+Vפu¯ù0`XÖ<ÚR¯«±3Óó`¥ó
+sÅbY$¥ª9êF¶²89ruâ³ûY°ÅFGÿ¤ÛA¸Ìm¨g
+±DBùl¡àµ=ÉKÝË8õÅÏABv ŶVÂq4sðL-8K(> HÄMOmôB¢¢¤Õ85}
+ì;#G[}3ße0ïÚ Mq¼· l*ÅÆêÃrâÃ!IïzWg½;§
+rRØI5¹RIûå2ÅåíHFb+ÓôjzrÆ&a½ª¬µ´mÄ«¢ ¡Ä¦R-)é0²29Íòi*f®÷£ó¤*S\£¥½¬lÆÄC89bqF-vxH·È?K³½UDi!$Gª*F4|Ïy #óßy'µDá1Cë0Èî *¡1ÜÓ}Ò+ã::Qµä¥)Izغ³\8s«Ã.Ò0/âîH§
+Ä©
\ No newline at end of file
Deleted: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/1alpha.tar.gz
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/1alpha.tar.gz 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/1alpha.tar.gz 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,7 +0,0 @@
- ¡Õ9K í×aOÜ6ÀqÞ6ÂÒÞ´£±ã$R_ mµneªtª©òå|ËÝíõÓÏI¸®k¥BµõïàØ±ó8Î!m9?³·î²¾¤qÜ}Ê4ûc©uÿ¹*[RF¡ÿIî^Ê8N¶D|§£ZEÓÚZÑéì´,ªOçêæ>t¿Eù׳üÎÁç_ÅJÿû(ëùÏç¢Ì¾ú5º'C¾?©¢èFþµýó~õ|¤|çù÷9ðàÁ®ØëAàÄt6veWõìuböûº[¶-fUWöUµ»(UMØ×øTØRTéÈÕ¾öç½(C,hM릢]Î]wþqÑÚê²òºï]ñª..lë\}ܼʪòæ
öþ¤_FIù2/Ôî¯
«ò¥xóÓ?ý~CY-6´ÅÔÕ9%Tz'¹=u¢)>8ñf´l]ÓÅÌT0?[6;Âǵk1*ÚÆG´¦öýP½#¹ÍøÁ׫8ög§³Ã¯º±+©esWW®ÊÅiåÆÂæy?¾Ô$&âá<2JYbu¢·/ìU䩪Rn=Þê'¢Ì?Ma6ô¤ú)çÎ7é:Òw2£ôQ0/m;Õþ^¶uQ^#W_ø~éXvADý
-hÄØµ.oݸ;5
-^Jñ"·ùYÎDÿ²-ÔïìrÛÿ=þ1rÝOÿå%®N¨Ûàe´yüïÿS7ý&ûìÿ¾µÿ+öÿû(nz<km¹+VŨ,ó[¡8ß|ìyíÜUH4Ñi¦ºØþb2ñ7ä:&3ÙǺ§x¼Ö,JO¬ébGïìüV\°íåmq±~9¥¢¤½¨ìfT*¦Ê\·{h«YõhW~Ç6ëíÖ£©Éµv¢tCDûÝSí.£~ÎLÔÏï¤òo¥¼µ£rm°rça9ËÏoLî2ÖÍ}ãfË,3£/c7{-ö´¨Ûåf]¢úqþ^Ùü|3>ÜO?åWþu¶%eÌC;ߦLâ!·G¥mFL$éûÍå¥-¦W©1I<Ì浪èîZKÙǺqwÖ#2ÝÏï×çGoOªæÆ
-æ°?[T¹»5ùpcîÇÓùÍv³é´h_þ×J¤õ÷!æßeo÷VíüëyÈíë©-}
-¯Ód"?¿aM¬b'ÍõóûÔÐç*vp¶¨ÎWíR©~,ßúÿTYßÿ}Ú»¸Æ'÷ÿE«äÆþi±ÿßG龸û'?Ld¦SáwþHg"QÒø}>ÚïÛþ_1ÿµ9ò{Cwߥö/ ÿ õ_üÃj¯?£}QµµSÏdZúª¨«ö
-eÿ8É|0Óáå±ÿIµ?ÖqJsu,S?F%¿ ÀD·ï[¡¤N¥Y0j©RÅ&ÔqgÁ¼å®i\#
-ÓDõÍÛzQUEu*¢Õñ¨åçnìûÛ¢P(ÿ}ù#p¢
\ No newline at end of file
Deleted: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/1alpha.tar.gz.output
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/1alpha.tar.gz.output 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/1alpha.tar.gz.output 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,5 +0,0 @@
-Machine (phys=0 local=8299024KB total=8299024KB)
- PU #0 (phys=0)
-depth 0: 1 Machine (type #1)
- depth 1: 1 PU (type #6)
-Topology not from this system
Copied: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/256ia64-64n2s2c.output (from rev 7493, mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/256ia64-64n2s2c.tar.gz.output)
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/256ia64-64n2s2c.output (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/256ia64-64n2s2c.output 2010-11-24 09:21:55 UTC (rev 7494)
@@ -0,0 +1,733 @@
+Machine (phys=0 total=516912176KB Backend=Linux)
+ Group1 #0 (total=129224048KB)
+ Group0 #0 (total=32296336KB)
+ NUMANode #0 (phys=0 local=8064400KB total=8064400KB)
+ Socket #0 (phys=0)
+ Core #0 (phys=0)
+ PU #0 (phys=0)
+ Core #1 (phys=1)
+ PU #1 (phys=1)
+ Socket #1 (phys=3)
+ Core #2 (phys=0)
+ PU #2 (phys=2)
+ Core #3 (phys=1)
+ PU #3 (phys=3)
+ NUMANode #1 (phys=1 local=8077312KB total=8077312KB)
+ Socket #2 (phys=512)
+ Core #4 (phys=0)
+ PU #4 (phys=4)
+ Core #5 (phys=1)
+ PU #5 (phys=5)
+ Socket #3 (phys=515)
+ Core #6 (phys=0)
+ PU #6 (phys=6)
+ Core #7 (phys=1)
+ PU #7 (phys=7)
+ NUMANode #2 (phys=2 local=8077312KB total=8077312KB)
+ Socket #4 (phys=1024)
+ Core #8 (phys=0)
+ PU #8 (phys=8)
+ Core #9 (phys=1)
+ PU #9 (phys=9)
+ Socket #5 (phys=1027)
+ Core #10 (phys=0)
+ PU #10 (phys=10)
+ Core #11 (phys=1)
+ PU #11 (phys=11)
+ NUMANode #3 (phys=3 local=8077312KB total=8077312KB)
+ Socket #6 (phys=1536)
+ Core #12 (phys=0)
+ PU #12 (phys=12)
+ Core #13 (phys=1)
+ PU #13 (phys=13)
+ Socket #7 (phys=1539)
+ Core #14 (phys=0)
+ PU #14 (phys=14)
+ Core #15 (phys=1)
+ PU #15 (phys=15)
+ Group0 #1 (total=32309232KB)
+ NUMANode #4 (phys=4 local=8077312KB total=8077312KB)
+ Socket #8 (phys=2048)
+ Core #16 (phys=0)
+ PU #16 (phys=16)
+ Core #17 (phys=1)
+ PU #17 (phys=17)
+ Socket #9 (phys=2051)
+ Core #18 (phys=0)
+ PU #18 (phys=18)
+ Core #19 (phys=1)
+ PU #19 (phys=19)
+ NUMANode #5 (phys=5 local=8077312KB total=8077312KB)
+ Socket #10 (phys=2560)
+ Core #20 (phys=0)
+ PU #20 (phys=20)
+ Core #21 (phys=1)
+ PU #21 (phys=21)
+ Socket #11 (phys=2563)
+ Core #22 (phys=0)
+ PU #22 (phys=22)
+ Core #23 (phys=1)
+ PU #23 (phys=23)
+ NUMANode #6 (phys=6 local=8077296KB total=8077296KB)
+ Socket #12 (phys=3072)
+ Core #24 (phys=0)
+ PU #24 (phys=24)
+ Core #25 (phys=1)
+ PU #25 (phys=25)
+ Socket #13 (phys=3075)
+ Core #26 (phys=0)
+ PU #26 (phys=26)
+ Core #27 (phys=1)
+ PU #27 (phys=27)
+ NUMANode #7 (phys=7 local=8077312KB total=8077312KB)
+ Socket #14 (phys=3584)
+ Core #28 (phys=0)
+ PU #28 (phys=28)
+ Core #29 (phys=1)
+ PU #29 (phys=29)
+ Socket #15 (phys=3587)
+ Core #30 (phys=0)
+ PU #30 (phys=30)
+ Core #31 (phys=1)
+ PU #31 (phys=31)
+ Group0 #2 (total=32309248KB)
+ NUMANode #8 (phys=8 local=8077312KB total=8077312KB)
+ Socket #16 (phys=4096)
+ Core #32 (phys=0)
+ PU #32 (phys=32)
+ Core #33 (phys=1)
+ PU #33 (phys=33)
+ Socket #17 (phys=4099)
+ Core #34 (phys=0)
+ PU #34 (phys=34)
+ Core #35 (phys=1)
+ PU #35 (phys=35)
+ NUMANode #9 (phys=9 local=8077312KB total=8077312KB)
+ Socket #18 (phys=4608)
+ Core #36 (phys=0)
+ PU #36 (phys=36)
+ Core #37 (phys=1)
+ PU #37 (phys=37)
+ Socket #19 (phys=4611)
+ Core #38 (phys=0)
+ PU #38 (phys=38)
+ Core #39 (phys=1)
+ PU #39 (phys=39)
+ NUMANode #10 (phys=10 local=8077312KB total=8077312KB)
+ Socket #20 (phys=5120)
+ Core #40 (phys=0)
+ PU #40 (phys=40)
+ Core #41 (phys=1)
+ PU #41 (phys=41)
+ Socket #21 (phys=5123)
+ Core #42 (phys=0)
+ PU #42 (phys=42)
+ Core #43 (phys=1)
+ PU #43 (phys=43)
+ NUMANode #11 (phys=11 local=8077312KB total=8077312KB)
+ Socket #22 (phys=5632)
+ Core #44 (phys=0)
+ PU #44 (phys=44)
+ Core #45 (phys=1)
+ PU #45 (phys=45)
+ Socket #23 (phys=5635)
+ Core #46 (phys=0)
+ PU #46 (phys=46)
+ Core #47 (phys=1)
+ PU #47 (phys=47)
+ Group0 #3 (total=32309232KB)
+ NUMANode #12 (phys=12 local=8077312KB total=8077312KB)
+ Socket #24 (phys=6144)
+ Core #48 (phys=0)
+ PU #48 (phys=48)
+ Core #49 (phys=1)
+ PU #49 (phys=49)
+ Socket #25 (phys=6147)
+ Core #50 (phys=0)
+ PU #50 (phys=50)
+ Core #51 (phys=1)
+ PU #51 (phys=51)
+ NUMANode #13 (phys=13 local=8077312KB total=8077312KB)
+ Socket #26 (phys=6656)
+ Core #52 (phys=0)
+ PU #52 (phys=52)
+ Core #53 (phys=1)
+ PU #53 (phys=53)
+ Socket #27 (phys=6659)
+ Core #54 (phys=0)
+ PU #54 (phys=54)
+ Core #55 (phys=1)
+ PU #55 (phys=55)
+ NUMANode #14 (phys=14 local=8077296KB total=8077296KB)
+ Socket #28 (phys=7168)
+ Core #56 (phys=0)
+ PU #56 (phys=56)
+ Core #57 (phys=1)
+ PU #57 (phys=57)
+ Socket #29 (phys=7171)
+ Core #58 (phys=0)
+ PU #58 (phys=58)
+ Core #59 (phys=1)
+ PU #59 (phys=59)
+ NUMANode #15 (phys=15 local=8077312KB total=8077312KB)
+ Socket #30 (phys=7680)
+ Core #60 (phys=0)
+ PU #60 (phys=60)
+ Core #61 (phys=1)
+ PU #61 (phys=61)
+ Socket #31 (phys=7683)
+ Core #62 (phys=0)
+ PU #62 (phys=62)
+ Core #63 (phys=1)
+ PU #63 (phys=63)
+ Group1 #1 (total=129236960KB)
+ Group0 #4 (total=32309248KB)
+ NUMANode #16 (phys=16 local=8077312KB total=8077312KB)
+ Socket #32 (phys=8192)
+ Core #64 (phys=0)
+ PU #64 (phys=64)
+ Core #65 (phys=1)
+ PU #65 (phys=65)
+ Socket #33 (phys=8195)
+ Core #66 (phys=0)
+ PU #66 (phys=66)
+ Core #67 (phys=1)
+ PU #67 (phys=67)
+ NUMANode #17 (phys=17 local=8077312KB total=8077312KB)
+ Socket #34 (phys=8704)
+ Core #68 (phys=0)
+ PU #68 (phys=68)
+ Core #69 (phys=1)
+ PU #69 (phys=69)
+ Socket #35 (phys=8707)
+ Core #70 (phys=0)
+ PU #70 (phys=70)
+ Core #71 (phys=1)
+ PU #71 (phys=71)
+ NUMANode #18 (phys=18 local=8077312KB total=8077312KB)
+ Socket #36 (phys=9216)
+ Core #72 (phys=0)
+ PU #72 (phys=72)
+ Core #73 (phys=1)
+ PU #73 (phys=73)
+ Socket #37 (phys=9219)
+ Core #74 (phys=0)
+ PU #74 (phys=74)
+ Core #75 (phys=1)
+ PU #75 (phys=75)
+ NUMANode #19 (phys=19 local=8077312KB total=8077312KB)
+ Socket #38 (phys=9728)
+ Core #76 (phys=0)
+ PU #76 (phys=76)
+ Core #77 (phys=1)
+ PU #77 (phys=77)
+ Socket #39 (phys=9731)
+ Core #78 (phys=0)
+ PU #78 (phys=78)
+ Core #79 (phys=1)
+ PU #79 (phys=79)
+ Group0 #5 (total=32309232KB)
+ NUMANode #20 (phys=20 local=8077312KB total=8077312KB)
+ Socket #40 (phys=10240)
+ Core #80 (phys=0)
+ PU #80 (phys=80)
+ Core #81 (phys=1)
+ PU #81 (phys=81)
+ Socket #41 (phys=10243)
+ Core #82 (phys=0)
+ PU #82 (phys=82)
+ Core #83 (phys=1)
+ PU #83 (phys=83)
+ NUMANode #21 (phys=21 local=8077312KB total=8077312KB)
+ Socket #42 (phys=10752)
+ Core #84 (phys=0)
+ PU #84 (phys=84)
+ Core #85 (phys=1)
+ PU #85 (phys=85)
+ Socket #43 (phys=10755)
+ Core #86 (phys=0)
+ PU #86 (phys=86)
+ Core #87 (phys=1)
+ PU #87 (phys=87)
+ NUMANode #22 (phys=22 local=8077296KB total=8077296KB)
+ Socket #44 (phys=11264)
+ Core #88 (phys=0)
+ PU #88 (phys=88)
+ Core #89 (phys=1)
+ PU #89 (phys=89)
+ Socket #45 (phys=11267)
+ Core #90 (phys=0)
+ PU #90 (phys=90)
+ Core #91 (phys=1)
+ PU #91 (phys=91)
+ NUMANode #23 (phys=23 local=8077312KB total=8077312KB)
+ Socket #46 (phys=11776)
+ Core #92 (phys=0)
+ PU #92 (phys=92)
+ Core #93 (phys=1)
+ PU #93 (phys=93)
+ Socket #47 (phys=11779)
+ Core #94 (phys=0)
+ PU #94 (phys=94)
+ Core #95 (phys=1)
+ PU #95 (phys=95)
+ Group0 #6 (total=32309248KB)
+ NUMANode #24 (phys=24 local=8077312KB total=8077312KB)
+ Socket #48 (phys=12288)
+ Core #96 (phys=0)
+ PU #96 (phys=96)
+ Core #97 (phys=1)
+ PU #97 (phys=97)
+ Socket #49 (phys=12291)
+ Core #98 (phys=0)
+ PU #98 (phys=98)
+ Core #99 (phys=1)
+ PU #99 (phys=99)
+ NUMANode #25 (phys=25 local=8077312KB total=8077312KB)
+ Socket #50 (phys=12800)
+ Core #100 (phys=0)
+ PU #100 (phys=100)
+ Core #101 (phys=1)
+ PU #101 (phys=101)
+ Socket #51 (phys=12803)
+ Core #102 (phys=0)
+ PU #102 (phys=102)
+ Core #103 (phys=1)
+ PU #103 (phys=103)
+ NUMANode #26 (phys=26 local=8077312KB total=8077312KB)
+ Socket #52 (phys=13312)
+ Core #104 (phys=0)
+ PU #104 (phys=104)
+ Core #105 (phys=1)
+ PU #105 (phys=105)
+ Socket #53 (phys=13315)
+ Core #106 (phys=0)
+ PU #106 (phys=106)
+ Core #107 (phys=1)
+ PU #107 (phys=107)
+ NUMANode #27 (phys=27 local=8077312KB total=8077312KB)
+ Socket #54 (phys=13824)
+ Core #108 (phys=0)
+ PU #108 (phys=108)
+ Core #109 (phys=1)
+ PU #109 (phys=109)
+ Socket #55 (phys=13827)
+ Core #110 (phys=0)
+ PU #110 (phys=110)
+ Core #111 (phys=1)
+ PU #111 (phys=111)
+ Group0 #7 (total=32309232KB)
+ NUMANode #28 (phys=28 local=8077312KB total=8077312KB)
+ Socket #56 (phys=14336)
+ Core #112 (phys=0)
+ PU #112 (phys=112)
+ Core #113 (phys=1)
+ PU #113 (phys=113)
+ Socket #57 (phys=14339)
+ Core #114 (phys=0)
+ PU #114 (phys=114)
+ Core #115 (phys=1)
+ PU #115 (phys=115)
+ NUMANode #29 (phys=29 local=8077296KB total=8077296KB)
+ Socket #58 (phys=14848)
+ Core #116 (phys=0)
+ PU #116 (phys=116)
+ Core #117 (phys=1)
+ PU #117 (phys=117)
+ Socket #59 (phys=14851)
+ Core #118 (phys=0)
+ PU #118 (phys=118)
+ Core #119 (phys=1)
+ PU #119 (phys=119)
+ NUMANode #30 (phys=30 local=8077312KB total=8077312KB)
+ Socket #60 (phys=15360)
+ Core #120 (phys=0)
+ PU #120 (phys=120)
+ Core #121 (phys=1)
+ PU #121 (phys=121)
+ Socket #61 (phys=15363)
+ Core #122 (phys=0)
+ PU #122 (phys=122)
+ Core #123 (phys=1)
+ PU #123 (phys=123)
+ NUMANode #31 (phys=31 local=8077312KB total=8077312KB)
+ Socket #62 (phys=15872)
+ Core #124 (phys=0)
+ PU #124 (phys=124)
+ Core #125 (phys=1)
+ PU #125 (phys=125)
+ Socket #63 (phys=15875)
+ Core #126 (phys=0)
+ PU #126 (phys=126)
+ Core #127 (phys=1)
+ PU #127 (phys=127)
+ Group1 #2 (total=129236960KB)
+ Group0 #8 (total=32309248KB)
+ NUMANode #32 (phys=32 local=8077312KB total=8077312KB)
+ Socket #64 (phys=16384)
+ Core #128 (phys=0)
+ PU #128 (phys=128)
+ Core #129 (phys=1)
+ PU #129 (phys=129)
+ Socket #65 (phys=16387)
+ Core #130 (phys=0)
+ PU #130 (phys=130)
+ Core #131 (phys=1)
+ PU #131 (phys=131)
+ NUMANode #33 (phys=33 local=8077312KB total=8077312KB)
+ Socket #66 (phys=16896)
+ Core #132 (phys=0)
+ PU #132 (phys=132)
+ Core #133 (phys=1)
+ PU #133 (phys=133)
+ Socket #67 (phys=16899)
+ Core #134 (phys=0)
+ PU #134 (phys=134)
+ Core #135 (phys=1)
+ PU #135 (phys=135)
+ NUMANode #34 (phys=34 local=8077312KB total=8077312KB)
+ Socket #68 (phys=17408)
+ Core #136 (phys=0)
+ PU #136 (phys=136)
+ Core #137 (phys=1)
+ PU #137 (phys=137)
+ Socket #69 (phys=17411)
+ Core #138 (phys=0)
+ PU #138 (phys=138)
+ Core #139 (phys=1)
+ PU #139 (phys=139)
+ NUMANode #35 (phys=35 local=8077312KB total=8077312KB)
+ Socket #70 (phys=17920)
+ Core #140 (phys=0)
+ PU #140 (phys=140)
+ Core #141 (phys=1)
+ PU #141 (phys=141)
+ Socket #71 (phys=17923)
+ Core #142 (phys=0)
+ PU #142 (phys=142)
+ Core #143 (phys=1)
+ PU #143 (phys=143)
+ Group0 #9 (total=32309232KB)
+ NUMANode #36 (phys=36 local=8077312KB total=8077312KB)
+ Socket #72 (phys=18432)
+ Core #144 (phys=0)
+ PU #144 (phys=144)
+ Core #145 (phys=1)
+ PU #145 (phys=145)
+ Socket #73 (phys=18435)
+ Core #146 (phys=0)
+ PU #146 (phys=146)
+ Core #147 (phys=1)
+ PU #147 (phys=147)
+ NUMANode #37 (phys=37 local=8077296KB total=8077296KB)
+ Socket #74 (phys=18944)
+ Core #148 (phys=0)
+ PU #148 (phys=148)
+ Core #149 (phys=1)
+ PU #149 (phys=149)
+ Socket #75 (phys=18947)
+ Core #150 (phys=0)
+ PU #150 (phys=150)
+ Core #151 (phys=1)
+ PU #151 (phys=151)
+ NUMANode #38 (phys=38 local=8077312KB total=8077312KB)
+ Socket #76 (phys=19456)
+ Core #152 (phys=0)
+ PU #152 (phys=152)
+ Core #153 (phys=1)
+ PU #153 (phys=153)
+ Socket #77 (phys=19459)
+ Core #154 (phys=0)
+ PU #154 (phys=154)
+ Core #155 (phys=1)
+ PU #155 (phys=155)
+ NUMANode #39 (phys=39 local=8077312KB total=8077312KB)
+ Socket #78 (phys=19968)
+ Core #156 (phys=0)
+ PU #156 (phys=156)
+ Core #157 (phys=1)
+ PU #157 (phys=157)
+ Socket #79 (phys=19971)
+ Core #158 (phys=0)
+ PU #158 (phys=158)
+ Core #159 (phys=1)
+ PU #159 (phys=159)
+ Group0 #10 (total=32309248KB)
+ NUMANode #40 (phys=40 local=8077312KB total=8077312KB)
+ Socket #80 (phys=20480)
+ Core #160 (phys=0)
+ PU #160 (phys=160)
+ Core #161 (phys=1)
+ PU #161 (phys=161)
+ Socket #81 (phys=20483)
+ Core #162 (phys=0)
+ PU #162 (phys=162)
+ Core #163 (phys=1)
+ PU #163 (phys=163)
+ NUMANode #41 (phys=41 local=8077312KB total=8077312KB)
+ Socket #82 (phys=20992)
+ Core #164 (phys=0)
+ PU #164 (phys=164)
+ Core #165 (phys=1)
+ PU #165 (phys=165)
+ Socket #83 (phys=20995)
+ Core #166 (phys=0)
+ PU #166 (phys=166)
+ Core #167 (phys=1)
+ PU #167 (phys=167)
+ NUMANode #42 (phys=42 local=8077312KB total=8077312KB)
+ Socket #84 (phys=21504)
+ Core #168 (phys=0)
+ PU #168 (phys=168)
+ Core #169 (phys=1)
+ PU #169 (phys=169)
+ Socket #85 (phys=21507)
+ Core #170 (phys=0)
+ PU #170 (phys=170)
+ Core #171 (phys=1)
+ PU #171 (phys=171)
+ NUMANode #43 (phys=43 local=8077312KB total=8077312KB)
+ Socket #86 (phys=22016)
+ Core #172 (phys=0)
+ PU #172 (phys=172)
+ Core #173 (phys=1)
+ PU #173 (phys=173)
+ Socket #87 (phys=22019)
+ Core #174 (phys=0)
+ PU #174 (phys=174)
+ Core #175 (phys=1)
+ PU #175 (phys=175)
+ Group0 #11 (total=32309232KB)
+ NUMANode #44 (phys=44 local=8077312KB total=8077312KB)
+ Socket #88 (phys=22528)
+ Core #176 (phys=0)
+ PU #176 (phys=176)
+ Core #177 (phys=1)
+ PU #177 (phys=177)
+ Socket #89 (phys=22531)
+ Core #178 (phys=0)
+ PU #178 (phys=178)
+ Core #179 (phys=1)
+ PU #179 (phys=179)
+ NUMANode #45 (phys=45 local=8077296KB total=8077296KB)
+ Socket #90 (phys=23040)
+ Core #180 (phys=0)
+ PU #180 (phys=180)
+ Core #181 (phys=1)
+ PU #181 (phys=181)
+ Socket #91 (phys=23043)
+ Core #182 (phys=0)
+ PU #182 (phys=182)
+ Core #183 (phys=1)
+ PU #183 (phys=183)
+ NUMANode #46 (phys=46 local=8077312KB total=8077312KB)
+ Socket #92 (phys=23552)
+ Core #184 (phys=0)
+ PU #184 (phys=184)
+ Core #185 (phys=1)
+ PU #185 (phys=185)
+ Socket #93 (phys=23555)
+ Core #186 (phys=0)
+ PU #186 (phys=186)
+ Core #187 (phys=1)
+ PU #187 (phys=187)
+ NUMANode #47 (phys=47 local=8077312KB total=8077312KB)
+ Socket #94 (phys=24064)
+ Core #188 (phys=0)
+ PU #188 (phys=188)
+ Core #189 (phys=1)
+ PU #189 (phys=189)
+ Socket #95 (phys=24067)
+ Core #190 (phys=0)
+ PU #190 (phys=190)
+ Core #191 (phys=1)
+ PU #191 (phys=191)
+ Group1 #3 (total=129214208KB)
+ Group0 #12 (total=32309248KB)
+ NUMANode #48 (phys=48 local=8077312KB total=8077312KB)
+ Socket #96 (phys=24576)
+ Core #192 (phys=0)
+ PU #192 (phys=192)
+ Core #193 (phys=1)
+ PU #193 (phys=193)
+ Socket #97 (phys=24579)
+ Core #194 (phys=0)
+ PU #194 (phys=194)
+ Core #195 (phys=1)
+ PU #195 (phys=195)
+ NUMANode #49 (phys=49 local=8077312KB total=8077312KB)
+ Socket #98 (phys=25088)
+ Core #196 (phys=0)
+ PU #196 (phys=196)
+ Core #197 (phys=1)
+ PU #197 (phys=197)
+ Socket #99 (phys=25091)
+ Core #198 (phys=0)
+ PU #198 (phys=198)
+ Core #199 (phys=1)
+ PU #199 (phys=199)
+ NUMANode #50 (phys=50 local=8077312KB total=8077312KB)
+ Socket #100 (phys=25600)
+ Core #200 (phys=0)
+ PU #200 (phys=200)
+ Core #201 (phys=1)
+ PU #201 (phys=201)
+ Socket #101 (phys=25603)
+ Core #202 (phys=0)
+ PU #202 (phys=202)
+ Core #203 (phys=1)
+ PU #203 (phys=203)
+ NUMANode #51 (phys=51 local=8077312KB total=8077312KB)
+ Socket #102 (phys=26112)
+ Core #204 (phys=0)
+ PU #204 (phys=204)
+ Core #205 (phys=1)
+ PU #205 (phys=205)
+ Socket #103 (phys=26115)
+ Core #206 (phys=0)
+ PU #206 (phys=206)
+ Core #207 (phys=1)
+ PU #207 (phys=207)
+ Group0 #13 (total=32309232KB)
+ NUMANode #52 (phys=52 local=8077312KB total=8077312KB)
+ Socket #104 (phys=26624)
+ Core #208 (phys=0)
+ PU #208 (phys=208)
+ Core #209 (phys=1)
+ PU #209 (phys=209)
+ Socket #105 (phys=26627)
+ Core #210 (phys=0)
+ PU #210 (phys=210)
+ Core #211 (phys=1)
+ PU #211 (phys=211)
+ NUMANode #53 (phys=53 local=8077296KB total=8077296KB)
+ Socket #106 (phys=27136)
+ Core #212 (phys=0)
+ PU #212 (phys=212)
+ Core #213 (phys=1)
+ PU #213 (phys=213)
+ Socket #107 (phys=27139)
+ Core #214 (phys=0)
+ PU #214 (phys=214)
+ Core #215 (phys=1)
+ PU #215 (phys=215)
+ NUMANode #54 (phys=54 local=8077312KB total=8077312KB)
+ Socket #108 (phys=27648)
+ Core #216 (phys=0)
+ PU #216 (phys=216)
+ Core #217 (phys=1)
+ PU #217 (phys=217)
+ Socket #109 (phys=27651)
+ Core #218 (phys=0)
+ PU #218 (phys=218)
+ Core #219 (phys=1)
+ PU #219 (phys=219)
+ NUMANode #55 (phys=55 local=8077312KB total=8077312KB)
+ Socket #110 (phys=28160)
+ Core #220 (phys=0)
+ PU #220 (phys=220)
+ Core #221 (phys=1)
+ PU #221 (phys=221)
+ Socket #111 (phys=28163)
+ Core #222 (phys=0)
+ PU #222 (phys=222)
+ Core #223 (phys=1)
+ PU #223 (phys=223)
+ Group0 #14 (total=32309248KB)
+ NUMANode #56 (phys=56 local=8077312KB total=8077312KB)
+ Socket #112 (phys=28672)
+ Core #224 (phys=0)
+ PU #224 (phys=224)
+ Core #225 (phys=1)
+ PU #225 (phys=225)
+ Socket #113 (phys=28675)
+ Core #226 (phys=0)
+ PU #226 (phys=226)
+ Core #227 (phys=1)
+ PU #227 (phys=227)
+ NUMANode #57 (phys=57 local=8077312KB total=8077312KB)
+ Socket #114 (phys=29184)
+ Core #228 (phys=0)
+ PU #228 (phys=228)
+ Core #229 (phys=1)
+ PU #229 (phys=229)
+ Socket #115 (phys=29187)
+ Core #230 (phys=0)
+ PU #230 (phys=230)
+ Core #231 (phys=1)
+ PU #231 (phys=231)
+ NUMANode #58 (phys=58 local=8077312KB total=8077312KB)
+ Socket #116 (phys=29696)
+ Core #232 (phys=0)
+ PU #232 (phys=232)
+ Core #233 (phys=1)
+ PU #233 (phys=233)
+ Socket #117 (phys=29699)
+ Core #234 (phys=0)
+ PU #234 (phys=234)
+ Core #235 (phys=1)
+ PU #235 (phys=235)
+ NUMANode #59 (phys=59 local=8077312KB total=8077312KB)
+ Socket #118 (phys=30208)
+ Core #236 (phys=0)
+ PU #236 (phys=236)
+ Core #237 (phys=1)
+ PU #237 (phys=237)
+ Socket #119 (phys=30211)
+ Core #238 (phys=0)
+ PU #238 (phys=238)
+ Core #239 (phys=1)
+ PU #239 (phys=239)
+ Group0 #15 (total=32286480KB)
+ NUMANode #60 (phys=60 local=8077312KB total=8077312KB)
+ Socket #120 (phys=30720)
+ Core #240 (phys=0)
+ PU #240 (phys=240)
+ Core #241 (phys=1)
+ PU #241 (phys=241)
+ Socket #121 (phys=30723)
+ Core #242 (phys=0)
+ PU #242 (phys=242)
+ Core #243 (phys=1)
+ PU #243 (phys=243)
+ NUMANode #61 (phys=61 local=8077296KB total=8077296KB)
+ Socket #122 (phys=31232)
+ Core #244 (phys=0)
+ PU #244 (phys=244)
+ Core #245 (phys=1)
+ PU #245 (phys=245)
+ Socket #123 (phys=31235)
+ Core #246 (phys=0)
+ PU #246 (phys=246)
+ Core #247 (phys=1)
+ PU #247 (phys=247)
+ NUMANode #62 (phys=62 local=8077312KB total=8077312KB)
+ Socket #124 (phys=31744)
+ Core #248 (phys=0)
+ PU #248 (phys=248)
+ Core #249 (phys=1)
+ PU #249 (phys=249)
+ Socket #125 (phys=31747)
+ Core #250 (phys=0)
+ PU #250 (phys=250)
+ Core #251 (phys=1)
+ PU #251 (phys=251)
+ NUMANode #63 (phys=63 local=8054560KB total=8054560KB)
+ Socket #126 (phys=32256)
+ Core #252 (phys=0)
+ PU #252 (phys=252)
+ Core #253 (phys=1)
+ PU #253 (phys=253)
+ Socket #127 (phys=32259)
+ Core #254 (phys=0)
+ PU #254 (phys=254)
+ Core #255 (phys=1)
+ PU #255 (phys=255)
+depth 0: 1 Machine (type #1)
+ depth 1: 4 Groups (type #7)
+ depth 2: 16 Groups (type #7)
+ depth 3: 64 NUMANodes (type #2)
+ depth 4: 128 Sockets (type #3)
+ depth 5: 256 Cores (type #5)
+ depth 6: 256 PUs (type #6)
+Topology not from this system
Added: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/256ia64-64n2s2c.tar.bz2
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/256ia64-64n2s2c.tar.bz2 (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/256ia64-64n2s2c.tar.bz2 2010-11-24 09:21:55 UTC (rev 7494)
@@ -0,0 +1,112 @@
+BZh91AY&SY@оQöçÿüß\?ÿò=ï_ÿïß°÷À p 0è`l}' ]¸§lUKx/ç§ß@zv¶e/>AUÙî @ºe(I áåîÝ¢ßsé0À¢d±AÕh {Üõ A³2 ó'½Ö
+¦IWÀ ÛÞùw¡L¶§y#ÕRY wÀ ^Ø^õ {
+£AïPÀz£AëÙ] PnC Ô<IKXb *chÚT© ¤Ñ@ ªÒ©MGªA ¦C Ñ Ð Jª÷ú$*z 4iµ§¤BH @ ¤M"P h(Aµª A
+¢ ¤5215'êÒ=C@zCÔêzM=GêOã"Oß ÿ`ùðþäü ðAPþAGBhM¦þQG¤Ø°}è@~Y
&{»B%$,I"T ¨¢©ò¯Q]J¢BA_6¿ùOÇ9ùß}÷ß}÷ÝTI$ºO[w.`X
»KädR)II2I2)&I&dw2<K32¤"É$Ȥ$æI7s#Ȥ$$-¬MlªBlU,©QHERê(¢(£¨¢Å.ES\R©eH¢J¤(¦´!¢mE[R)T ÄU!(TV¢´µjÝhC¡ZöûËÕKË|§¼½¨¢¢/ÊÔ^¿yyy{È^QJm3Qyx(`»BeR)uªQÔR©LQE%ÅåêT¼¼½¯yyy{kËÕJJ~Ååê&·)¯/).бJ¨¢nbŪªS*(¢
j)WJÔR]«QJ¢T:U,*mE[*QK»QE71b]D(¡QJ¥©E¸ñHLLRIII2I1I&I0YâÌÌRIII2I1I\o$Ìk$2I1I&I&)$Â]7£&d2òBH¡!$HîI¢IIr8I%¹ ë<«Þ=$·¬»$¢GA²îE4 ¢BB"IIrC«mÉ»º÷tÝÜÅ3$o×a.ýAf,ÜÌ7tÝÙ»·wMûÄ!URWä%z9'¤÷¤÷¤ô·$$nnívkÛw·-mî¢ÌEQÌZ' ¦F¶½3~ðê³!Jª¢"!Jª¢!BUU!Bª¨!BUD!Bªª!B%UQB! B5ë*ªB! UUB! UTB!Jª¢!BUU!Bª¨!BUD!ERI%UQB! B½p!*ªB! UTB!Jª¢!BUU!Bª¨!B
Ê¡¸I>I$OI$)$IòI$|]ßI$¾4qD
+LñpqÊ)¦Ìp&$`Hd!Ye ¥
+µH¬@Xèt«¨
+KX9f8f:Ìp&ÒêaY !B e``¥ÃAlt8áTQfQSM
+âdÑLE11ÌA0LÁ2LA30A33ÍU44àãÐSYc32L±
+ãAAÉ,2@K,0É344àãÐSYcL,CB¸äÐDC²@K!Ë0LÌM
+88åÓNf8DÌCHAL0K$2ÈC,²ÃL4ºØ
+?@~Õçzxy^¢Ìihh)*
!³4µT;.ÍUåêf8ÆI.õæn¬°æ²;PÎC$DÖü*¦Ñ.Fb#A A fI Ø*éÚôÔAD1I×zAX`=bRà¦` $!.ø 0XB$È$ID1EK*Qd(²@(%@¢* DU
¢T$Q@($AJQ%RI)bR(H¡,B¢C¿¿¿[ÝT¤U"©HÝHªER*×ñ|ÌT¤U#Þ¤U%>æ×ÂT¤U"©P['ú3oM,K\ÓýÆ¥RQ¡ôòëÝÏâþ¤ÿÏäåÍu®£Æ~´êwfq}âÓ]eµ·e;I$µön^vÅÙè¦x¤û×
+ÏgEK;=îÍ»<]g±Øzõ^üî2¼êß"ɾËõ«9<¹îcÏvÓºOág;/ÌZú½DUïqÙ{UwÝÙÂ"ªóõ®÷Æt]q ¹u{}«³Ø>êøÑUUUR*ªª+¨EQUUQUUVH¨ªªªªª¨ªSUUUUEUTUUT*ª¢ªªªªª¨ªª¨ªªªªª¨ªª¨ì$é%[Qj~ª1S2Èr!È 2ÈbJ* D¨¢J* D¨¢J* D¨¢J* D¨¢ 2Èr!È 2Q%D"T@Q#@d9äC@D¨¢J* D¨È 2Èr!È 2Èr!È 2ÈbJ* D¨¢J©Oöj£n9ïÙ×<óÏ<ñÍç@ `t À´ ÀØ 4 qp: ÀØ 4 ÖÀ ° UT Àè
+ +ZÖµkékZÖµ§ 5ÅgLò¼gi¾s)M|ÖÖmf½SêouÚøIÉ$YÑmò½]ö̯uxï.½ÙzUtÐUÉîÅI$MÓ\kZÖ¨vKdÙÜï<Õß*½g/KíU1¯j÷Oc÷ßVI=çL=exíõûÜ^*íOGîÌ&n7ÊçM½Ï]×zÕiïnI嵬ìÕ½î8Ó\7Ûôßw ôI' \EUTUUTUUEUUEUTUUTUUEUUEUTªª©ªªªªª¨ªTUUEUUUUUQUUQUUUUUQUw½ï[ÇÞÛïL3 3½
+ì ;ÐÀ 7°ÞÀ ;ÐÀ Ìï@ 3333 Îô 9çyçyçÈ'®Y HüðIdHCûRþðÆú $Oа" í ±?8Hò z u£° ²HP
+ Pèi $ü`CÝõüÞéf$ÌHÔ
+y'R_¹RÈTH Éþæ^$¹r«Ç¹ãç8xØÁ¢]ÚÀKËnãwwcV¨[H ÊrIeäremà[RÒ\KIE¸þh Ó¡ P d½eÀ%Ü(·KEª¹eÁ"T YhÇ( ("Élh@m±É¥nîßÔ]*å¦qt®e¦qeuUUU*ªªª¢(¢"
+(¢(ìTm:b(ZµÓ hŨT4\Ù:àb
+Á0L ÀÓM6NII-µI¸pØ®0ut È`w2#*ä
+/NÊ" ðë@ÀãM2!è0T`ÀÁEÀ°,0ªM`ÔÛ|C!FlÆ Ãa1DH@¨p.Øp1ÄVl qæ!bPÎ0
(Zâ0 °pÆ ´1!hS³°Zq1ÚH!
K«°Yv ´ÆìH/3 $2`R@ y
+yQ¸*]ÓhH ˬ·E¹rd·$ Q¹ca2eÇ &J/$¶ ËhKb«a
+#É«´ºg-1°p
+Öµ¯>oæú_
+|ËãJþn|¼ùtݪÔó½ë6rÖí÷Ol+:¨ÕítíuÓ^f7º¥|ooº÷:»Ùy³v»Ëè¼zê° o¡w{Ô¹Jê¯x{Þ¬Ì÷å[ys®søÒÖµj«{ªs$ Àè
+ ( @ Ì˽îì 08 Ð @ P :w|Ýn¨ x0 yfffcÀáÐ
+ì X @ »»;»¤I$Yµ[è½P{ÉO£Õï©wªë¬;ÇÆßkU»4úËÓé\мVðõ;UïjÙ}¦g«Û3:¬O´6wº½¨yxô÷Û`Ì}máM·X6Öu×]uÌÌÿ¨ ûP ^OSwμw¼òôáK×øyºU{§.ÎÙ'{}ï^Vgù\j?Þõ;UïjÙ}¦g«Û3:¬O´ºÁtOyIXí¶ ,ÇÖÞÛu`måUQxØuw[âÎôÝÖw:^âì=¾åRé¾~ù9z[t¶òM¬*¦GÐåíÚðýÒã£8V{Üß½'³Þà%ªôªÕ}lßWwUUÇÖ:|áX¸ßxqÇ;ñÎyÆ7õx Pp¼ :~rYÞÅq¦8©FîñfDò¥Ã/%¼ÌÜrc29LÉhÛ.Öâ^IxÁ´nÆãâY-]æHÂárÒ.îXIJ2ïæLÂÉqÇȹ$¹m nHy28Ü[3òE.Õ̶òIä»rî]ÄÆÛ¹!Ö7pZÄYänî¢^FfUä%EQAÆî4·ÙpfKB³%Ë Ìs#n
+^\b¥£2êÛ2±G%˶I
+-áwpbãÉ#¶²c%Á°L¨!il£Xȳ¦A[kb0¼ämÁ¸Ýå²ífL°¶ÖK
¶.7s!æ8¢2fKbcqc%ä¼¶Ù&K¸µnFî5&SdL»ÂäËÌ&8ÚdKÁ«É1É&$d¤y$¾@@Ü$ä úa ÷:½ ÀúÇÖ>ÁÔöÙk1t¬]iµDwë½ï×{ÈaÐêI¥Y;ØkcjÚ¶
a°Ôj5 ï×{ß®÷¿n$æ»ÙÕYÞ¢!ß®÷¿]îâp:C© ìmt³M±¥[6¨!ß®÷¿]ïr9@5«F;âk¶»hï×{ß®÷a9aÜt¥iuº÷Æh!ß®÷¿]îât;㸺f÷Ó÷ Há íD`æ ú8õ_V1êÎsÆi¦Ú뮺ï°íÀÙ @»¹wPI;«®û3:ª¨I$]ÝÝ6Ûm
+¶ÛôI ¶ÞîÝ×uUußfgnîù¶ß NIîIÀs01æÞ]wwwwIRîfLÉ3;ÛÙuÝ]wÙÜÛ| pÀ
+¶÷ws2î»»»»»¿mûOö|½-ò f M >^WËyg9¸ûîeçÝægÝv÷`}Ø»ª®©BI$îüi|I|_>]×ÕßÕf}]æý;mý @ÐË»½ÕV÷Ísmãm¶hÙÎ2ºURªEUVwuU]ïwÇlæ»] ü^kZÖ¼×Ý$ø ç»ÖLN}ª&½
¯´[s¯ÞËîç<s[ówkuÇë¿óäà!xÈÏI%®¥ßÛ3>Û»¿fÛ@öI'àÛm·ð m¶ÛÌÌÌË»»´ï{Îl+®û3=»»Í¶ø àtOtN <ÛÙºn<ÛË®îîîé*]ÌÉ3&w³³.뺺ï»wy¶ß pÀm½ª®÷¼æÀ ÐsáÒªªª»»»»³3Ûm¶Ûm¶Ûo3.îîîîÒªªÌ»\»®îû;www|ßm·Á:@~é:FÞûwÛvö«wwwtR]ܹrægg¯®írî»»ìíÞo¶Ûààm¶øªªª®óæ Ñ£9ÞìªîÊ¥ªàØSÎUódô½é=î¬Å¶Þ¶Vf»Í«®êëµÙ³6½ºÝç0Üæ{Gá¹âæ³iX»»»»¤¥-TªRª.òëT»©u®¼¯v·yÌ79ç0®î»Io½oÞ
6s{Òª¨I$]ÝÝ6Ûm
+¶Ûy
+·uÝ]wÙíÝÞm·À ¤{¤pæÞÍÓqæÞ]wwwwIRùîw¹ÞçGÓ½ç69Àª*¨ª¢ªª*«½ï9°ÙÃ8pæÀ Ñ£9ÞìÝÊíÖ¶ù°§«æÉé{Ò{Ý/Y'l#½l¬Í«Êºî®»]½µÛÞs
+Îa¹8ç¸ôyÎ.7FÓZ±wwwwIJZ©U*¢¼ºÕ.ê]kÝ]ºÝç0ÜæÃsnkuªRîîîîîýÊøAG4¤kÆO±^ü»EMéNo$^g3i¡DËÞ
+24áºZææÚñ£SFÁÊÞÑ8ÔwÆÕuvªºÝݪëYwj«»oê«ëZª®Y¥W´EèU^Ì2 %DTë·íô¸`ꨮ$;êvÿH ;óZ5]»pþ@ð ÔßÂí¶üi£Fi¦km4ÛI$YxþÿÁnYñG»Îï u¬ÜßμïÎûç}ÎûîIßxAAA¢¨e(B
óçÊÍ>£f
fæ°ÖØ é¶Ä6ÙXØ3Fô2Ø10uY´c`ìòåWòkòñþ³þ$ëùScµUNôáÎw<ç;Nxxs¿Üès·¹°Ç.ìË®ëÝ¿lÏ3wªqNeµæÞûwCw[nÜ$w-½{»»Ï83nûùù穽3
+íÙ¹»774ñZ£|nöÜós®;Ýïmððïðë»¶Û`ÖÛïmº·yp÷s32îfÓÝÝÌ7ow6¿Ûð©ùjû|I~EBT%R¡*)P Bø¨J%+ä%BQñ%!*¢IJS3>2îîîþtú óÒIIÌ ÝÝÝÚI+µÛWwï+Ï}m¶ýI$öI$6Ûq$I$FÛn$É$HÛmÄ@9$Im¸H'ÒzòööC#Y Ð" G>®FÚôßÉo~ bùwÔVå¼ps3]]?¢}BT%D¨J£âR¡*$¥BT% )U P>$2Qñ)%UUUU¥TTÎõwÎîü k÷}õwιC(C(C(C(C(C(C(C(C(C(C(\ë9×.uËë:åÏÀîA ?cà'ÀQÏR1£l
+1óüà|êóó¢&ݨí6#µ@ØíQØìø| ø
+'ÃNt(LÉï ªC÷!Hþáõ{ÇÁ"~ÿ¿áø¢G»Ð|ѬÖDÕ Öj¬}[&ÒDÕ5ÀkÍßèêýkµÛ]¨C(C(C(C(C(C(%ûªI|ùéêôõxe e e e e e e¢$¾% PPÊPÊPÊPÊPÊç:åιsrç\¹ØT ?Z%¥¡bZZZ%¥¡bZZZ%¥¡bZZZ%¥¡bZ!¡ b!¡ b!¡ b!¡ bJJ$¤¡"JJJ$¤¡"JJJ$¤¡"JJJ$¤¡"J
+
+ U---KKERÒÒÑT´´U---KKEP¦hbi¦&i¡¦&hbi¡¢("(¢"EPDQAEPDUQQUUUQ¢*ª"ª"Bª"ª"¥QQUUUQQPDQAEPDQEEQAEi¡¦&hbi¡¦hbi¦&²ÒÒÑT´´U---KKERÒÒÑT´´U-
+
+ "
+JJ$¤¡"JJJ$¤¡"JJJ$¤¡"JJJ$¤¡"J!¡ b!¡ b!¡ b!¡ bZZ%¥¡bZZZ%¥¡bZZZ%¥¡bZZZ%¥¡bZ AÅ@ó"$À1þPêu$Ço¯1B$©F &ÖK`Èd0¯ÃA ÎÙ5
+÷Ìê©gëÓVÛF5` ß+¤® J¯<ïÃVªªÛCäbIͺiYñÈ*µïÖVÌ+Zã Õh7æúåð8ÇÖѸult$EïïϦ뻡é_+rªª©|
+ zäQC®AãÇb =KÍ'RmØê©!-kM¯ïÅÁV3Á ÚC¨¿C\à áva]Í÷*ÃH¾¸øô]U^¼^ híUUWè ô³RA¦f;vèչ#Qò`RyrÊ©xG]Þªªç]÷«çNúÜ©ÙUª-ా˧5h²Jª«*«qû ðʪÛ@i
+°h;ï¾ÇWªêQ3e×g;CIµ°®ë,qÒªª®ÍuÀ °ÐvR¬Í¦«ËV{GTÞN·Q·Uä¹üJ|ßé¾Y¬Ö*ªªÝóW;µzë¼Ø-ðÖôvUå,K1óß]ùúAu-¤&UUuoUU@ÑÖî»îê¬Ø` s
+ÀÔ&dddÔÅf2xdÉ4×5Uy]k½Í/c$úß4w¾±íRUÝeØÞ¢ªª¬¼Õà½Îèï¿
+Ñw;vïYUUUëW4sqƺ4××n7ßvàìoNÐP£Ðx¥´÷Þë¤Xyv¢äfmæ÷_/w»Õ±Enî÷¤N\-E]VøÔ·\ÅÙ¾IUR5¬hæèà媮]ݪ®Iío.íUuÉyË»Uå&ÿÃäß¹ÉÉ.c-nþ þð kZ½¸faxáºÎáë]tæ«5æ±lóZÖµ¯>%×Ì `psÎöÅÌ33X^ë` ÆÛØ
+ÆÆVf¶nîô
+ÌÖʶim+øyær±awwv{ôÀàJHþ {wwwiU+¾ªJïÞöîóß[m¿RI ýI$¶ÜI$I$¶Û$rI$6Ûq$I$FÛn$Çå¾yG]yG÷ß^Ç}J¯¶ªÕWÖµîÂîäI&1töw²h± ©¬}ýWÁ¤á;gØ.vi$»'¯¿G>¬²ë5Û,´gUUævSè*îâfWüá_¿=ôõëÎìÕ³
+k´UáWð±¯yóó\+äïv^æ»åxW³GdI÷y ?W~X]ÜI$uF¡OøßÓ{+Ì8Îl¯êùAAEV~çèìDúÖ_F¦Éâz
+ôO>Éþ*h§oiekÙb'Þ½ÞÊkø}|í½5ëaùCØx{ð¨$鮯×HÄÜ«G¬uÌÖ°ÈG rCãß>X]ÜI$fÃ}oÞ)8SúGêvo.©t¯%UuÑSǨB$Ö1£&òh¯AEUòMº)´æL+Ô:Ð~!{÷8RyÞT0¯ÍºÑVsÌ׿[²ÀCuc碥WS:Ú÷wå
ÝÉ$I&%u»²þÆÊk¯Ç
+ýý"{>ûõSõ}úýw¼nsÜáOézû³~ý]}d²óñWsìDHöïÛ˪ùF&½¿[Õï¬@?W~¬.îI$I1+W¾~¬áM%|Á,¦ùSèDH¾è((ªïØzÖËùÏ¿EkáÃ>;+ë¿ßzÑ_Äýµ°ú)ØúòSø'!
+òh¯Ñ>*Ðð®×DH;Úû»êÂîäI$õ¨Wx'¶Ã¯\áOQG{ïMÚë
l´&ö=vF3}w»qâÊ«frÌõùåºs1²¿×÷²ð§0çÜ4Ri:|³_¿ =w
·zÞ zRçÝu.øYmÞG4 ?\׫»I$O£úëÍ×
+ôVXöýµÓÓçWÑY´7ÇEN¶WýkçÙ5ÛÒ¾àcÛ×Hè}æºè^º>Ý
+¥Ù3!Í!âqã·Lî7î¬Êe
+§<s]üwÒsÎLæäI$½B¬5Am¯¿®5×{Ù]L¿sEwQ
+0²§Zú4d!â8» zû°FNë¡Ø©¹=óéê^í=Îöö7vùî×C®ý"{ç¯^§<@>îýØ]ÜI$bW3aVkë0¯P
~½}{=y'
+ûû6"çËÙ[çðåSçÉûøE|Ùüyù©eO¿³O=aðUýsv~îû°»¹$I$Ä©
zþ3°×^cãÑ_sÍóEoÏÎûþ?_öSø'¸C_EMÕüç{ôð«ö_ïÏ®g
+ϼã~·²µë¼Â³áb&¨ëĶÄÝ{Wåü#2I½s{Ôn÷weÜÆ^ÝÝÒ%ȱºà¯HìÔ®r µ#6ÚliÞä
+Ø-mÎeݪ®®îÕw5nZêîÕÖ:j®ùwk*oö où5ÑçG£Úd¼.Æ29R^fbÌÉ3.ÏËÕÞ sÖeï«ïÜ7Þú} nåhllwü×yæ¹Xªñ*Ts@Á 6ØSmz c 0aÇ0À`æ±iºÛ-gÎÚtÔBÛt
,Òd«q*î
+£wq»!mÄÂ&H)¹b&$KL˨#!Ø5h]Á¸ßª«Ý÷Îÿ\ÌÌÉðm¶ýI$ùÀíÝÝݤÝí%w~ó·wúÛmúHìI$m¶âI I$¶ÜI$I$¶Û$rI$6Ûq$?/ÍyëSZð×Õ{ÎÖI'Ìê}vgnz2Û/º¯ëÕ
ÝÉ$I'ñïײ«EÕ|*=DocKêíÂi¤3R&'p!3cñÀôI/º=×8= =5ßR»Ù^pþF»vVýL¯e÷Ê!è« ¯h<Uäà>«çzóôÌ)ø"'ùE
+vòwÖí ýÝ÷awrI$I°Ô*Ãn¾Æõ°è'
+øp½PáV}^Yë¼óEN½f¬+~eWM§*§
+öaµÌûÄàÐêõòùbös<oFøÝ4b£ª6²å¢qµ5¡½{ö`Hánüf¥ôU J¯X]ÜI$zªÔ+ª
+ád* ´a_W¢²g>øTç
+3è뿬£¯?;ð¯ÏËàw?:{:+Î[\9¢±9 Z»Ñ^çf÷æl®óÙ=ëEwÄ;Ì*Â}o[× T
+wGÏ¥Ù$r÷Wä@?.ýØ]ÜI1ckÒ:¼¼ª¼{è¼iÂup7öðnSp"ÕÖÇ@&÷¼M6Ù;ï¾ÙÕ0îʬÒ!tNr¦þ-|5Õ.× ×\(V wß¡ÂHHÍgê{àuÑmälºlG0\¿,.îI$I0/©êöW£b5
+ðÍ:ßM¶Lr!Væ&7Ûl£]SËËDHáuÕ0D2ã×ÓeV|qºxy»9Üm²¥yMW´
+¨Õ¾h¯«Þð§Ã_ÍïÏ[p+¸vPs9nà æg«»I$Ö§¯]@mcüÜ*ÎÃ
+uO,p!ýÍ ÷ö|ü¾ùµÌôѽ"QT^Ï/&¬a
W[e$HlÓÙ«õmòþaþ?Ã$É2L$É2BBBBBBL$$É 9âåÂBBLåË.\É2Lʤ$É 2L$$É2BL$¹rá&Id&HHId!&HHId!&Id&HHHHHHHIÒL¤!!!&Id!!&Id&I\¹p$É 2BL$É 2L$É 2BL$É 2L$É :It$$É2BL$$$$É2L$$$É2BL$$é'I:HHHHHHHHHId!&HHId&HHHId!&HHHHHHHHHId!&HHHIdçõçºó÷÷Ûn¶ó¶Ûoñ·þÝûmÝ·»m·¶ÞnÛu¶Ý¶ÛmäÝÛvÝûm¶Ûm¶ÛoA¶Ým·m¶ëmºÛm·vðÛ¶ðÛní¶Ûm¶Û¶Ûm¶Û¿m»m¸ñ¼½wmÛm¼mÖîÛ¶ïÛ¶Ûm¶Ûþí·¶Þ]»÷ÞM¶îÞM¶Ûm¶îÛn¶Ûm¶Ûm¶ª¯
URªuuY_ûTëÚ«¯þªºöªWΪªUUö]õÿÒÓîúgݯÛûwbîüÈ»öÆößmâI>)iihD
+i¦Qü=ïèh5dI$/Ô æÜ'0~õïAùÐ}6|ó7|6}÷÷ðø#P¯aðõ׬ë³Ãû5¾ºÀ&n¤ds>¤õ@~]þX]ÜI$|ïáϬ(ß¿fÄMpúZú;îÑûù¯>üW¾ÌW×ÎÒ¾}OGÇç¡s½vÛÛp÷Ô-=÷8"¯»n¾wݳIp/»³&_æ¹ùawrI$I«£^{°ïó~¾ÄDö|×ßß¿Öõ¯³ß;ú¿®ø| =ö'[ùýíø'ï</ ?w»»I$LõtNëáKýòõ<¿÷5>ù|»¾ì³¿g}û3ÝûH õAiæ»ñ÷æÙñYe1µùyÁ\˽Z+,qzdÅE©wvvÓ)u³uÇKLÔµÓW8ì!Rä[æ³-UrîíW5w|w½*®®îÝâ³Wvª»åÝè¥)
+£t~}½÷ß .eÜÙóY}ºÖµiÖ¾ý{õ»õà g9ßSPäèÇy[ç4Îæ0 fÉ'yÉueâß*ó 6 6zf÷@ͶÛ0Öy Þî=fëc>Ëç]¼¿fffOm·ðI$ù@Û»»»K·wt©+¿k·wúÛmúHìI$m¶âI I$¶ÜI$I$¶Û$rI$6Ûq$)¬æ³]í<ü§¸Ï®ô
+!ïi¡Ah¢(¢@Zªªª
+_Z×»»I$O ¯ä Á÷¨Ií ¨AùC¿¯Ë´81a_fO×èóTu÷wß{õóU4uø2åýýØg}/=áÝýëZ}$!ç^ü÷]ÄÆl wg]ßTêïõawrI$IÊ?¢þk
+èvV[TWú=ÌÝ<1&ëêù¼öMì®téUçvÚô©#}ln½í$ 3k@dÖ¤|ÂIjÿ±úë«»I$Në÷{Ù¸ôH÷É#ñÈtJ=È{gÞaÅàô×}ô ¿[U^òù33õogÖÊîaÆ¡óίºòïòÂîäI$ 4tÝ ~ýüÏÎ|úïSsëª>¡Ôöèï´÷ÐrÛº£T4O
+ÄÚ$£a;lÓ¶yÓMd :µjÕQHUUUTÀ@ýïîÂîäI$ü
+wÛåþýuÜúÐ|É÷n÷Ï;½.Ûåç§k¿]ú×>Ývðº&±SÕ'{ C}»6hds7Ézù@~]þX]ÜI$v[÷7~½pKu?_=k[ë¢úl²ïR«e5W`}%<¨ ³ÑزI·: 7jy $wÌjÉeýkVw$I$·FÞ5×ë¾µç¬ïîøÞá»ô\¾ûyõ³[ï]ªÝR(;J}Twäõ@}ÝýØ]ÜI$sßêf«Ë=üòöo7òþüÜ>¾¸ï½sêü >®þ¬.îI$I9zä¡«Êöú7÷! ß¿Y¾¾Ï]VÝwÅвI;ïçªåßË»I$Ou×¾wÝþgÀúúêþ®½Ã×}noï÷Öúó¢w>yº¯
+º#AªÐô·v-Ütz´MÈ^"³L7vK¸Ë³aÁ¬/NÉF×FZ¼nÔ³{Lk*Ë»µUË»µ\ÌË»µUË»×7«UË»ºªÞfÇ]¨¨X`«×ô²µùÍúîeNõ¼.
+ã1nK¼ÌÅÌÊÌÌÌÅÌö z÷Ï'6÷:Ü®¥QËgÓÍRÆÓ¶À 6ìZ_Ï>-×uxÝ[Öê÷5¶Ûm½ÖÛÆÛÜo/uºÍzÛm»ÍÆë5ë§m½ÌÆö¦µ«çNê6L¸]ÌÌ1».äL̲K»5îÂ
+ÈÞÞ.]N#kndIî¯ÕV¨((ªêúç¾îîï=¶ßÁ$ç¤I$x^ÕZ¿}õ¶Ûõ$Ù$HÛmÄ@9$Im¸H$I#m·I äI$m¶âI yy½kWæµ{×î
+éxjíשõ@>îçv6Û»î«çYêÂîäI$õ}õݺªý%ôüëäûëyßß5Sùþ[³»úêzÀý7Ýyßiìôlªî
+aÍK=÷×wû°»¹$I$ëݾÂåíý;ýzûüúãÙ¡Ãħ}¸ãwÎ9öøiÒj5Ô½´»=>¨»¿»»I$Oë®þ{ógïÓåUI"ZI0Õ2ÛW§³zöòã¶\qàW·=*¯>yÐwvw$I$¥Î{¼ÉÍÃ^¯[
+K?WXðwÛdÒkXsJ»_Ûxm'C¼!},$CO®PO;âã¤KÄúyõawrI$IàZ~ ]õ®ýf_hÌï)ÊWÉïäM@Od¯Ý±Á%=<è×'õfUz=ºîú»ú°»¹$I$ì9¥Öª»¾2×V¹$ïdÒ÷£Ûç<çÓ5|5ÎóË>ÆÝ3áÁ×éfù8×Ͼ{AùwùawrI$I»íþß0Ã×ÄÝe÷ɯwóÍýï9îr®W´ÒjkÎþËîUê´W¾Iy¹{{îû»û°»¹$I$Nºú÷Þò³Ü³Û=kú
+xw·¾R¾ V\ª 骩ä®5zªWÉ%æ½PÌLáõÍ}X]ÜI$jk×ñëÍ_[Öoøü®ß¡tþ}ß«:Msßο¶yµêü»ü°»¹$I$ëÎüïÚrþBƾç=¼ç|5Ó©ëDH!¢xå)¯xÝûVnI-[±Þ,àÉ©c.äËnÄæøÖë6VÔ&f6^´¡U^nîÕWRE»[Ë»UYnã»»µU¹ eUAÊ(
+
+ÕOæ¬ç7}zòfI!áÔn[ÅÊyfff.^yηޯ農_w/ÛÖÜ7kZÖµÍᦠ°ï½ìJònnë«{¯k7[m¶ÛzÛo[o5Ö½mfãyºÛ¦ñµ¼¶ÚyÛzÛI$æûUòwv¶Û~¤ü©$I$«´·ÛWï¹ûww`ß²I$¶Û$rI$6Ûq$I$fffIww`ÜI$ÌÌÌîîÁ¹3žfk}¯<ª
+*¹çoèw~¬.îI$I;÷ïÀ S=ß4 J ;À·o]îì
ÓEV;w¾^èï[y¿¾h/zÙë¦^½OCd{ïºêïêÂîäI$Ëõ>²é£ÝýûölDúÀèk\õéÀÐg®cH]{}u3ïçgJ\÷ð³¥D¥|¿Y3ÇÎùÞ|IjêUo/õ@v_$¨H;D
³îoîÂîäI$º´Q]ÃhåQaêb(´£õóêð¤TZS_¨µóï_Ë+JÒ×ràÑwÕãCWvBõªIð>@®k£~^wù@~]þX]ÜI$j½gVh=d³ãÏ&g2þ%ÈP´·üó¨å_~û(j«~m¾ºîú»ú°»¹$I$ëö½÷(ñÎU[=uí\ÕγYV?Ç|ÂôWGÛATP_©*s;êú»ú°»¹$I$á<<ëùf^«¾¿z>´½ëç6ßçæPç³W
xEVt/pêC^qõôÚè:-øï³×Áæ)5Y×Ù$zÎè
+{MÈ®ö}óî«oaÁÃmær£û
+bN5a*vÎí;:ïb»6uß{xàezök }Í}å5^º³øåhôúù¯ÖÿSËë³2ìíU5U»ìÕû ?SõEU^¼Ã¼0òkÜ;¿¯ÎkäfÍÕ§Ø`÷ô_s{<½ïËûùÖhëÀïU3à÷@}ϸ*ªç8{ÑÏ#åløTùϤú÷
+ô¬3ÿ{Ï
+¯²HÉ=õÕ÷>àHªª¹Ã¿;>púú×Ï9ùÂ~wâûP1OmÝl0ñ'ݪºÅæ ¼.Iw¬6`Ë.ÅeÞl9¹Hk[Ù*¢ÓDÊžjeÖu|¨·7zË»U\ÕݪÉ4·j·v¬·rqZºÖµªu°CrO@8½yÞMûïñòfLÁ¹r83eæf.fc»U»ò»;
+fÛî²,°×çÄÞî9òrIzÖ¼óÏ<Ä»[í%Í®Òç*I&Ûm¶Ûo6Þ»ÖÛ¶Þ¼ÝÝzÞk¶ÞµÕæW[w½ÈC¶íÖdå¸0²e¸dËlat5$«[ºÇ`ÚLÅËÃ/%¬f0.Ú ÔÅòK»»ff{Hþ@ÔI$UÔ·V¯ßs33ßRHýI$ÌÌÉHäI&ffH@7$I332D¹$I$
+Êò¼Íù«Öµ½yá§
\ÖðY$¯têæ
+ÝÙ+ M±æOzÃ{ÞÉögËóõË_sëaÏF½èóÔËÛÇ÷Ô¿³¯âûó¢êÒ¶æ»´ÏTäü"ª«Ï]:ÌÍü/N¿nË3Pxׯk
+_<çñëë¬Ïw¬ëùg}ï}ÑïØ{CÕRçZïÜû"ª«¾éO~Qµ¯=KþO\á:
+øÿ$õæh¯ª®ÜªÂ¶8I$wîúP$UUÙÛÉûÖQâQëÖ7Äp*± -ª¯¿:»àpCC¼p®hÕUgWú Ãï]y aÃþÐA¿}UUz+¾Úë¿Kï¯oRf]7Èõ ݦGõÛ1ªYÀμ²W7fþ¨((ª÷EÙOfèÖ«ª(ÒtüUU^MùÙóæ>Y©×Ëö¸u5ü÷Ö;öxåai<֩骪ºFöW»%W¼Û§¹Ê«k®1%ët ê39,î¶f«Ðªç^õ9ó¯ªªÚæz¹¥:¸¦±ô卯2Ʀ3»Gtý+;²
+§]̹߾ìámúÙ/-öªª²s]§o\o{É»/5ÌI¾úè36j_ ÅUUïöõç'¾Ù¿=aì/|7ã°ï´Eô¯Ziôì<yÊ®YwJ¢ÍÌÍ,åË"1ÖcLÝÉ.Iø$KÓLÞÝWQ£tdÆåÍñ«9Wwj«»µuríuª¹«»e«¾]Úªêîì,PUQÃlë/Dz=LÁË&[\¼ÌÅÌÃ33wj·yn¬§Ûàc¦ðy³+ÇGLÎNI.^-ó´·]IWWRI$m¶Ûoi½w¹¼Ì×»m»Ëm¼Ì×y»J«-.$¹]í}îîÃ33=õ$oâ =I$I.$õ%wï¹ï©$~É$ffd$rI$33$I I$"I ÜI$ÌÌÉHåkOÍhUf&ü=½*ª¯¿»Æ«ÒW^y¾¼6Vdªöûß
è<ßÎl9Àá|ï®<ºº7F+ú6*ÉSÇÚªª½=è¿ÃGy <ùëæµ8|Ì?D3Ïã¿ZësïùãîUw%wº÷ÆI#:ò[ªÒÊD½Ò8oíUUvÇèÚUùï¯Xt§|ì{ïÁÖ¤£¤%rÃ¾í¦«³Jf»wt9t¶ÐͧjÛ¹íöªªºðûõ`QmPÕ/»13Gx^zùÞ{uó¿$8t;ßôO[òíþ<ÓU¿@Z4<wÇíUU_{º«AXÝ÷¼°úw¾¬æ× ùvw×WUé½WG~ykIÞk·Òªªõ*ª® ;¿IuÏXQàzo¬õçZæ ![2ÂÊ®Ï=u´øAõØí_¯ÄÅoaß·0ß²Ë5]U«ÌQSç\øèÐÉyLÂí/éUUx*¬óç£Ï9AÀ©Ý`5MS{
]îõ¦®o(Â;¹+7=úÝ8aÛ®í;ó#6(ðÍ»ùÛôªª»©É¿p~¯]êâE\ªñéÓ~¯0îÃêygsyïyÏ=ñúÓÍóN?UWÎ_ÖCâyïZ0<õòó¯;Öº;NÑOëÑÑßEü{ëUçWç«8üUU\é=g~¦WØq¿{¬ìÂë7¸¾¼/-UqÚü{à¯ráýU5øÕ·y°\n^L3332ñÃ3]Md:ên÷Ï\²¸qÝU®oæwqe¸T 9Îv¥â«mî½n¯1¶Ûm¶Ûm¶òÞ7Þ·[îÛ×zÛÍ{ºí
Ûomãoë®®±U÷±ÊÓ,ËËZl¹mØÅ2ãæ\Å#d·.IcvÌæ÷Í÷^ùå§GÐ.îíûà@7ò ¤I$R^ª«¿}ÌÌÏ}I öI$33$I I$"I ÜI$ÌÌÉHäI&ffH@7>jõ½ï~ïëÝûu¢ÛMÎUo¥UUþ:£R«øíªè¼ynçÖñºUðßÏsËv<×yqªëƼjU_®SÞçZ9ï¸~UW~½þw·CÂYå±ïï¨IÏ:þf9Ö»ç¹éä=ªª¬òö>§GÏ¥ câxÞûã,õ»ß®Ç\Å]õáéUU|ó\²uòúÝëN¿o=xG¤ï¿á$oú÷ç:á®±E\ÈÕßÅUUßÔßïª/RQ¼õ5ï½Ýo½o¾¼ù×0øªª·ÑÎèÖòrjõào}ï|9nìíUU|4lׯ^4Ï[ÏÐÇaÚ ï'
I'ÎýõÙñVÛmóeãß,¹nqxìñË®ý¶ÆÓl~`×£3¿¿;óÓÍÅ^sæôeo¤!,î8a¯µUUÖoVw¯ê_ç'µóæL÷Û¿ºõ¼³âªªìûá×~]òc|½l°´/Ê>}êi÷èçi\ï~§©;×SÌc-»ËÌ\É&dÃ3hßë+×Lâu&çWêÎÅaR ç8RS9¾u.ªê[ç{I6Û¶Û{ºÛN÷[ÖÛYn6Ý<mff·Û×½yÄI+0?kÀé$©$êI$¤·Ê¤½åUß¾æfg¾¤
+û$I$
+É$LÌÌ$nI$ffd$rI$33$I Õç;ð÷Y½ï{Þ÷½ü¨çÆëßÁfwkitëåßOÖw¾øf§~`ÿ/5ç*¿#÷Ùöªª»ù¬ùμTÍ|rrwíå¯ÎÅWÜ;nbyXBòñÃÚªªà{ÞWüÎU¼0õïaÏ/áù5Üõ÷rÝM÷Ö¼ëÑÞz>ÕUW½þ~îóÜÎAÃéä½ô_5ç3xôûÃÚªªë¾n°éOF¶öwG§ÒöïÑÂ'×}oÃb¯Zåÿ@ úUU_]ÿC÷¿ZàöFý.Ô¾}Ùz¿®|½óKèd8åúÌûè"MáI,×Òªªï{w¼²üòf´Y×ÏWvÇ®÷yðÔÍ®õ¿|=ªª¯¾zvï\óÏ£²Ë>tßrsÙ¿7äæk¬ù¾ºä
÷¼ÎNÓ⪪¹éözëÚ@ßò
Ózߪöt{$O|ìøªª¿9ê/@ÎËyë×sA{õÒ:Qçõÿþ¨- 4%öY4REõ0þ;j5BÖ¤¦Bè İ øT5
+T4U3PT©Tµ@U`E!þ©U»bY½a¨çEHåT¦Hd л@¥ bWùü2 %> ȱJ±J©J§]±¥,R¥)RhL ``` P X!H!H!JT¥-E¨ªKGÀ,R¤.@,`H!H!H!$¥V@> iú@?ûù4DÔæb ÿµþýo5É^ ÕúÝÙUUUUUUUTªªªªªªªªªªªªµUUUUUUUUUU_Ø5 Úh(ù@ Àà^Í4Ð!ÿ$°-í 0 käÙâ@xÿôq6±$µP÷÷ù"ªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªþPú.óZ÷|òöêÒÒŲY¢"¢¦b* iHj)¡¤@ ³OîiH¤**
¢b
Ø¢P H@ò /ÖA"NÀ~¿Ôú`=@è@ïM=` (Ôþ æ='Ѥ!z 4 z w=Ð@l!gÚ5 ýÀ
+ 0åöÕ?~0ìxOÜ
+§
+ïD ö x´ À #Ôÿ '×d
+À {?M ¹ æ ${ÀúCØÜý=v °JX
+À?ò@È`ç úÀæíûm¦É"s´A
+ÜÈ'É| : ÿذ 7´!xtê 7D6D ÈI@>Câ>#â>"|GÄßöþdØb@|`b ò@|¡@=!P ô d=`ÄzØ 0 wÄûpIð
+ øD >Ð üÈ 6 þO!{@2¸ v üð jÒÔ
+>¨{{ =<á!& <'åä¾(Òz§ ò ü@¢ {@þû 6 äXûZ» f0àæ"L@~Ô G FuØPûà8 Ô
+À:úP6ÜøÐ<@=³Ù PÖÞP¤¡QBÄ¡d¡T-
+P±BÐX¡R
PªAhZPZBUBЪAe¡h*
¡hU
+ ´- Z¡T(QB¨R{ 5"Oæ Ø>°ú >ÇhÀ>@ òó$¬óÈ ÎP@6Ä÷é$M :@&°IàGÒ@'Ò ýqê È
+ 9 ü 9Â@*!|Ðñ"M 0 ÐÜþ´AY$þ¬!RIµxB$÷ ;n èn at 0 (B'¨
+dðôDT© 8$ Xâ¤P5 >d 0åë$OÞ@ì P#ÓÀð"Oç"O`tp<4 æûçÖð 9"Nà D0׿@EÿÅÜN$4/
\ No newline at end of file
Deleted: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/256ia64-64n2s2c.tar.gz
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/256ia64-64n2s2c.tar.gz 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/256ia64-64n2s2c.tar.gz 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,186 +0,0 @@
- \èaJ í½Û²äHvY×õù ègwèLCc²¡4ºlËÞYÆ:YU5e§ bW%ÎÀrÿpü¤çDìîX~ø±Æ/ûÁýh~5o÷MTKô¾ûÿ:zuû·vîöÿßùFkc
-N«ðÒÆkýÍ_âó·_ûøËßüù»¾ûþË+×}úåWÄÅÆÿç_~zøM°{üµqƶ?×ÖµqüÌÿÛÏûòãçõ;º÷ñ¿qÞ3¯¼ýæzÔ°ÆÅÇ¿ïO¿þúSÛÿùúöß>ýø®ý¡ûçÿõéÇö>øôO?þöéûo?þòö×Þ_ù§¿ooo?üáË÷ÿþþ#k¾ýá§¿|úþ÷Kô·¿|ú·/¿~ùéÇ÷vÐþèþªúöó§¿ýíO¿Þþùç_>þøö×ïúñ»ÿðAÿøçÿíÓ¿ýô÷?ýüë·íýøáÇ¿ýðçO¿ÜÞÚýóOßÝßênÿüçüÿÞmÍjo+¯ì·_~{ûúÓá?¥öîSêÛøé»þùþÇ¿Üÿnküjü·¿~ùs;üïj¾ýù¯ÿþë·ßøòÛ¯üéOmó÷?þ·ö|üËíÝ?¿ô¢f/îéE½Þ½8ÛVt/Zöâ^ܸ{q¶½6¢»Ñ³÷õãÆýØýèE÷cd?îëÇû1±gûQ·§Ñ
-Ù°#wv䯩yYìÉ(;Íð8³·'·îIizÒÛ »'y¬ÙÛ[÷$6=ÙÈîInööäÖ=ÉãÍ|OåìägoOnÝ<â,õ¤×²{g½=¹¥ó³Ð>ÈØqööäÖ=É3ÎbOÊÜqööäÖ=É3ÎÂC0eÏoÏ8{{rëäg±'eÏpÏ8{{rëäg¡'}=Æ1<ãìíÉ{Òò³Ø²ç8g½=¹uOò3ßN5²ç8g½=¹uOò³Ø²ç8g½=¹uOò³ÐAÉãXqööäÖ=É3ÎROjÙsË3ÎÞÜò.çgÑ-ZöÇñ³·'·îIq{RöÇñ³·'·îIqz2XÙsÇ3ÎÞܺ'yÆYìIÙsÇ3ÎÞܺ'yÆïÉ ì9ãgoOnÜgÅ=Çñ<ãìíÉ{g
^öÇó³·'·îIq{RöÇó³·'·îIqæ{2ê {ãyÆÙÛ[÷$Ï8K=e
Ïq<Ï8{{r++Ï8=ì9NàgoOnÝ<ã,ö¤ì9NàgoOnÝ<ãÌ÷dÒì9NàgoOnÝ<ã,ö¤ì9NàgoOnÝ<ã,ôdT²ç8g½=¹qOFq{Rö'ò³·'·îIqæ{²1Zö'ò³·'·îIq{Rö'ò³·'·îIqz2ÙsÈ3ÎÞܺ'yÆYêI+{yÆÙÛ[ÙÌyÆïÉ.·ìANâ!gwWnÝ<å,w¥ìQNâ1gwWnÝ<ç,ueô²9Ý]¹uWò¤³Ü²Ç9GÝ]¹uWò¬³ÐÚÙÄÃÎî®Ü¸+v»RöH§áigwWnÝ<í,ue²:
-O;»»rë®äig¹+euvvwåÖ]ÉÓÎBWdvvvwåÖ]ÉÓÎbW6²G;
-O;»»r³.(;K}ìáV<ïìîËÍûå¾=ÞÑ'Ý}¹y_òȳÐÖjÙxæÙÝ÷%=Ë}){Ä£O=»ûró¾ä±g©/=äÑçÝ}¹u_j{ûRöGk{v÷åæ}ÉsÏB_:kez´æ¹gw_nÞ<÷,÷¥ìQÖ<÷ìîËÍû祾LNö°Gk{v÷åæ}ÉsÏb_zÙãyîÙÝ[÷¥á¹g¡/½
-Âç=çÝ}¹y_òܳÜÂç=çÝ}¹y_òܳÔ)
-÷{v÷åæ}ÉsÏr_
-÷{v÷åæ}ÉsÏB_Ï{Ï=»ûrë¾´<÷,÷¥ðyå¹gw_nÞ<÷,õejÏ{,Ï=»ûró¾ä¹g¹/
Ï{,Ï=»ûró¾ä¹g¡/£SÂç=çÝ}¹y_òܳØZø¼Çòܳ»/·îKÇsÏR_6Fø¼Çñܳ»/7ïK{ûRø¼Çñܳ»/7ïK{ú29+|ÞãxîÙÝ÷%Ï=Ë})|ÞãxîÙÝ÷%Ï=K}Ù8áóÇsÏî¾Üº/=Ï=Ë})|ÞãyîÙÝ÷%Ï=}Ù8/|ÞãyîÙÝ÷%Ï=Ë})|ÞãyîÙÝ÷%Ï=K}ÙáóÏsÏî¾Ü¼/yîYìË(|ÞãyîÙÝ[÷eà¹g¾/rIø¼'ðܳ»/7ïK{ûRø¼'ðܳ»/7ïK{ú²iÏ{Ï=»ûró¾ä¹g¹/
Ï{Ï=»ûró¾ä¹g¡/µWÂç=çÝ}¹u_F{ûRø¼'òܳ»/7ïK{úÒ(-|ÞyîÙÝ÷%Ï=Ë})|ÞyîÙÝ÷%Ï=K}éðyOä¹gw_nÞ<÷,ö¥>ï<÷ìîËû2ñܳÐV9áóÄsÏî¾Ü¼/yîYîKáóÄsÏî¾Ü¼/yîYêKï
Ï{Ï=»ûró¾ä¹g¹/
Ï{Ï=»ûró¾ä¹g¡/
-Âç=çÝ}¹u_6<÷,÷¥ðyOÃsÏî¾Ü¼/yîYêK
Ï{{v÷åæ}ÉsÏr_
-÷4<÷ìîËÍûç
¾ô* ÷4<÷ìîËÍûçžlÏ{{v÷åÆ}iÏ=K}ìyQ<÷ìîËÍûçå¾=ï1çÝ}¹y_òܳС«5,»/yîÙÝ÷%Ï=Ë}){ÞcÏ=»ûró¾ä¹g©/=ï1çÝ}¹u_j{ûRö¼Çh{v÷åæ}ÉsÏB_Æ®Vì¾ä¹gw_nÞ<÷,÷¥ìyÑ<÷ìîËÍû祾Nö¼Çh{v÷åæ}ÉsÏb_zÙó£yîÙÝ[÷¥á¹g¡/SëNt_{v÷åæ}ÉsÏr_
-÷{v÷åæ}ÉsÏR_(|ÞcxîÙÝ÷%Ï=Ë})|ÞcxîÙÝ÷%Ï=}Ùt±¢²ûçÝ}¹u_Z{ûRø¼Çòܳ»/7ïK{ú24Âç=çÝ}¹y_òܳÜÂç=çÝ}¹y_òÜ3ßVu¾V²ûçÝ}¹y_òܳØZø¼Çòܳ»/·îKÇsÏR_F#|ÞãxîÙÝ÷%Ï=Ë})|ÞãxîÙÝ÷%Ï=}©;Bv_òܳ»/7ïK{ûRø¼Çñܳ»/7ïK{ú2:áóÇsÏî¾Üº/=Ï=Ë})|ÞãyîÙÝ÷%Ï=}i>ïñ<÷ìîËÍûçå¾>ïñ<÷ìîËé}ùMU´øåcpí0ÿh~5o×Ý)÷ç¾üøù§Gýv,Tp®ûÿºÛ¿õýß·¦µþÝní6ÎØöçÚ+¿ù õ¬ñ·_ûØÂ7þî§ïÚcåºO¿üø°üó§þçO¿}üþ?ßÌÙk×469õá_ÿáÛö¥ÿö˧O÷W>¸hm
-íkÝKÿð·ÏÛîx©£5¯Ô½ò_>¾ýõÓ_~Á¤Ô¨¤C÷Ê¿ü?÷_ÕÉpû´¿ûíË¿}úãüWÁ¨Û§ýÓ{¯Ø5Ý+ÿøå»¿öþð;ê÷WzwïÿþÓÿYú®íKKßµû»{okLí9ô÷WzïjT£Ìýãþë_~û÷ÁÐöÐí=ÿû/¿}úóÇ·üÝÿãO?þß}ú£WCk-·ûç?ÿüµO»pM¸½ç_¾ÿøçÞϵ *ÚÛ{þËO?üðå·ÿþ¥ý?í&1îëK¿}úËþþ_Ú×lÐ.¹[ww¿þ~üó÷_ÿ§Ûýÿþðñûïz{ïm£nbrÝ÷í½ú¿~½ÿZédïÆû+ÿå¯ûñ_ßßiÿçöûþñoß}º}å?õ:Xõ~ÜëÝþÿ_ÿí/ÿÜýøËÿw¿ÖÓÎ.Ýç?Û¸^ñüÿë¿ÿúwþÝ$½_ÿ;Fó;Øo>øGÿ!s\|þÿ¿´ºv»ø°û@>þ.:ÏñG°6þmû·O?¿
-dãß^§C»ÔsüìÿöÜuìlÇ?ªÀùÂÎñoÿW{yíß(Ýþã@6þ¿ýôóOßÿôÝ¿Ënùø·9?Ìñ¿bú]L[ÿúrn<þ^Ù@ýÁïcð.ÔÐû/®^BÈ´ÿßeó?ýüñí_?~÷éO_þ²ü;º\³ÿöÕ±ýÚ?Ý8ª¿ËÉöß=#[µù>ÛöoFöoM´´õ¯pd#ö¿o÷³ÿw^óù/ÛìÓ6ìþ«ö ú¦þ@6þ@ýÏÿ dyýë?Ëì9Nô.®ÿóö_^ÿ£ýC0Ê%[ý]NÈ´ÿòú£ý#¨
#k±ÿúQ´¥¶Ù§m¼qÿßg¿ýë ú_¸ëôÿ
þîú_àø#Èÿú_¸éë?RËì)îðçpý·ÿúßÍþíÃ=Åõ³ÿ
-ò,2í¿ þîú§ý#¨
#k±ÿ2ú_¸ëöàÛìÓ6Þ¸ÿßB¢ÿçFw)ôÿSÿ/õòÆ?OþËñÿñÿòÆ_$ÿå<ÿ»ùrý/Ï#Ù:·(a®ÿ³ö/ÿvÿýØÿÏ{úÿ@èüÿª¿ÉÉ"yö/ÿ²üÿ´¡ý#¨
#k°ÿ½ò_Îþß1ÿ§o³OÛ¸E W?;Jôÿ\°ëH±ÿó¿A?Îÿ/0ÿ#Ìñ/ïÿÇý?§/³úøçpý·ÿòþ´¶ÝlQ ¼.ö_Þÿñÿê_áÈG쿨ÿóBxÀ6û´
-{üsª÷Û¶ûPÿ¹ÕúÉøgºÿÉÇßè ©ÿBÈûpýïÆß
Èç°ÌÖÛp\ÿgí_æþ·ãüïFöïóaðÚWe²ì_æþ'Ôÿ:û·Úòü¡þ¬oÿ»ÝÿröÿÖSÿpmöioõÏûíß%Lüo¼Åÿæ HüïMÿÌÿ!oüKÆÿÞÖÿxþpeöT
-=ø ×ÿYû/ÿ{Óÿ|àùBh¢ú,gÿ%ãoúaþ/õ¯pdö_(þ÷¶ÿwù <k}Úü¤úÙq¿ý[Ñÿóÿ?DÿÌÿ$oüKêùÿ<k=uÃpý_·ÿú_`þ? N5¡ú,gÿ%õ¿Àü@4ÿÒ°ÿBú_`þ? ÏÜf¶a¹ÿÉÿ òÿ»ëþ_DãÔÿèÿ !oüËëõ?!<s=wÃu
-®ÿ³öÐÿÿÁ(O àÂäÙ?@ÿãó?õ¯pdö_Tÿsôÿ
ðômöio]£úÙQÿÿ/ÜòÿYúA?&ÿß]ÿSôÿ5þEóÿ
{þ?®ÿ¾ÌºQhdý?<ÿßøüï]àùþ'kdÙÑü7ýOúÿ@¨ÿKÖÈ·ÿRùÿÂ=ÿý!b}ÚÆ[õ³£@ÿ·
-Rÿ×ßüÿ"ë?@?¢þ¯¿åÿó¬ÿ!süÖÿõ·ú¿ë?S,³ÏÑöö\ÌõÞþÖÿ½Ù ýcÐÁ¦Xý]NÈ´ÿõýÍÿ/ÐÿBý+Yãýyþïoõ5óÿB(¾Í>mãûÿoDú®üÿþDãÿ
-ôÿ7þüôÿP|}ÕÆ×ÿyûÄÿ2þB;þõßäd<û/ÿ«èÿÆmØÙü|þáÙÛìÓ6nu@êú¿8ÿ¿öôEýlüþôÿ9þåýÿ¸ÿðìeö¹
-½u
-×ÿyû/ïÿGû ]r©ú»,iÿÅýÿ"ý Ô¿Â5ØQÿ?úÿBl³OÛ°[×T?;î·ÿ ªÿïõ?èÿA4þÿ¿x¯ÿAÿ?yã_Òÿ/ÞëÐÿd}Fÿëÿ¬ýôÿ7ÿ?ÖÿÁCb
-Àgÿ%ýÿâ½þõ,þsmØ!ÿ¿x¯ÿAÿ?OÙf¶ñ6þIõ³£@ÿ7
-Òÿþ_dãóÿôÿ9þÅýÿ¸þcxÊ2{Ùs1×ÿyû/îÿGûÇÐåÿ«¿Ê
-Y"ÓþËûÿÑÿõ¿ksÄþKúÿúÿB(¾Í>mÃrÿÿÈþ#4þ7PÿA þg8þ2Ç¿¼þç¸þ#(¾Ì©¡Åïâú?oÿåõ?Ú?c¼aüïuÉ´ÿÒú_Û¦ý#¨
#k±ÿ¢ú§ý#(±Í>mÃßUýì¸ßþ}nø¯<þSÇhÿ A2þá¿Yñ¿¬ÿ!küeá¿9þÿ!rýPb¦a¸þÏÚ¿,üwÇùßãóaðÚTe²ì_þÿ«ÿýÿ®M¾ýïÿÍÙÿ[ÏøgØf¶a¹ÿÿjÿÖ!ëÿÆB?°þodü7¼ñÔÿåúáËìéÏÿÖíPÿú?§¦ú,gÿåëÿjêÿê_áÈì¿lý_ÆÿCxæ6û´7îÿgê
-ÿ½ëñ¿dãÿ
-÷ú¿ÿ
9þãýþ/ãÿ <s
4Ì¡·sý·ÿñ¿á^ÿöÁ$ê¿ËÉö_0þ÷®ÿEÆÿB ÿßµ9bÿeâ½þ/ÿAxÔ6û´
-{èíÕÏûw§ÿ1ÿÙøãô?æÿÃ9þÅõ?æÿÂð¨eö|ôÏáú?oÿÅõ?Ú?Ûö»¯þ.'KdÚiýùÿ@Pÿ»6G쿤þÇüo³OÛx{ÄçT?;î·ÿìòùßÚóÿA?$þ÷ÿ/*æÿ7þ%ãoù?bàúáð2[KCϾÄõÖþKÆÿÞòÿù@ýBYþãÊäÙÉøß[þ?cÿBý+Yãýÿ½íÿcþèmöivö¥êgGAýÿß{ý_æ `ý_æ9þåëÿrÿ½Ì£ö^ÌõÞþË×ÿ¥ýCÐÉÑÿïÂdÚéú¿&2ÿúÿ]#ö_´þ/óB(ºÍ>mãmïÅÕÏÿ_[¸ëHqü/ý¿ ÈÆÿþ2Ç¿|ü/ã ]fÝH?ëÿ¼ýÿ¥ýC0M`iÿåóÿÑÿõ¿ksÄþÆÿòùGl³OÛxãþAýolü¯§þ@4þÈø_ÍñG7þø_>ÿðe¶¢ýëÿ¬ýâ¹ÿu`üï
ɳ@ü¯¢ý#¨
#k°ÿ²ñ¿Ìÿ
á9ÛìÓ6ìè'ÕÏú?Yÿþ_dãôÿ£ÿ'Ìñ/_ÿùÿ <g6Ü¡·sý·ÿòõiÿºú¿¶ú»,iÿåýÿ¨ÿC¨
#k±ÿ¢õéÿáQÛìÓ6Þ½½úÙQ`ÿ^!ãÿ
-lüúó?BÈÿòú×ZfO×pù®ÿóö_^ÿ£ýC°:ºXý]NÈ´ÿòúýÿ!Ô¿Â5ØQýù?!Ýf¶ñöÏ©~vÔÿêôÿ!úÿÕFæøÓÿ¯.³'nè|×ÿyû§ÿ_%XMýw9Y"ÓþéÿW ´ýksÄþéÿ÷úßf¶að9ÕÏüéÿÇüodãÔÿÿBæø×ÿøüÂñeöÄ
-ÃõLû/¯ÿÑþ!tõ?Bõw9Y"ÓþËëÌÿõ?®Íû/Zÿù?!<b}ÚåþAýo!úgü/Ùø#ô?Ïø_ ã_Pÿóÿòeö¥ë5¹þÏÛAýÏ3þ¶Vûêïr²D¦ýÔÿ<ãPÿ»6Gì¿þçÿµÍ>mc½Fpõ³£ÀþGêÔ ÈÆ§ÿê¿2Ç¿¸þçÿµÌ¥aøüo@¦ý×ÿhÿjSý]NÈ´ÿòúÏÿ¨ÿ]#ö_Rÿ3Ôÿ!Úf¶a¹ÿ°ßþSÊÿúO¼åÿ³úÑøçÉã¯c{$äøÈü'\ÿ»ñw1ÒÿB¡eöÅzé%®ÿ³ö/ÿú_gÿÞÓþ1´ý\õw9Y"ÏþEòPÿ7ýÏ0ÿ'úW8²Æûß+ÿåìÿ×´Ðmöivé¥êgGþ¯5ÎÿOEÖ ÿcýã_>þë?è2{ÂFZ¿ëÿ¼ýÿ¥ýCÐ6Öÿ½.ö_Üÿ/0þýÿ®Íû/ÿKÿ möioë×T?;
-ìß@ãÿ A6þÌÿWãÏü ZfOÙ0Û×pý·æÿ«íSdüïuÉ´æÿ«ê׿ý3ÿßëØf¶a·¯©~vÜoÿÁ!ã
-õ¢ñGÆÿRÿ
7þåãÿA ,³/ÓÐ\ÿwÚÿ£ãý$þ7ÐÿBÒLÿweòì¿|ü/Ïÿê_áÈì¿hü¯£þá ÛìÓ6,÷ÿkú¿Æÿ2ÿÙøýÿÿBæø÷ÿs\ÿ<a=CÃì¼ëÿ¼ý÷ÿ£ýCб1õßådLû/ïÿGýýÿ®Íû/êÿÇüÊn³OÛ°;/®~vÜoÿÆþîñ¿úÙø#ô¿p¯ÿ«9þ2Ç¿ þîõùüBÙeö
-÷Ïáú?oÿõ¿p¯ÿKû`Û~÷ÕßådLû/¨ÿuöobýõ¯pd#ö_Fÿ÷ú¿|þáð6û´·G|Nõ³ã~ûorÓÿeÅÿZÆB?2þñßòÆÿËü_/³54ÒâK\ÿgí¿|ý_Ú?clª¿ËÉyö¨ÿKýýÿ®Íû/ÿËøÈmöio/U?;JêÿDdýúA?0þþ2Ç¿|ü/×Èeö|
-³u
-×ÿyû/ÿKû ]r©ú»,iÿåãéÿúßµ9bÿ%ã
-ý!@¶Ù§mØkª%õ ùÿèÿA6þ@ýþ2Ç¿¼þÇú ËìYfó®ÿóö_^ÿ£ýCÐÞúïr²D¦ý×ÿõÔÿ®Íû/ÿþ¿ÛìÓ6ìæ5ÕÏûíß'hýßHýhüñ¿ã oüñ¿Ìÿ±Ì¾PÃ~ÂõÖþõéÿ!êH àÂäÙ? þú?úW8²Æû/ÿËü³Í>mãmôêgGAýïÿñ¿DãÔÿÿ!oüúÿCxÎ2{Êáó¿½öÐÿ¸ÿ¢rÕßäd<ûèÔÿ!Pü¿6쿨þçÿ¿Í>mÃrÿ¿fÿÑAýÿ¨ÿ@?Rÿ£þ!oüúýÿ!àÙ³6ÜÜK\ÿgí ÿÑÿBc4Ë\<ûè<ÿC¨
#k°ÿ²þÔÿ!À·Ù§m¼qÿ¿ÿï¡õ?¨ÿA?.ÿ_ þ!süçÿsÔÿ ÀÙç7àb®ÿóö_<ÿínÀú×%ÓþKçÿ³úúÿ]#ö_´þõ?å¶Ù§mXÁÅÕÏûO©ÿê?dãÐÿÂ]
ÿcþ?ã_Pÿwýùÿ [fOר®öÁõ¯ýÔÿÂ]ÿ£ýCh÷[ÞT%2í¿¼þ§iÿ¨ÿ]#ö_TÿãúáñÛìÓ6¶«}pÿ¿bÿaü/âÂ"ÆÿVGÞø3þ·¿Ì¾`C/¾ÄõÖþÿ¦ñ¿´ZǪ¿ËÉyöÏøßZ¨
#k°ÆÿV r}ÚÆ²G`õ³ã~û7^CüÿÂÝÿúÙøãüÿ<õ_ã_Üÿϲþä2m¤|×ÿyû/îÿGûÇ`ut±ú»,iÿýÿÂMÿ<ÿC ÿßµ9bÿeüÿÂÝÿú?£ÛìÓ6Æ|¹ÿEàÿ0úß{ü¯¢þ@6þ¸üÞqüdñüõ?!]f_®a¸þ÷É´ÿâùÿhÿr©þ»,iÿ¥ãM¤ÿ/ê׿ýÿÕ|þ¡Ô6û´
-Ëýý'¤þ©ÿ ?°þóÿAÈÿòõ?ÿB©eö¤
-ÍçC2í¿|ýÚ?£Û¹¶ú»,iÿåóÿ±þ7úW8²Æû/ÿÏÿ Ùf¶a¹ÿ"° °ëH¡þ§"õ²ñÇéú/Ìñ/ïÿÇüßÊ,³¯Ôp\ÿåö_ÞÿöA¤lõw9Y"Óþûÿÿ!Ô¿Â5ØQÿ?êÿ`ÛìÓ6Þ¸ÿßeÿNaêÜòÿ)ÍüoDã©ÿqËÿ"ó?BÈÿõ?nù?¢güØ2û:
-ÍõËþ]ÿÃóÿyÏý?ö UÿMNɳÿõ?îùÿ4óA ñ_ö_¨þÇmÿï,óBxÞ6û´
-Ëýÿ¬þo þÔÿ ÈÆÿúÌñ/ïÿGýÂóÙ4Üæ5\ÿçí¿¼ÿíö6ÐÿïºdÚùüÔÿ Ô¿Â5ØQÿ?êÛìÓ6¶kT?;
-ì_Cõ?Ö þÇú/2Ç¿¼þGÿeöÄ
-½q
-×ÿyû/¯ÿÑþ!hgm¨þ.'KdÚùø_æÿPÿ
-GÖ8bÿEõ?>ÿÙf¶a7®©~vØÖÿ5ÔÈÆ¨ÿ?Ìñ/_ÿÏÿ!`Ùs4ü]\ÿçí¿|ýÚ?¶×]ýw9Y"ÓþËûÿ±þÖÿ½6Gì¿hýæÿ
P`}Ú¿«úÙq¿ý ú_¸ëÿ þîúã¿!dAý/ÜýÿøüBeö|
-ýv®ÿóö_Pÿwÿ?Ú?´öÕßådLû/¨ÿÝóÿEÆÿA¨
#k±ÿ2ú_¸ë|þáÛìÓ6Þ²ß^ýì(©ÿíþ¬ÿA6þ@ÿ?Öÿ
9þåýÿøüÂ#ÙWhh®ÿ2í¿¼ÿíQMcª¿ËÉö_Þÿõ!Ô¿Â5ØQÿ?æÿPh}ÚåþDÿ÷Hÿ?æ ÿó?BÈÿòþÜÿC(´Ì«a²ßÎõÞþËûÿÑþ!tþÔÿ®K¦ý÷ÿcþ/ÿ½6G쿤ÿ¦ÿ?Gn³OÛ°Ùo¯~vØ¿·HýþdãÔÿèÿ!süëôÿÁðÈeöL
-óÏáú?oÿÅõ?Ú?kÚήþ.'KdÚyýú?ê׿ýÿ¥ÿÛìÓ6ìc>§úÙQàÿk1þùÿÈÆÿËü2Ç¿|ý_>ÿpp}ÝFâúßiÿåëÿÒþ!è¦ú»,iÿåãÿõ¿ksÄþÆÿ2ÿÒÛìÓ6Þ¸ÿïÔÿê*Òÿlüúý?!dyýõÿ ^fOÞH×pý·ÿòúívÖRÿ».ö_^ÿ£ÿê׿ýÔÿ4ý!`¶Ù§m¼m\Sýì¸ßþ½ÊÿúO¼éúÑøçÉã¯C¤þ!oüEòpýïÆßÝü?¹þ³Ì¾PÃ
-~ÂõÖþEòßó¿Ù¿÷þ?v±ú,gÿ"ùO¨ÿÅþ§©ÿA¨
#k°ÿ½ò_Îþß1ÿ/gm³OÛ*ÕÏûÏuÿËÒÿë?@?Nÿ¬ÿ!oüËëûÏZfÏÚHÃpýµÿòú_`þ?!xºÿ]<ûèÿ@ÿ¿ksÀþêõ <i}ÚÆÛð'ÕÏûPý/PÿA ¤þg8þòÆ ÿÑÿÂÙ³6Ìè'\ÿgí ÿqÿ!꪿ÉÉ"yö_^ÿ3Ôÿ!Pÿ»6쿬þÇøÏÙf¶aG?©~vÔÿ1
-²þ/õ?²ñÇÕÿ
-Ôÿ dùú¿Ô
ÿ <gE5ÌÑÏáú?oÿåëÿÒþ!F'Wý]NÈ´ÿÒõ¢þúßµ9bÿEëÿRÿðmöiûÿ
-ù?ÔÿÿA6þ@ýñ¿2Ç¿¼þÇø_Yf_¢rÞÅõÞþËë´Æ©À×%ÓþKë&2þõ¿ksÄþêôÿððmöio9ïª~vèÿ ÿîñ¿¬ÿ A4þøßp¯ÿÁú/òÆ¿düo¸Çÿòù?/³u4ô{ëÿ¬ýÿ
-÷ø_EûG`=Ýÿ®Lýÿ½ë¬ÿ¡þ¬qÀþÅÿ{ü/ÿAxî6û´÷8àúgGþ¯ÄÿÏßô¿è©ÿ ?ÂÿÏßüÿ¼æø#ÈÿþþæÿgùüÂsÙ44ÿeØAÿ¿ýÚ?m6ÕßådLû/èÿçïþÔÿ!Ô¿Â5Øÿ?óÿÓÌÿµÍ>mÃrÿ¿7þéÿ§©ÿA?Òÿú¼ñ/ïÿçyþZf_®án
-®ÿ³ö_ÞÿÏóù?Njþ&'äÙ?ÀÿúúW8²Æû/êÿg©ÿAxö6û´{¸põ³ã~û·¹ò\ÿÑ1Zæÿ ÿLù/KÿÓÌÿ!küeò_Îú"Ïÿ½Ì»QiÔ,ûÉçïãÿ Pü»6Yö/ÿrô?mÿóÿ]|ûß-ÿåìÿ-ÿc8Å6û´·êgGÿoÈU »ÆÿjÅú¯dãÿeýgã_<þ×ñù?S,³PIOô.®ÿóö_<þöÁ(¨^Lû/ÿËú¨ÿ]#ö_2þ×0ÿ7RÛìÓ6Þ¸ÿï#ðÿU
-ëÿVlüYÿ·62Çõ+¡Ô2{¦É;×ÿyûgýßJ0! ¹.öÏú¿@ýïÚ±Öÿ}}¸Í>mÃæ¿½úÙQ ÿûÜÀ]GýÿèÿA6þ8ÿ¿@ÿOã_Þÿù? <p}\ÌõÞþËûÿÑþ!è¦Ô ®K¦ýöÿkÛ´õ¯pd#ö_Ôÿþ¿Êm³OÛx\\ýì(°ÿ©ÿq¯ÿkèÿA4þúþ^ÿþòÆ¿dý¯ÿÁü_Ê-³¯Þ¸y
-rýµÿõ?ü½þ÷ÿºøßêor²Hý¬ÿqÿÕôÿ@íÿÚ°ÿBõ?ü½þý!<}}ÚÆÍk°úÙQÿ¤ÿÝëÿvþ¿ÔÊ#dýßÈñG7þåëÿ>ÿðôeö
-Ãçö_¾þo`þ?.
\ È
-Y$Ïþõùüõ¿ksÀþÖÿeþOÜf¶a¹ÿ³Õÿ4õ¢ñGêã oüËëÏÿ <q=o#qý_·ÿòúý18Õ4Õßäd<ûèÿ@ýïÚ°ÿ²úÿAxæ6û´7îÿ§ößhþïúã?!Æ¢ÿÅ[þ?Åøoyã_Rÿwÿ?>ÿðÌeö<´ô×ÿYû´þFöï=íCÛï!V%ò쿤þïúÿA þwmØ!ý/Þõ?ÆÿCn³OÛx[z©úÙQPÿÇbêÖÿ "`ý_Öÿ9þåëÿòù?è2n¸ãÃõÞþË×ÿ¥ýC°íbK
-àºdÚéú¿¬ÿ¢þ¬qÄþÖÿeþ_Øf¶ñvüsªù?ÁÕÿUúÙøãêÿzê2Ç¿xý_Ëó?,³¯ÙÐ\ÿ;2í¿xý_Ú?Rª¿ËÉö_ºþ¯Ôÿ Ô¿Â5ØÉú¿úÒÛìÓ6,÷ÿýß9¤ÿë@?ÎÿϳþÌñ/ïÿÇý?ÒËìóúÃõÞþËûÿÑþ!ضßMõw9Y"ÓþKûÿÈüê_áÈG쿨ÿó@8¼Í>mÃ>âsªöo úë@?Pÿcýã_\ÿ³Ìÿáð2{îæú¿N¦ý×ÿhÿL
-úßuÉ´ÿòúý!Ô¿Â5ØQýõ? <f}Úåþÿo£èÿW²ñ§ÿ_md?ýÿ*á1Ëì+4\λ¸þÏÛ?ýÿ*Á8Åú&ÓþéÿW õ¯pd#öOÿ¿×çáÛìÓ6ÞrÞUýì(ÐÿAõoú_û:õ¢ñÔÿ½é!²þ/¼ñ/Yÿ÷¶þßò?rý/ÏÃÙZæÖàú?kÿ®ÿëÇú÷Ôÿ ´ã_ÿMNɳÿõïú¢ÿ/Öþ¹6ì¿PýßÛþßYÖÿ
ðìmöi÷ðáêgGþþQÿ¡}ñDãÑÿü]ÿcü7¼ñ/©ÿù»þÇõ³Ù7:A®ÿ³ö_Rÿówýú?ímSýMNɳÿúß½þfüúW8²Æû/¤ÿù»þÇøÏßf¶Ñ9V?;
-ì_yÖÿÙø³þomd?ëÿVÂóÙ'7Ìê5\ÿçíõ+A[«ÿïºdÚ?ëÿVýÿ®Íûgýß×µÍ>mÃrÿ¿·þwn p×býþdãÔÿèÿ!süËëôÿZfÏ×H{.æú?oÿåõ?Ú?lbþ¿ëiÿåõ?úÿA þwmØQýÏÿ ßf¶ñÆýÿ7²üÈüõ? Æÿõ? äùüÏÿ!_f_¶º×ÿYû/ÿ/ðüÁ(O àÂäÙùüõ? Ðø¯Íû/ÿÏ1ÿ§o³OÛ¸Õ©~vÜoÿ6Aõ?Öÿ þë@ÈþÇõÂÓÙ6ÿmØ?@ÿ£þÁM àÂäÙ?@ÿcýõ¯pdö_Vÿ£ÿ?'n³OÛxãþNÿ7¹@ºÇÿÒÿlüñ¿ôÿ9þåãÿÂÙ§7ôö5\ÿçí¿|ü/íö)2ÿßuÉ´ÿòñ¿|þ¡þ¬qÄþÆÿÒÿ`}Úݾ¦úÙQ`ÿXÿC+æÿ þÿBæø×ÿøü`=Q#IßÅõÞþë´¦Ýk± ðuÉ´ÿÒúUÿ@çßksÄþKêùÿ Ùf¶ñ&}Wõ³ã~û7*7 ¸ëHaü¯Vôÿ þwÿõôÿ9þõ¿p×ÿÿ¡È2{²Î;×ÿyû/¨ÿ
»þGû`B0®ú»,iÿõ¿{üo¤ÿúW8²Æû/£ÿ
»þGÿ_Üf¶aóß^ýì(©ÿñ¿ôÿ ÿ£ÿ'Ìñ/îÿgÿÂÙmh®ÿrû/îÿGûÇ MºÀ]NÈ´ÿâñ¿þ?hû׿ýÿ¥ÿ/Ø6û´
-ËýÿÎúßÿ¿÷ø_Öÿ `ü/ë@Èÿòñ¿|þ¶Ì¬áøüïF¦ýÿ¥ýCÐѱ È
É´ÿòùÿ¨ÿC¨
#k±ÿ¢ñ¿Ìÿ¡ð6û´7îÿoümÿeü'Ùøãâã¿!dùø_æÿPx}jCíëÿ^û/ÿKû`ÛÅúßuÉ´ÿÒñ¿ímIûG@Û¿6Gì¿hü/ãÿ!<`}Ú8Û÷ÿkú²ôÿ«ÙøÓÿ¯62ÇþðeöeIþ.®ÿóöOÿ¿Jh{ÝÙêïr²D¦ýÓÿ¯¨ÿ]#öOÿ¿×§À6û´7ù»ªö¯2ÿ_ þ@6þ8ýÏ?Ìñ/®ÿYæÿP
`}¥Û¸ëÿ¼ý×ÿhÿ´³õ¯K¦ý×ÿXÿBý+YãýÍÿGÿmöio×T?;î·ÿ+ÿ õxÓÿõ?¢ñÏÿ2Æ_GEýBÞøä?áúß¿Ìÿ³Ì¾¡^âú?kÿ"ùO¨ÿuöï=ínWfSý]Nȳü'ÔÿâMÿ3Ôÿ Ô¿Â5Øÿ^ù/gÿïÿv}Ú]x©úÙq¿ý7¹á¿ÔÿNhü©ÿUGÞøSÿ«ì2{ÒY|ëÿ¬ýSÿ«cÕßåd<û§þWÿ½6ìú_ ·Ù§mØÅªþ¿&"óÿQÿ `ü/õ_ã_>ÿâú ¹Ì¶¯áú?oÿåóÿÑþ!h¢¯þ.'KdÚùø_ÿ!Pÿ»6Gì¿hþ?êÿ ÛìÓ6Þ¶¯©~vèÿØø_Öÿ
¤ÿëÿBÈÿ÷ÿ Ëìùnñ%®ÿ³öðÿ£ýCèüÿÿïºäÙ?Àÿõ Ô¿Â5ØYÿ?Öÿ
Üf¶±,V?;î·ÿ` úýÿ ƧÿÖÁ7þ ýþ?Ëìù!ëÿ¬ý?Zÿóýϳþ'Ëÿ^<û/¯ÿ1ÿ?úW8²Æû/«ÿÑÿÂS¶Ù§mLÀêgGÿ¯W¬ÿ[²ñgýßÚÈÖÿ§,³Ïn¸Ýsý·Öÿ«¿ËÉöÏú¿Pÿ
-GÖ8bÿ¬ÿûúÜf¶ñ¶ûâêgGþ+ÿåùÿ)ê?Dãôÿsyã_ÞÿÏÓÿBÉeöõzü®ÿ³öðÿãþB©þ,gÿ ÿ?KûG@ã¿6쿨ÿ¥ÿ?§l³OÛ©~vÜoÿÆç w¹_ÿ ¬ÿD6þÿ¿Àú@2Ç¿ ÿ_`ý OYf×àú?oÿýÿë ±¦íìêïr²D¦ýôÿ¬ÿ¤þ¬qÄþËøÿÖÿ rp}ÚÆrI_îÿûHêÿXÆÿVlüÿ[ãÏøßJ8¸Ì¾v#m^ÃõÞþÿ[ ÚÛÀ×%Óþÿ[ ¬ÿ{mØ?ã_Ä6û´·ÍkªöÐÿO3þlüqþñ¿2Ç¿¼ÿã! Ù4\Æ»¸þÏÛyÿ?Ú?ö¼å}õw9Y"ÓþKûÿYÅø_õ¯pd#ö_Ôÿñ¿¿Í>mc[íãþÍÿ×aòÿÝô¿öBê?DãÉÿîùÿ,ÇAÞøÌÿîùÿøüÂãÙ:ïñÃ\ÿgí¿dþ¿pÏÿGÿ?VESýMNɳÿùÿîñ¿ÚÐþÔ¿Â5Ø¡üáÿÏÿ <y}ÚÆ{üpõ³£Äþ=2ÿý¿ ÈÆèÿGÿOã_ÞÿûO^f6Ì#>ëÿ¼ý÷ÿ£ýC°m¿S ¼.ö_>ÿý 0þ÷Ú±ÿ¢þôÿ
px}Ú}ÄçT?;î·ÿ¨¡õÿ
-hüõÿBÞø¯ÿÿÂáe¶Fâú¿×þõyþ¢Õßäd<ûÔÿ¥ÿ?ê׿ýÿëÿ~}ÚÆ÷ÿ«ú¿Q8ÿ?ÕÕÿ¢þSÙøëÿj?Ìñ/îÿgùü~7æú?oÿÅýÿhÿLÒ¡þ»,iÿåýÿøümÿÚ±ÿþù? <j}ÚÆ±BÀÕÏûשÿÑÿlüúý?!dyýë?G-³'nèoçú?oÿåõ?Ú?µ
-ÕßådLû/¯ÿÑÿBý+YãýÕÿèÿáqÛìÓ6W?;Jì?"óÿ±þÙøõ?Ö9þåóÿqÿáqËìYæÈÛ¹þÏÛùü´&ª¿ËÉö_^ÿcþÿ½6Gì¿hþ?æÿ
ð°möiöÈÛ«÷Û¿
-Èú¿ÌÿA4þÈú¿ôÿ7þåëÿ2ÿ-³54×ÿ
-ûÔÿeþ?.(Ê&Ï
þõéÿ¡þ¬qÀþÖÿåó?OÜf¶a¹ÿ±ÿ[þ7£þC»#`þ?¢ñÇÕÿùÿ ä? þóAxâ2{ºáó¿ö_¾þGàóI7,ÿ{aòì¿|ýÃçèÿwmØÙúÌÿá ÛìÓ6,÷ÿ+ö°úã?!Æ©ÿ1þBÞøô?>ÿðeö
-³ð×ÿYû´þ¦úínWf
-×%ÏþúõÔÿ®Íû/«ÿ1þv}ÚÆRÀêgÇýö¯Ü à®#¥ùÿ4ý¿ ÈÆÿ/ÐÿBæøÏÿÇø?Øeöi
-ùv®ÿóö_>ÿíB;Õ& _Lû/ÿÏ*úÿ@¨
#k±ÿùÿ,ý!<v}Úåþýþçïõ?¨ÿA?Bÿó÷úÔÿ dAýÏßëÿòüá±Ëìk5Üö5\ÿçí¿ þçïõiÿ´OÑW%2í¿ þçïõ?¨ÿA¨
#k±ÿ2ú¿×ÿ þ°Í>mãmûêgGý«Dý¯:dãOý¯62Çú_% ÙS7ôú5\ÿçíú_%h«þ.'KdÚ?õ¿J¨
#k±ê¯h}Ú]¿¦úÙQPÿ§Öÿ¥þA4þ¸ú¿¬ÿ"oüõYÿh}©Fâú¿aÿåëÿ²þ4S]<û/_ÿç4þksÀþËÖÿ¥þáÛìÓ6Þ¸ÿ«ÿþQÿ¡Ýê?Dã¬ÿa8þòÆPÿë?'.³§k8>ÿÛiÿú¿Ôÿ!$Ý0ü÷ÂäÙ? þ¦ý#¨
#k°ÿ²õ?Xÿ¶٧m¼qÿ¿æÿã«C6þÿÌñgüo%<a}ZCËßÅõÞþÿ[ m¯»úïr²D¦ý3þ·hû׿ý3þ÷õ)°Í>mc©È/÷ÿ»ôÿÜôYþ]ýê?å?ÒÿÏqüä?Àÿ/pýGP`}ÕÆ\`®ÿ³öðÿãó©]i«¿ÉÉ"yöðÿ£ÿ/úW8²Æû/ëÿÇçðÛìÓ6æjW?;
-ôÿ\ùOÿMÇhÿ A2þò_Nþ¿ ÿ
-!küeò_Nþùü~}¥áú?gÿ2ù/#ÿwÿÇPÿ¬eÿ2ù/'ÿ6Ôÿ!0ÿߵɷÿÝò_ÎþßzÆÿC8Å6û´
-[ýì¸ßþ
-(ÿß{ýÆÿB?®þGÿ
7þåëx>ÿpeö
-wopýµÿòõ?<ý!Øve®þ&'äÙùúú?úW8²Æû/[ÿÏÿ!<y}ÚÆÛ½Qýì¸ßþSÆÿRÿ dü/õ?yãÿ¥þáÉËìYiá%®ÿ³öÿhý/Lãiÿt·2W%òìÿKýýÿ®Íû/ÿë©ÿAÀn³OÛx[x©úÙQPÿ;; ¸ëH©ÿ¦þA4þHÿ?ê¿òÆàÿÇü?°ËìË4Ò{ëÿ¬ýüÿíõ)VEòìàÿÇó?ê׿ýõÿ³Ôÿ!<w}ÚÆ»û÷ÿ=ýß ýÿë?@?Òÿõ_ ä?ÀÿçÏ]fÏÓpó/qýµÿíî-U%ò쿼ÿ¦ÿ/úW8²Æû/[ÿÏÿ!·Ù§m¼Í¿Týì(ÿ×6S ì:Rêÿ#õ²ñÏ åã¯oþ_ÿòd¿H ìXöüÏ+ËüßÀËì3æÀÛ¹þÏÛ¿H ì:r¿þw³ÿ@ûÇ`¢¶¡ú»,iÿ"pÛþ§þú?úÿ]#ö_°þ×ÌÿáqÛìÓ6ì·W?;
-ôõÿcý_¢ñÇùÿ
Èú¿òÆàÿÇø[f_»¡ç_âú?kÿ ÿ?Ú?Îÿ¯þ»,gÿ ÿ?êÿhû׿ýõÿcý_àmöivþ¥êgGýòÿ½ëôÿ ¤þGÿOyãÐÿ¸þC /³§mù¸þÏÚ?@ÿ£ýC þwmòì ÿÑÿýÿ®Íû/«ÿÑÿx}Úõ¿-ûw¹á¿Yñ¿ùß ÆYÿù!ä? þ÷ÿÀËì+4×ÿ-ûÔÿ ÿßö{õ79Y$Ïþõ?ÿõ¿ksÀþËÖÿ`þOÏÛf¶ñÆýÿýõÿ£ÿÑø#ëÐÿBÞøüÿxþð¼eö|Äç;í¿¤þ÷îÿÇún|õ79Y$ÏþËûÿúÿ@ þwmØYÿ?>ÿðmöioÜÿ¯Ø¿vRÿÃwú¦þA6þúþ^ÿú/Ìñ/XÿÃßê0ÿ',³'h,Tûåú¿×þÖÿ¸Ù ýcÐÉY
-×%ÓþÖÿð÷ú<ÿC¨
#k±ÿ2õ?üþõE·Ù§m,TûåþÍÿ7×ýOîÿ¥c´¬ÿ A2þîYùÿ4ë¿@Èû_Îó¿[ü7×ÿò]f_½¡¹þÏÚ¿ÌýoÇùßýÿëbðÚTe²ì_æþãÿ§-õõ¯pd|ûßíþ³ÿ·ÌÿáÛìÓ6lý³£@ÿ·¹ »®úÿ)ÖÀ ÿý?!dqÿ?ËõÂÙ§4ÿudÚqÿ?Ú?Rª¿ËÉö_Þÿú?Æÿ^#ö_Òÿõ0Þf¶a¹ÿïØ¿Æÿ²þÙøãô¿Àú/2Ç¿|ü/÷ÿJ/³'lhÁÅ\ÿçí¿|ü/ínª¿ËÉö_^ÿcþõ¯pd#ö_4þõ Ûf¶aW?;î·ÿè¡õ?ÿA4þÈúÿ
7þúÿ
Pn}µFâú¿Ûþõ?¸ÿÐÝTEòìPÿñ¿èÿwmØÙúôÿ ßf¶ñÆýÿºþo0úß=þW3þhü!úßÍÿ/ÆCÈÿúßíù_ôÜÿC/³¯Óèü¹þÏÚIýïæÿçÛËhÿ ´·ÿ½0yö_Rÿ»ûÿ)ÆÿA¨
#k°ÿBúßmÿï,ýÿ!<}ÚFç'Xýì(°ÿÔ@âÃ-þúÙø#âÃ=þúÌñ/ÿnñ¿Ôÿ0<E5Lλ¸þÏÛÁøßýÚ?ãÚ¡©þ.'KdÚÁøßÎþ¥þþ׿ýÿ
-·ø_ê¾Í>mCöËýÿÔþÁÔÿ¸ëùß ÈÆ§ÿyæ9þÅõ?Ëý?/³gk¤Coçú?oÿÅõ?Ú?t°ÕßådLû/ÿÈøÔÿ®Íû/©ÿiæÿð¨möioÞ^ýì(°púÔ ÈÆ¨ÿQÿ
9þåõ?>ÿð¨eöÌ
-ÿv®ÿóö_^ÿ£ýC0!Xý]NÈ´ÿâú_àùBý+YãýÕÿ¨ÿCxà6û´·ü·W?;î·ÿëþQÿ¡Ýxê?Dã¬ÿ¡9þòÆPÿë?.³/ÝHó/qýµÿGçÿ¬ÿñ$t;ÙÒÿïºäÙ? þóB ÿßµ9`ÿeë°þð6û´°úÙQÿo#ÄÿÏßãÿlüþþîÿÇü2Ç¿ ÿß-ÿ¿rÌÿ¼Ì¦aøüïF¦ýôÿ»Ù ýcÐÑ©Tý]NÈ
´ÿþ÷úñÿ¨ÿ]#ö_ÆÿïVÿÃúÿC(¼Í>mÃrÿc¿ý7¹á¿yþÔÿ Æçÿ"õ?yãðÿãùBáeöEné%®ÿ³öðÿ£ýChû=0þ÷ºäÙyÿ?MýBý+Yãýõÿ£þºÍ>mãmé¥êgGþßxdý_æ `ý_æ9þÅóÿ9îÿ!@Ù'6RÞÛ¹þÏÛñü´ÆùØT%2í¿|ý_ÆÿC ÿßµ9bÿ%óÿæÿðàmöioÜÿÏ"©ÿÿ}¯ÿKýlüúõ_ã_^ÿãó?^fÏÖÈý¸þoØyýöÁ¤}õw9Y"ÓþË×ÿåùõ¿ksÄþêÔÿ!<f}ÚF¦ìÇýÿýçÊ9úêâÿ©ÿG4þøßpÿ
-yã_2þ7ÜãÿÂcÙúéÞàú?kÿÿõcýÏ{ÿ!XEùïÊäÙÉøß»þ§=íõ¿ksÀþÅÿ{ü/ó@xò6û´÷àêgGý«Ü]GJõ¿ÈüdãóÿsÌÿ!süûÿY®ÿ¼ÌÏÿÈ´ÿâþ´mW_à.'KdÚqÿ¿Àø´ýksÄþKúÿiúÿCxè6û´Õ>¸ÿ_³×0ÿ_uÈÆùÿj#süÿ¯ºÌ©aò9\ÿçíùÿ*Áêè\õw9Y"Óþÿ¯èÿwmØ?óÿ½>G·Ù§mØ|Nõ³£ÀþsËäÅÿRÿ dü/õ?yã_>þ×óüáè2[kã]>äú?kÿø_ÆÿA°*êor²Hýâ©ÿA þwmØÑø_Ký·٧m¼ËÕÏú?ÿëÿD6þÿ?Ïø_ ã_ÐÿÏ3þÈÙç6ôæ5\ÿçí¿ ÿgü/ím¨ÿ.'KdÚAÿ?Ïø_ ´ýksÄþËøÿyÆÿAl³OÛØö¬~vÜoÿ.`üÿâÝÿþ_Dãñÿ7ýOÑÿBÞøôÿ÷ú\ÿ! Ù×j8ÅõËþKúÿÅÿ_ þÁËú&ÏþKúÿÅ»ÿý Ô¿Â5Ø!ÿ¿x¯ÿAÿ_OÛf¶ñ¦¸ÿõÿµÿúÙøãòÿyê¿2Ç¿|ý>ÿð´eÑÈ.ûÁõÃþË×ÿ ýC0MhBõw9Y"Óþ×ÿ<ÿC¨
#k±ÿ¢õ?¨ÿCxÄ6û´ì²ÜÿÏøÿZÿß=þWSÿ ÿ¿çÿ£þ
!oüKúÿù{þ?úÿAxÄ2[i£KÈõÖþKúÿù{þ?úÿAèâ«¿ÉÉ"yö_Òÿïÿ«xþÀü׿ýòÿó÷üÔÿ!<}ÚF\ýì¸ßþhüoÿúOyDãÿõyãÿåþÂóÙ§74ÿIíÿÑú_ÆÿÒþ!hcRªþ.'KäÙùøß.ÿí¿<õ¯pdö_4þ·½ö ·Í>mÃrÿ¿Çþcnøo^þ?Öÿ þ"ë@ÈþGÿ¸eöìÙ`a®ÿ³öÈÿÇý?¦]k«¿ÉÉ"yöÈÿÇøõ¯pdö_6ÿã À·Ù§mÌW?;
-üÌÿ×Õÿ¡þSÙøãòÿuõß8þåÉÿâùÿøü|}NÃd¾ëÿ¼ýÏÿGûÇÐNµôÿ»0ö_:ÿíâ?hÿåaüïµ9bÿ%óÿY>ÿðØmöiûÿy$öïõ?èÿA6þ@ýþ2Ç¿¸þç¸ÿðØeö¼
-ÇõLû/®ÿÑþ1´GØT%2í¿¼þGÿõ¯pd#ö_Rÿ3ôÿ
ðàmöioÜÿÏ"¨ÿíÿø°Æñ¿Õ7þÿ
/³4âú¿eÿÿ¬©þ&'äÙ?ãkþ׿ý3þ·¶Í>mÃ*îÿgõÕ@üÿüÝÿñ¿dãðÿ»Õÿñ¿2Ç¿ ÿ¿ûÿñüáiËìIfý®ÿóö_ÐÿÏßýÿhÿ´MÆU%2í¿ ÿß½þo¤ÿ/ê׿ýñÿówÿ?>ÿ Úf¶aׯ©~vØL@ýO+ê?dãÓÿãø#ÈÿòúÿC -³çh8ñ»¸þÏÛyýöÁo©\Lû/ÿYeiÿê_áÈG쿨þiÿJl³OÛx¿«úÙq¿ý·öËÿ§"ý¿ ÈÆÿÏÓÿBæøÏÿg×%Ùó4ÜÑÏáú?oÿÅóÿÑþ1F§Xý]NÈ´ÿÒùÿL¤ÿúW8²Æû/ÿOÓÿÂC¶Ù§m¼qÿ¿Àþ5´þýÿ ÈÆ¨ÿÑÿBæø×ÿèÿá!Ëì¹îÀÛ¹þÏÛyýöÁDmYÿãºdÚyýþê_áÈG쿨þGÿ?Ûf¶ñvàíÕÏú?øß»þ§YÿlüõYÿBæø×ÿ<ÿCxÜ2{êF®# ×ÿyû/®ÿÑþ1´SmÃøßëiÿåëÿRÿPÿ
-GÖ8bÿ%õ?Ëú»Í>m#×°úÙQ ÿ{¨ÿý¿ ÈÆ¨ÿÑÿBæø×ÿXÿÃcÙó4Üc>ëÿ¼ý×ÿhÿ¬1þ×%ÓþËûÿÑÿBý+YãýÔÿý!Üf¶ñöÏ©~väÿ4¬ÿ[²ñgýßÚÈÖÿËì5´ô]\ÿçíõ+Á´{Pý]NÈ´ÖÿúW8²Æûgýß×§È6û´j¿Üÿ¯éÿN3ÿ_uÈÆùÿj#süÿ¯,³çh|×ÿyûgþ¿J°*úïr²D¦ý3ÿ_%0öÿÚ±æÿ{}o³OÛ°øêgÇýöïb¦ü'Ôâþ¯ñÔÆ?OþËæø#Èü'\ÿ»ñw1pÿáø2[[#)®ÿ[ö/ÿvÿýÈþ½ÿ
àõÕßäd<ûÉBý/Þô?Cÿ_Ôÿ®Íûß+ÿåìÿ[hÿ¶Í>mãMqÿ?ëÿk0õ?ÞãYÿlüñ¿¬ÿ!süËÇÿÒÿÂÓÙ§74ÿ}mÿåãiÿt°ÉU%2í¿|ü/ý!Ô¿Â5ØÑø_>ÿP|}ÚåþÿýûÜðß<ÿ?ÆÿB?Îÿ/DÆÿBÈÿòþûÅÙWk¤ÁO¸þÏÚyÿ?Ïü_v±ú,gÿåýÿ4ýÿ!ÐÿïÚ°ÿ¢þñ¿µÍ>mãmðêgGþ¯-ÎÿOEÆÿB?Ðÿñ¿2Ç¿¸ÿåþ³Ù4¶rrý·ÿâþ´ÚYËú×%ÓþËûÿ1þõ¿ksÄþKúÿiÆÿBÀl³OÛØÊXýì(ÐÿsËÿæùÿQÿ ¤ÿõ_yãðÿãó?eöuzø®ÿ³öðÿ£ÿ/<å¿gÿ ÿ?ÿ!Ô¿Â5ØÙüÔÿ!<i}Úþ¤úÙQ ÿ'Lþ¿{ý_m¨ÿ ?®þoã_¼þ¯çúáIËì:ç]\ÿçí¿xý_Ú?ãÚ¡©þ.'KdÚéú¿V1þBý+Yãý¬ÿkÿÂ÷٧mØwU?;
-êÛÜÀ]GJõ?Eÿ/²ñêôÿ9þÅõ?Çø?_fOÔ0Ç?ëÿ¼ý×ÿhÿlk%©ú»,iÿåõ?êÿÿ{mØIýÏÐÿ¶٧mØãSýì(°ÝPÿ«ÙøSÿ«Ìñ§þW XfOÞHGÞÎõÞþ©ÿUÁS¸.öOý¯hû׿ýSÿ{}¶Í>mãíÈÛ«þ¿Þãêhe©ÿ ?°þGäø#Èÿâõ?ýÿ!<l}¡@äú?oÿÅëÐþ1èÆù¦ú»,iÿåë0ÿ'ê׿ý¬ÿaíAÁmöiE°úÙQ`ÿ.· H×âú¿Ô ÈÆ¨ÿQÿ
9þåëÿ2ÿËìnçÅ\ÿçí¿|ý_Ú?c«¿ËÉö_^ÿãùBý+YãýÿKýBÙmöio;/®~vÜoÿ*·ü¯\ÿÑ1ZEýdü3ËÿæèA9?¬ñÿÍYÿCàú¡ì2ûêú½#²ì_Vþ7ãüï]àùBý;\²FýËÊÿæèí¿hÿhÿ×&ßþwÿÍÙÿ[iÿN±Í>m£þ'£ý¿±Èü¬ÿ
-A6þÀü¬ÿ!süËçÿcþ§Xf
-÷v®ÿóö_>ÿíq>êïr²D¦ýÏÿÇøõ?á"k±ÿ¢ùÿèÿáÁÛìÓ6,÷ÿ³Hòbòÿ½ë¬ÿ A6þ8ýϳþÌñ/®ÿY>ÿðàeötàí\ÿçí¿¸þGûÇ`¢¶Ìÿw]2í¿´þg"õÔÿ®Íû/ªÿ±þÇm³OÛx;ðöêgGþ¯óÿUlüÿ¯62Çùÿ*áqËì6×ÿûgþ¿JÐÖj_ý]NÈ´æÿ«úW8²Æûgþ¿×µÍ>mãûÿ}öosËäøÿ)Íø_¢ñÏL ("ã!ä¿,`7ÀÂçÑóù?Ô2ûR
-ÍõÝþe »\?ÿû±ÿ÷ÌÿÁ©á¿&Ïþe ·íêÿ§ÿ¡þ¬qÀþw' ܲÿý¿ãó?ÏÜf¶a¹ÿ«ÿípþZQÿ ÿõ_ã_ÜÿÏÑÿÂ3Ùg5Üþ¹þÏÛqÿ?Ú?Ý8ÏøßëiÿåýÿxþPÿ
-GÖ8bÿ%ýÿõ·Ù§m¼í¿¸úÙQbÿúùÿÈÆ¨ÿ1ÿÌñ/ÿËü_
-.³§mýsý·ÿòñ¿´þGÀëiÿåõ?úÿC`þ¿ksÄþê|þ¡à6û´
-»ÿâêgGýÇÔÿÿlüqú_`þ?ã_ÞÿÏÿ!\fÏ×0âwqý·ÿòþ´Æxª¿ËÉö_Zÿ³ùÿ Pÿ»6G쿨þÇüJl³OÛ°âwU?;
-ìßë0þlüÿ[ãÏøßJ(±Ì¾BCsý¿iÿÿ¢þw]2íñ¿Pÿ
-GÖ8bÿÿ}}
-o³OÛ°Üÿßèÿñ¿Õ!ÆÿÖFæø3þ·
-/³gk$>ÿiÿÿ£½ÕßådLûgüo%ÐÿïÚ±Æÿ¾>e¶Ù§m¬WûåþÅþ]©ÿoõ
-ã!ÆRÿ7Þô?Åø_yã_²þo¼Õÿ
-|þ¡Ì2ûÂa0×ÿYû/Yÿ7Þêÿÿ!v ª¿ÉÉ"yö_²þo¼éñ¿¨ÿ]ö_¨þïmÿïã!<k}ÚÆ0F¸úÙQ¢ÿCëPÿ ÿõ_ã_>þþÿµÌ>§a¤ïâú?oÿåãiÿL»×býëiÿåýÿxþ@ýïÚ±ÿ¢þÔÿ!Ùf¶a¥ïª~vØ¿êªóÿ§þSÙøõ?ÅñG9þåã¹þC(²Ì¾T#qýÛùø_Ú?m²ÕßådLû/®ÿÆÿC þwmØIýO[Ú?Ø6û´7îÿwÙ¿±üá®ÿÑÿlüú_¸ëôÿ9þõ¿p×ÿÿ¶ÌOÛãó¿o²í¿ þîúíitbþ¿ëiÿõ¿p÷ÿ£þúßµ9bÿeô¿p×ÿèÿá!ÛìÓ6Vµ=îÿ¿éÿ:7`×ÿ='²ñgüomd?ã+á!ËìË6ÒÖ5\ÿçíñ¿ ]òÔ ®K¦ý3þ·hû׿ý3þ÷õl³OÛxÛº¦úÙQ ÿâßýÿõ²ñúÿ?Ìñ/ïÿÇüÿ ËìÓÒ²¿\ÿ7쿼ÿíBÛÕÿ½0ö_Þÿú?ê׿ýõÿ£ÿ?n³OÛýåþÎþ¡ñ¿ÌÿA6þ@ýùÿ dyýÏÿ <t=mÃpý_ ÓþËë´þWÿ]NÈ´ÿâúóÿa þwmØQýùÿ <t}Úåþÿ¯SÈúúÙøã5ÇAæø¯ÿÁõÂCÙ×ièsý·ÿòõ?hÿtlLýw9Y"ÓþËÇÿ*Ú?Úþµ9bÿEëÐÿBÙmöi{W?;Jâÿ2ÿã?!ÈÆ¨ÿ1þBæøÏÿÇý?²ËìÙnë®ÿóö_>ÿíóÿ]Lû/¯ÿ1þBý+YãýÍÿÇømöiÌÿ'©ÿÿ}÷ÿ£þA6þ8ýÏQÿ9þåýÿxþ YfOÝ0\ÿåö_ÞÿöAt»,iÿÅõ¿@ýµÿksÄþúÿQÿ Ûf¶a¹ÿßéÿ©ÿñîÿÇüodãôÿcþGã_^ÿcý?°eö\´ób®ÿóö_^
ÿ£ýCèâYÿãºdÚyÿ?ÆÿC þwmØQýù?!Ýf¶ñ¶óâêgÇýörÝÿúO¼ùÿæ ÿ<ù/cüu`þGyã/ÿë7þ.z®ÿÊ.³¯Ö0ãpýµü·ãüïGöï½§þ!TÿMNɳü'ÔÿâMÿcþ/Ôÿ®Íûß+ÿåìÿó`xÊ6û´
-;þIõ³ã~û÷ªÿYê?DãÔÿ"ÇAÞø×ÿýÿ!<e=qcëÿ¬ý×ÿ÷ÿBðMõ79Y$Ïþúõõ¯pdö_Vÿ3´OÚf¶1ÊXýì(ñÿõ¬ÿQ²ñgýÚÈÖÿ¨'-³On½sý·Öÿ¨5ÕßådLûgýJ ÿßµ9bÿ¬ÿñúÝf¶a÷^\ýì(°Û õ?ÆB?Nÿÿ9þåõ?æÿPt=q#qý¿iÿåõ?Ú?¦p]2í¿´þgõ´ýksÄþêÿPx}ÚÆ÷ÿ7ör»¤þwNdãOý¯62Çú_%^fÏÔÐïâú?oÿÔÿ*¡íoOÿ¿ëiÿÔÿ*¡þ¬qÄþ©ÿ½>ßf¶a3ÞUýì¸ßþÁÄÿÆÿ?Bÿÿ9þõ¿Àø_ _fOÕ0?ëÿ¼ýÔÿã"õ¿ëiÿõ¿Àø_ ôÿ»6Gì¿þÿä1ÛìÓ6,÷ÿëHâÿ¡þôÿ `þ?úBÈÿâþõ!<f}µÞ{1×ÿyû/îÿGûÇÀü×&ÓþËçÿ£ÿúW8²Æû/êÿÇçn³OÛ`þ¿ßèÿÊàüÿT¤þA6þ@ÿ?ê¿2Ç¿¸ÿeü¢ËìiÏÿÈ´ÿâþ´mW+[ý]NÈ´ÿòþ<ÿC¨
#k±ÿþú?n³OÛØíûÿ5ý¿êÌÿB6þ8ýùÿ0dùø_ÿ!<t=qCsý%ÓþËÇÿÒþ!´Gª¿ËÉö_Zÿcþ?õ¯pd#ö_4þúo³OÛÈ®~vÜoÿ)Sýê?ñöªèÿdüóÔ¿ñ7:hæÿ5þ"õOºþwãï"÷ÿ¼ÌVÕÐ\ÿçí_¤þí9ÿûý{ÿA·mõ79Y$ËþEêTÿëìßjËüê_áÈùö¿w÷µÿ·ùÿ `}Úåþ¿ïÿ«sÀ®/ÅþúÙøýÿÇAæø
÷ÿ3\ÿ`-ÜpGÞÎõÞþËûÿÑþ!<k \Lû/ÿKýBý+Yãýõÿ£ÿ?m³OÛx;òöêgÇýö\À®#eþ_JYúÿA¦ |üuTôÿ7þ2Àn¥þÌÿáaËì«7ÒìK\ÿgí_æ Øu¤ÐÿÏÿ!4ÑRþ»0yö/s ܶÿÿ1ôÿ@ã¿6ì·àýÏìÿ§ÿô6û´·Ùª÷Û¶üÿk©ÿ ?4þ7rüd?"þë?ô2ûJ
-ÃõÞþËÇÿzÆÿc`üïµÉ²Düo ý# þwmòí¿pü/ýÿ!`}Úãù?£ÄÿzÆÿ?"þ×3þHæøÿõÿreØpÒwqý·ÿñ¿ñ¿@L»×jª¿ËÉö_0þ×3þHý+Yãýyþïÿ¤È6û´y'?îÿ÷Ø¿Ëÿròÿ)Ãú¯Dãÿ
-ñ¿òÆ¿|üo ÿ"ËìK7´âú¿eÿåã=Ïÿ|°¦ú,gÿ%ãïùÿ4ëB¨
#k°ÿBñ¿·üÝhÿ ¶Í>mÃ*îÿgý±ùÿèÿA4þÀüþòÆÿþ?¶Ì§øüOjÿÖÿÂDÿ£ýcÐÆ4¼.yöÈÿGýmÿÚ°ÿ²ùÿèÿ·Í>mãûÿ]ú¿Aúÿ1ÿÑøCô¿p÷ÿcþGyã_Rÿ»=ÿën®ÿ pËìË4×ÿ-û/éÿîþôÿàÛ~¯þ&'äÙ?Àÿú?úW8²Æû/êÿÇü·Í>mãûÿÙú?
-éÿÇø_¢ñGÆÿz?¼ñ/ïÿÇø?Ï[fO×p|þ·×þñ¿ÜÿCHQÅêor²Hý÷ÿcü/úW8²Æû/êÿÇø_ømöioÜÿ¯Ù¿ÇÆÿ2þhüñ¿¬ÿ!oüùÿxþ_fOÝH£pýµÿòú_ ÿ/¨#C /LýâÿÆmØYýÏÿ!<g}ÚÆÛè'ÕÏûíßè ©ÿîõ
-õ²ñGÔÿ½ÅÿFÏú2Ç¿`ýßp¯ÿËç³Ì"úÈÛ¹þÏÛÁú¿á^ÿöÁÄàRõw9Y"ÓþÖÿ½ÇÿFêÿê_áÈGì¿Lýßp¯ÿ«iÿ¶Í>mÃy{õ³£Àþ³ v)ÖÿÿA6þ@ýñ¿2Ç¿¸þgùüÂÃÙó5Ü>ëÿ¼ý×ÿhÿ¬L xa2í¿¼þÇø_õ¯pd#ö_Tÿãó?Ç·Ù§m¼=àsª÷Û¿öø_¯ÿAÿ/¢ñÄÿú{þ?úBÈÿñ¿þÿûÇÙj],0×ÿYû/ÿëïùÿÿA{ÛTEòì¿dü¯¿çÿ£ÿÆÿ^ö_(þ×ßëÐÿÂó·Ù§mtúaõ³£Àþ]nÀ®3
úVÔÿ ÈÆáÿwÓÿb þ!süúÿù{ü/õ?Ï_fÐ0»/æú?oÿýÿü=þöA§Æ¹êïr²D¦ýôÿ»éVQÿ@ýïÚ±ÿ2þþîÿGýBÉmöiv÷ÅÕÏû×Pÿ?ê?DãôÿÔ!ä?ÀÿþÿJ.³¯ÞH\ÿ쿼ÿócÐʰþï
ɳÿòþçÔÿ®Íû/ëÿGý ¶Ù§m¼qÿ?ÿ·¬ÿQ²ñgýÚÈÖÿ¨,³¥éÃõÞþYÿ£ÿïÚdÚ?ëTõ¿ksÄþYÿãõ9¾Í>mùÿv Ðÿ¦þï{ü/ë?@?0þõ_ dùø_æÿp|}ãú? ÓþËÇÿÒþ!Õ4¾ú»,iÿåã©ÿC¨
#k±ÿ¢ñ¿Ìÿ¡Ð6û´7îÿì?"óÿiê?dãÔÿ¨ÿBÈÿòúãÿ ZfÏÙ{rý·ÿòúí1ÞÒèºdÚyýç´ýksÄþKêú?ÛìÓ6äÕÏýªÿ)ê?dãÔÿÇAæø×ÿ×%Ù7×ÿ!ö_^ÿ£ýC0ºk«¿ËÉö_^ÿ£ÿ/ê׿ýõÿ
ãó?e¶Ù§mXîÿì·«0õ?½þõ¢ñÔÿ¸åÿú/¼ñ/Yÿ#Üë®ÿÊ,³/ßpï
-®ÿ³ö_²þÇ-ÿ÷ÌÿÁúÄú&ÏþKÖÿ¸çÿS<ÿC¨
#k°ÿBõ?½þõÏÝf¶ñöÞ¨~vÜoÿTÿ÷]ÿcý¢ñGê¬ÿ!oüúã <w=e£ï#ÈõÖþú÷ÿ¼6õßäd<û/¯ÿiêÿèÿwmØYýõ <o}ÚåþÎþcnù_¡þoú¡ÿÑøCô¿xÿUôÿ7þ%õ¿xÓÿýÿ <o=[c64ëÿ¬ýÔÿâMÿ<ÿChÕßäd<û/©ÿÅ»þGÿ?Ôÿ®Íû/¤ÿÝöÿõ¿0À·Ù§mÌW?;
-âÿLþ¿pÏÿGýlüùÿnþñ¿2Ç¿`þ¿ÿbü/ø2ûFÊ|;×ÿyû/ÿïfÿö¡jj ×%Óþæÿ÷üÔÿ Ðö¯Íû/ÿ/ÜëPÿðØmöi²¿ÜÿÏØ?(ÿ¿Çÿ²þ/ÑøCüÿnõ?ëÿbÈÿþ·ü¿õ?1<v«á¸þ/ØIÿ¿[ýÏú´2Ìÿwaò쿤ÿ¿çÿcþõ¯pdö_ÈÿÏßãYÿ ¶Ù§m¼qÿß³ãÐÿ¯{þGý§<²ñÇùÿËñG9þÅýÿó@8Á2[¦¡ò9\ÿçí¿¸ÿíÕѱþïuÉ´ÿòþôÿ
Pÿ
-GÖ8bÿ%ýÿÿA8ºÍ>mÃ>äsª÷Û+ÿeåÿ³Ô Æÿú/¼ñ/ÿ/2ÿ£Ël
-Çõ_jÿöÿü´ÚÆÿ^<û/ÿçõ¯pdö_4ÿó`Àm³OÛxãþþ¯"Òÿõ_!ÈÆçÿçYÿBæø÷ÿ£ÿ?Ü2ûÄFÊ~;×ÿyû/ïÿGû`Ö¾ú»,iÿ¥ýÿL¤ÿ/jÿ׿ýõÿãó?Üf¶ñýöêgGþ+ÿåùÿQÿ ¤ÿõ?yãðÿãùÂ#Ùm®ÿRûøÿÑþ!hcRªþ.'KäÙ?Àÿúê׿ýõÿ£þ·Í>mÃrÿ¿KÿÏ-ÿãÿ×NÔÆ¢ÿÝýÿëÿBÈÿúßíù_ôÿ[f_ªaÞ\ÿgí¿dýÿÜÿC°>1ýß
ɳÿúßÝÿO³þê׿ýÒÿnûçXÿÂs·Ù§m¼gäþ¿gÿZãâUdýW²ñÆÿ²þ3Ìñ/ÿk¹þCxî2i¤ü·sý·ÿâñ¿´& ¾0ö_>þþ¿¨ÿ]#ö_2þW³þ7n³OÛxË{õ³ã~ûÏÿÇêõñÏtÿËÿ
-ú/¬ñ¹ÿåøÿÈçÿ¸ÌÖ×H\ÿgí_æþ·ãüïÆñ¿ù¿0xfÿ»4Yö/sÿËÿÕçÔÿ®M¾ýïvÿËÙÿÛ@ý¶٧m¼qÿÿÕþuÀÔÿð÷úÌÿA6þÿ?óÿÌÿ!süúÿù{ýîÿ!aÅJz|þ×'Óþúÿù{ýÚ?£
-àuÉ´ÿþýÛ¶MûG@ýïÚ±ÿ2Ïÿý½þÿA(´Í>mãûÿÿ_Ìÿ§©ÿA?.ÿ_Ôÿ äùüç
Ù×oܹþÏÛùüñ¿ºPëêor²HýòÿQÿ@ýïÚ°ÿ¢ùÿ,õ?ÏÞf¶qæþ¿§ÿG
ôÿcý²ñÇùÿyÖ9þÅýÿÚm × Ï^fÁ
-'|×ÿyû/îÿGûÇ`´WÌÿw]2í¿´ÿÔÿ!Ô¿Â5ØIÿ?ÖÿÁPf}ÚÆ÷ÿCñÿÙ »åSÊRÿ ÿ_¼×ÿ¥þ!oüKúÿÅ{ý_ÿ!Yf_°af_âú?kÿ%ýÿâ½þ/ÿCh¢IÕßäd<û/éÿwËÿgõ?ôÿ»6ì¿ÿ_¼×ÿ¥þ½Í>mÃξTýì(ðÿ5WÿW+Kýlüõ#ÇAæø¯ÿëÿ½Ìîàçpý·ÿâõiÿL
-ùÿ®K¦ý¯ÿËçê_áÈGì¿dý_chÿ³Í>mãûÿuþ¿Ö1þ·:dãÏøßÚÈÆÿVÂcÙl8®ÿöÏøßJÐ!5Mõw9Y"Óþÿ[ õ¯pd#öÏøß×§ô6û´}
@ª÷Ûj ñ¿ôÿ dü/ýÿ äùøßHÿ¥Ù×h¥¸þÏÚÿ£ãÃ$þö¡í÷િËÉyöÿ¥þñ¿×æýÿõôÿ Ýf¶a^ª~vÔÿÖÿPúÙøýÿ¨ÿBÈÿòþÌÿºÌ¡¡Eïâú?oÿåýÿhÿr©þ»,iÿåýÿxþ@Û¿6G쿨ÿõ¥¶Ù§mXîÿûì?dü/õ²ñêÔ!dqýù¿0ZfÏØpòwqý·ÿâúíCÛëÎV%2í¿¼þÇó?úW8²Æû/©ÿ1ÿÛìÓ6Þäïª~vøÿæÿÈÿeþ?¢ñgýßêÈÖÿ
Ëì+6¤A®ÿ³ö_>þöAw+sõw9Y"ÏþYÿ·ê_áÈìõ+ »Í>mcI¬~vèÿXÿWkê?dã«ÿ<ÇAæø¯ÿËõv}j#e¼ëÿ¼ý¯ÿKû`¬§þwa2í¿tý_Û=ÿ¥ýùÿ®Íû/Yÿ·óÿ¡ýçñÛìÓ6Þ2ÞUýì(°
-Íÿg¨ÿ ?.þ×?Ìñ/ÿë?Ç/³¯Õpë×pý·ÿòùÿhÿ´M&V%2í¿xüo`þOõ¯pd#ö_4ÿó@ m³OÛx[¿¦úÙq¿ýþþ_dãôÿ£ÿ'Ìñ/ïÿÇø eöI
-}ôs¸þÏÛyÿ?Ú?ÓèÄú¿×%ÓþËûÿQÿPÿ
-GÖ8bÿ%ýÿý!<d}Úåþýös忼üÔ Æÿú/¼ñäÿcü,³54æ¹þÏÚÿ£óÿyæÿ{M´¼0yöÈÿÇó?úW8²Æû/ÿÏSÿÞf¶1ïXýì¸ßþ½Eêñ¿DãÓÿBdü/¼ñè\ÿ! Ù³7Ìð'\ÿgí¿¼þç©ÿCÁêor²Hý×ÿ4ã!Pü¿6ì¿lýÆÿBxÒ6û´
-;üIõ³£ þßaâ=ãÈÆÿñ¿2Ç¿xþ?ÆÿaxÒ2ûÜÞ}1×ÿyû/ÿöA§Æ1þ÷ºdÚéüÿQÿ
-GÖ8bÿ%óÿÑÿCÉmöiv÷ÅÕÏû÷
-RÿÔÈÆ¨ÿY?Ìñ/¯ÿñù?ËìIIp1×ÿyû/¯ÿÑþ!è¦ôº.ö_^ÿ3´´ýksÄþêÌÿ¡Ü6û´7ÁÅÕÏû×Èú¿Ôÿ ÈÆ§ÿyê2Ç¿|ý_ÿ![fOÜH»/æú?oÿåëÿÒþ!tþ¬ÿ{]2í¿xýßHýõ¿ksÄþÖÿ¥þ¡ä6û´·ÝW?;
-êÿxÏú¿Õ!ÖÿÌñgýßJ(¹Ì>³!qòãú/¶Öÿkoª¿ËÉöÏú¿@ýïÚ±Öÿ}}n³OÛ8ùqÿ¿ËþÃéôÿ!þGÿ?ã_\ÿ£ÿËìk4töÛ¹þÏÛqýöÁ¶ç«¿ËÉö_Zÿ£ÿúW8²Æû/©ÿÑÿÃ#·Ù§mØì·W?;î°ÿú˧ÜÒ¿7ºÅêh4õ?{Ç¿û?Àøocèÿ A6þ?þímý&ûÝ ¯ÿ:øÑøNàú Ñ?ýõËoLh]Úoo?ùá˯¿~p)&oüý'Ûßï~ü)~ûåÇß>ýòý§ÿöéþîvì÷í÷?uPw¯|06Ũ¢ûö§ßþúéûÏb·³K¶úEõ
Ùÿ~øòãç¿cÃþuûqþiÿ¾ý¿;ÃÔþùÓÿó§ß>~ÿ?ÜH*F«ÍýÞÿíOÞ_ÿ2í
-/ø_¿~úËï|ÑEÛ¿àïß~ûòo|@KãMR½þéÇK¼3jpÁ?~ùî¯ý¿òÆøþ_9¹à¿ÿôÖ¿f{Áú×ü¯_~ùíß?úÿû/¿}úóÇ·½]î¾åàküóÇîuÔô#þþÇ~ü¿ûôëíÓ͸V¹ÞÿòýÇ?÷ÞïCÍàüÛwnð§Þ×UÓW{ßµþ³"ÿÿò¥-|û$û[û?;Øÿ»ÛóKý1´úÐþßî¿0ÿUÿ¹ÞÏù9ç¬Èìÿíçö(ð³ôwlÙÿ4þ[;ËøYªèUëßIìߪ<°ëÊýú_·þ·[@ýpü³Àn×õ?;£ý ü¡ÿé&xÝÕèé&ò_§Úf"ÿéFé¾ú×zMÓhÓWÿ\rÉ:_ýúRí?K ܰìØþuÿpÚCÕ x¿b 7øîW$ÀdâY{ÅTÊ©þSPÇáß±¡¾_±"¶Wlè÷+6¾íP :$Mê_1?´3b£G=6M;¯j¡µ¤éHl¯IÑûcE
-¼L9ðjçÿ,pkÿ7ÕÿL÷Hó? ±öÖûoI/¼«wY±°ÈIê BûÏ ·ì¨ÿÝöö¦¥±ñyóêçþqúfü/áøÒÿÜdÿùüÂWý/8uL=ýOÇàØÀ±cЩÔÄ èZTú Ö¨ÀC
gBhÿ8ýú?w°¸é §Æ[çFW] ½nBê_1ÕÿkWLõ?;ºbË0nºÆM?À8u|Û¡þ×.Y±½¿e¤ÿÙÎKÚût¬ÿu~Ïêº=¹ÇXÿé5oÀHýïÂçþg4çRíídþ¤"´þGûÇð0-íõ©ÿÛ¿Aúÿ1þpüaúÏÿ¾êF¥öÛ÷ÿÓJ.Ä¡þBJÚõ?ïCúÒ©±Ñô¿¤ÚC4 ÏÐþaú´wÈlúÿ9ÿ¿ö¿4ºbäÿ×
-|ÿ©þ§úfÆÿÏ»ÑúÙôÿ3þfÎÿoümún´nü¥#ýÏ)¼ôÇXÿ³nüàïêNGÕ=ø-úY÷ÿ3ôÿ»2ÂùçÿÇ翤Ú[_çû*Åkèÿwnöóÿ£ýC(¤¥½\ãóüKÕÏ/"ÿ_ôÿcý_ÂñÇùÿñù¯ú7©=Xô?»sñPÿóÖiåÇú_ã¬Wý¯µàèèÁ6NóíÚ?Îÿû?ïA v3þ×Nõ¿f|ÅPÿSÉö#Qíþ§|ÆTÿÚ®Øÿµñ¿v3þ×Nõ¿É·é±Ñ¾~Ûþn4ì±õT]
-ô?£ÛÐÿºþXÿµÔÿ.pþÇé|þ¡tÞ¾Âþ¤"´þGûPBK{Æ·õ¿uýßõ?CýpüéqªÿÑÿÂú5±[uU_ÿ©=Õêhë|2i, jÌ( Õª« ÒW 6©1>U?¾BûÇéÌÿáÝ Ìoúÿù©þ;s]1Òÿ¼N®ÅTÿ3.®ÿxÄùMÿ?¿éÿç7ýÿüTÿ|Û¡þ´QfàÝçGúVÆÅQLüÿîk]
-ô?Rè¡í[þ~ÝÿÏSÿ»0ÂùÿËü¯ÄzÞn·¤ó1þ÷ÜíÿKûð-í¥«B`õóHÿ7@ýOQÿC ÿç=ÿ?×4V
Aþ?e7öÿkÏÁiâÿ#õÏÆäSÆÿ¶ý`ªS_ ¡ýãô?Öðîf6ýÿÌLü¯V*®Åÿ~ÝÚöý¯¯µWLõ¿ê_±åÿg6ýÿ̦ÿÿÛqüopfPwÃLâ}ðvø]&úѶ_1ÅÌÔÿÐý8äö-ÿ?³îÿg¨ÿ]áüóÿcýw¥ýÿú1Âôÿ;BûÇùÿÑþ!<VK{¥Ægú
ÿ}#³ÔÿèÿA8þ
ô?ÏúOâ«þg}£½júú_ò
-i¬ÿ¹.ÕßÄý/
h`»76¥ ØØö¦úIõ
Ú?ýÿ*ã.ùMýÏÏè1õ+âú©þÔÏÝççô?åÁoê¡é)~SÿóúßÔÿüþ7ù¶cý/§Òà·õ¿ä¨?Æú_{I?bÚõ?g1£þØÐÿüºþç©ÿ]áüOÿ¿Ê(Oüsa~ANRÚ?ýÿ*ã1ZÚ¹¹ý¨ÿ}#³çXÿ·6ã_Hÿÿ}覱í 7õõ?£U£ìHÿÓ®ªI`¬ 6É'§ u
-íáUÇêgÕ×Ahÿ¬ÿ[wȹ-ýï~Å@KΪFWô¿v0qý+&ú1>c¬ÿµW¤&ô¯ØÐÿÞ¯XÑÿÚ+6ô¿ûßvTÿ7*í½üQü¯S~P˸ë±õü]
-ëÿ&>íú_×+úßàeêWC8ÿ³þoe×ù´½Eõ? íõ+#K{Õ\¬~~Åÿ#õ?Öÿ þGÿ?_óÿ¹®Òæ°þGP!Úqþ?㬳ÍXÿQµWöõ?çiT¦ÿ1u>ÏþÖäwöÏúñnSÿ3SýÏDú¹û¦ú_RÆõkæÎèé{Õ©þç]è×Ì0úÙÔÿ̦þg¦úßôÛòÿöÖdè]>ÔØût¬ÿ¥ÆÁoåÿkFòëIÙäý±ÿúßÎÿ¬ÿQÊÿ·çËüçFhÿ¬ÿQÙZZ=µ@àêçÿ¯¦þWÂñÇÅÿ2ÿ^üo
-Öº¾þgbjÏz\ÿ7µ£9ÿmï#ñ¿í94A@Ú3´ñÕOª/Ðþ©ÿUÆ{¨ÞÿÕSýÏÇÔÓªîWõ?ݸÏ\{ÅXÿÓ·é¿Å´þ¯öað[ñ¿z3þWoÆÿê©þ7ù¶£øß`&Á_:ÿMÑÇXÿÓvjØcÃøßä¬î{¶WlÅÿêõø_MýïÂçêqß¾ø»¨ýéÿ÷8öOý¯2#¡¼ñ9ûíÕÏ/"ûO8ýϰþáø£ô?èÿ
-¡§ÿµ}~ý_ã½
-¿ÿäýO¥ãDÿZ+7ÔÿlrÉþçS{DæCÛ!´þGýû6õ¿4ÕÿûÙìÒ4ÿ_òÞ®úÿy¿e¦þoß#®½bKÿKú_ÚÔÿÒTÿ|Ûþ§?þ.cÿ¿.`|Iþ¿&è0øKGú_°±=0¥þ[ú_Z×ÿõ¿#ÿqñ¿Ìÿátúßr}á¯%ÿïaíÿKû¥½JãóáÏ©~~Ø¿ÖÿPúáøÒÿâÔÿú¯ùÿñÊÛAþ?ר~/ òG pã«ÜXL&Ħ/ ãÛã®v àÔþÀ3lã<í¿þ7®ÿC ýC¸@z³þÖÿ°:¥gêV¥gꤦïï¦gëÿöýîôfý½YÿCoÖÿÐÓúÓo;Òÿ¼M)4ø5CкàT¿x iÚ{¿ç©'@ºïf¨'@tݧ:dE Ô, raó?Îÿõ ÎÏWúç£"´ÿíÂ1y¬ÂÆ0G`õóÈþþýSÿ+püécÿæÿCñUÿëÜSÚþïé¡]õ8ü7øö;©þÑï¿´ixÿ5©±©~J})öÿåó_ïЦÿñÿíTàFWòÿ馻«§þZ[1Õÿ×Ëw§7ýÿô¦ÿÞôÿÓ3þo;ÔÿbªÓ;ûWëÿ¶_Ö«aä?m1ÿ|Ó~BWýÿ¢UvØë«òýÿ®pþÇùÿÑÿB^|îÄo9çóÿ¡ýãüÿhÿji/Õu¬~~åÿ´@ýñ¿ã«ÿÁùÂ×ú6Åèí×ÿPÁ+ãFî:xßL꤬(6ͨþÑ1Ù¦úYõuÚ?Nÿ£ýCx/a7ëØýO
-ª{Øý/jfØøß¦Í®½b¢ÿÙØwk¯Øªÿa7ëØÍúvFÿÛQý«}òað[Fñ¿ÞXkWLânüàï»ÿY§õð±û_P¦iW¬Öÿ°Ôÿ.pþÇùÿñù©ö6úz¹ú®¡ÿß¹Ú?Îÿö¡öbÏ/U?¿Hì_åÉBýÏwú1ôÿ ÿ,ùO¨ÿùÛþOqþðÕÿ/yB=ýÏûµåÿÓÎèöX?I èbJ&Zã·}0Dß´#_ý¬ú:Èì?KþÛÖÿ´Ù¿öÑÓþÜE 5ÿÚë9³©ú§µmz{j"þ5^¹p§f´?m{¬j
*ý¯mÿ6?µ%ü©©î7þcÙoò5GQ¿.´wo_öSã _ím{o~OþÿÊ¡æ7sÁHòkoÌ #V?EÁülþÏÿúßmþo÷ÿ,Õí}?ýÿÀÈì?Kþê7ûw´×Òªj|®~~ùÿ ÿ¡þ@8þ¸ø_æÿðUÿk|LºI=ý/zíÇå?B»8ÛIò¿vÃÞâ7Á5fPý÷7A
-ÿ=BûÇùÿ1ÿ÷ аÿ¦þÊë~iúÿÅv'ïúWLâWNõ¯Öÿõýí[ñ¿a3þ7lÆÿ©ÿßäÛÀÐÞÚ.ªÁ_:ÿù;6¤À®Çñ¿¡cü±ÿ6*aÅÿÊF8ÿãâçRîdz!'©íÿKûÓÒÎßøLÿ¿Uûÿ¿þg,õ?²ñ/åÿ7Îÿoæó½ú¿¶!ù~üolÔÄ è¢76ῦýÀöDÜ Û}¾í"ýÉWdö_Êÿoªÿ)Ú?»·ä¿8ýkLOe3Á¿^¥Ô»`êÿúqªq.ô·>0n)qKø[º_ û}Í¡ê÷Á¶wo?§_ý¶_r°/N4¿Øo5ülctê˨q«âo\ü"õ>ò²ùáÿwÿ£ãùÂÉâyÿFfÿÿ¿ý;Ú?RZÚ7~®~~Ø¿Ë »ûÿ±þ/áøòÿÓ¬ÿñ$þÐÿqMÐ}÷¿àû{=¯îQ7SõOùdúê_wqàý§»2¯lOÐþaþû?wMÈm
-nª ¶3î [n*oû¹êÜèSpÏ|½¼{nSt2 ÛÔÝT~Ûø!v+Ùàÿ_´ÍøÛnøÿ¹±øÁÖBzõPܦèÖå@G=ðÊçÿý¿!×ír.éÔÿ íçÿGû ÐÒNÒXNò·Ò¨~~ùÿ6@ýÏSÿC ÿBúêÌÿá«ÿ·öëÿjÚAñ£üÊúÔL"óÚë&5& }T
-7mgBhÿ¸øßHûGðÚlÆÿ63±éÇ»6ý/6S©Å |Æ´þ¯×ipÅVüo³ÿÛlÆÿ63ão;ÔÿlT6ôõ¿öþgsºöéHÿëÂà·UÃÉÍþR/ñb×kñ¿
-õ¿#ÿqúÿBj{}ñ¿¯ÐþqúíBVaãóìKÕÏ/¢ú?ú_mÇWÿç_ëÿêÆFB¿þöQ¥QüoËÞ?©ÿámCýÏ[ÕÄaý_ëõ¯~V}öOý¯2ÞÀ¦Íú¿iÆÿ¯0Üè±ÿïð¶WLýÿ~Æÿ_¿zF{ÅVýß´Yÿ7mÖÿM3þão;Ôÿ|tÊ>c
-¬¼7Úúc¬ÿ
víÏØ¨Ò^1ÖÿV*Nëõõ¿#ÿ©ÿUF ¾~@Æÿ¡ýSÿ«"ZÚë4>o\Sýü"±¬ÿÁú¿ãóÿcýO=ÿ?¯Õ¶_ÿÃ¥¼×ÿ>¶ãHÿK6x7ÔÿÚw7aàÿ×´¿Â\`R}!öÓÿèÿá.ÙÍúv¦þGðýè^;SÿC¾GÖÿøÐãWLýÿÔè36ô?»YÿÃnÖÿ°3õ?&ßv¨ÿSRjð[FþÚÛ¨zÉífý;®ÿñ¡ËhÍàø_»^ÿòþÇÎÿ8ýù_!ÿ]Ô_ÔAöÓÿhÿ¨¥½PcKö£þ7gÿîyõ?,õ?²ñ/Uÿ#Nëðü¡§ÿ%Ü þoWHR7Æ@ßXe'9 ²
-ò:6$¶ ¾äê§ÕAfÿÀú|þá.mºÿM½ÿºxØ^êÔù/6í9»Íøþ5ª¯ýM]ÿ¼W© ½6¿MÇ¿M¿¿©ÛßäkU?\û¡ÿ+ÆA¿Ñ4ýÂÁS¿Æ'ßÿCɯ+*ìíÿߺÃýýÈWdó?°þæü`)nw©Îoáx^ÆÿÙ?°þíÂq-ÂÆgê³þ¿Èúôÿ ÿBþÓú¿ù_!|ÿ5Æ~ïl#õ/Ô$ü7uB__üsF7Ú
-¼ÿt
-I[Öÿ=Bû§ÿ_e¼nÖÿ0Óú¡
-zñÌ´þS^õòÿ¹úÞôrÕiýb~ÆVüïfý³YÿÃLëL¿íP t¾+ ¤¿e(d·qðmÇZ 3^ÛÁC1P+céH
-ÔÞ~³^ÿðþÇÎÿôÿ«qþ¿-p)/ õ¿s#´úÿUFq-íäù´ÔÿfíÿKÿ?ÂñÇåÿcü/þ×8çÌ þJ*ıûiB{Ö.¥û_; AëAþ?Û_Â"À'Bhÿ8ýöá]Úÿ53ñ¿>ø¾5ÿÛÕq\1õ4}@3ÿëm3ø;¶ô¿Íø_³ÿkfâ'ßv¨ÿ%mÍà+`ÓtÙý¦ñ¿Îé¨þ×ÊúWõ?£ùÿÖã
-ã¯pþÇéôÿðXýïÝkúßË ´þGûðH-í%©ÿí®ÿÔÿXÿpüYÿ£2þÐÿLP©i¾þgT°íu¤ÿ
dÚ#ùXÿóí ë´cnu2C@Õ¨¨¹k;Bûgýʸ@nSÿsSý/uÂ]1¬ÿal_»s3údÕsSý¯Y0ø-úÛÔÿܦþç¦úßôÛòÿù¤L~QýëLt½ün3ÿë¤ÔôªÝ4ÿñ&
ÁoYÓÿõ¿+#ÿYÿ£2Çê.äùü×ÓÿÐþYÿ£2ª¥»ñ9ã]ÕÏ/û÷ñ¿µ!Öÿ¨¯ùÿU¶ibßÿ¯qÞ4Ôÿ|ûÓ'å£OèÆhÓÄÿS6òßÚ?ã+ã.y·¥ÿݯzÄ¥A$êýa
-ÀúÞ}íý¯ý^î»ö©ÿ_ãà
-ýïýý¯½bCÿ»_±ñmÇ }»
-?c¤ÿéö#L/¹ë±uý¯ë±a2@«ÝØAldìúcEÿ¼LýïjçÆÿVÆ rø-k}]pþNRÚ?ã+#SK{¡FìGýoÖÿ×àô?©ÿ!?Îÿþß¾Æÿ:mÆô?cBW¬cÿm§ Û-û¸üGPÎãÛúð<í§ÿÑþ!¼9ýÏô£YÍTÿÓjÍj¦ñ¿aPï¶½bÿ«ûEBÚ+¦ú_ÐÃ+¶âÍfü¯ÓÿFßv¢ÿM¾í(þ7*Í$þ×5ª~±þgWipÅHÿSaÝk&ñ¿Î{ý±ÿk¨ÿ]áüÓÿ4ÿB(¬ÏÖ9IDhÿ0ýö!K«®±¨V?¿ü5ÐÿOQÿC ÿÏÿ¾Æÿ6Aév$zú_ôÆ[?®ÿam2ê¿íè¹ûKÊø4ÿ)ZÇê¿gBhÿ
ô¿qýã? ¼êÍø_=ÿ5¡éyæÝ¯Æÿzeíàøß~iÛöøß4¼b+þWoÆÿêÍø_=ÿ|Û¡þ7÷[Fõ?bh5ºWM¸ë² `= Mp¾ñjð Ñ;7ìµ `MðºçþGÿo¥}ûVò~-1/sÔAöÓÿhÿ¯¥»ñþ$öoõÿpüqúç½ø_BcT_ÿ*(7* MãÚ«Æú5Úóÿ墪/ 6Ñù¤´q"öÏüq×ìlýß¾GÖÿ5¾éûªÙiýߤS?ÞÕÎÔÿmÞlvZÿ×{Õ÷ª³õífý_;[ÿwôm§õ?ÆßvÿÛ4Þö#í¸þïg]}
-ùÏëÿ:ÝΡ£>Ýÿµëõ-ëÿ^áüÏüçýCó{¿ '©íùÿ*ãö²Ï»/®~~Ù¿gýßÚ?Nÿsÿ|Õÿlâ0þ×£Õòÿ)gMèÁ©ö§}ýO§8ÈÿgtSý¤úBíõ+ã]ò[þ÷+XL}¸ûÃüMêûÿµWÌÄÿÆágLãzßÔÿü¦þç·üÿîWl|ÛQýöömçÏÁgô?R;Mþ-ýÏëÿ¦dUã\ÿ-ýϯëúß
Îÿ¬ÿ[ÅýÿL/Lx¡þÇà½ôÿ"´ÖÿÃZÚk6>XúùEäÿ«ÿ¯6ãÓÿç
_óÿÙÆ6^§þ×DßÇ(þ×5í§ú1É
-ä?çtt*Òÿ)×Dëèÿw"öÏüñª6ãÕþçãä¡ÿ_;µ÷ô®ö©þgb? VÍèvîª6ãÕfü¯ÚÿU3úßøÛõ¿lTi¯ÕÿP¾ñ®çCØõØFø¯ë¡Ý%5øqø¯µÎÿÒÕð_EýïÂçæÿ«gÅÿ~
-þeüï3Ú?óÿUÆ´´×j|füoýçÉ9ú1Ôÿ ÈÆ?KþÛ¡ÿó¥ÿ¡çÿçUlî×ÿèÚÇ8 Û£²òn¬ÿu}í0üWÚõõ¿Æö¨~N}%dö%ÿmëz¢ÿùHûð.mÊ3Õ?ô@)þáBÕïI=kFúÃ_±¥üm
-ºßLÙÑ×ÜÊú7vú^°¥ùC~Ií¼ÜK=¸åñ·^ðõ~ÉWdóü¡ÿéhyþÐ×ÞúÜâsYÿãäÈì?KþËÑÿíÃ!-êÆ-H¸úùEdÿ
-Îÿϰþáøñÿóÿ?èÿáý/ZÛ´f×ÿ|J£Ú¿í)4Nc£i¥?BÒº=³ö?oKôû;!BûÕÿÌÿá]j6Àf¢ Æ&ø^$êýaýöSBê_1ÿ¬üiý8(fÑlªÍ¦ØlêÍD~Û-%°ûÿc\̰ËFb`ð!©ÁÕÀí<êt3øSÇr oMvÈØP¼.ÂùÿËüÏN áã
gë,ør:Ðþqñ¿´-íé
-aÙúÿÍÆÿëÿ2þpüÿ[_ýÿ|rI5ýø_×4Jnÿ/`ÍXlÇ-è MÆt
-bOÊ8{Iõ
Ú?ã+ã= Üfý_;ÿkÒ0wß´þol¼·+fêøáo:Üífý_»Yÿ×nÖÿµÓú¿Óo;Êÿ§7}aÎëÿ~°MT~xÅXþÓíï±+òξi'å?8ïãð·¬æÿcùß+#ÿÿ[bnÁ/pTçãôÿ;7Bûgüoed©b4>o_Sýü"±Ìÿ§éÿA8þ
ô¿iü/õ?½ø_ut¾_ÿ#¨éÑ
Çò_ãÃò*$ÛÊÿºhõÏ©¯Ðþqú¡ý#¸@~3ÿÉÿç|¿f®ÉÿgÛüàý¯¯ù¹üQùÁglè~3ÿßÌÿçgòÿM¾í¨þoж1Áõ¯éÉúàÃàïêOÏÆº4ü;6¢ýzþ?ÏüWF8ÿãô?úÿ@8¡ÿßW@úÿGhÿ8ýöáQZÚ¹sß^ýü"±méÿWÂñ§ÿ_eü¡ÿ cNõóÿ¥äb3òÿ3ÚFçôD Qêÿ¢7qmí
-Wý¤úBíÿKýÃ]ÒvKÿ»_1PĬmúÕ,îWýÿlì»¶WÌä lê_1Sÿ7¹ÁoÙÐÿÞ¯XÑÿÚ+6ô¿ûßv¤ÿioj2 MíÖ&:d, ¶aÃà×À¨ÛÙõÀöqvv~pÅ 8xàÅÎÿôÿ«þ|ÄäA#¤þ÷8öOÿ¿ÊÈRÅ*n|þ¤úùEbÿéÿ§©ÿ!!ýoìÿCýÅú_êÊú¾û_;$M3NèmôÓò¿!©ÿ_ûQ:x×Wÿtò®=$W?¥¾BûÇéöà®
Mÿ¿0õÿKÆ8¾bÿÏ»ÐËÝfüÿ¼O=©*Lýÿ>øh{ñ®aÓÿ/lúÿ
Mÿ¿0õÿ~ÛüaìÿgZäì°ËÆùÿUfðuúV&F£]¶á Ö /pþÇé¬ÿádzÞ®øâ^ÎQÚ?Nÿ£ýC(©¥=¹ñùSýü"²Ôÿ,õ?Âñ/¤ÿM÷ó?¯õ?Mèq§ÕµöÍ@ý±Z
-ÿïuªO_
-¡ýãô?Æ@x×̦þg¦ú3¡çw¿b¨ÿYúbÑÿQÏÑÿ4ø-ýÏlêfSÿ3Sýoòm·ô?3®ÿlWÿcøu'Žöï;ªÿô°¨J{ÅXÿ³Nõî»YÓÿõ¿ë"ÿqõ?
ÿÂ+ê½aÎQÚ?®þíÂ1yìÄÏùêçýdý@ýpüéþOâý¯=4jmÓ C±~ä ¨]P¡ÄÿÆöX:¬ÿávíÒÞ× Û8Õ~fõ³êë ´\þ?Ú?»d6ëúMèkwf¦þGÒZ¹þÓø_×ÏgæêtÎ ý+6ô?³YÿÃlÖÿ03õ?&ßv¨ÿ¥Û¿Ô
-®åÿk|´A
-þIþ?kÇ=6Ìÿ§|ûwô<&ͤþGÛ]]A¬Èõ?®pþÇùÿÑÿT[^¸ñ¿çFhÿ8ÿ?Ú?còX5Ï/U?¿êÿ8 ÿ¡þ@8þ¸úÌÿáký×%¯RýÏëv)×ÿõí¾ÈÞf ÿkº ZÓ²ëS_ ¡ýãô?îÿ ¼uõÝTÿFO®ÖÿÐÞôô®ö©þg¼Iý+&ú®çÌÖ^±Uÿ×mÖÿuõÝTÿ|ÛQþ¿ÆZ7ºb¤ÿùöþ~Øcc÷¿Æ;¸b\ÿCA
-öðß®?Öêÿ:êF8ÿãüÿøüBiß>a=éçs:Ðþqþ´´´hì¬Rýü"²ÿÔÿèÿA8þ(ÿ?8ÿCèé&¥COÿÑ71ÙÿÊ;5 ö19;T µ÷}0¥FGÅ]ÛyÚ?Lÿ£ÿ/w(mêiªÿÅAEûCÿ¿fPÿ£½bªÿÅÆ~ËDÿ³íë]iSÿKú_ÚÔÿÒTÿ|Û¡þ×ÎvÑ5¸b¤ÿÛ£ÎàïÿÆ>c¤ÿY£|¡Å4ü7öý»þXÓÿõ¿#ÿqúÿ@(Ï»·û(ANRÚ?Nÿ£ýCxöj
-Ahpõó¨þwü£ÿµÿ þ@6þYò_ÿæùÂ×ú¿F¹FùÿKÖ3É ¨¬È.¸8PÿbRI7õ¯= ;cXþ÷LÈì?KþÛÖÿôTÿ£þá.ù-ùÏOÕ?gúehýÔùϺ¤ûµ¿nÈmÿ©ëU½ò!~Kùó[ÂßÒýüTöÍ¡êçhå8ü8é6uo1ÑüÆä(ãnlbÿ)~ÆkåÒ V?O½ülþÏÿ2ô?-ó¿B8Y</õ?02ûÏÿrô?GûÇpTK«¶q «_$öß õ?Gýlüúÿ@øêÿgu±=ýÏÆ5qÿ÷.õ?¯¨ú_{î5±Ñ ºINQÿ;2ûê
´wM¨ÙÒÿ¹è_Gûê]3ãûçû}ÍLê?«z.wÍþ×léÍþ×Ì
ý¿æ(ê7Å&%×ÿ#ÇN©CÿIÎ?§RObl&.ñíÿö.ØømVõ¿úùÙüÓÿó¿@XÃík±ºÏ×9iDfÿ8ýö¢¥½Xã3ýÿæõÿL°ëHiüoWÿú_yã_(þw|þgü/¯úöJÔÿhbLi¢ÿÙfÆÿϸAà&êäM3Hÿçµ
-òß©Ú?.þ×Òþ¼ûm
-~N´©'Ïù9 к^ü¯Ó µ~ÆT_~Sô2 ßÔý8þ¶ãüÁZ1»êG¡W»ÃOµÀé_:2I©4¸bC
-ôër §xeó?.þ7rþGp2=oQk|W"ïªä×k8IDhÿ¸ø_Ú?ÒZÚ3NõóÄþæÿ£þA8þ
ô?ÏúOâküoý¯AýäbùÿiwqR ¤}÷ÐÿϹ&øØ uÓ¬ºúIõ
Ú?®þõ?wÈ-ýï~Å@Kzà¿w¿b ÿ ûÙýÚ+&úO¦§¶Wõ¿>>cCÿ{¿bEÿk¯ØÐÿîWl|Û¡þçSM_©l¯
[Uèi]ë]
-ô?£R\±¡ÿuý±¢ÿ
-^¦þw5ó?®þ/Ïÿ«çMëÐÿÐþqõiÿÉc/רYöúßýÔÿÿA8þeô??©ÿÑÞ/ÿü¡ÿEgÚv?ü7ùàõ8ù_LÉL´¿ödÛ×þBjbraúë£OÕϦ¯Ðþqúó¿@¸@ÁNõ?ïúufïW1¯úyïWõ¿öçúWLô¿`F¿eªÿ%Õ¯m¯ØÐÿÞ¯XÑÿÚ+&úßäÛNô¿É·ês¿eäÿgC3ÈØõغþ×õØ( ÉAlè]¬è©ÿ]
-áüóÿãó_gðùü¼¯.Ôîùr:Ðþqþ´´´S7>?æsª_Dõñ¿þOý¯<Âñ/äÿ7ÍÿùüB¯þ¯rÁýí{
-é¿KQw¶< TUÿUÆéAþ?§ºA®N}%öÿÕ´ïE`7ãíLüo
-º_«vÿë_1ÿUM3ø-ӸߨôªØÍø_»ÿk7ãíLüïäÛãêÊÖô¯é^û`ý°O×õ?;ÿmÅA5nЧú]ÿµÿ½2Âù§ÿñù/ÒzÞn·x
-ë`Ú?Nÿ£ýC8&½dC"
-V?¿üõ¿Ú!ýoºÿcþ/èIÙ.íæ ü¯mO«c@t3Éþ§¶}õ/ºv¼Õ û_Ôª¾úùôÕÚ?õ¿ÊxMñ¿i¢ÿÅÆ
-"QÓÔÿ/g1ÿ
-N
->c&þ7©Ô¿b+þ7mÆÿ¦Íøß4Ñÿ¦ßvÃÿ¯½b¤ÿ¹Æ4Æ
-¾ËXÿ3^©^-®ÇúßÌoÙÿMëñ¿úß
ÎÿÔÿ*ã>½ë^ª¿%ÿ?êChÿÔÿ*ã ö2ÏôÿEÿÓõ?Oýpüqùÿÿá«ÿI®«·Ù o¼).'õ?±Q§`êÞz;t tÑ
Xý¤úBíÿKÿ_ïE üfý?õÿ>ÅñÃúÝ0«þSÿ?×Äпbêÿç¢rý+¶êøÍú~³þúÿM¾íPÿ3ÚºàÁwûÿ©ÔÄa×cõ?ü¸pûvÕý+¶êøõúúß
Îÿ8ýÏ!Aó;à/ÈIê BûÇé´YªØ+5W?¿Hì_#õ?Öÿ Öÿ¨¯úO>8úúÑívþ¼F
`òÖô?Ûëëæ¦õÐ ðDíõ?*ã.éMýOÏë=%JÏë½zzNÿ³>®ê6¸ÁúÞÔÿô¦þ§çõ¿á·ëÞB=Ñÿ:}pܧ#ý¯«"bWêÿ¦Ô~J/ ÞÔÿôºþ§©ÿ]áüÏú!Ì·w
-Aúÿ=¡ý³þGed©bÕ6&baõóHÿGÖÿ°Ôÿǧÿ9Îÿ¾êV» U3Èÿ]
-q( z×è&òß-{à° °ê"~ núßÚ!ýoÿõ?P¼;ÍÔÿÑô½Ù¦õ?L°o¶iý¤ê©ÿÑx×÷fÖÿð^õkøÍú~³þ©ÿ1ù¶ýoòm7âý¸þÖ¶KØ÷ü´ H7çúÁ2r 65F
-~ÍX ´Mzð«, raó?Îÿù LÏëÓÿ¯BûÇùÿÑþ!<\B;_ãó·W?¿ì? õ¿@ýpüqúÿ@èë]rz×Óÿº\óZ§þtÑÿ|RéíÚüÿ¼ö**>BûÇåÿS´ïPØÿ
-Sý¯I¦çÝw¿bXÿ#6XÕ0ÕÿRÁoèÁ
8¸bKÿú_Øÿ
-SýoòmGõ?b:ô5Ä0öÿ÷Ê
-þøß0ÿtj7üøß°.ÿÊF8ÿãô?>ÿ
pͯÿó
<Ky9IDhÿ8ýö!K{FfÚ?êsöoòä¿ýÏæÿ ÿ,ù/KÿSôÿðþ×Zj°}ýÏ9£òCý/µgÜ4 Ò¹¥ô?£cLäÿ]^϶!³ÿ,ùo[ÿÓÿ?Ïüî"ÙÿÌTý³ªÏLÿ\½Âf.öW
-.ºþé~@ÙRþÌðg¶t?3ýÆ_sÃëÏD?Óüý*(f*úµ3ïà{4?ô çH~iÐïÊ5ÅÏPð#¿#ÿ³ä¿ýOGËüþìÝWoã>½sÎ:Ìþ³ä¿ýÏÑþ1Çên|¦þ7ÿw@ÿ?Eýpüùÿæÿ{_ýÿB066ýø_ÚSgùÿµÚîç~¬ ¦c8 ¶çõ0`¶úYõuÚ?.ÿíÂ{8·ÿ{¿b Y½Q£+þÁÇ8ø
-°éÉkíÓü^ùÁglåÿsùÿÜVüïýo»¡¶W¥ÀàuÔöéH
->ô«w=6Ìÿ§¬f*tc10uÞ®XÍÿç(^áüËÿÇç?öçÿ»k'Ðüÿïíÿö¥¥½Hãóè'ÕÏ/"û×8ýOÑÿpüaúëbøCÿí><xÛ÷ÿÉcìPÿª=Ã*7ÿÆëAýçµi¢mòn 4ÏÐþécÿßvF`þï"Þ¬ÿ¡§ú_;LýJzªÿyßm¯êÃjzFÿÓ&¸þ[úÞÔÿôfý=Õÿ&ßv¨ÿµsb;öýÚKF¾ÊêÆªè±èÍTÀä´õÚ®)N5ã+V@Mð²çþGÿK~~ý¾Ï×9EDhÿ8ýö¡ ö¢Ïúß¼ý;dý_Gýpüqþ|þáküolÇ((;ðÿ³ÊÆQü¯¶]HÜDÿÓÚÅ4pÿS!j×Î =ýOÇv|}¤þwöóÿ£ýC¸K at n¶þoß#ÎMëÿ¦Öâ{a«nZÿצ_ÝÃÍÔÿõAõüÝÜ´þïµü
-ýÏmÖÿu³õGßv¬ÿM¿í¸þo°Vo;ªÿá}C\±ÿÏëÿç´}Æ8X'gÓà5õϱþïÎÿ¸üôÿP\«Ûç_øµÎýÿ íÿö¡¬v®FF!êçQþÏÔÿ"õ?ÂñGÕÿÐùÿ!ôêøìïÕ~ïõv16CýÏ\˦=Å8¬ÿáLTͰþoò¬ÿ{"ö«ÿAÿ?ïE âfý8õÿS©àï~Å(þ7õçµWLýÿLTÿiÀ¨Óà3¶êÄÍúq³þGúÿM¾íXÿ3z îµWê
-ÃÛ¨ÿ'õ?MѮتÿ×ëDêF8ÿãô?ÏùÁÉüù}
-û!ë<¡ýãô?Ú?\-í5~NõóÄþ0þWêã_FÿóqêÿÇúOþÐÿb.Ðwÿ3Þ¤8þmÐLª$¾Qåü ôG´¿ÀtúríçÿGûpÂlüoß#.Lãccû±¬aÿkÒø©ÿ_ãz^uaÿûÁǦ§ÿ
Íøß°ÿfãGßv¬ÿM¿íFþ¿0ÿõÆ6·Ã>é&4>{l ÿ}Öø¨=¶¡ÿ
õèßÀèß+#ÿqúÿB8æwÀ_ÔAöÓÿhÿÉcgndxûQÿ[·`ý_«©ÿ!?®þ¯¦ÿ7^ý¤£Ö©/ ÚÐ
Åÿ¯º¢ # ÐÛþÞDÝD?,ÿ¡M,ÿq"dö_ªþïTÿSôÿð.mÊÓú¿q/Lëÿ*z¡½aÆ÷/õ}ÿÂëioÞ[Êߦð·©ûMëÿ¿æê7.úaRiØQë>a$ùé&ÄÖjzè¦â·.øQï# ÿõÿÂbîdz!'ÈìXÿöá<Voã½HõóÄþ-Pÿ3úÙøÒÿÜDÿSÌÿ¡§ÿéí þqMÓ(=Ôÿ¦';Iÿ¬ò£ê¿µi ÿÙ&µ?©N}%dö_JÿÛ¿öû?wMÈn
ÿÚ©þ§;vxÁPÿ¾¸ÏNô¿vÜû.ìTÿ³ê
ÜÚ-ýÏnév+î×Nõ¿ñ×ÜÐÿì¸æGp*(§=µ. Ú±Ïßô
-Ю
- ùÙüÔÿèÿ
-a©ÎÇbÍçk~¬ÿñ@döÔÿhÿZÚ6: °úùETÿGëÿ²þáøãêÿRÿðµþ¯qÖ¤hzú_ÔÉ?ÊÿRtÑLüÿÚ+ùÿ\he7ðÿ3ÁÄdcõ³êë ´\ý_Æ@x/«6ëÿª±bèéÑ} P[û^{ÅÔÐö+´WLëÿ&±UÿWmÖÿUõÕXù¶£üÁ©¤Âðëëÿªn½:ÛïkÍàoÝPÛ+Fr`;§¾âØõÈZý_EAð²ç\ý_Æ@X¯ÿûfËú¿Õ"´\ý_Ú?öJÏÿ]¨ÿé Øu$óÿáøÒÿ¦þó?¯õÛ×m?þ×Õåìÿ:ÛÅy,ÿ
&¹û Ú6Ã:ØåYþãLí¿þ7ñÿù!¼Ýt tSÀÔ_1Ìÿ\?Â×M} Û9F÷| ÝÔ ðª_CxÓÐmººM?@7u~Û
-O at 7vÔÚ)Ó4jðe¶
- ÛYÕÆ
->cì
-»N]- LÀ#ÿÿ¯2JëvëúâÔïú¡ý3ÿ_eÖÒNÖø,}WõóÄþMÔÿÿA8þ8ýþzú_çteú@Q¥qú¿ URcý/j¯ÕÒÖõ¿dL{ÖÕÏ©¯Ðþqõ¹ÿp×L³ ð~ÅHsN¯é&õR ¶WLõ¿{þpí3úïÕÿh¯ØÐÿÞ¯XÑÿÚ+6ò Þ¯Øø¶CýϺÔÅ;~ËXÿkÑo»!ÿu=¶îý×^1ÿ¼írúcEþ¼LùïjçþÇø?
ës0ÿßÉÚ?Nÿ£ýCÈ×ÒjhlÖáüB!¤Jþqæ_£ h
\ No newline at end of file
Deleted: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/256ia64-64n2s2c.tar.gz.output
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/256ia64-64n2s2c.tar.gz.output 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/256ia64-64n2s2c.tar.gz.output 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,733 +0,0 @@
-Machine (phys=0 total=516912176KB)
- Group1 #0 (total=129224048KB)
- Group0 #0 (total=32296336KB)
- NUMANode #0 (phys=0 local=8064400KB total=8064400KB)
- Socket #0 (phys=0)
- Core #0 (phys=0)
- PU #0 (phys=0)
- Core #1 (phys=1)
- PU #1 (phys=1)
- Socket #1 (phys=3)
- Core #2 (phys=0)
- PU #2 (phys=2)
- Core #3 (phys=1)
- PU #3 (phys=3)
- NUMANode #1 (phys=1 local=8077312KB total=8077312KB)
- Socket #2 (phys=512)
- Core #4 (phys=0)
- PU #4 (phys=4)
- Core #5 (phys=1)
- PU #5 (phys=5)
- Socket #3 (phys=515)
- Core #6 (phys=0)
- PU #6 (phys=6)
- Core #7 (phys=1)
- PU #7 (phys=7)
- NUMANode #2 (phys=2 local=8077312KB total=8077312KB)
- Socket #4 (phys=1024)
- Core #8 (phys=0)
- PU #8 (phys=8)
- Core #9 (phys=1)
- PU #9 (phys=9)
- Socket #5 (phys=1027)
- Core #10 (phys=0)
- PU #10 (phys=10)
- Core #11 (phys=1)
- PU #11 (phys=11)
- NUMANode #3 (phys=3 local=8077312KB total=8077312KB)
- Socket #6 (phys=1536)
- Core #12 (phys=0)
- PU #12 (phys=12)
- Core #13 (phys=1)
- PU #13 (phys=13)
- Socket #7 (phys=1539)
- Core #14 (phys=0)
- PU #14 (phys=14)
- Core #15 (phys=1)
- PU #15 (phys=15)
- Group0 #1 (total=32309232KB)
- NUMANode #4 (phys=4 local=8077312KB total=8077312KB)
- Socket #8 (phys=2048)
- Core #16 (phys=0)
- PU #16 (phys=16)
- Core #17 (phys=1)
- PU #17 (phys=17)
- Socket #9 (phys=2051)
- Core #18 (phys=0)
- PU #18 (phys=18)
- Core #19 (phys=1)
- PU #19 (phys=19)
- NUMANode #5 (phys=5 local=8077312KB total=8077312KB)
- Socket #10 (phys=2560)
- Core #20 (phys=0)
- PU #20 (phys=20)
- Core #21 (phys=1)
- PU #21 (phys=21)
- Socket #11 (phys=2563)
- Core #22 (phys=0)
- PU #22 (phys=22)
- Core #23 (phys=1)
- PU #23 (phys=23)
- NUMANode #6 (phys=6 local=8077296KB total=8077296KB)
- Socket #12 (phys=3072)
- Core #24 (phys=0)
- PU #24 (phys=24)
- Core #25 (phys=1)
- PU #25 (phys=25)
- Socket #13 (phys=3075)
- Core #26 (phys=0)
- PU #26 (phys=26)
- Core #27 (phys=1)
- PU #27 (phys=27)
- NUMANode #7 (phys=7 local=8077312KB total=8077312KB)
- Socket #14 (phys=3584)
- Core #28 (phys=0)
- PU #28 (phys=28)
- Core #29 (phys=1)
- PU #29 (phys=29)
- Socket #15 (phys=3587)
- Core #30 (phys=0)
- PU #30 (phys=30)
- Core #31 (phys=1)
- PU #31 (phys=31)
- Group0 #2 (total=32309248KB)
- NUMANode #8 (phys=8 local=8077312KB total=8077312KB)
- Socket #16 (phys=4096)
- Core #32 (phys=0)
- PU #32 (phys=32)
- Core #33 (phys=1)
- PU #33 (phys=33)
- Socket #17 (phys=4099)
- Core #34 (phys=0)
- PU #34 (phys=34)
- Core #35 (phys=1)
- PU #35 (phys=35)
- NUMANode #9 (phys=9 local=8077312KB total=8077312KB)
- Socket #18 (phys=4608)
- Core #36 (phys=0)
- PU #36 (phys=36)
- Core #37 (phys=1)
- PU #37 (phys=37)
- Socket #19 (phys=4611)
- Core #38 (phys=0)
- PU #38 (phys=38)
- Core #39 (phys=1)
- PU #39 (phys=39)
- NUMANode #10 (phys=10 local=8077312KB total=8077312KB)
- Socket #20 (phys=5120)
- Core #40 (phys=0)
- PU #40 (phys=40)
- Core #41 (phys=1)
- PU #41 (phys=41)
- Socket #21 (phys=5123)
- Core #42 (phys=0)
- PU #42 (phys=42)
- Core #43 (phys=1)
- PU #43 (phys=43)
- NUMANode #11 (phys=11 local=8077312KB total=8077312KB)
- Socket #22 (phys=5632)
- Core #44 (phys=0)
- PU #44 (phys=44)
- Core #45 (phys=1)
- PU #45 (phys=45)
- Socket #23 (phys=5635)
- Core #46 (phys=0)
- PU #46 (phys=46)
- Core #47 (phys=1)
- PU #47 (phys=47)
- Group0 #3 (total=32309232KB)
- NUMANode #12 (phys=12 local=8077312KB total=8077312KB)
- Socket #24 (phys=6144)
- Core #48 (phys=0)
- PU #48 (phys=48)
- Core #49 (phys=1)
- PU #49 (phys=49)
- Socket #25 (phys=6147)
- Core #50 (phys=0)
- PU #50 (phys=50)
- Core #51 (phys=1)
- PU #51 (phys=51)
- NUMANode #13 (phys=13 local=8077312KB total=8077312KB)
- Socket #26 (phys=6656)
- Core #52 (phys=0)
- PU #52 (phys=52)
- Core #53 (phys=1)
- PU #53 (phys=53)
- Socket #27 (phys=6659)
- Core #54 (phys=0)
- PU #54 (phys=54)
- Core #55 (phys=1)
- PU #55 (phys=55)
- NUMANode #14 (phys=14 local=8077296KB total=8077296KB)
- Socket #28 (phys=7168)
- Core #56 (phys=0)
- PU #56 (phys=56)
- Core #57 (phys=1)
- PU #57 (phys=57)
- Socket #29 (phys=7171)
- Core #58 (phys=0)
- PU #58 (phys=58)
- Core #59 (phys=1)
- PU #59 (phys=59)
- NUMANode #15 (phys=15 local=8077312KB total=8077312KB)
- Socket #30 (phys=7680)
- Core #60 (phys=0)
- PU #60 (phys=60)
- Core #61 (phys=1)
- PU #61 (phys=61)
- Socket #31 (phys=7683)
- Core #62 (phys=0)
- PU #62 (phys=62)
- Core #63 (phys=1)
- PU #63 (phys=63)
- Group1 #1 (total=129236960KB)
- Group0 #4 (total=32309248KB)
- NUMANode #16 (phys=16 local=8077312KB total=8077312KB)
- Socket #32 (phys=8192)
- Core #64 (phys=0)
- PU #64 (phys=64)
- Core #65 (phys=1)
- PU #65 (phys=65)
- Socket #33 (phys=8195)
- Core #66 (phys=0)
- PU #66 (phys=66)
- Core #67 (phys=1)
- PU #67 (phys=67)
- NUMANode #17 (phys=17 local=8077312KB total=8077312KB)
- Socket #34 (phys=8704)
- Core #68 (phys=0)
- PU #68 (phys=68)
- Core #69 (phys=1)
- PU #69 (phys=69)
- Socket #35 (phys=8707)
- Core #70 (phys=0)
- PU #70 (phys=70)
- Core #71 (phys=1)
- PU #71 (phys=71)
- NUMANode #18 (phys=18 local=8077312KB total=8077312KB)
- Socket #36 (phys=9216)
- Core #72 (phys=0)
- PU #72 (phys=72)
- Core #73 (phys=1)
- PU #73 (phys=73)
- Socket #37 (phys=9219)
- Core #74 (phys=0)
- PU #74 (phys=74)
- Core #75 (phys=1)
- PU #75 (phys=75)
- NUMANode #19 (phys=19 local=8077312KB total=8077312KB)
- Socket #38 (phys=9728)
- Core #76 (phys=0)
- PU #76 (phys=76)
- Core #77 (phys=1)
- PU #77 (phys=77)
- Socket #39 (phys=9731)
- Core #78 (phys=0)
- PU #78 (phys=78)
- Core #79 (phys=1)
- PU #79 (phys=79)
- Group0 #5 (total=32309232KB)
- NUMANode #20 (phys=20 local=8077312KB total=8077312KB)
- Socket #40 (phys=10240)
- Core #80 (phys=0)
- PU #80 (phys=80)
- Core #81 (phys=1)
- PU #81 (phys=81)
- Socket #41 (phys=10243)
- Core #82 (phys=0)
- PU #82 (phys=82)
- Core #83 (phys=1)
- PU #83 (phys=83)
- NUMANode #21 (phys=21 local=8077312KB total=8077312KB)
- Socket #42 (phys=10752)
- Core #84 (phys=0)
- PU #84 (phys=84)
- Core #85 (phys=1)
- PU #85 (phys=85)
- Socket #43 (phys=10755)
- Core #86 (phys=0)
- PU #86 (phys=86)
- Core #87 (phys=1)
- PU #87 (phys=87)
- NUMANode #22 (phys=22 local=8077296KB total=8077296KB)
- Socket #44 (phys=11264)
- Core #88 (phys=0)
- PU #88 (phys=88)
- Core #89 (phys=1)
- PU #89 (phys=89)
- Socket #45 (phys=11267)
- Core #90 (phys=0)
- PU #90 (phys=90)
- Core #91 (phys=1)
- PU #91 (phys=91)
- NUMANode #23 (phys=23 local=8077312KB total=8077312KB)
- Socket #46 (phys=11776)
- Core #92 (phys=0)
- PU #92 (phys=92)
- Core #93 (phys=1)
- PU #93 (phys=93)
- Socket #47 (phys=11779)
- Core #94 (phys=0)
- PU #94 (phys=94)
- Core #95 (phys=1)
- PU #95 (phys=95)
- Group0 #6 (total=32309248KB)
- NUMANode #24 (phys=24 local=8077312KB total=8077312KB)
- Socket #48 (phys=12288)
- Core #96 (phys=0)
- PU #96 (phys=96)
- Core #97 (phys=1)
- PU #97 (phys=97)
- Socket #49 (phys=12291)
- Core #98 (phys=0)
- PU #98 (phys=98)
- Core #99 (phys=1)
- PU #99 (phys=99)
- NUMANode #25 (phys=25 local=8077312KB total=8077312KB)
- Socket #50 (phys=12800)
- Core #100 (phys=0)
- PU #100 (phys=100)
- Core #101 (phys=1)
- PU #101 (phys=101)
- Socket #51 (phys=12803)
- Core #102 (phys=0)
- PU #102 (phys=102)
- Core #103 (phys=1)
- PU #103 (phys=103)
- NUMANode #26 (phys=26 local=8077312KB total=8077312KB)
- Socket #52 (phys=13312)
- Core #104 (phys=0)
- PU #104 (phys=104)
- Core #105 (phys=1)
- PU #105 (phys=105)
- Socket #53 (phys=13315)
- Core #106 (phys=0)
- PU #106 (phys=106)
- Core #107 (phys=1)
- PU #107 (phys=107)
- NUMANode #27 (phys=27 local=8077312KB total=8077312KB)
- Socket #54 (phys=13824)
- Core #108 (phys=0)
- PU #108 (phys=108)
- Core #109 (phys=1)
- PU #109 (phys=109)
- Socket #55 (phys=13827)
- Core #110 (phys=0)
- PU #110 (phys=110)
- Core #111 (phys=1)
- PU #111 (phys=111)
- Group0 #7 (total=32309232KB)
- NUMANode #28 (phys=28 local=8077312KB total=8077312KB)
- Socket #56 (phys=14336)
- Core #112 (phys=0)
- PU #112 (phys=112)
- Core #113 (phys=1)
- PU #113 (phys=113)
- Socket #57 (phys=14339)
- Core #114 (phys=0)
- PU #114 (phys=114)
- Core #115 (phys=1)
- PU #115 (phys=115)
- NUMANode #29 (phys=29 local=8077296KB total=8077296KB)
- Socket #58 (phys=14848)
- Core #116 (phys=0)
- PU #116 (phys=116)
- Core #117 (phys=1)
- PU #117 (phys=117)
- Socket #59 (phys=14851)
- Core #118 (phys=0)
- PU #118 (phys=118)
- Core #119 (phys=1)
- PU #119 (phys=119)
- NUMANode #30 (phys=30 local=8077312KB total=8077312KB)
- Socket #60 (phys=15360)
- Core #120 (phys=0)
- PU #120 (phys=120)
- Core #121 (phys=1)
- PU #121 (phys=121)
- Socket #61 (phys=15363)
- Core #122 (phys=0)
- PU #122 (phys=122)
- Core #123 (phys=1)
- PU #123 (phys=123)
- NUMANode #31 (phys=31 local=8077312KB total=8077312KB)
- Socket #62 (phys=15872)
- Core #124 (phys=0)
- PU #124 (phys=124)
- Core #125 (phys=1)
- PU #125 (phys=125)
- Socket #63 (phys=15875)
- Core #126 (phys=0)
- PU #126 (phys=126)
- Core #127 (phys=1)
- PU #127 (phys=127)
- Group1 #2 (total=129236960KB)
- Group0 #8 (total=32309248KB)
- NUMANode #32 (phys=32 local=8077312KB total=8077312KB)
- Socket #64 (phys=16384)
- Core #128 (phys=0)
- PU #128 (phys=128)
- Core #129 (phys=1)
- PU #129 (phys=129)
- Socket #65 (phys=16387)
- Core #130 (phys=0)
- PU #130 (phys=130)
- Core #131 (phys=1)
- PU #131 (phys=131)
- NUMANode #33 (phys=33 local=8077312KB total=8077312KB)
- Socket #66 (phys=16896)
- Core #132 (phys=0)
- PU #132 (phys=132)
- Core #133 (phys=1)
- PU #133 (phys=133)
- Socket #67 (phys=16899)
- Core #134 (phys=0)
- PU #134 (phys=134)
- Core #135 (phys=1)
- PU #135 (phys=135)
- NUMANode #34 (phys=34 local=8077312KB total=8077312KB)
- Socket #68 (phys=17408)
- Core #136 (phys=0)
- PU #136 (phys=136)
- Core #137 (phys=1)
- PU #137 (phys=137)
- Socket #69 (phys=17411)
- Core #138 (phys=0)
- PU #138 (phys=138)
- Core #139 (phys=1)
- PU #139 (phys=139)
- NUMANode #35 (phys=35 local=8077312KB total=8077312KB)
- Socket #70 (phys=17920)
- Core #140 (phys=0)
- PU #140 (phys=140)
- Core #141 (phys=1)
- PU #141 (phys=141)
- Socket #71 (phys=17923)
- Core #142 (phys=0)
- PU #142 (phys=142)
- Core #143 (phys=1)
- PU #143 (phys=143)
- Group0 #9 (total=32309232KB)
- NUMANode #36 (phys=36 local=8077312KB total=8077312KB)
- Socket #72 (phys=18432)
- Core #144 (phys=0)
- PU #144 (phys=144)
- Core #145 (phys=1)
- PU #145 (phys=145)
- Socket #73 (phys=18435)
- Core #146 (phys=0)
- PU #146 (phys=146)
- Core #147 (phys=1)
- PU #147 (phys=147)
- NUMANode #37 (phys=37 local=8077296KB total=8077296KB)
- Socket #74 (phys=18944)
- Core #148 (phys=0)
- PU #148 (phys=148)
- Core #149 (phys=1)
- PU #149 (phys=149)
- Socket #75 (phys=18947)
- Core #150 (phys=0)
- PU #150 (phys=150)
- Core #151 (phys=1)
- PU #151 (phys=151)
- NUMANode #38 (phys=38 local=8077312KB total=8077312KB)
- Socket #76 (phys=19456)
- Core #152 (phys=0)
- PU #152 (phys=152)
- Core #153 (phys=1)
- PU #153 (phys=153)
- Socket #77 (phys=19459)
- Core #154 (phys=0)
- PU #154 (phys=154)
- Core #155 (phys=1)
- PU #155 (phys=155)
- NUMANode #39 (phys=39 local=8077312KB total=8077312KB)
- Socket #78 (phys=19968)
- Core #156 (phys=0)
- PU #156 (phys=156)
- Core #157 (phys=1)
- PU #157 (phys=157)
- Socket #79 (phys=19971)
- Core #158 (phys=0)
- PU #158 (phys=158)
- Core #159 (phys=1)
- PU #159 (phys=159)
- Group0 #10 (total=32309248KB)
- NUMANode #40 (phys=40 local=8077312KB total=8077312KB)
- Socket #80 (phys=20480)
- Core #160 (phys=0)
- PU #160 (phys=160)
- Core #161 (phys=1)
- PU #161 (phys=161)
- Socket #81 (phys=20483)
- Core #162 (phys=0)
- PU #162 (phys=162)
- Core #163 (phys=1)
- PU #163 (phys=163)
- NUMANode #41 (phys=41 local=8077312KB total=8077312KB)
- Socket #82 (phys=20992)
- Core #164 (phys=0)
- PU #164 (phys=164)
- Core #165 (phys=1)
- PU #165 (phys=165)
- Socket #83 (phys=20995)
- Core #166 (phys=0)
- PU #166 (phys=166)
- Core #167 (phys=1)
- PU #167 (phys=167)
- NUMANode #42 (phys=42 local=8077312KB total=8077312KB)
- Socket #84 (phys=21504)
- Core #168 (phys=0)
- PU #168 (phys=168)
- Core #169 (phys=1)
- PU #169 (phys=169)
- Socket #85 (phys=21507)
- Core #170 (phys=0)
- PU #170 (phys=170)
- Core #171 (phys=1)
- PU #171 (phys=171)
- NUMANode #43 (phys=43 local=8077312KB total=8077312KB)
- Socket #86 (phys=22016)
- Core #172 (phys=0)
- PU #172 (phys=172)
- Core #173 (phys=1)
- PU #173 (phys=173)
- Socket #87 (phys=22019)
- Core #174 (phys=0)
- PU #174 (phys=174)
- Core #175 (phys=1)
- PU #175 (phys=175)
- Group0 #11 (total=32309232KB)
- NUMANode #44 (phys=44 local=8077312KB total=8077312KB)
- Socket #88 (phys=22528)
- Core #176 (phys=0)
- PU #176 (phys=176)
- Core #177 (phys=1)
- PU #177 (phys=177)
- Socket #89 (phys=22531)
- Core #178 (phys=0)
- PU #178 (phys=178)
- Core #179 (phys=1)
- PU #179 (phys=179)
- NUMANode #45 (phys=45 local=8077296KB total=8077296KB)
- Socket #90 (phys=23040)
- Core #180 (phys=0)
- PU #180 (phys=180)
- Core #181 (phys=1)
- PU #181 (phys=181)
- Socket #91 (phys=23043)
- Core #182 (phys=0)
- PU #182 (phys=182)
- Core #183 (phys=1)
- PU #183 (phys=183)
- NUMANode #46 (phys=46 local=8077312KB total=8077312KB)
- Socket #92 (phys=23552)
- Core #184 (phys=0)
- PU #184 (phys=184)
- Core #185 (phys=1)
- PU #185 (phys=185)
- Socket #93 (phys=23555)
- Core #186 (phys=0)
- PU #186 (phys=186)
- Core #187 (phys=1)
- PU #187 (phys=187)
- NUMANode #47 (phys=47 local=8077312KB total=8077312KB)
- Socket #94 (phys=24064)
- Core #188 (phys=0)
- PU #188 (phys=188)
- Core #189 (phys=1)
- PU #189 (phys=189)
- Socket #95 (phys=24067)
- Core #190 (phys=0)
- PU #190 (phys=190)
- Core #191 (phys=1)
- PU #191 (phys=191)
- Group1 #3 (total=129214208KB)
- Group0 #12 (total=32309248KB)
- NUMANode #48 (phys=48 local=8077312KB total=8077312KB)
- Socket #96 (phys=24576)
- Core #192 (phys=0)
- PU #192 (phys=192)
- Core #193 (phys=1)
- PU #193 (phys=193)
- Socket #97 (phys=24579)
- Core #194 (phys=0)
- PU #194 (phys=194)
- Core #195 (phys=1)
- PU #195 (phys=195)
- NUMANode #49 (phys=49 local=8077312KB total=8077312KB)
- Socket #98 (phys=25088)
- Core #196 (phys=0)
- PU #196 (phys=196)
- Core #197 (phys=1)
- PU #197 (phys=197)
- Socket #99 (phys=25091)
- Core #198 (phys=0)
- PU #198 (phys=198)
- Core #199 (phys=1)
- PU #199 (phys=199)
- NUMANode #50 (phys=50 local=8077312KB total=8077312KB)
- Socket #100 (phys=25600)
- Core #200 (phys=0)
- PU #200 (phys=200)
- Core #201 (phys=1)
- PU #201 (phys=201)
- Socket #101 (phys=25603)
- Core #202 (phys=0)
- PU #202 (phys=202)
- Core #203 (phys=1)
- PU #203 (phys=203)
- NUMANode #51 (phys=51 local=8077312KB total=8077312KB)
- Socket #102 (phys=26112)
- Core #204 (phys=0)
- PU #204 (phys=204)
- Core #205 (phys=1)
- PU #205 (phys=205)
- Socket #103 (phys=26115)
- Core #206 (phys=0)
- PU #206 (phys=206)
- Core #207 (phys=1)
- PU #207 (phys=207)
- Group0 #13 (total=32309232KB)
- NUMANode #52 (phys=52 local=8077312KB total=8077312KB)
- Socket #104 (phys=26624)
- Core #208 (phys=0)
- PU #208 (phys=208)
- Core #209 (phys=1)
- PU #209 (phys=209)
- Socket #105 (phys=26627)
- Core #210 (phys=0)
- PU #210 (phys=210)
- Core #211 (phys=1)
- PU #211 (phys=211)
- NUMANode #53 (phys=53 local=8077296KB total=8077296KB)
- Socket #106 (phys=27136)
- Core #212 (phys=0)
- PU #212 (phys=212)
- Core #213 (phys=1)
- PU #213 (phys=213)
- Socket #107 (phys=27139)
- Core #214 (phys=0)
- PU #214 (phys=214)
- Core #215 (phys=1)
- PU #215 (phys=215)
- NUMANode #54 (phys=54 local=8077312KB total=8077312KB)
- Socket #108 (phys=27648)
- Core #216 (phys=0)
- PU #216 (phys=216)
- Core #217 (phys=1)
- PU #217 (phys=217)
- Socket #109 (phys=27651)
- Core #218 (phys=0)
- PU #218 (phys=218)
- Core #219 (phys=1)
- PU #219 (phys=219)
- NUMANode #55 (phys=55 local=8077312KB total=8077312KB)
- Socket #110 (phys=28160)
- Core #220 (phys=0)
- PU #220 (phys=220)
- Core #221 (phys=1)
- PU #221 (phys=221)
- Socket #111 (phys=28163)
- Core #222 (phys=0)
- PU #222 (phys=222)
- Core #223 (phys=1)
- PU #223 (phys=223)
- Group0 #14 (total=32309248KB)
- NUMANode #56 (phys=56 local=8077312KB total=8077312KB)
- Socket #112 (phys=28672)
- Core #224 (phys=0)
- PU #224 (phys=224)
- Core #225 (phys=1)
- PU #225 (phys=225)
- Socket #113 (phys=28675)
- Core #226 (phys=0)
- PU #226 (phys=226)
- Core #227 (phys=1)
- PU #227 (phys=227)
- NUMANode #57 (phys=57 local=8077312KB total=8077312KB)
- Socket #114 (phys=29184)
- Core #228 (phys=0)
- PU #228 (phys=228)
- Core #229 (phys=1)
- PU #229 (phys=229)
- Socket #115 (phys=29187)
- Core #230 (phys=0)
- PU #230 (phys=230)
- Core #231 (phys=1)
- PU #231 (phys=231)
- NUMANode #58 (phys=58 local=8077312KB total=8077312KB)
- Socket #116 (phys=29696)
- Core #232 (phys=0)
- PU #232 (phys=232)
- Core #233 (phys=1)
- PU #233 (phys=233)
- Socket #117 (phys=29699)
- Core #234 (phys=0)
- PU #234 (phys=234)
- Core #235 (phys=1)
- PU #235 (phys=235)
- NUMANode #59 (phys=59 local=8077312KB total=8077312KB)
- Socket #118 (phys=30208)
- Core #236 (phys=0)
- PU #236 (phys=236)
- Core #237 (phys=1)
- PU #237 (phys=237)
- Socket #119 (phys=30211)
- Core #238 (phys=0)
- PU #238 (phys=238)
- Core #239 (phys=1)
- PU #239 (phys=239)
- Group0 #15 (total=32286480KB)
- NUMANode #60 (phys=60 local=8077312KB total=8077312KB)
- Socket #120 (phys=30720)
- Core #240 (phys=0)
- PU #240 (phys=240)
- Core #241 (phys=1)
- PU #241 (phys=241)
- Socket #121 (phys=30723)
- Core #242 (phys=0)
- PU #242 (phys=242)
- Core #243 (phys=1)
- PU #243 (phys=243)
- NUMANode #61 (phys=61 local=8077296KB total=8077296KB)
- Socket #122 (phys=31232)
- Core #244 (phys=0)
- PU #244 (phys=244)
- Core #245 (phys=1)
- PU #245 (phys=245)
- Socket #123 (phys=31235)
- Core #246 (phys=0)
- PU #246 (phys=246)
- Core #247 (phys=1)
- PU #247 (phys=247)
- NUMANode #62 (phys=62 local=8077312KB total=8077312KB)
- Socket #124 (phys=31744)
- Core #248 (phys=0)
- PU #248 (phys=248)
- Core #249 (phys=1)
- PU #249 (phys=249)
- Socket #125 (phys=31747)
- Core #250 (phys=0)
- PU #250 (phys=250)
- Core #251 (phys=1)
- PU #251 (phys=251)
- NUMANode #63 (phys=63 local=8054560KB total=8054560KB)
- Socket #126 (phys=32256)
- Core #252 (phys=0)
- PU #252 (phys=252)
- Core #253 (phys=1)
- PU #253 (phys=253)
- Socket #127 (phys=32259)
- Core #254 (phys=0)
- PU #254 (phys=254)
- Core #255 (phys=1)
- PU #255 (phys=255)
-depth 0: 1 Machine (type #1)
- depth 1: 4 Groups (type #7)
- depth 2: 16 Groups (type #7)
- depth 3: 64 NUMANodes (type #2)
- depth 4: 128 Sockets (type #3)
- depth 5: 256 Cores (type #5)
- depth 6: 256 PUs (type #6)
-Topology not from this system
Added: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/256ppc-8n8s4t-nocache.exclude
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/256ppc-8n8s4t-nocache.exclude (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/256ppc-8n8s4t-nocache.exclude 2010-11-24 09:21:55 UTC (rev 7494)
@@ -0,0 +1 @@
+*/sys/devices/system/cpu/cpu*/cache
Added: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/256ppc-8n8s4t-nocache.output
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/256ppc-8n8s4t-nocache.output (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/256ppc-8n8s4t-nocache.output 2010-11-24 09:21:55 UTC (rev 7494)
@@ -0,0 +1,599 @@
+Machine (phys=0 total=516423680KB Backend=Linux)
+ Group0 #0 (total=124780544KB)
+ NUMANode #0 (phys=0 local=58458112KB total=58458112KB)
+ Socket #0
+ L3Cache #0 (4096KB line=128)
+ L2Cache #0 (256KB line=128)
+ L1Cache #0 (32KB line=128)
+ Core #0 (phys=0)
+ PU #0 (phys=0)
+ PU #1 (phys=1)
+ PU #2 (phys=2)
+ PU #3 (phys=3)
+ Socket #1
+ L3Cache #1 (4096KB line=128)
+ L2Cache #1 (256KB line=128)
+ L1Cache #1 (32KB line=128)
+ Core #1 (phys=4)
+ PU #4 (phys=4)
+ PU #5 (phys=5)
+ PU #6 (phys=6)
+ PU #7 (phys=7)
+ Socket #2
+ L3Cache #2 (4096KB line=128)
+ L2Cache #2 (256KB line=128)
+ L1Cache #2 (32KB line=128)
+ Core #2 (phys=8)
+ PU #8 (phys=8)
+ PU #9 (phys=9)
+ PU #10 (phys=10)
+ PU #11 (phys=11)
+ Socket #3
+ L3Cache #3 (4096KB line=128)
+ L2Cache #3 (256KB line=128)
+ L1Cache #3 (32KB line=128)
+ Core #3 (phys=12)
+ PU #12 (phys=12)
+ PU #13 (phys=13)
+ PU #14 (phys=14)
+ PU #15 (phys=15)
+ Socket #4
+ L3Cache #4 (4096KB line=128)
+ L2Cache #4 (256KB line=128)
+ L1Cache #4 (32KB line=128)
+ Core #4 (phys=16)
+ PU #16 (phys=16)
+ PU #17 (phys=17)
+ PU #18 (phys=18)
+ PU #19 (phys=19)
+ Socket #5
+ L3Cache #5 (4096KB line=128)
+ L2Cache #5 (256KB line=128)
+ L1Cache #5 (32KB line=128)
+ Core #5 (phys=20)
+ PU #20 (phys=20)
+ PU #21 (phys=21)
+ PU #22 (phys=22)
+ PU #23 (phys=23)
+ Socket #6
+ L3Cache #6 (4096KB line=128)
+ L2Cache #6 (256KB line=128)
+ L1Cache #6 (32KB line=128)
+ Core #6 (phys=24)
+ PU #24 (phys=24)
+ PU #25 (phys=25)
+ PU #26 (phys=26)
+ PU #27 (phys=27)
+ Socket #7
+ L3Cache #7 (4096KB line=128)
+ L2Cache #7 (256KB line=128)
+ L1Cache #7 (32KB line=128)
+ Core #7 (phys=28)
+ PU #28 (phys=28)
+ PU #29 (phys=29)
+ PU #30 (phys=30)
+ PU #31 (phys=31)
+ NUMANode #1 (phys=1 local=66322432KB total=66322432KB)
+ Socket #8
+ L3Cache #8 (4096KB line=128)
+ L2Cache #8 (256KB line=128)
+ L1Cache #8 (32KB line=128)
+ Core #8 (phys=32)
+ PU #32 (phys=32)
+ PU #33 (phys=33)
+ PU #34 (phys=34)
+ PU #35 (phys=35)
+ Socket #9
+ L3Cache #9 (4096KB line=128)
+ L2Cache #9 (256KB line=128)
+ L1Cache #9 (32KB line=128)
+ Core #9 (phys=36)
+ PU #36 (phys=36)
+ PU #37 (phys=37)
+ PU #38 (phys=38)
+ PU #39 (phys=39)
+ Socket #10
+ L3Cache #10 (4096KB line=128)
+ L2Cache #10 (256KB line=128)
+ L1Cache #10 (32KB line=128)
+ Core #10 (phys=40)
+ PU #40 (phys=40)
+ PU #41 (phys=41)
+ PU #42 (phys=42)
+ PU #43 (phys=43)
+ Socket #11
+ L3Cache #11 (4096KB line=128)
+ L2Cache #11 (256KB line=128)
+ L1Cache #11 (32KB line=128)
+ Core #11 (phys=44)
+ PU #44 (phys=44)
+ PU #45 (phys=45)
+ PU #46 (phys=46)
+ PU #47 (phys=47)
+ Socket #12
+ L3Cache #12 (4096KB line=128)
+ L2Cache #12 (256KB line=128)
+ L1Cache #12 (32KB line=128)
+ Core #12 (phys=48)
+ PU #48 (phys=48)
+ PU #49 (phys=49)
+ PU #50 (phys=50)
+ PU #51 (phys=51)
+ Socket #13
+ L3Cache #13 (4096KB line=128)
+ L2Cache #13 (256KB line=128)
+ L1Cache #13 (32KB line=128)
+ Core #13 (phys=52)
+ PU #52 (phys=52)
+ PU #53 (phys=53)
+ PU #54 (phys=54)
+ PU #55 (phys=55)
+ Socket #14
+ L3Cache #14 (4096KB line=128)
+ L2Cache #14 (256KB line=128)
+ L1Cache #14 (32KB line=128)
+ Core #14 (phys=56)
+ PU #56 (phys=56)
+ PU #57 (phys=57)
+ PU #58 (phys=58)
+ PU #59 (phys=59)
+ Socket #15
+ L3Cache #15 (4096KB line=128)
+ L2Cache #15 (256KB line=128)
+ L1Cache #15 (32KB line=128)
+ Core #15 (phys=60)
+ PU #60 (phys=60)
+ PU #61 (phys=61)
+ PU #62 (phys=62)
+ PU #63 (phys=63)
+ Group0 #1 (total=133955584KB)
+ NUMANode #2 (phys=4 local=66846720KB total=66846720KB)
+ Socket #16
+ L3Cache #16 (4096KB line=128)
+ L2Cache #16 (256KB line=128)
+ L1Cache #16 (32KB line=128)
+ Core #16 (phys=64)
+ PU #64 (phys=64)
+ PU #65 (phys=65)
+ PU #66 (phys=66)
+ PU #67 (phys=67)
+ Socket #17
+ L3Cache #17 (4096KB line=128)
+ L2Cache #17 (256KB line=128)
+ L1Cache #17 (32KB line=128)
+ Core #17 (phys=68)
+ PU #68 (phys=68)
+ PU #69 (phys=69)
+ PU #70 (phys=70)
+ PU #71 (phys=71)
+ Socket #18
+ L3Cache #18 (4096KB line=128)
+ L2Cache #18 (256KB line=128)
+ L1Cache #18 (32KB line=128)
+ Core #18 (phys=72)
+ PU #72 (phys=72)
+ PU #73 (phys=73)
+ PU #74 (phys=74)
+ PU #75 (phys=75)
+ Socket #19
+ L3Cache #19 (4096KB line=128)
+ L2Cache #19 (256KB line=128)
+ L1Cache #19 (32KB line=128)
+ Core #19 (phys=76)
+ PU #76 (phys=76)
+ PU #77 (phys=77)
+ PU #78 (phys=78)
+ PU #79 (phys=79)
+ Socket #20
+ L3Cache #20 (4096KB line=128)
+ L2Cache #20 (256KB line=128)
+ L1Cache #20 (32KB line=128)
+ Core #20 (phys=80)
+ PU #80 (phys=80)
+ PU #81 (phys=81)
+ PU #82 (phys=82)
+ PU #83 (phys=83)
+ Socket #21
+ L3Cache #21 (4096KB line=128)
+ L2Cache #21 (256KB line=128)
+ L1Cache #21 (32KB line=128)
+ Core #21 (phys=84)
+ PU #84 (phys=84)
+ PU #85 (phys=85)
+ PU #86 (phys=86)
+ PU #87 (phys=87)
+ Socket #22
+ L3Cache #22 (4096KB line=128)
+ L2Cache #22 (256KB line=128)
+ L1Cache #22 (32KB line=128)
+ Core #22 (phys=88)
+ PU #88 (phys=88)
+ PU #89 (phys=89)
+ PU #90 (phys=90)
+ PU #91 (phys=91)
+ Socket #23
+ L3Cache #23 (4096KB line=128)
+ L2Cache #23 (256KB line=128)
+ L1Cache #23 (32KB line=128)
+ Core #23 (phys=92)
+ PU #92 (phys=92)
+ PU #93 (phys=93)
+ PU #94 (phys=94)
+ PU #95 (phys=95)
+ NUMANode #3 (phys=5 local=67108864KB total=67108864KB)
+ Socket #24
+ L3Cache #24 (4096KB line=128)
+ L2Cache #24 (256KB line=128)
+ L1Cache #24 (32KB line=128)
+ Core #24 (phys=96)
+ PU #96 (phys=96)
+ PU #97 (phys=97)
+ PU #98 (phys=98)
+ PU #99 (phys=99)
+ Socket #25
+ L3Cache #25 (4096KB line=128)
+ L2Cache #25 (256KB line=128)
+ L1Cache #25 (32KB line=128)
+ Core #25 (phys=100)
+ PU #100 (phys=100)
+ PU #101 (phys=101)
+ PU #102 (phys=102)
+ PU #103 (phys=103)
+ Socket #26
+ L3Cache #26 (4096KB line=128)
+ L2Cache #26 (256KB line=128)
+ L1Cache #26 (32KB line=128)
+ Core #26 (phys=104)
+ PU #104 (phys=104)
+ PU #105 (phys=105)
+ PU #106 (phys=106)
+ PU #107 (phys=107)
+ Socket #27
+ L3Cache #27 (4096KB line=128)
+ L2Cache #27 (256KB line=128)
+ L1Cache #27 (32KB line=128)
+ Core #27 (phys=108)
+ PU #108 (phys=108)
+ PU #109 (phys=109)
+ PU #110 (phys=110)
+ PU #111 (phys=111)
+ Socket #28
+ L3Cache #28 (4096KB line=128)
+ L2Cache #28 (256KB line=128)
+ L1Cache #28 (32KB line=128)
+ Core #28 (phys=112)
+ PU #112 (phys=112)
+ PU #113 (phys=113)
+ PU #114 (phys=114)
+ PU #115 (phys=115)
+ Socket #29
+ L3Cache #29 (4096KB line=128)
+ L2Cache #29 (256KB line=128)
+ L1Cache #29 (32KB line=128)
+ Core #29 (phys=116)
+ PU #116 (phys=116)
+ PU #117 (phys=117)
+ PU #118 (phys=118)
+ PU #119 (phys=119)
+ Socket #30
+ L3Cache #30 (4096KB line=128)
+ L2Cache #30 (256KB line=128)
+ L1Cache #30 (32KB line=128)
+ Core #30 (phys=120)
+ PU #120 (phys=120)
+ PU #121 (phys=121)
+ PU #122 (phys=122)
+ PU #123 (phys=123)
+ Socket #31
+ L3Cache #31 (4096KB line=128)
+ L2Cache #31 (256KB line=128)
+ L1Cache #31 (32KB line=128)
+ Core #31 (phys=124)
+ PU #124 (phys=124)
+ PU #125 (phys=125)
+ PU #126 (phys=126)
+ PU #127 (phys=127)
+ Group0 #2 (total=133955584KB)
+ NUMANode #4 (phys=8 local=66846720KB total=66846720KB)
+ Socket #32
+ L3Cache #32 (4096KB line=128)
+ L2Cache #32 (256KB line=128)
+ L1Cache #32 (32KB line=128)
+ Core #32 (phys=128)
+ PU #128 (phys=128)
+ PU #129 (phys=129)
+ PU #130 (phys=130)
+ PU #131 (phys=131)
+ Socket #33
+ L3Cache #33 (4096KB line=128)
+ L2Cache #33 (256KB line=128)
+ L1Cache #33 (32KB line=128)
+ Core #33 (phys=132)
+ PU #132 (phys=132)
+ PU #133 (phys=133)
+ PU #134 (phys=134)
+ PU #135 (phys=135)
+ Socket #34
+ L3Cache #34 (4096KB line=128)
+ L2Cache #34 (256KB line=128)
+ L1Cache #34 (32KB line=128)
+ Core #34 (phys=136)
+ PU #136 (phys=136)
+ PU #137 (phys=137)
+ PU #138 (phys=138)
+ PU #139 (phys=139)
+ Socket #35
+ L3Cache #35 (4096KB line=128)
+ L2Cache #35 (256KB line=128)
+ L1Cache #35 (32KB line=128)
+ Core #35 (phys=140)
+ PU #140 (phys=140)
+ PU #141 (phys=141)
+ PU #142 (phys=142)
+ PU #143 (phys=143)
+ Socket #36
+ L3Cache #36 (4096KB line=128)
+ L2Cache #36 (256KB line=128)
+ L1Cache #36 (32KB line=128)
+ Core #36 (phys=144)
+ PU #144 (phys=144)
+ PU #145 (phys=145)
+ PU #146 (phys=146)
+ PU #147 (phys=147)
+ Socket #37
+ L3Cache #37 (4096KB line=128)
+ L2Cache #37 (256KB line=128)
+ L1Cache #37 (32KB line=128)
+ Core #37 (phys=148)
+ PU #148 (phys=148)
+ PU #149 (phys=149)
+ PU #150 (phys=150)
+ PU #151 (phys=151)
+ Socket #38
+ L3Cache #38 (4096KB line=128)
+ L2Cache #38 (256KB line=128)
+ L1Cache #38 (32KB line=128)
+ Core #38 (phys=152)
+ PU #152 (phys=152)
+ PU #153 (phys=153)
+ PU #154 (phys=154)
+ PU #155 (phys=155)
+ Socket #39
+ L3Cache #39 (4096KB line=128)
+ L2Cache #39 (256KB line=128)
+ L1Cache #39 (32KB line=128)
+ Core #39 (phys=156)
+ PU #156 (phys=156)
+ PU #157 (phys=157)
+ PU #158 (phys=158)
+ PU #159 (phys=159)
+ NUMANode #5 (phys=9 local=67108864KB total=67108864KB)
+ Socket #40
+ L3Cache #40 (4096KB line=128)
+ L2Cache #40 (256KB line=128)
+ L1Cache #40 (32KB line=128)
+ Core #40 (phys=160)
+ PU #160 (phys=160)
+ PU #161 (phys=161)
+ PU #162 (phys=162)
+ PU #163 (phys=163)
+ Socket #41
+ L3Cache #41 (4096KB line=128)
+ L2Cache #41 (256KB line=128)
+ L1Cache #41 (32KB line=128)
+ Core #41 (phys=164)
+ PU #164 (phys=164)
+ PU #165 (phys=165)
+ PU #166 (phys=166)
+ PU #167 (phys=167)
+ Socket #42
+ L3Cache #42 (4096KB line=128)
+ L2Cache #42 (256KB line=128)
+ L1Cache #42 (32KB line=128)
+ Core #42 (phys=168)
+ PU #168 (phys=168)
+ PU #169 (phys=169)
+ PU #170 (phys=170)
+ PU #171 (phys=171)
+ Socket #43
+ L3Cache #43 (4096KB line=128)
+ L2Cache #43 (256KB line=128)
+ L1Cache #43 (32KB line=128)
+ Core #43 (phys=172)
+ PU #172 (phys=172)
+ PU #173 (phys=173)
+ PU #174 (phys=174)
+ PU #175 (phys=175)
+ Socket #44
+ L3Cache #44 (4096KB line=128)
+ L2Cache #44 (256KB line=128)
+ L1Cache #44 (32KB line=128)
+ Core #44 (phys=176)
+ PU #176 (phys=176)
+ PU #177 (phys=177)
+ PU #178 (phys=178)
+ PU #179 (phys=179)
+ Socket #45
+ L3Cache #45 (4096KB line=128)
+ L2Cache #45 (256KB line=128)
+ L1Cache #45 (32KB line=128)
+ Core #45 (phys=180)
+ PU #180 (phys=180)
+ PU #181 (phys=181)
+ PU #182 (phys=182)
+ PU #183 (phys=183)
+ Socket #46
+ L3Cache #46 (4096KB line=128)
+ L2Cache #46 (256KB line=128)
+ L1Cache #46 (32KB line=128)
+ Core #46 (phys=184)
+ PU #184 (phys=184)
+ PU #185 (phys=185)
+ PU #186 (phys=186)
+ PU #187 (phys=187)
+ Socket #47
+ L3Cache #47 (4096KB line=128)
+ L2Cache #47 (256KB line=128)
+ L1Cache #47 (32KB line=128)
+ Core #47 (phys=188)
+ PU #188 (phys=188)
+ PU #189 (phys=189)
+ PU #190 (phys=190)
+ PU #191 (phys=191)
+ Group0 #3 (total=123731968KB)
+ NUMANode #6 (phys=12 local=66846720KB total=66846720KB)
+ Socket #48
+ L3Cache #48 (4096KB line=128)
+ L2Cache #48 (256KB line=128)
+ L1Cache #48 (32KB line=128)
+ Core #48 (phys=192)
+ PU #192 (phys=192)
+ PU #193 (phys=193)
+ PU #194 (phys=194)
+ PU #195 (phys=195)
+ Socket #49
+ L3Cache #49 (4096KB line=128)
+ L2Cache #49 (256KB line=128)
+ L1Cache #49 (32KB line=128)
+ Core #49 (phys=196)
+ PU #196 (phys=196)
+ PU #197 (phys=197)
+ PU #198 (phys=198)
+ PU #199 (phys=199)
+ Socket #50
+ L3Cache #50 (4096KB line=128)
+ L2Cache #50 (256KB line=128)
+ L1Cache #50 (32KB line=128)
+ Core #50 (phys=200)
+ PU #200 (phys=200)
+ PU #201 (phys=201)
+ PU #202 (phys=202)
+ PU #203 (phys=203)
+ Socket #51
+ L3Cache #51 (4096KB line=128)
+ L2Cache #51 (256KB line=128)
+ L1Cache #51 (32KB line=128)
+ Core #51 (phys=204)
+ PU #204 (phys=204)
+ PU #205 (phys=205)
+ PU #206 (phys=206)
+ PU #207 (phys=207)
+ Socket #52
+ L3Cache #52 (4096KB line=128)
+ L2Cache #52 (256KB line=128)
+ L1Cache #52 (32KB line=128)
+ Core #52 (phys=208)
+ PU #208 (phys=208)
+ PU #209 (phys=209)
+ PU #210 (phys=210)
+ PU #211 (phys=211)
+ Socket #53
+ L3Cache #53 (4096KB line=128)
+ L2Cache #53 (256KB line=128)
+ L1Cache #53 (32KB line=128)
+ Core #53 (phys=212)
+ PU #212 (phys=212)
+ PU #213 (phys=213)
+ PU #214 (phys=214)
+ PU #215 (phys=215)
+ Socket #54
+ L3Cache #54 (4096KB line=128)
+ L2Cache #54 (256KB line=128)
+ L1Cache #54 (32KB line=128)
+ Core #54 (phys=216)
+ PU #216 (phys=216)
+ PU #217 (phys=217)
+ PU #218 (phys=218)
+ PU #219 (phys=219)
+ Socket #55
+ L3Cache #55 (4096KB line=128)
+ L2Cache #55 (256KB line=128)
+ L1Cache #55 (32KB line=128)
+ Core #55 (phys=220)
+ PU #220 (phys=220)
+ PU #221 (phys=221)
+ PU #222 (phys=222)
+ PU #223 (phys=223)
+ NUMANode #7 (phys=13 local=56885248KB total=56885248KB)
+ Socket #56
+ L3Cache #56 (4096KB line=128)
+ L2Cache #56 (256KB line=128)
+ L1Cache #56 (32KB line=128)
+ Core #56 (phys=224)
+ PU #224 (phys=224)
+ PU #225 (phys=225)
+ PU #226 (phys=226)
+ PU #227 (phys=227)
+ Socket #57
+ L3Cache #57 (4096KB line=128)
+ L2Cache #57 (256KB line=128)
+ L1Cache #57 (32KB line=128)
+ Core #57 (phys=228)
+ PU #228 (phys=228)
+ PU #229 (phys=229)
+ PU #230 (phys=230)
+ PU #231 (phys=231)
+ Socket #58
+ L3Cache #58 (4096KB line=128)
+ L2Cache #58 (256KB line=128)
+ L1Cache #58 (32KB line=128)
+ Core #58 (phys=232)
+ PU #232 (phys=232)
+ PU #233 (phys=233)
+ PU #234 (phys=234)
+ PU #235 (phys=235)
+ Socket #59
+ L3Cache #59 (4096KB line=128)
+ L2Cache #59 (256KB line=128)
+ L1Cache #59 (32KB line=128)
+ Core #59 (phys=236)
+ PU #236 (phys=236)
+ PU #237 (phys=237)
+ PU #238 (phys=238)
+ PU #239 (phys=239)
+ Socket #60
+ L3Cache #60 (4096KB line=128)
+ L2Cache #60 (256KB line=128)
+ L1Cache #60 (32KB line=128)
+ Core #60 (phys=240)
+ PU #240 (phys=240)
+ PU #241 (phys=241)
+ PU #242 (phys=242)
+ PU #243 (phys=243)
+ Socket #61
+ L3Cache #61 (4096KB line=128)
+ L2Cache #61 (256KB line=128)
+ L1Cache #61 (32KB line=128)
+ Core #61 (phys=244)
+ PU #244 (phys=244)
+ PU #245 (phys=245)
+ PU #246 (phys=246)
+ PU #247 (phys=247)
+ Socket #62
+ L3Cache #62 (4096KB line=128)
+ L2Cache #62 (256KB line=128)
+ L1Cache #62 (32KB line=128)
+ Core #62 (phys=248)
+ PU #248 (phys=248)
+ PU #249 (phys=249)
+ PU #250 (phys=250)
+ PU #251 (phys=251)
+ Socket #63
+ L3Cache #63 (4096KB line=128)
+ L2Cache #63 (256KB line=128)
+ L1Cache #63 (32KB line=128)
+ Core #63 (phys=252)
+ PU #252 (phys=252)
+ PU #253 (phys=253)
+ PU #254 (phys=254)
+ PU #255 (phys=255)
+depth 0: 1 Machine (type #1)
+ depth 1: 4 Groups (type #7)
+ depth 2: 8 NUMANodes (type #2)
+ depth 3: 64 Sockets (type #3)
+ depth 4: 64 Caches (type #4)
+ depth 5: 64 Caches (type #4)
+ depth 6: 64 Caches (type #4)
+ depth 7: 64 Cores (type #5)
+ depth 8: 256 PUs (type #6)
+Topology not from this system
Added: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/256ppc-8n8s4t-nocache.source
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/256ppc-8n8s4t-nocache.source (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/256ppc-8n8s4t-nocache.source 2010-11-24 09:21:55 UTC (rev 7494)
@@ -0,0 +1 @@
+256ppc-8n8s4t.tar.bz2
Added: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/256ppc-8n8s4t-nosys.exclude
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/256ppc-8n8s4t-nosys.exclude (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/256ppc-8n8s4t-nosys.exclude 2010-11-24 09:21:55 UTC (rev 7494)
@@ -0,0 +1 @@
+*/sys
Added: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/256ppc-8n8s4t-nosys.output
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/256ppc-8n8s4t-nosys.output (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/256ppc-8n8s4t-nosys.output 2010-11-24 09:21:55 UTC (rev 7494)
@@ -0,0 +1,520 @@
+Machine (phys=0 local=514318208KB total=514318208KB Backend=Linux)
+ L3Cache #0 (4096KB line=128)
+ L2Cache #0 (256KB line=128)
+ L1Cache #0 (32KB line=128)
+ Core #0 (phys=0)
+ PU #0 (phys=0)
+ PU #1 (phys=1)
+ PU #2 (phys=2)
+ PU #3 (phys=3)
+ L3Cache #1 (4096KB line=128)
+ L2Cache #1 (256KB line=128)
+ L1Cache #1 (32KB line=128)
+ Core #1 (phys=4)
+ PU #4 (phys=4)
+ PU #5 (phys=5)
+ PU #6 (phys=6)
+ PU #7 (phys=7)
+ L3Cache #2 (4096KB line=128)
+ L2Cache #2 (256KB line=128)
+ L1Cache #2 (32KB line=128)
+ Core #2 (phys=8)
+ PU #8 (phys=8)
+ PU #9 (phys=9)
+ PU #10 (phys=10)
+ PU #11 (phys=11)
+ L3Cache #3 (4096KB line=128)
+ L2Cache #3 (256KB line=128)
+ L1Cache #3 (32KB line=128)
+ Core #3 (phys=12)
+ PU #12 (phys=12)
+ PU #13 (phys=13)
+ PU #14 (phys=14)
+ PU #15 (phys=15)
+ L3Cache #4 (4096KB line=128)
+ L2Cache #4 (256KB line=128)
+ L1Cache #4 (32KB line=128)
+ Core #4 (phys=16)
+ PU #16 (phys=16)
+ PU #17 (phys=17)
+ PU #18 (phys=18)
+ PU #19 (phys=19)
+ L3Cache #5 (4096KB line=128)
+ L2Cache #5 (256KB line=128)
+ L1Cache #5 (32KB line=128)
+ Core #5 (phys=20)
+ PU #20 (phys=20)
+ PU #21 (phys=21)
+ PU #22 (phys=22)
+ PU #23 (phys=23)
+ L3Cache #6 (4096KB line=128)
+ L2Cache #6 (256KB line=128)
+ L1Cache #6 (32KB line=128)
+ Core #6 (phys=24)
+ PU #24 (phys=24)
+ PU #25 (phys=25)
+ PU #26 (phys=26)
+ PU #27 (phys=27)
+ L3Cache #7 (4096KB line=128)
+ L2Cache #7 (256KB line=128)
+ L1Cache #7 (32KB line=128)
+ Core #7 (phys=28)
+ PU #28 (phys=28)
+ PU #29 (phys=29)
+ PU #30 (phys=30)
+ PU #31 (phys=31)
+ L3Cache #8 (4096KB line=128)
+ L2Cache #8 (256KB line=128)
+ L1Cache #8 (32KB line=128)
+ Core #8 (phys=32)
+ PU #32 (phys=32)
+ PU #33 (phys=33)
+ PU #34 (phys=34)
+ PU #35 (phys=35)
+ L3Cache #9 (4096KB line=128)
+ L2Cache #9 (256KB line=128)
+ L1Cache #9 (32KB line=128)
+ Core #9 (phys=36)
+ PU #36 (phys=36)
+ PU #37 (phys=37)
+ PU #38 (phys=38)
+ PU #39 (phys=39)
+ L3Cache #10 (4096KB line=128)
+ L2Cache #10 (256KB line=128)
+ L1Cache #10 (32KB line=128)
+ Core #10 (phys=40)
+ PU #40 (phys=40)
+ PU #41 (phys=41)
+ PU #42 (phys=42)
+ PU #43 (phys=43)
+ L3Cache #11 (4096KB line=128)
+ L2Cache #11 (256KB line=128)
+ L1Cache #11 (32KB line=128)
+ Core #11 (phys=44)
+ PU #44 (phys=44)
+ PU #45 (phys=45)
+ PU #46 (phys=46)
+ PU #47 (phys=47)
+ L3Cache #12 (4096KB line=128)
+ L2Cache #12 (256KB line=128)
+ L1Cache #12 (32KB line=128)
+ Core #12 (phys=48)
+ PU #48 (phys=48)
+ PU #49 (phys=49)
+ PU #50 (phys=50)
+ PU #51 (phys=51)
+ L3Cache #13 (4096KB line=128)
+ L2Cache #13 (256KB line=128)
+ L1Cache #13 (32KB line=128)
+ Core #13 (phys=52)
+ PU #52 (phys=52)
+ PU #53 (phys=53)
+ PU #54 (phys=54)
+ PU #55 (phys=55)
+ L3Cache #14 (4096KB line=128)
+ L2Cache #14 (256KB line=128)
+ L1Cache #14 (32KB line=128)
+ Core #14 (phys=56)
+ PU #56 (phys=56)
+ PU #57 (phys=57)
+ PU #58 (phys=58)
+ PU #59 (phys=59)
+ L3Cache #15 (4096KB line=128)
+ L2Cache #15 (256KB line=128)
+ L1Cache #15 (32KB line=128)
+ Core #15 (phys=60)
+ PU #60 (phys=60)
+ PU #61 (phys=61)
+ PU #62 (phys=62)
+ PU #63 (phys=63)
+ L3Cache #16 (4096KB line=128)
+ L2Cache #16 (256KB line=128)
+ L1Cache #16 (32KB line=128)
+ Core #16 (phys=64)
+ PU #64 (phys=64)
+ PU #65 (phys=65)
+ PU #66 (phys=66)
+ PU #67 (phys=67)
+ L3Cache #17 (4096KB line=128)
+ L2Cache #17 (256KB line=128)
+ L1Cache #17 (32KB line=128)
+ Core #17 (phys=68)
+ PU #68 (phys=68)
+ PU #69 (phys=69)
+ PU #70 (phys=70)
+ PU #71 (phys=71)
+ L3Cache #18 (4096KB line=128)
+ L2Cache #18 (256KB line=128)
+ L1Cache #18 (32KB line=128)
+ Core #18 (phys=72)
+ PU #72 (phys=72)
+ PU #73 (phys=73)
+ PU #74 (phys=74)
+ PU #75 (phys=75)
+ L3Cache #19 (4096KB line=128)
+ L2Cache #19 (256KB line=128)
+ L1Cache #19 (32KB line=128)
+ Core #19 (phys=76)
+ PU #76 (phys=76)
+ PU #77 (phys=77)
+ PU #78 (phys=78)
+ PU #79 (phys=79)
+ L3Cache #20 (4096KB line=128)
+ L2Cache #20 (256KB line=128)
+ L1Cache #20 (32KB line=128)
+ Core #20 (phys=80)
+ PU #80 (phys=80)
+ PU #81 (phys=81)
+ PU #82 (phys=82)
+ PU #83 (phys=83)
+ L3Cache #21 (4096KB line=128)
+ L2Cache #21 (256KB line=128)
+ L1Cache #21 (32KB line=128)
+ Core #21 (phys=84)
+ PU #84 (phys=84)
+ PU #85 (phys=85)
+ PU #86 (phys=86)
+ PU #87 (phys=87)
+ L3Cache #22 (4096KB line=128)
+ L2Cache #22 (256KB line=128)
+ L1Cache #22 (32KB line=128)
+ Core #22 (phys=88)
+ PU #88 (phys=88)
+ PU #89 (phys=89)
+ PU #90 (phys=90)
+ PU #91 (phys=91)
+ L3Cache #23 (4096KB line=128)
+ L2Cache #23 (256KB line=128)
+ L1Cache #23 (32KB line=128)
+ Core #23 (phys=92)
+ PU #92 (phys=92)
+ PU #93 (phys=93)
+ PU #94 (phys=94)
+ PU #95 (phys=95)
+ L3Cache #24 (4096KB line=128)
+ L2Cache #24 (256KB line=128)
+ L1Cache #24 (32KB line=128)
+ Core #24 (phys=96)
+ PU #96 (phys=96)
+ PU #97 (phys=97)
+ PU #98 (phys=98)
+ PU #99 (phys=99)
+ L3Cache #25 (4096KB line=128)
+ L2Cache #25 (256KB line=128)
+ L1Cache #25 (32KB line=128)
+ Core #25 (phys=100)
+ PU #100 (phys=100)
+ PU #101 (phys=101)
+ PU #102 (phys=102)
+ PU #103 (phys=103)
+ L3Cache #26 (4096KB line=128)
+ L2Cache #26 (256KB line=128)
+ L1Cache #26 (32KB line=128)
+ Core #26 (phys=104)
+ PU #104 (phys=104)
+ PU #105 (phys=105)
+ PU #106 (phys=106)
+ PU #107 (phys=107)
+ L3Cache #27 (4096KB line=128)
+ L2Cache #27 (256KB line=128)
+ L1Cache #27 (32KB line=128)
+ Core #27 (phys=108)
+ PU #108 (phys=108)
+ PU #109 (phys=109)
+ PU #110 (phys=110)
+ PU #111 (phys=111)
+ L3Cache #28 (4096KB line=128)
+ L2Cache #28 (256KB line=128)
+ L1Cache #28 (32KB line=128)
+ Core #28 (phys=112)
+ PU #112 (phys=112)
+ PU #113 (phys=113)
+ PU #114 (phys=114)
+ PU #115 (phys=115)
+ L3Cache #29 (4096KB line=128)
+ L2Cache #29 (256KB line=128)
+ L1Cache #29 (32KB line=128)
+ Core #29 (phys=116)
+ PU #116 (phys=116)
+ PU #117 (phys=117)
+ PU #118 (phys=118)
+ PU #119 (phys=119)
+ L3Cache #30 (4096KB line=128)
+ L2Cache #30 (256KB line=128)
+ L1Cache #30 (32KB line=128)
+ Core #30 (phys=120)
+ PU #120 (phys=120)
+ PU #121 (phys=121)
+ PU #122 (phys=122)
+ PU #123 (phys=123)
+ L3Cache #31 (4096KB line=128)
+ L2Cache #31 (256KB line=128)
+ L1Cache #31 (32KB line=128)
+ Core #31 (phys=124)
+ PU #124 (phys=124)
+ PU #125 (phys=125)
+ PU #126 (phys=126)
+ PU #127 (phys=127)
+ L3Cache #32 (4096KB line=128)
+ L2Cache #32 (256KB line=128)
+ L1Cache #32 (32KB line=128)
+ Core #32 (phys=128)
+ PU #128 (phys=128)
+ PU #129 (phys=129)
+ PU #130 (phys=130)
+ PU #131 (phys=131)
+ L3Cache #33 (4096KB line=128)
+ L2Cache #33 (256KB line=128)
+ L1Cache #33 (32KB line=128)
+ Core #33 (phys=132)
+ PU #132 (phys=132)
+ PU #133 (phys=133)
+ PU #134 (phys=134)
+ PU #135 (phys=135)
+ L3Cache #34 (4096KB line=128)
+ L2Cache #34 (256KB line=128)
+ L1Cache #34 (32KB line=128)
+ Core #34 (phys=136)
+ PU #136 (phys=136)
+ PU #137 (phys=137)
+ PU #138 (phys=138)
+ PU #139 (phys=139)
+ L3Cache #35 (4096KB line=128)
+ L2Cache #35 (256KB line=128)
+ L1Cache #35 (32KB line=128)
+ Core #35 (phys=140)
+ PU #140 (phys=140)
+ PU #141 (phys=141)
+ PU #142 (phys=142)
+ PU #143 (phys=143)
+ L3Cache #36 (4096KB line=128)
+ L2Cache #36 (256KB line=128)
+ L1Cache #36 (32KB line=128)
+ Core #36 (phys=144)
+ PU #144 (phys=144)
+ PU #145 (phys=145)
+ PU #146 (phys=146)
+ PU #147 (phys=147)
+ L3Cache #37 (4096KB line=128)
+ L2Cache #37 (256KB line=128)
+ L1Cache #37 (32KB line=128)
+ Core #37 (phys=148)
+ PU #148 (phys=148)
+ PU #149 (phys=149)
+ PU #150 (phys=150)
+ PU #151 (phys=151)
+ L3Cache #38 (4096KB line=128)
+ L2Cache #38 (256KB line=128)
+ L1Cache #38 (32KB line=128)
+ Core #38 (phys=152)
+ PU #152 (phys=152)
+ PU #153 (phys=153)
+ PU #154 (phys=154)
+ PU #155 (phys=155)
+ L3Cache #39 (4096KB line=128)
+ L2Cache #39 (256KB line=128)
+ L1Cache #39 (32KB line=128)
+ Core #39 (phys=156)
+ PU #156 (phys=156)
+ PU #157 (phys=157)
+ PU #158 (phys=158)
+ PU #159 (phys=159)
+ L3Cache #40 (4096KB line=128)
+ L2Cache #40 (256KB line=128)
+ L1Cache #40 (32KB line=128)
+ Core #40 (phys=160)
+ PU #160 (phys=160)
+ PU #161 (phys=161)
+ PU #162 (phys=162)
+ PU #163 (phys=163)
+ L3Cache #41 (4096KB line=128)
+ L2Cache #41 (256KB line=128)
+ L1Cache #41 (32KB line=128)
+ Core #41 (phys=164)
+ PU #164 (phys=164)
+ PU #165 (phys=165)
+ PU #166 (phys=166)
+ PU #167 (phys=167)
+ L3Cache #42 (4096KB line=128)
+ L2Cache #42 (256KB line=128)
+ L1Cache #42 (32KB line=128)
+ Core #42 (phys=168)
+ PU #168 (phys=168)
+ PU #169 (phys=169)
+ PU #170 (phys=170)
+ PU #171 (phys=171)
+ L3Cache #43 (4096KB line=128)
+ L2Cache #43 (256KB line=128)
+ L1Cache #43 (32KB line=128)
+ Core #43 (phys=172)
+ PU #172 (phys=172)
+ PU #173 (phys=173)
+ PU #174 (phys=174)
+ PU #175 (phys=175)
+ L3Cache #44 (4096KB line=128)
+ L2Cache #44 (256KB line=128)
+ L1Cache #44 (32KB line=128)
+ Core #44 (phys=176)
+ PU #176 (phys=176)
+ PU #177 (phys=177)
+ PU #178 (phys=178)
+ PU #179 (phys=179)
+ L3Cache #45 (4096KB line=128)
+ L2Cache #45 (256KB line=128)
+ L1Cache #45 (32KB line=128)
+ Core #45 (phys=180)
+ PU #180 (phys=180)
+ PU #181 (phys=181)
+ PU #182 (phys=182)
+ PU #183 (phys=183)
+ L3Cache #46 (4096KB line=128)
+ L2Cache #46 (256KB line=128)
+ L1Cache #46 (32KB line=128)
+ Core #46 (phys=184)
+ PU #184 (phys=184)
+ PU #185 (phys=185)
+ PU #186 (phys=186)
+ PU #187 (phys=187)
+ L3Cache #47 (4096KB line=128)
+ L2Cache #47 (256KB line=128)
+ L1Cache #47 (32KB line=128)
+ Core #47 (phys=188)
+ PU #188 (phys=188)
+ PU #189 (phys=189)
+ PU #190 (phys=190)
+ PU #191 (phys=191)
+ L3Cache #48 (4096KB line=128)
+ L2Cache #48 (256KB line=128)
+ L1Cache #48 (32KB line=128)
+ Core #48 (phys=192)
+ PU #192 (phys=192)
+ PU #193 (phys=193)
+ PU #194 (phys=194)
+ PU #195 (phys=195)
+ L3Cache #49 (4096KB line=128)
+ L2Cache #49 (256KB line=128)
+ L1Cache #49 (32KB line=128)
+ Core #49 (phys=196)
+ PU #196 (phys=196)
+ PU #197 (phys=197)
+ PU #198 (phys=198)
+ PU #199 (phys=199)
+ L3Cache #50 (4096KB line=128)
+ L2Cache #50 (256KB line=128)
+ L1Cache #50 (32KB line=128)
+ Core #50 (phys=200)
+ PU #200 (phys=200)
+ PU #201 (phys=201)
+ PU #202 (phys=202)
+ PU #203 (phys=203)
+ L3Cache #51 (4096KB line=128)
+ L2Cache #51 (256KB line=128)
+ L1Cache #51 (32KB line=128)
+ Core #51 (phys=204)
+ PU #204 (phys=204)
+ PU #205 (phys=205)
+ PU #206 (phys=206)
+ PU #207 (phys=207)
+ L3Cache #52 (4096KB line=128)
+ L2Cache #52 (256KB line=128)
+ L1Cache #52 (32KB line=128)
+ Core #52 (phys=208)
+ PU #208 (phys=208)
+ PU #209 (phys=209)
+ PU #210 (phys=210)
+ PU #211 (phys=211)
+ L3Cache #53 (4096KB line=128)
+ L2Cache #53 (256KB line=128)
+ L1Cache #53 (32KB line=128)
+ Core #53 (phys=212)
+ PU #212 (phys=212)
+ PU #213 (phys=213)
+ PU #214 (phys=214)
+ PU #215 (phys=215)
+ L3Cache #54 (4096KB line=128)
+ L2Cache #54 (256KB line=128)
+ L1Cache #54 (32KB line=128)
+ Core #54 (phys=216)
+ PU #216 (phys=216)
+ PU #217 (phys=217)
+ PU #218 (phys=218)
+ PU #219 (phys=219)
+ L3Cache #55 (4096KB line=128)
+ L2Cache #55 (256KB line=128)
+ L1Cache #55 (32KB line=128)
+ Core #55 (phys=220)
+ PU #220 (phys=220)
+ PU #221 (phys=221)
+ PU #222 (phys=222)
+ PU #223 (phys=223)
+ L3Cache #56 (4096KB line=128)
+ L2Cache #56 (256KB line=128)
+ L1Cache #56 (32KB line=128)
+ Core #56 (phys=224)
+ PU #224 (phys=224)
+ PU #225 (phys=225)
+ PU #226 (phys=226)
+ PU #227 (phys=227)
+ L3Cache #57 (4096KB line=128)
+ L2Cache #57 (256KB line=128)
+ L1Cache #57 (32KB line=128)
+ Core #57 (phys=228)
+ PU #228 (phys=228)
+ PU #229 (phys=229)
+ PU #230 (phys=230)
+ PU #231 (phys=231)
+ L3Cache #58 (4096KB line=128)
+ L2Cache #58 (256KB line=128)
+ L1Cache #58 (32KB line=128)
+ Core #58 (phys=232)
+ PU #232 (phys=232)
+ PU #233 (phys=233)
+ PU #234 (phys=234)
+ PU #235 (phys=235)
+ L3Cache #59 (4096KB line=128)
+ L2Cache #59 (256KB line=128)
+ L1Cache #59 (32KB line=128)
+ Core #59 (phys=236)
+ PU #236 (phys=236)
+ PU #237 (phys=237)
+ PU #238 (phys=238)
+ PU #239 (phys=239)
+ L3Cache #60 (4096KB line=128)
+ L2Cache #60 (256KB line=128)
+ L1Cache #60 (32KB line=128)
+ Core #60 (phys=240)
+ PU #240 (phys=240)
+ PU #241 (phys=241)
+ PU #242 (phys=242)
+ PU #243 (phys=243)
+ L3Cache #61 (4096KB line=128)
+ L2Cache #61 (256KB line=128)
+ L1Cache #61 (32KB line=128)
+ Core #61 (phys=244)
+ PU #244 (phys=244)
+ PU #245 (phys=245)
+ PU #246 (phys=246)
+ PU #247 (phys=247)
+ L3Cache #62 (4096KB line=128)
+ L2Cache #62 (256KB line=128)
+ L1Cache #62 (32KB line=128)
+ Core #62 (phys=248)
+ PU #248 (phys=248)
+ PU #249 (phys=249)
+ PU #250 (phys=250)
+ PU #251 (phys=251)
+ L3Cache #63 (4096KB line=128)
+ L2Cache #63 (256KB line=128)
+ L1Cache #63 (32KB line=128)
+ Core #63 (phys=252)
+ PU #252 (phys=252)
+ PU #253 (phys=253)
+ PU #254 (phys=254)
+ PU #255 (phys=255)
+depth 0: 1 Machine (type #1)
+ depth 1: 64 Caches (type #4)
+ depth 2: 64 Caches (type #4)
+ depth 3: 64 Caches (type #4)
+ depth 4: 64 Cores (type #5)
+ depth 5: 256 PUs (type #6)
+Topology not from this system
Added: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/256ppc-8n8s4t-nosys.source
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/256ppc-8n8s4t-nosys.source (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/256ppc-8n8s4t-nosys.source 2010-11-24 09:21:55 UTC (rev 7494)
@@ -0,0 +1 @@
+256ppc-8n8s4t.tar.bz2
Added: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/256ppc-8n8s4t.output
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/256ppc-8n8s4t.output (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/256ppc-8n8s4t.output 2010-11-24 09:21:55 UTC (rev 7494)
@@ -0,0 +1,599 @@
+Machine (phys=0 total=516423680KB Backend=Linux)
+ Group0 #0 (total=124780544KB)
+ NUMANode #0 (phys=0 local=58458112KB total=58458112KB)
+ Socket #0
+ L3Cache #0 (4096KB line=128)
+ L2Cache #0 (256KB line=128)
+ L1Cache #0 (32KB line=128)
+ Core #0 (phys=0)
+ PU #0 (phys=0)
+ PU #1 (phys=1)
+ PU #2 (phys=2)
+ PU #3 (phys=3)
+ Socket #1
+ L3Cache #1 (4096KB line=128)
+ L2Cache #1 (256KB line=128)
+ L1Cache #1 (32KB line=128)
+ Core #1 (phys=4)
+ PU #4 (phys=4)
+ PU #5 (phys=5)
+ PU #6 (phys=6)
+ PU #7 (phys=7)
+ Socket #2
+ L3Cache #2 (4096KB line=128)
+ L2Cache #2 (256KB line=128)
+ L1Cache #2 (32KB line=128)
+ Core #2 (phys=8)
+ PU #8 (phys=8)
+ PU #9 (phys=9)
+ PU #10 (phys=10)
+ PU #11 (phys=11)
+ Socket #3
+ L3Cache #3 (4096KB line=128)
+ L2Cache #3 (256KB line=128)
+ L1Cache #3 (32KB line=128)
+ Core #3 (phys=12)
+ PU #12 (phys=12)
+ PU #13 (phys=13)
+ PU #14 (phys=14)
+ PU #15 (phys=15)
+ Socket #4
+ L3Cache #4 (4096KB line=128)
+ L2Cache #4 (256KB line=128)
+ L1Cache #4 (32KB line=128)
+ Core #4 (phys=16)
+ PU #16 (phys=16)
+ PU #17 (phys=17)
+ PU #18 (phys=18)
+ PU #19 (phys=19)
+ Socket #5
+ L3Cache #5 (4096KB line=128)
+ L2Cache #5 (256KB line=128)
+ L1Cache #5 (32KB line=128)
+ Core #5 (phys=20)
+ PU #20 (phys=20)
+ PU #21 (phys=21)
+ PU #22 (phys=22)
+ PU #23 (phys=23)
+ Socket #6
+ L3Cache #6 (4096KB line=128)
+ L2Cache #6 (256KB line=128)
+ L1Cache #6 (32KB line=128)
+ Core #6 (phys=24)
+ PU #24 (phys=24)
+ PU #25 (phys=25)
+ PU #26 (phys=26)
+ PU #27 (phys=27)
+ Socket #7
+ L3Cache #7 (4096KB line=128)
+ L2Cache #7 (256KB line=128)
+ L1Cache #7 (32KB line=128)
+ Core #7 (phys=28)
+ PU #28 (phys=28)
+ PU #29 (phys=29)
+ PU #30 (phys=30)
+ PU #31 (phys=31)
+ NUMANode #1 (phys=1 local=66322432KB total=66322432KB)
+ Socket #8
+ L3Cache #8 (4096KB line=128)
+ L2Cache #8 (256KB line=128)
+ L1Cache #8 (32KB line=128)
+ Core #8 (phys=32)
+ PU #32 (phys=32)
+ PU #33 (phys=33)
+ PU #34 (phys=34)
+ PU #35 (phys=35)
+ Socket #9
+ L3Cache #9 (4096KB line=128)
+ L2Cache #9 (256KB line=128)
+ L1Cache #9 (32KB line=128)
+ Core #9 (phys=36)
+ PU #36 (phys=36)
+ PU #37 (phys=37)
+ PU #38 (phys=38)
+ PU #39 (phys=39)
+ Socket #10
+ L3Cache #10 (4096KB line=128)
+ L2Cache #10 (256KB line=128)
+ L1Cache #10 (32KB line=128)
+ Core #10 (phys=40)
+ PU #40 (phys=40)
+ PU #41 (phys=41)
+ PU #42 (phys=42)
+ PU #43 (phys=43)
+ Socket #11
+ L3Cache #11 (4096KB line=128)
+ L2Cache #11 (256KB line=128)
+ L1Cache #11 (32KB line=128)
+ Core #11 (phys=44)
+ PU #44 (phys=44)
+ PU #45 (phys=45)
+ PU #46 (phys=46)
+ PU #47 (phys=47)
+ Socket #12
+ L3Cache #12 (4096KB line=128)
+ L2Cache #12 (256KB line=128)
+ L1Cache #12 (32KB line=128)
+ Core #12 (phys=48)
+ PU #48 (phys=48)
+ PU #49 (phys=49)
+ PU #50 (phys=50)
+ PU #51 (phys=51)
+ Socket #13
+ L3Cache #13 (4096KB line=128)
+ L2Cache #13 (256KB line=128)
+ L1Cache #13 (32KB line=128)
+ Core #13 (phys=52)
+ PU #52 (phys=52)
+ PU #53 (phys=53)
+ PU #54 (phys=54)
+ PU #55 (phys=55)
+ Socket #14
+ L3Cache #14 (4096KB line=128)
+ L2Cache #14 (256KB line=128)
+ L1Cache #14 (32KB line=128)
+ Core #14 (phys=56)
+ PU #56 (phys=56)
+ PU #57 (phys=57)
+ PU #58 (phys=58)
+ PU #59 (phys=59)
+ Socket #15
+ L3Cache #15 (4096KB line=128)
+ L2Cache #15 (256KB line=128)
+ L1Cache #15 (32KB line=128)
+ Core #15 (phys=60)
+ PU #60 (phys=60)
+ PU #61 (phys=61)
+ PU #62 (phys=62)
+ PU #63 (phys=63)
+ Group0 #1 (total=133955584KB)
+ NUMANode #2 (phys=4 local=66846720KB total=66846720KB)
+ Socket #16
+ L3Cache #16 (4096KB line=128)
+ L2Cache #16 (256KB line=128)
+ L1Cache #16 (32KB line=128)
+ Core #16 (phys=64)
+ PU #64 (phys=64)
+ PU #65 (phys=65)
+ PU #66 (phys=66)
+ PU #67 (phys=67)
+ Socket #17
+ L3Cache #17 (4096KB line=128)
+ L2Cache #17 (256KB line=128)
+ L1Cache #17 (32KB line=128)
+ Core #17 (phys=68)
+ PU #68 (phys=68)
+ PU #69 (phys=69)
+ PU #70 (phys=70)
+ PU #71 (phys=71)
+ Socket #18
+ L3Cache #18 (4096KB line=128)
+ L2Cache #18 (256KB line=128)
+ L1Cache #18 (32KB line=128)
+ Core #18 (phys=72)
+ PU #72 (phys=72)
+ PU #73 (phys=73)
+ PU #74 (phys=74)
+ PU #75 (phys=75)
+ Socket #19
+ L3Cache #19 (4096KB line=128)
+ L2Cache #19 (256KB line=128)
+ L1Cache #19 (32KB line=128)
+ Core #19 (phys=76)
+ PU #76 (phys=76)
+ PU #77 (phys=77)
+ PU #78 (phys=78)
+ PU #79 (phys=79)
+ Socket #20
+ L3Cache #20 (4096KB line=128)
+ L2Cache #20 (256KB line=128)
+ L1Cache #20 (32KB line=128)
+ Core #20 (phys=80)
+ PU #80 (phys=80)
+ PU #81 (phys=81)
+ PU #82 (phys=82)
+ PU #83 (phys=83)
+ Socket #21
+ L3Cache #21 (4096KB line=128)
+ L2Cache #21 (256KB line=128)
+ L1Cache #21 (32KB line=128)
+ Core #21 (phys=84)
+ PU #84 (phys=84)
+ PU #85 (phys=85)
+ PU #86 (phys=86)
+ PU #87 (phys=87)
+ Socket #22
+ L3Cache #22 (4096KB line=128)
+ L2Cache #22 (256KB line=128)
+ L1Cache #22 (32KB line=128)
+ Core #22 (phys=88)
+ PU #88 (phys=88)
+ PU #89 (phys=89)
+ PU #90 (phys=90)
+ PU #91 (phys=91)
+ Socket #23
+ L3Cache #23 (4096KB line=128)
+ L2Cache #23 (256KB line=128)
+ L1Cache #23 (32KB line=128)
+ Core #23 (phys=92)
+ PU #92 (phys=92)
+ PU #93 (phys=93)
+ PU #94 (phys=94)
+ PU #95 (phys=95)
+ NUMANode #3 (phys=5 local=67108864KB total=67108864KB)
+ Socket #24
+ L3Cache #24 (4096KB line=128)
+ L2Cache #24 (256KB line=128)
+ L1Cache #24 (32KB line=128)
+ Core #24 (phys=96)
+ PU #96 (phys=96)
+ PU #97 (phys=97)
+ PU #98 (phys=98)
+ PU #99 (phys=99)
+ Socket #25
+ L3Cache #25 (4096KB line=128)
+ L2Cache #25 (256KB line=128)
+ L1Cache #25 (32KB line=128)
+ Core #25 (phys=100)
+ PU #100 (phys=100)
+ PU #101 (phys=101)
+ PU #102 (phys=102)
+ PU #103 (phys=103)
+ Socket #26
+ L3Cache #26 (4096KB line=128)
+ L2Cache #26 (256KB line=128)
+ L1Cache #26 (32KB line=128)
+ Core #26 (phys=104)
+ PU #104 (phys=104)
+ PU #105 (phys=105)
+ PU #106 (phys=106)
+ PU #107 (phys=107)
+ Socket #27
+ L3Cache #27 (4096KB line=128)
+ L2Cache #27 (256KB line=128)
+ L1Cache #27 (32KB line=128)
+ Core #27 (phys=108)
+ PU #108 (phys=108)
+ PU #109 (phys=109)
+ PU #110 (phys=110)
+ PU #111 (phys=111)
+ Socket #28
+ L3Cache #28 (4096KB line=128)
+ L2Cache #28 (256KB line=128)
+ L1Cache #28 (32KB line=128)
+ Core #28 (phys=112)
+ PU #112 (phys=112)
+ PU #113 (phys=113)
+ PU #114 (phys=114)
+ PU #115 (phys=115)
+ Socket #29
+ L3Cache #29 (4096KB line=128)
+ L2Cache #29 (256KB line=128)
+ L1Cache #29 (32KB line=128)
+ Core #29 (phys=116)
+ PU #116 (phys=116)
+ PU #117 (phys=117)
+ PU #118 (phys=118)
+ PU #119 (phys=119)
+ Socket #30
+ L3Cache #30 (4096KB line=128)
+ L2Cache #30 (256KB line=128)
+ L1Cache #30 (32KB line=128)
+ Core #30 (phys=120)
+ PU #120 (phys=120)
+ PU #121 (phys=121)
+ PU #122 (phys=122)
+ PU #123 (phys=123)
+ Socket #31
+ L3Cache #31 (4096KB line=128)
+ L2Cache #31 (256KB line=128)
+ L1Cache #31 (32KB line=128)
+ Core #31 (phys=124)
+ PU #124 (phys=124)
+ PU #125 (phys=125)
+ PU #126 (phys=126)
+ PU #127 (phys=127)
+ Group0 #2 (total=133955584KB)
+ NUMANode #4 (phys=8 local=66846720KB total=66846720KB)
+ Socket #32
+ L3Cache #32 (4096KB line=128)
+ L2Cache #32 (256KB line=128)
+ L1Cache #32 (32KB line=128)
+ Core #32 (phys=128)
+ PU #128 (phys=128)
+ PU #129 (phys=129)
+ PU #130 (phys=130)
+ PU #131 (phys=131)
+ Socket #33
+ L3Cache #33 (4096KB line=128)
+ L2Cache #33 (256KB line=128)
+ L1Cache #33 (32KB line=128)
+ Core #33 (phys=132)
+ PU #132 (phys=132)
+ PU #133 (phys=133)
+ PU #134 (phys=134)
+ PU #135 (phys=135)
+ Socket #34
+ L3Cache #34 (4096KB line=128)
+ L2Cache #34 (256KB line=128)
+ L1Cache #34 (32KB line=128)
+ Core #34 (phys=136)
+ PU #136 (phys=136)
+ PU #137 (phys=137)
+ PU #138 (phys=138)
+ PU #139 (phys=139)
+ Socket #35
+ L3Cache #35 (4096KB line=128)
+ L2Cache #35 (256KB line=128)
+ L1Cache #35 (32KB line=128)
+ Core #35 (phys=140)
+ PU #140 (phys=140)
+ PU #141 (phys=141)
+ PU #142 (phys=142)
+ PU #143 (phys=143)
+ Socket #36
+ L3Cache #36 (4096KB line=128)
+ L2Cache #36 (256KB line=128)
+ L1Cache #36 (32KB line=128)
+ Core #36 (phys=144)
+ PU #144 (phys=144)
+ PU #145 (phys=145)
+ PU #146 (phys=146)
+ PU #147 (phys=147)
+ Socket #37
+ L3Cache #37 (4096KB line=128)
+ L2Cache #37 (256KB line=128)
+ L1Cache #37 (32KB line=128)
+ Core #37 (phys=148)
+ PU #148 (phys=148)
+ PU #149 (phys=149)
+ PU #150 (phys=150)
+ PU #151 (phys=151)
+ Socket #38
+ L3Cache #38 (4096KB line=128)
+ L2Cache #38 (256KB line=128)
+ L1Cache #38 (32KB line=128)
+ Core #38 (phys=152)
+ PU #152 (phys=152)
+ PU #153 (phys=153)
+ PU #154 (phys=154)
+ PU #155 (phys=155)
+ Socket #39
+ L3Cache #39 (4096KB line=128)
+ L2Cache #39 (256KB line=128)
+ L1Cache #39 (32KB line=128)
+ Core #39 (phys=156)
+ PU #156 (phys=156)
+ PU #157 (phys=157)
+ PU #158 (phys=158)
+ PU #159 (phys=159)
+ NUMANode #5 (phys=9 local=67108864KB total=67108864KB)
+ Socket #40
+ L3Cache #40 (4096KB line=128)
+ L2Cache #40 (256KB line=128)
+ L1Cache #40 (32KB line=128)
+ Core #40 (phys=160)
+ PU #160 (phys=160)
+ PU #161 (phys=161)
+ PU #162 (phys=162)
+ PU #163 (phys=163)
+ Socket #41
+ L3Cache #41 (4096KB line=128)
+ L2Cache #41 (256KB line=128)
+ L1Cache #41 (32KB line=128)
+ Core #41 (phys=164)
+ PU #164 (phys=164)
+ PU #165 (phys=165)
+ PU #166 (phys=166)
+ PU #167 (phys=167)
+ Socket #42
+ L3Cache #42 (4096KB line=128)
+ L2Cache #42 (256KB line=128)
+ L1Cache #42 (32KB line=128)
+ Core #42 (phys=168)
+ PU #168 (phys=168)
+ PU #169 (phys=169)
+ PU #170 (phys=170)
+ PU #171 (phys=171)
+ Socket #43
+ L3Cache #43 (4096KB line=128)
+ L2Cache #43 (256KB line=128)
+ L1Cache #43 (32KB line=128)
+ Core #43 (phys=172)
+ PU #172 (phys=172)
+ PU #173 (phys=173)
+ PU #174 (phys=174)
+ PU #175 (phys=175)
+ Socket #44
+ L3Cache #44 (4096KB line=128)
+ L2Cache #44 (256KB line=128)
+ L1Cache #44 (32KB line=128)
+ Core #44 (phys=176)
+ PU #176 (phys=176)
+ PU #177 (phys=177)
+ PU #178 (phys=178)
+ PU #179 (phys=179)
+ Socket #45
+ L3Cache #45 (4096KB line=128)
+ L2Cache #45 (256KB line=128)
+ L1Cache #45 (32KB line=128)
+ Core #45 (phys=180)
+ PU #180 (phys=180)
+ PU #181 (phys=181)
+ PU #182 (phys=182)
+ PU #183 (phys=183)
+ Socket #46
+ L3Cache #46 (4096KB line=128)
+ L2Cache #46 (256KB line=128)
+ L1Cache #46 (32KB line=128)
+ Core #46 (phys=184)
+ PU #184 (phys=184)
+ PU #185 (phys=185)
+ PU #186 (phys=186)
+ PU #187 (phys=187)
+ Socket #47
+ L3Cache #47 (4096KB line=128)
+ L2Cache #47 (256KB line=128)
+ L1Cache #47 (32KB line=128)
+ Core #47 (phys=188)
+ PU #188 (phys=188)
+ PU #189 (phys=189)
+ PU #190 (phys=190)
+ PU #191 (phys=191)
+ Group0 #3 (total=123731968KB)
+ NUMANode #6 (phys=12 local=66846720KB total=66846720KB)
+ Socket #48
+ L3Cache #48 (4096KB line=128)
+ L2Cache #48 (256KB line=128)
+ L1Cache #48 (32KB line=128)
+ Core #48 (phys=192)
+ PU #192 (phys=192)
+ PU #193 (phys=193)
+ PU #194 (phys=194)
+ PU #195 (phys=195)
+ Socket #49
+ L3Cache #49 (4096KB line=128)
+ L2Cache #49 (256KB line=128)
+ L1Cache #49 (32KB line=128)
+ Core #49 (phys=196)
+ PU #196 (phys=196)
+ PU #197 (phys=197)
+ PU #198 (phys=198)
+ PU #199 (phys=199)
+ Socket #50
+ L3Cache #50 (4096KB line=128)
+ L2Cache #50 (256KB line=128)
+ L1Cache #50 (32KB line=128)
+ Core #50 (phys=200)
+ PU #200 (phys=200)
+ PU #201 (phys=201)
+ PU #202 (phys=202)
+ PU #203 (phys=203)
+ Socket #51
+ L3Cache #51 (4096KB line=128)
+ L2Cache #51 (256KB line=128)
+ L1Cache #51 (32KB line=128)
+ Core #51 (phys=204)
+ PU #204 (phys=204)
+ PU #205 (phys=205)
+ PU #206 (phys=206)
+ PU #207 (phys=207)
+ Socket #52
+ L3Cache #52 (4096KB line=128)
+ L2Cache #52 (256KB line=128)
+ L1Cache #52 (32KB line=128)
+ Core #52 (phys=208)
+ PU #208 (phys=208)
+ PU #209 (phys=209)
+ PU #210 (phys=210)
+ PU #211 (phys=211)
+ Socket #53
+ L3Cache #53 (4096KB line=128)
+ L2Cache #53 (256KB line=128)
+ L1Cache #53 (32KB line=128)
+ Core #53 (phys=212)
+ PU #212 (phys=212)
+ PU #213 (phys=213)
+ PU #214 (phys=214)
+ PU #215 (phys=215)
+ Socket #54
+ L3Cache #54 (4096KB line=128)
+ L2Cache #54 (256KB line=128)
+ L1Cache #54 (32KB line=128)
+ Core #54 (phys=216)
+ PU #216 (phys=216)
+ PU #217 (phys=217)
+ PU #218 (phys=218)
+ PU #219 (phys=219)
+ Socket #55
+ L3Cache #55 (4096KB line=128)
+ L2Cache #55 (256KB line=128)
+ L1Cache #55 (32KB line=128)
+ Core #55 (phys=220)
+ PU #220 (phys=220)
+ PU #221 (phys=221)
+ PU #222 (phys=222)
+ PU #223 (phys=223)
+ NUMANode #7 (phys=13 local=56885248KB total=56885248KB)
+ Socket #56
+ L3Cache #56 (4096KB line=128)
+ L2Cache #56 (256KB line=128)
+ L1Cache #56 (32KB line=128)
+ Core #56 (phys=224)
+ PU #224 (phys=224)
+ PU #225 (phys=225)
+ PU #226 (phys=226)
+ PU #227 (phys=227)
+ Socket #57
+ L3Cache #57 (4096KB line=128)
+ L2Cache #57 (256KB line=128)
+ L1Cache #57 (32KB line=128)
+ Core #57 (phys=228)
+ PU #228 (phys=228)
+ PU #229 (phys=229)
+ PU #230 (phys=230)
+ PU #231 (phys=231)
+ Socket #58
+ L3Cache #58 (4096KB line=128)
+ L2Cache #58 (256KB line=128)
+ L1Cache #58 (32KB line=128)
+ Core #58 (phys=232)
+ PU #232 (phys=232)
+ PU #233 (phys=233)
+ PU #234 (phys=234)
+ PU #235 (phys=235)
+ Socket #59
+ L3Cache #59 (4096KB line=128)
+ L2Cache #59 (256KB line=128)
+ L1Cache #59 (32KB line=128)
+ Core #59 (phys=236)
+ PU #236 (phys=236)
+ PU #237 (phys=237)
+ PU #238 (phys=238)
+ PU #239 (phys=239)
+ Socket #60
+ L3Cache #60 (4096KB line=128)
+ L2Cache #60 (256KB line=128)
+ L1Cache #60 (32KB line=128)
+ Core #60 (phys=240)
+ PU #240 (phys=240)
+ PU #241 (phys=241)
+ PU #242 (phys=242)
+ PU #243 (phys=243)
+ Socket #61
+ L3Cache #61 (4096KB line=128)
+ L2Cache #61 (256KB line=128)
+ L1Cache #61 (32KB line=128)
+ Core #61 (phys=244)
+ PU #244 (phys=244)
+ PU #245 (phys=245)
+ PU #246 (phys=246)
+ PU #247 (phys=247)
+ Socket #62
+ L3Cache #62 (4096KB line=128)
+ L2Cache #62 (256KB line=128)
+ L1Cache #62 (32KB line=128)
+ Core #62 (phys=248)
+ PU #248 (phys=248)
+ PU #249 (phys=249)
+ PU #250 (phys=250)
+ PU #251 (phys=251)
+ Socket #63
+ L3Cache #63 (4096KB line=128)
+ L2Cache #63 (256KB line=128)
+ L1Cache #63 (32KB line=128)
+ Core #63 (phys=252)
+ PU #252 (phys=252)
+ PU #253 (phys=253)
+ PU #254 (phys=254)
+ PU #255 (phys=255)
+depth 0: 1 Machine (type #1)
+ depth 1: 4 Groups (type #7)
+ depth 2: 8 NUMANodes (type #2)
+ depth 3: 64 Sockets (type #3)
+ depth 4: 64 Caches (type #4)
+ depth 5: 64 Caches (type #4)
+ depth 6: 64 Caches (type #4)
+ depth 7: 64 Cores (type #5)
+ depth 8: 256 PUs (type #6)
+Topology not from this system
Added: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/256ppc-8n8s4t.tar.bz2
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/256ppc-8n8s4t.tar.bz2 (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/256ppc-8n8s4t.tar.bz2 2010-11-24 09:21:55 UTC (rev 7494)
@@ -0,0 +1,469 @@
+BZh91AY&SYùAAæÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿï×ÿÿ×ÿÿÿÿ÷ÿÿà£^z>À GÀ'x àê Ñ>âÁj
+ø;à @ íà ú ;½>gË}o ¶2&U8 "\ìÄ@ ° M ½! 'º.ÆÛE¶°° é§ìh^½ÛÛÛÓ £°d]ر£cä©!*DI©J ÐT>[ì!õ¸ ìnywlÛ3ØÝÛ:Æ =ö àÑB %IP*
+ÂA@¢ ¦úÒ))EÄ ±èsâD³aÍ 9Cß0`È `el`©²Mý5*TÚG¨4ÆÊyMè h @¨Ñ ÚOQÔ dÓ 4Ð4
+ hÉê=@ hAÿú¥S@úª@ ÔðI&òSÞªf)ýTÿÕIÍ&ÓLL#MÔõDÄÀ Ó hÐ40@ÀLF@@hdi¦0L 42&ýJ©O)ê56ÒÞ¦¦¦z= 44Âiè&SÄ4CS¦A Ú4Ðhhhi¦Sjb4ÓõC@Ð
+
+
+
+
+
+ @@ =RTÒOE§¨Éêi h ¥( ¡24jbiz'¨Ñ£jmOÔÔ=@É hm'M© hÐhSFÔå6¦ÔÓ&É ê hÓCi©êä$!ýF¦êzG©ùSM¨ô¦&jôÔôµÔÓÒyCõOSÔ~4å õ =@@Ò¨
+OSFGÐõ©ê õ0W¸ùñX+j+z\Ⲭ
+î
+ýcQ°WÖÁ&C}UiZZm¥¿úíØ®°Êý9-
+
+[ {²YIabh*X{ÂX{ê¬Sµ¶+2)úekF at I
+*AºPpDóJe#)JS)J16ØÆ))e33)4ÅJئµFÆ,cF£X¯¢imÒÚYk1¤¦R2¥2¤£Ò£ÉLÓ)I¤¤Å* iÙÈEôÛ]ÂÚÜÑb2Ee
+~ómmÕUåIiVYl©Yil´ÚVZ[-+,¶Y´¥¦ZKKo4\®sræÝ7,nMåÓdºî©]%¥.ºæjS®Ü(IJuuæÝ¥rÝæÅR×,\¹rérìº].Ë¥ÒìéÓ§]$DÝQî6û×·ð[kësZî#&dÙ*fɲT,ZíRkäëåîßë¡"]PË¡¨ÊXã%(\tXa²RÓ
+Õ-¯ÅÕJÃV)XÕÃ5{ÆíÅ$=ÄQEQEQEQE%QEQEQEQEQEQEQEQAEQE 333upUI2+UX+ Y%âaòñT#ê2&Úü_áU·jÛðêÛß?Í@ ïÅ~aø¯Ìøßáþ/ñßsó/Ãý|ßwíÿñ¼Ôp\'¼o|V»_Åñ;ä9KÞ¹§æ·Ý÷Q¿ùÿAÍó
à´<o½øÖãÂsy4ƤäM³8y4Ç}<ÑÌxç
+ÜÝ!ºñÏ ÁÒ)Ó9µ:Ãßyv'djvghv§lvçp~U;ùØî±xlcõ á+¬cºÖÝÝÝÝ H%
+/꾿õ¿2\×ë{üïæüõóu}ÖW½ÂçñîcçÏøÍíâ-üµ©59±KmøßÆoohϾµ&¤N~G}ÅüföÄZ3Y¥kF~FÛg8¾<^ÖGµ&¹ý%y¾Áä½³ä-Iªü%¼ßd³|¶bÐ|©5^úËâ÷Ù,ß%í´'jMUd÷³°x¿ÞÞ"ѵ&§ÑY~O}Íò^ÙAó6¤Õ}%Êo²Y¾KÛ1h>rÔ¯çY|Vû%ä½³ÛZUõ\ï°Nþ3{xFsjMcØ®}l/ã7·´g{Rkulþ{}³ß5Þ|E£>òÔUcã÷Ø3|¶bÐ{¤ÕIíí°x¿ÞÞ"ÑÖZSÖ²ù}öK7É{f-ëIª>c}ÅüföÄZ3óö¤Ôø{/Ço²Y¾KÛ1çy^ãzM]%{loོE£>öÔÒËæ·Ù,ß%í´²µ&©Ù|Þû%ä½³ÞÚUîl¾K}Íò^ÙAó¤Õ{6_;¾Éfù/lÅ ù«Rj½/Ño²Y¾KÛ1h?mjMW³eö#Æþ3{xF~.Ôì±ÆûïÛÄZ3;Esñ1FÙÎ'"oEjMr¸ï°fù/lÅ ú;Rj½/}¾Éfù/lÅ ö¶¤ÕIöËl/ã7·´gø¤ÔúõÍï²Y¾KÛ1h?jMWØ,¿/¾Éfù/lÅ ÷ö¤Õ{/ßd³|¶bÐ|Rj½ÅÎï²Y¾KÛ1h?jMW¸²üæû%ä½³×µ&ª²}ÊvñÛÄZ3ýKRj}nËô{ìoöÌ~y_ÙÞWÕËo³eò¯lÅ û½©5^Å÷Ø<_ÆolÅ£ojMI¦~ÛøÍíâ-þí©5>2Ëç·Ù,ß%í´àµ&«Ù²ùýöK7É{f-ÔZUðV_3¾Éfù/lÅ õIªãm°x¿ÞÞ"ÑíI©ìÙ|öû%ä½³êmIª?g¾Áâþ3{b-ÿU©5>µeî÷Ù,ß%í·¹ñô¦8ÿÖ½ÇMuîÛï¶ùêöÌZúZUM¾Éfù/lÅ úí©5Uã§`ñ½¼E£?øµ&§º²úöK7É{f-þIªû¥î÷Ù,ß%í´¸µ&«ìV_«ßd³|¶bXæ-JÒ±u{¢Mʯ»¤äjô)45~'/Wàjj÷T½]½_I³«ï 7ʽ:M^&ίNq«ð 6UugWW'-W&ʯ
"M^D^D¾')W«Ñ$ë*ôi9
+½N>¯Fv«Ñ¤æ*êÎ:¯"O)W&¯"M
^Dj¼6yqµvqz4]^è_W&¾¯"Mµ^Dê¾&m^'««8ª¼äÚ¼äM^rN&¯9'W«ÎIæ*ôé8z»5zTʽ*M]_{I««Ò¤ÕUéRy*½*JÑpÕ"¯¥'ñ¸eþîaúr}¾§'Ûaø$ù¸eý¡?
Ãúðv?ÒÁéû|þ?í ôþ²ÿÚü\ÿ'ÝáòÉðáòÉðáòÉðáòÉðáòÉû\2þÔÿwóÁêüðGüX?ÿxóÁñ@ù«óÁêÁýÿVåk÷°¿&#ýÊÿ@?þ(#ý þPGúü ôùAèò?Ðåõ!~X1þvÿ@?þ(#ý üAèò?Ðå·ùà÷<þîç?ÝüðGû¨?ÿtóÁéðáïáÃ/åáÃ/åáÃ/åáÃ/åáÃ/í ë_ÙáÃ/øB|2þ×ï~ÏóØTüóZÏ¿ÑRL˲IlKmIÉ$$KmIm°I-¶ %¶Á$É$Û`[lKmIm°I-¿¨&FÁ$¶Ø$ÛÛ`rI$¶Ø$ÛÛ`[lKmIH &I $Û$KoÿD#`[lNI $ýè=ïz{ÞÞ÷ ÷½è=ïz m°I2I$¶Ø$$[ªdlKmIm°I<É$$KmIH &I $Û<õæû"äTTQh¢(±å(¯öÖå^»jýËVߨü¥ô$¯Ê½áRj> ¢¹{ܰ¿Bûkj ^Ö,ýbä¨è¾Ç~ nƾ`ï*«æWÍ{rùU-~±uäÕÝ£¨»@_ / ¾¥ã
+ãÛRY»@ú-4¨ºÂ¾]j'£¦IG£¦½4ªp®*Ò
+ì
+Ø¢sîÑDôtÒôtÐ<YÜ×Z¤n©qê
+ö{vÀ@yîÝ¢\ò®À¿v7ò®À_¦+òÀZú¼¯´Wv"·öwwöwn1XÄÕIQ[ÓS|5øûãï¾UV1¼Nø+ÊÔ5¨¾ý½²çÁ¸®¼ºÊëçʺ¯G'¾e|'+}
åü7?}
çÞ®þ%ü[èoã_cz*«Æ*¯ÌÆyW©:3=©åó<¯Xgîø»ùÌ_'&ý}ü«ùwÉße2öô/èßMJû;èïéßÔ¾ôÕU}Wi}Eýío©¿µnúæï¶½ýËû·íoï_¢½µö÷÷ï«¿Ã}Äþê~Þ×?ÄöOÆ?Û?e?q?8
+"?÷U¨øuUTWü4ÐWütÒ+î4Òÿ-4~>Flü=>6Z¨þæ¿u-ü*ÿÞ~Tü9¡A?ø¯þe¿B¿ú?6ªÿtÐ+àé «ítÒPGÿ´Ð¢òð©4¤þ¶3??`+l)ü1_d+J+úµ,(5b³$Â`f0UUTLeT³%ÌK/}ì4Ø¥²ÉUJË2TË%[2¦Ze£LÔÍfY3kk[S52Ó5)fYe³,Ë2Ûe,¥fYe³,Ë2Ùd¢dPÌ¥J2Ä«,ÙÖÂU³,ͪÙ2µªm]«¶ÛmJRm¶ÕÚ´Û÷¿à|ïýÿñ¼}7Ó}/Ñúzzzzzzzzzzzzz}?§§§§§§Óúzzzz|O§§§§§§§§§§§§«íÞÿ/öÿ«êú_¤õ}Ðz¾3ü^¯W«Õ÷¯W«Õêûï«Õêï¾ûï¾ûï¿wîûï¾ûï¾ûï¾ûï¾ûï¾ûï¾ûï¾ûï¾ûï¾ûï¾ûï¾ûï¾ûï¾ûï¾ûï¾ûï¾ûï¾ûï¾ûï¾ûï¾ûï¾ûï¾ûï¾ûï¾ûï¾ûï¾ûï¾ûï¾ûï¾ûï¾ûï¾ûï½¶¥6¦Û÷À,EþúOÅûÿÅûû¿ÀÞÿï9Ë»çIÇhµ·-mÛ©[E$Ѻío30ZíÛ̶ítn¶íKÝ22˳8æÒYÌsMÜEÂöEKÊeÙsiK,ÁKÊeÙÅtÝ.éY¼¦]Ç6²Ì¼¦]L¥í22˳8æÒYÌsMQ¶Ä¹¸Ý¹q±·7ÙºØÛÇtmÂF[«r sqm¹¸ØÕpe» ÙËkvêU»uºo3RÚ-vê$ÜKv·©[u«ynÑ«wÖöÄ
+Ð^/tÁÂÐe0t( 4`ºh)¤A
+`é`9AÒ áh3¬ÁpA ëÐA4ÁÒ Í0tAÒ Ì0iVlÝÝ»²I6ÛwuÙ#¶±»»¹mÛwww.èÝ»$¹ÑE¶ÜÌÌËmÛ$îèÝÝ©(ntËýWsz^ôÎìÎ9½)e)yLÇ4Ýq\ubQl
+¹º3
+¥tÜY,âÝÀµ
píÖ0*tIa¦æn«¦sF@ÁB¤ít)¼Úˤëxròsa£ ÀÆmJ+FºftÊ,Ê^S.ÌãJYf
+^S.̦n=ÜÝÑ»»$m·w][tnîîfffÛE¶ÝÝÝ˺7nÉ.e¶m¹Ú-¶I%ÝÑ»»máwL¢Ì¥å2ìÎ9´¥`¥å3ÓB·rîÝÙ$m»ºìÛ£wws336Ú-¶îîî]Ñ»vIs-´[mÌÌ̶Ñm²I.îÝÛEáwL¢Ì¥å2ìÎ9´¥`¥å3ÓMnîÝ»wfBrîݺª¶Ý»víÛ·vdʵ[nÝ»vîÂreÝ»v'e»víÛ·nvíÛ·vdË»wfL»¤Ý»³&§³nÝ»víۤݻvíØíÛ·nݺMÛ·nª·nÝÙ);·nݺðè-9né×-.ãÒÆfæÓs(Ì2fSî4åË4L9rSF]ÝÊ3)w.îé×.êº&K§-Ý:ÄÌØòÒÆȩ)»wwnÝ»³!9wnÝU[nÝ»víÛ»2eZ·nÝ»wa92îÝ»²Ý»víÛ·I»víÛ#w%ÌÂ÷%Ìˬe»¹ºÆTÝß4>åÜ̺ÆvîæfëÙÝÖ2¤N±îëÃ&ÍÝc;wuàu%¹ºÆ^îæfë]c-ÝÌÍ×I{É.Jeʲ%FnãrIµÝËr3n7%9r:si¹V¬Ù÷.ër幡$;rSd̬ÍÉ.JeÌys.D¸ÜS+¸î;ëÚ¶=ÄÜw׵ͻã¸î;ã¹s¸¬wåÇ,Úî;ã¸î;'qî;ãOl¯qÜwÆuæ×q$î;ã¸îZU¼OeoS¤Ë±\êvVõ-S¤Ù¶6¤N˱Rr·©Ù[ÔÅlêÖíÙ±±pŶn¶6æãcqÝpF[«r sqmî¶6æãcrèÛ3cnÝÙ.é7nìÉ©ìÛ·nÝ»vé7nݺîâ]Û·nÝ»t·nÝU[nÝ»³&RwnÝ»wsayL¢Ì¥å2ìÎ9´¥`¥å2ìÊaÁ-lcäW+r,',O%nE[Y²,$[RH³,O ¹enIfȳ+rW·éyL»09´¥e/)fS2黥íÄôçKÞôvgKïnvÍã¥,³/)fS*M¥Ý22˳8æÒYÌsM.Ñ_2Kºee/)fqÍ¥,³/)fS-u
å22˳f^·³KÎve3&¥îEKÊeÙsiK,ÁKÊeÙÈ
+øÓ,Îc0ÖÎB3
+pã£\8Æa¢H0eað°è¼0eÃÃ(¼<0eå(¼<0bÑ(lÉeÃfLZ\/tËË2˳8æÒYÌsMÈ2áº]¦PlÊ\¦]Ç6²Ì¼¦chR;5ÌhÖ2fQ¬Éh®ôlд!FZÑf4e¡
+2а
4$
t!FZ£-SBHWB)e¡2àI
+z£-Q
)¡$+¡
+2Ð
hXBÑ7B3hXBBº©p)ÂÐÐ
hF¸Ñ³B2а
4$
t!FZ.סI×èÞô!Ñ
)¡$+¡
+2Ð
hXB,!M !]Q(ËBÂÐÛvíÛ»2víÕU¶íÛ·nÝ»³&UªÛvíÛ·v.íÛ±;-Û·nÝ»t·nÝ»³&]Û»2eÝ&íÝ5=víÛ·nÝ&íÛ·nÄì·nÝ»víÒnÝ»uUm»vîÌIÝ»víÝÌH½É£[#2Y£[æa³%5Ìi{fa³!(È]Ó(³)yL»3m)e)yL»2ÝÓawL¢Ì¥å2ìÎ9´¥`¥å2ìÊdÌÓ!{¦QfRòvgÚRË0Ròve1íy
ÒóL¢Ì¥å2ìÎ9´¥`¥å2ìÊgx88\X^ÚgEAyL»3m)e)yL»2»tnîÉ$ÛmÝ×dÝ»»¶Ñm·wwrîÛ²Km¢Ûnffe¶mIwtnî×Ð ç9Î ppr7Òâ¬ÁXI1Ã\8P(hÙÚoR¤^NR
+AY"Ö4Y4dFÛëU&d¤ÌníUÍok,dZÍZ¾ª×î+M$ÌRDD´DDE]xDdHF*F£RZed¤É"bÛ±µ´kFµ]/ªîºdÒY6ÆÉ³*f³e*eI¬[V¾mkz·$Ic]Ýn»µÓ1c[¨ÛE¼Ým-f¦É²jKIµE´6ÒÊ£L³6YeM5*lÔ©©SfYEbµb£bÆÅE¶«kmF4dFLÄ"±£E%3&I#
+«k¸Õªô;á$$Ì'.w].s'7LM$I®Þ
äbIIÌÌW
ªék¥)R¥)J»¥º«Ì$$Äλ»»¸ºÏuÝ×wDFÖò2S)))µ(Å*µì¥Y·»«»»»6×fIwN]ÝÝwuÊ ;&dLKºîîîVYhÔQ¬bHeik_VM´Ú¹¥Öëk´²Ú첬ËiV[×G65Ý[»®î»q×]ݶ¥Q1 Åc!%Oïôo±¤!¨"SB
+R
+|õWϧ§ôþs$I$Ã$H¤RI$1$2G$Ù³cfÍÀPñEd^vu*YB}Î$Sí`Pºøp¯@\yRcF2¥zW"¥Ò7}ú¸áNµ-¸®¹2¥¦Ecã6ð,Þ+§vfc 7üÞÑ\Xn+W
+©»ð£^ -ßR>ÐEµÈ²cÀF1QäÿÔDaÎ p¸$ÜqÃV¶Ø¥b®ÆEiPyú۹ܣoî·øìyY8<h_ø@ {ßsõ`¾L+ÜaGòÀ2ØKD»í}ßòñ\Ö³ ×jtÙ§Ä|µ)JR¤úô¯? ëߨöÿùÅqcÆ8Æ#Æ1_ÄãÆ1¾1[Æ1lcÆøÆ18Æ1_ÄcÆ11ãÆ1scÆ1cbcÆ1Î+cÆ1Æ1Æ1bøÆ'Æ1ñbØÆ1cÆ7Æ1ãcÆ7Æ1cÆ-c߯'Æ1ãcÆ1Æ1\cÆ;ï®Îûï¾ûï¾û¾ <þã÷¯OòUõßÏ ï릫óhr¥ÐÀ$¹ ¢-¶Ð µGÓ*6 »¿ìþÌêÿkÚ|i«Ê+Ðç
+ÐW7F¢µª[YO·ûm®>×i><\|uú¥~»¯wuµº÷7]M×QuÓÝow^ÓWñºé®½×²éUýn½
×®ºõ¾]ϪWîºèîº+¯Ouéºw7\ý×=uÎÝo×Zû®ë·¼÷ZÛ'ëãWªý.ùÀ¶öV©µu[m¤Vå¶Ùh£¬q°TE
+i¡G=ÊÇAG%·ûxzý¿ælâPNúá`"SM".wY"
+[k'Óì¶Z4´´j£¡¸b¢þ±O÷aPDõ«~E|,©÷ú¸¾ÌÑÖ½íÈfe3L³&YÆ1_n §ÓBJ2CîT}F~h°
+âªwö_¥ý_é¿¿ÕýÆÏ3,Þê³p càÛ½z2¼ifï¹
+wÁ>xÕÙÔÏË¢tgª´<96`»£Ç ]SÇy»5«¹|Ï$[ÝÊúhÇçN±
+ª°;Ol=Ìíîçv$ cÌ=òfµºF½V÷0© sóÒQqÔ Cºë3ó+²ûÞñ<»Ê±ÏE·Îø\9{åo¾°<Ñ È6vyàÎîn¾¥¾WËÞÓß;Ù:ݪÇ⻢xf7åö½ð<xù¾xò>ùã]j#wjÏ2±6oãÞèuwʨÏwÉ1x°½ó§µÏ-y3°±9gú´å>.^¼ÃáÏ3Îãeobðõùfí=ñÁå()
ï§;æÀ|CWVêxðftà-:r²· ]XókíU<Æâó«ñæy;:.xzâèÞÁ
b<ÌÚûäïE:Øó«ÃÇâ ¡sÃÄ@ðæíB]ë BÞ¸ÕÈÅ ³VöøÄW£bðÒå=H> LòtÀÏ4$ÇÂO+t
+C L²»â>gúÛLvøÇwgoWW¹; dwXò+äÔ5 ÈP½Õd;©ºÝqÜs¡Pw5:
dÍ7éoݧ4Rê | Ûõ?Û¿
=4äåù?3êýU¸g±¬¾ÍCâpÏkã«áôtÂ(ó<ñÂÎßLyÓíOø_tþ¸Ñ;á(z./³#¤|vìÓ1 "A|¬ïXÒcܸä¨T*I~¼ó Hu2ùÕù.¡¸Ô;
MÏ3^Ö½<IßÄ wA4z3ËðÏe
+QnC¸¬T/½Ñ£~uÐfîP_qgkyFwsÍî÷!*_;<½*öØÒc0|¾6<S>ùLX:Bò{ÛJ+ºWSÎù;{i^ÜÜ><Yäìïrl;|Ííð¢F¹äêÅ|o õðIçâk@ÀHÚ#ÙáôÓ#râHwU\7.eQéóYâDÈ)ÕP'*=xïÓU é*yUSÕÐêýjj«¸$Âíäʰ ¾±<·ÎNùEî©^h[÷Dn5&©*pÈ%À;ªD:ÊÔ¨dê]ÉMFãÈq<Ï xxÝÔGÄç¾ §£×[póNèÔIGÙ7²Cpó!È>¹¸/é%ÄzªêÉW(+«±¨ú9~kåz0>ÁàGþÊÁÜ}¹=xÞ"»ñ~8½g~g}¥a_)ûòÍ8Vz
+=%_äÌ_È\óÛwëªnCÒëÒyöWBí" Ë ñÏoe^^T¨(ßÕ {ÿx+¨çµ
G>-ËHW¶
¢¥>GmRò5xºÝjÔ+[[DêYm -4Òñ¾~àüþøqE{øç c 5Ë
£ <P
+TÍ]>¶
+'PÇ[Ûeüà ½<~B¢ÛģѱJÅ+1·q\VtW(ñ]êB¥
·ßշʶµøÊÛu¿³Ab4ÔF@DTÐÒ± ÓQ ASCHCTl!` P X
+ER¨²i,¡K2Æ¥AdFËDD$E¥B£`Ù 2L Àl*EIe
+Y4U,Ab4ÔF DTÐÒÕÈX À` À`ÑTª,K(RÌY05QKQò¶
+î|:Ñùõ.,%XaîEoÈ+J+Í©t(+<a\rÔ¹j[
j+ð*[·öµ-·Tµmý®ÛYmjQ$%²l¤ÔlXªUJÖû6¬¥}åµnÛhØÆÑEb¢ÅU[ b¦Ê)0±hh´±meµ©h¤Éif)²T©6KJªê¶íµkåVß=µ¾vûÔF#MDdb¦
1 FÈB>5¢Qõ/QRéí;VWdðjª¿/ü¢¼ónîànßyã»»ÆÛtê_§m û.fÏØwtnîîÝïìÛZ¶lMÑHHþõìþdØý4LÌ3333óú5aw+ãV|_|ø½õ×Èü@÷¤}Þîànß_Ü=Üq÷½ïW{»¸·¼wpóe½ï{åZÕ«AOæKó6Å úlÌwFîîèÝß?5¶ßÍmØ$£3 $üßü̦ $I$üØ32 #l¯ =H>$$.k%$O9Æ[Þ÷½^ îîànÞñÝÃÎq÷½ëå[V¶¯ø ñÝÜ
+ÛãÇw9Æ[Þ÷½^ îîànÍ$²'q¶ßÑúKé¶6H'á3ëwFîîèÝÞý[mú¶lMÑHHý}gé6? A$O¬¶WÐÉ$HO5$²'q¶ßÑúKé¶6H'á3ëwFîîèÝÞý[mú¶lMÑHHý}gé6>¤II>°fdFÙ_@{$|I"I<\ÖJHÒ%Â8Ûoèý%ôÛ$ðÌÁõ»£wwtnï~¶ý[E¶ &èÌÈ$I$~¾³ôRA$I$X32 #l¯ =H>$$.oîs·½ïz¼ÝÝÀݽã»ã-ï{ÖÚµµz¼ÜDÅÆÂHÐEAm·ôOÒ /¥²EøÌÆQs>·1¸ñõîïÓL}niÜäH QGëèû#é¦ú#MH¾`aFO»¯¸ëÝÜ
+Ûçã»ã-ï{Þ¯÷wp7oxîáç8Ë{Þ÷«Á=ÝÜ
+ÛÞ;¸yÎ2Þ÷½êðOwwv÷îs·½ï{î¾ïwÝm øf`ÌúÝÑ»»º7w¿VÛ~¢Ûtfd$?_GÙúM© A$O¬¶WÐÉ$HO5$²'q¶ßÑúKé¶6H'á3ëwFîîèÝÞý[mú¶lMÑHHý}gé6>¤
II>°fdFÙ_@{$|I"I<\ÖJHÊ(ÆÛGé/¦ØÙ fÏÝ»»£w{õm·êÚ-°I7FfA"I#õô}¤Øú $I$úÁIe}ì^îànß?Ü=Üq÷½ïW{»¸·¼wpóe½ï{½¡¸FíÞw\=Üq÷½ïW{»¸·¼wp÷qÆ[Þ÷¾ú¾+à'Çwp7oÜ=Üq÷½ïW{»¸·¼wp÷qÆ[Þ÷½^ îîànÞñÝÃÝÇo{Þõx'»»»{Çw9Æ[Þ÷½^ îîànÞñÝÃÎq÷½ïW{»¸·¼wpóe½ï{ÕàîîíïÜ=Üq÷½ïW{»¸·¼wp÷qÆ[Þ÷½^ îîànÞñÝÃÝÇo{Þõx'»»»$´Dð6Ûû?i}¶ÆÉúÌÁ÷»£wwtnï~í¶ýÛE¶ &èÌÈ$I$~þϳörA$I$x32 #l¯¿°>B}½ÝÀݾ;¸yÎ2Þ÷½êðOwwv÷îs·½ïz¼ÝÝÀݽã»ã-ï{Þ¯÷wp7oxîáç8Ë{Þ÷«Á=ÝÜ
+ÛÞ;¸{¸ã-ï{Þ¯÷wp7oxîáîã·½ïz¼ÝÝÀݽã»ã-ï{Þ¯÷wp7oxîáîã·½ïz¼ÝÝÀݽã»ã-ï{Þ¯÷wp7oxîáîã·½ïz¼ÝÝÀݽ㻻2Þ÷½êðOwwv÷îs·½ïz¼ÝÝÀݽ㻻2Þ÷½êðOwwv÷îî8Ë{Þ÷«Á=ÝÜ
+ÛÞ;¸{¸ã-ï{Þ¯÷wp7oxRD(ÆÛgí/¶ÞÉ>¤rFß~äûÏßÙö~ÓrFÚ_hýs`|H>HO+%$Iiám·ö~Òm³ªH~Öfaû[»ºîîtýÛjûVÛ¨äxfäF Gïìû#í6~Ô$HûÈ6WÜûçÉ$é $.6JHÊ(ÆÛgí/¶ØÙ Y3>÷tnîîÝïݶ߻h¶Á$Ý$ßÙö~ÓcîH$I$ïfA$m÷öÉ$é$$ño§îî8Ë{Þ÷àjµ«â¾D$ÅÈÉIYEÂ8Ûoñ?_llO¼ÌîÝÝÑ»½üm¶þ6ÑmIº32 IÇñ>ÏâI I'ã3 ãÞó¾í}À^îànß?Ü=Üq÷½ïW{»¸·¼wpóe½ï{ïß
ð㻸·¼wpóe¼Ûgí/¶ØÙ Y3>÷tnîîÝïݶ߻h¶Á$Ý$ßÙö~ÓcîH$I$ïfA$mô²IÄ$ÅÍd¥ÃÝÇo{Þõx'»»»{Çw9Æ[Þ÷½^ îîànÞñÝĹR¤`ÝÝßÄUA÷þ|?ÑçÒü?¢øø|_çáàú/OÖGÚÂáõ ÓáýASIHÝêRɰ§ 7,ÀÕÁ¤k Jh!ÄI$q$?'¥ Id#³n úZ¹I ZnÌKI$-q6 I"Ø Â¡B ¡Ù0MI$mîæLÂÈÀ41yL(4,ÆjââBiÃJG7ÄÓrk9ªÛné<5HÁ
+¸³B2¦î@éÍbS3lº·r·»&
+m-Û7L[¹ Â^Å¢ºÔFQnh&RmRIVÃmdCAt-ïzhYzV)ܪCTIÆLã©$ÅE
+s Dâ±R ÁÁ ¸"Ó@$#´LI%îé&]×#sVàÔ$'uÒÓµÆÑn]ÜÍW[µÈI¤M*¿'ç>·ºç^<}Æï®ç}÷U]÷ß~ *zÑÝNº£ÎUË×^|]ãqPqÃA+iãAÎä½ëÅÍ$=õú¾@P}Ð H<ÙK!sqj#! Bà!Ȩõ㪴¨÷ªÈháß]w¾úî²¹;È)@@_§bcó¾ìM~ÇÇãû{î¦Û.5=>5ðß ðßò]$¦fb!$I %33 $I S31I$ILÌÄBI$I%33 $I ILÌÚfRI$ ILÌÄBI$I%33 $I$ÌÌD$I$ $ÌÌD$I$ IDBI$I(S1 $ILÌÄFI$ S31I$ $ÌÌD$I$ ÅRLÌFÛDP§ÁÍDI¤IÈ{ø%±¢8 ÛZÛçòúgËå}Ëç lhJ¤vÕÚ{º}å
î,È^¿ü_ûûò{ÿLj·ð7þfbRJÆ"IÖYoá7äñªßêWêlʯ¾=ïT®kûv`_ÝùWølÀ¸®&a.+2-ñìÈ_+ç³!n·3!vnÍu¬À·ÛìÀ¹.`]ï¥ÚÉ>>R~ÆéfIÓ#É¥¿ß~+_#»HI$j° 3$2RI%¤ÙKLÖe²Â©dRÌZUm¦Ó5£j-µ Tj+U¯õØQ¡bµú6UfSJYfÊT¦ÆÉ¨±±¶6K&ifY44m6·áXÖÂÜ1FfdÙ,ÊeIS6Js¨²RP`ÝÉ2DÒDQcb£k4RfI"*hÄI$"Íÿ©&fÉRZe¤¬[nîÚå¢ÑbÅ®®
+ë\¨µµøoÀÜÛLªüJ06¦å¹©(
+-¥oÄ¢w\rª[Öø dQEmLÆ¥Ù¾úÌ
Û¼2Á³!z~+ï®ÅaJîkkfÓf¯b=fY®M£dÙ&Òb·r#IfY4f"`ׯu¬À¿¿û^êÝ»öd/Gü^WÜ*òá%ff ù¯ÉúJWY¬¥E´ù2ëWwm¦À
+ð~Ǹ&I$I$I(I&°*Ïð ºI$I$I$ájå4¯]ecÑã+æhÍÒºÍC
+:WN::WXcç)D:5}g5KV=k(!I$#(XyÁ
+Íæ&´É$I2I$I4¸sjø ìti\ÅÂÕ°DVÀ²wÍ+¥EÀ4Mb¸ ¢f!®"(Ø0ÅqAVжյt=»µ[KA^hÃÈI$LHjqhd]WÏåñó»ß[íp |VÙ4R¬BR°Z%+¢¬tZ´ÊW©B
+] Ez7YuU˸i6q½UI$RQµ«spOà\/5 I$I ;çZù+ÞÝm4ÛæÚë&¢"%Å)cDBP<áKibàA`¢4$F½À^ëÊ
Áyzg)wrs\ÙÙ¥lÔ½nFîA¶Ú¹]ûõS0˹BQR¥=º+Zª®XÙIÙuAnÌgzÍKËs5ÖÆãÒI$I$IôùôÖ³svÚRY,mä®DÂãA2éÃnÑ©TÈ/(àRïCï4ô¡Y4|!ñÈaXBì*
+éDB¹,Ä ¨;m¾oww×çö_?§Ïãè ?ô½|»Ï|¾]|þ@ öw *I$$H¯Ìôiù¿oa߯PñÊ©=3Î÷W-nDèL´XRf¡ºN,qÓ,W@È/XxBI$q%Úi²AE°ØÆe½N¢yIHAª£$ç0u ÔV6ÛhA#A$Al CÇNÔI$:3Èué
+Ë»SljA$Ã'á¹é¥KäMÉh»[m°Ûa;ZnLuiqB®èLâº4µnäÄ^KjܵîÍÄkS{9¯bÒ`ÌonÒ3Ò]77î"P¶;dgRI*Ûm$ÃmAʶ°f°æÚõHp)±æâH¤#RD¤s[¹ëzk^TwÃ:ñ×ý|xðxñ⪼xñãÇWÚ ôó}øeåy=+ru~^§}_¡zñáöLº
+Ñ\
ÝØ0ð(ò¸kaú>yBÎ">~ÛÔ~ÇRøï¬;óàjO_ÛÇ¿¸&¹Ýî7=Dx ùêîï$¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶i¶Ûm¶Ûm¶Ûns¾"HðøÀä?A`|ÌÆØ§âøß]Õzú^xÛûÿQUAUUUTÀª V0*ª`¡]Vnï÷Ë]Y¨`·òÅõfeY.è^ =tjXW,êåöv<¬6×>{ê°ñ ¯_:2
+/@NÛ =¢yÂëÏpº:óãI$I$BI$¹ß]à½EÔÖ¨Zr®
hÓJi¢¹á%뢴°f+Q.
¢¨Z
+¡yÕxõós½Hkâ-æt]o8ÆÀ\æhD(7z½á{9ëåôù }-òùu·×âíô_+T.\(È^P´'U²Ý[ææn
ÐëEèÕ½¦ÍÞÅÐéÖµ4.J» DðõÏÇU7SÆÍì×h½ïC^
)¢H/K4nôI$dHI$I£G{å¡Ei½j`¹Þ¶ÙwÍy6l»Ñ½Y²h»Ö
ë6hÎq×4-ê!CLÞ[fnlÖ¨³F¶-ܱeP¾äO.·×kÆ~MkË`& ¹Åè8J<æg7y¿zø}ÝnyY@
+ cª©vI âKxG|cÃÈ `0ßÝp8ð4Í (ß¿5IÉTE¦Yá 3:²îê£=k]ù£Á8<d¹ÍnáP¬(®'à¿Rùø @>»çúm[|¯ç>W˳ÇJ5ZÕ(ã
f´iÑaf´hÀ<Ýó¶ÍAÔºþ7ny<a#
ï(cp)F§£3Ôéõ'|ü<ÂI$I$H$Kèèw°@Ãaù'Ùþ@ç ëgÖàpûçßLyÏÉ0ÆÌbrâc5,I2 Ì9ÁÌõC¥ßÇ<#ãÔçª@ ËîWÇ|ý½Ý»½íz÷«îõx½j´¡¤39ãzCF°ªêЯß1oxl_|ÇÞ $Iq$ ¬`UU.ÁC~Vlª¼¶UÈÛq³ÂÒ% ãã>6©S<Ïáø£Ir ô$bA$
+ÁÀ=ÒI$ Û BI$Ûtw¨sÅëδOCdÊÖ³¢Hµp¢K[[O%CkÌx
]t@^ëÆI©¤Ñå'ANE0Ë¥KI$K¤#RDµLÚKR
+¶AHÔZÔA!¹ ÅÁ buµ6ÞI¸QmñÂ$ÍGM5)s[m°Ü£I5â;nWCÚiF3LѸlYB³ue¹6ó%¸ÅBªé#xDi×´tãÝ©§c#{FèÊI$6Ûm¶l#¹HÌÃé¸uaÒ63pN¤Cp sH¹o¿ÃÎø<óÏ߯^½-ivo]éÞ·ofÒBùóÁÊ<ñKÊ©%éC¯"«.0):!ÔÄ¿IG==Ùé磢x}zÎè(ëòzU"=vYEJÝò/Ú <s½]ÝݶÛm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶ÛM´Ûm¶Ûm¶Ûm¶}YÁël1.>zd#oß1¬Vfnm;²fn{~Z
P¨KU@%UUTÕSåMrÕÈ+qOÅa¾ m@çZÄqÌÄñ ÒÖ¹°²µµ+»áÍ »\w»Ûµ$6³{½ÈU\öÑZɽCG&_`&ùKÂýèY|EO#òXI$I$II|Ámç93cW83Snà¬&·iµBca®+9ÊCh,3{®³â¥Å®¸r¯{¤¸hªÃãuÕU'UçGïl`hηáfÐ Óáòz¾Ïï¯À }>ÇÙö}>z¶sDѬ xEID×Ú0¤ÙwlØ,"02;7ëC
Ùbsfµ1PËÌD@A F at F÷QPæÇ¢Æ<+ì`ç
¨R¾Âü×å8I$I$Þ¾¿gÓì¾7ÑImRÖÐb" º7½î°6¨Æ `¤# (sÖÎuÅ@È ªó9ÖиkW: n÷½õ{ Y e êï\³B`"Æ"Æ`¤b ¯7½ìd3*©µïgKtð½arC¨LÊ~¤åò %ñS£~}u $K XÀªª]7
+Ã73.ª±YU)[»Ì33W¨!£ZÓ
+H H¢ã{w¤@Ö´kY¥V4ëZ>æ {Ý-À<sÂÝ*ÉR"'Âýu%'Þø¯ºI$I$I$IÂös¼
+ûð·s+B!A ¼ÀOѧd½á½, Ðïnæ¶#´ÚÖôh4&»½W·V*±®ÝvkY^m¶ëokÍ^Vºm_ÍeÊê¶Û¿àÛöìÌfæ ÜÙÓýôÆðíôÉdÈÂÿÇwßPÁëSÒ@Õ§Ù÷Ü`oÒ½öÉdÌåOïÅóÔ(øÔÀô5iù?=Æü«ßlA<À~UBæ)Å3xSÄE+Ä^ª«æº9&µÒµÛzUEBæ)Å3xSÄE+Ä^ª«æ½+~35¬O >Ô÷>:½õ
+=j`zH´û>û
+oÃ%O >Ô÷>:½õ
+=j`zH´û>û¨ãkY+]·¥TYXÄ.bS7¥<DR¼Eꪻ
+ùW¾Ù,yü©ó=ø¾z
«ÕUs¼ÒQÇ$Ö³ZV»oJ¨²±\Å8¦oJx¥xÕUs¼ÒQÇ$Ö³ZV»oJ¨²±\Å8¦oIVóÜ`h;~,yö§¹ñÕï¨QëSÒ@Õ§Ù÷Ü`oʽöÉdÌåOïÅóÔ(øÔÀô5iù?=Æü«ßlA<À~UBæ)Å3xSÄE+Ä^ª«æº9&µÒµÛzUEBæ)Å3xSÄE+Ä^ª«æº9&µÒµÛzUEBæ)Å3xSÄE+Ä^ª«æº9&µÒµÛzUEºæ)½3xSÄE+Ä^ª«æÝFü2YòíOsã«ßP£Ö¦¤«O³ï¸Àß{íÈ'Ê3ßç¨Qñ©é j½UW;Í)urMk5¥k¶ôª+
ÌSfñ4§@Õ§äü÷FßK @}©î|u{êzÔÀô5iö}÷ßK @}©î|u{êzÔÀô5iö}÷ò¯}²YóùSæ{ñ|õ
+>50=$
+Z~OÏq¿*÷Û%O0ec¹qLÞ&ñJñªªçy¥.£If´vÞQec¹qLÞ&ñJñªªçy¥.£If´vÞQec¹qLÞ&ñJñªªçy¥.£If´vÞQec¹qLÞ&ñJñªªçy¥4¿A<ûSÜøê÷Ô(õ©é jÓìûî04¿A<ûSÜøê÷Ô(õ©é j½Jï4¥ÔqÉ5¬Ö®ÛÒª,¬b1N)ÄÒ!VóÜ`h;~,yö§¹ñÕï¨QëTÒ")^"õ*s¼ÒQÇ$Ö³ZV»oJ¨²\Å7¦oJx¥xÕUs¼ÒQÇ$Ö³ZV»oJ¨²±
óÔ(øÔÀô5iù?=Æü«ßlA<À~Tùü_=BLIVóÜ`h;~,yö§¹ñÕï¨QëSÒ@Õ§Ù÷Ü`oʽöÉu¥k¶ôª+
ÌSfñ4§W½UW;Í)urMk5¥k¶ôª+
ÌSfñ4§W½UW;Í)urMk5¥k¶ôª+
ÌSfñ4§W½UWq¿*÷Û%O0>g¿ÏP£ãSÒ@Õ§äü÷FßK @}©î|u{êzÔÀô¢â/R§;Í)urMk5¥k¶ôª+
ÌSfñ4§W½UW;Í)urMk5¥k¶ôª+
ÌRLIVóÜ`h;~,yö§¹ñÕï¨QëSÒ@Õ§Ù÷Ü`oʽöÉdÌåOïÅóÔ(øÔÀô5iù?=Æ·áÈ'j{^ú
µ0=$
+Z}}Æü«ßlZV»oJ¨²\Å7¦oJx¥xÕUs¼ÒQÇ$Ö³ZV»oJ¨²±\Å8¦oJx¥xÕUs¼ÒQÇ$Ö³ZV»oJ¨²±\Å8¦oJx¥xÕUwò¯}²YóùSæ{ñ|õ
+>50=$
+Wªªçy¥.£
á-ç§4
+ÒkÍBÓzï|Mk5¥O >õ=u|õ
+>u0=$
+Z}}Æ·áÈ'j{^ú
µ0=$
+Z}}Æü®9&µÒµÛzUEBæ)Å3xSÄE+Ä^ª«ä
+oÃ%O >Ô÷>:½õ
+=j`zH´û>û
+oÃ%O >Ô÷>:½õ
+=j`zH"õ*s¼ÒQÇ$Ö³ZV»oJ¨²±\Å8¦oJzH´üã~xH!ÿ©]5ãÄȰN<@LãÄȰN61¨' &EqâdX'.A`m cPN61¨' &EqâdX' &Eq´A8ñ2,"Á8ñ2, j Ç `m cPN<@LãÄȰN<@LãÄȰN61¨' &Eq´A8Ú Æ x ÆÐ5ãÄȰN4r('@Ô j ÇdX' &EqâdX'@Ô"Á8Ú Æ x Ç `x Ç `m cPN<@LãhqâdX'@Ô"Á8ñrãÄȰN<@LãhqâdX' &EqâdX'@ù`!EÁ
j.Ô(¸#P¢à@B5j.Ô,\¨QpF !EÁ
5
+.Ô(¸#P±pF !bà@B5
+.Ô(¸#P±pF !EÁi.Ô(¸#P¢à@B5
+.Ô,\¨Dq¤Á
+.Ô,\¨QpF !EÁ
jIXB².°
e&]a
+uVB²
5j\¨QpF !EÁ
j\¨X¸#P¿Ö®Ô,\¨QpF !EÁGLµpF !EÁ
j\¨QpF !bà@BÅÁ
0¬×ÅÁA𤠯ÆoóPͦZ¹f
+LAðÏÈݽÖÿ<Z<ÂI$LI!$Jv
+
+U ÄëL )ïB !Ml§x$B0 BÍ h¢¦B!! "ÒX¾&¯fÓnµmmæUÊÃ"ÃM<êoÃ}¬Þò°Èc#â9
+;1$F Ø_Í/»ÀsÏ {DpðóI&ËçC÷ñóù|¯§Ïì ¾V»ã·Öø¾oã0H at BDfiá§wN×l8Y¾¨À4ÕðÓf:X^^«@h0a #%¸±Ä°F'Ôåß{Ùkñõ9 Pƨ#åo¿;éòöõ÷;ßgww½ö{âøÓî| ãâdÈDo§ÇÀ õî뻫»»¨XÀªª]° H¯ê~ãÙîôíè/Óû*j¯x^¸dÊäÍiHÃ$Ûi<¦eØIÔ{1Dbö ܽ\êxÉMGw¡ÃÈHn opµL(¹I$iaffIÔHmT²MI,l6ØiA8H´[D5 Ya A³+E#
+\ÖQ²A!°Ûaóu\ÆV8¦ +Äm¤¬¢Ó,ks;
+´ã97 Ö£jÕ¬:®kÆÞånd¹U¹H9r2®,u±»
+Õ³a.ÌZ5R³- N¤XÛmÉXbÔãMàÖRÓ·4ÂN;¸I$u$0|v®ý($g»|ïß_<>xý·ëׯ^Ï8Õ7Kûó¼3¸ÒóãCÒô×K@õ bÓCC§â¨|Ö4ú92^\ð¦ ÷³ËÕ§ÙÏÄ/êà s®¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶Óm6Ûm¶Ûm¶ÛmàôCd`ç¬ÁØãÛ¢Á< RXª súëùVá¢Üs*@
+ÆURíUTUSUNmðbõE
+SZAb6[b!ce
+¹^"D¢îÛ»ÌDnæåòQF³ç4$è¹Jx@ ÈöÞû~>.ë»åõ_?¨ @>+ß'WÛlÙl²ÙRٲ٪[,
+ËFÍ+U`ÅbÅ`Ådb²1X1Yª¸ô¶ØµVLVÙKd¶+jlU±[TùzP\»±WsqëmnNë
+fÝcÎ1.ñ¬ Ã2Ú=&ÉP`¿¹ 6û~@ ÷jiô\Ñ@Fè=,»@aÕ½â¨`Ef5`ý4c[:»8qÙÎi(¬C|Ìâ çâK¼Ïr0ósëÀ ñïô¯mjÖÔF6YKMss(Ö
+
+ô8´Äp1i¤¤;«aÔ0èÆÆ(°rÊHÙÆ41£W`r>y¡ÎÞÇêf@øòpÏXHI%ÄU +UK°PÀÆÝXͪ¬¶g)0<GWÀ°,§X¥&! ZQ«Õ´4hÍ
+ M8!¡E6ù'L4ôn4:×
áÌ03¹áÄÅWÎó¥ücÁ|Öùz½ð }eô«ª57T\15Ýc¤Õ`Ù*ð!D-0x B¡nxh.Ô «ÁÛ
Zd¡+!N0£Z
+®·Òîvè,Ùi³aEjµY¸K':éªfRÛõã´th|C®±´ÉBÓpÂÄ\·H· wøYn´Be4
+QE õëz:= o´Hhl7`EÕI¸Â¡üþÞî÷u¢ú¾>sìû=ö>¿0 ¼¢O«/&ErËïÌ5£ZÁ0Þcò!¬i= e¥*yÝuÌÎkÅV/3rÌÍÐîQB¨T ¬5TRUUQUMU;3¹ #&y»>¿oË}ª¾fùß{öý ñ|.wßõø|¾@ Üî뻫»»»»·wWp
+ÆURì00]ÝÝÝÝÝÝ UT ÀüÓ{zúüo~#ëóøûï|
+4#8Ña8äÄÞ<3é¶*ÜZD½` ¨2#jdk"\I>ÔÍï&Fc:IIZÃI'R\bnRI%¶ÒL6ØDpÛaÈëa6ÌÆP¯bÜÈxárQ AÔ¸ÛaéKÒ·+OCÀI$l£UBPlsfÝZ!¡J1J´S®¥ÌÓão3BØd¸³pèY$ DônY»§ÅEwk(lnîÉ Òm«Vó%tAHI$I&FjhÁ 178q¦^I$q% ªÓ®
+³ª&5Û¿n¼ñÏbøÆ#*|xñàãíX½3Í8¥kHÍwÍ<^Õæø>yÕÏïW!çRïSÖÔ'
+4¼ðgÀhá_ãèQ¤øõa¿{ÑcÚÜ¿ïÅî¾é1»:TààÏ]˽ûÏï?øÿöu×S31×]u×]u×]tÛm¶ÛitÛÛm¶ÚI$I$I$I$I$M·33
+¶Ûm¶ÛÛm·×]u×]LÌÄG]u×]u×M¤I$I$I$nÌDCm¶Ûm$I$I$I$I$I&ÛÛm¶ÛmÌÌÄCm¶Ûm¶æfb!¶Ûmõ×M¶Ûm¶m¶Ûm±¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm´I$I$I$I$I$m¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶ú뮦fb#®ºë®ºë¦ÒI$I$I$I$I$I$I.m¶Ûm¶Ûm¶Ûm¤I$M¶Ûm¶ÛI$I$m¶Ûm¶Ûm¶Ûm´I$I¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûo®ºê":뮺뮺뮺ë¨êf"#®ºë®ºë¦Ûnff"m¶ß]tÛm¶ÛitÛÛm·×]6Ûm¶ÚI$I$M¹m¶Û}uÓm¶Ûm¤I$I/ÍÐFý¾ÐlÀ°Ë
+7¶ÍìºÎU]'>s¯{5ïk^þÍŸ×xú´YÕ
¶Q=*ËiT)|-HY.ѲÊ!Le¶tjBýX½\
¸n9Í4oyY}]gʦ3a5ïRL6ÀOÆÞw:Ô¸Ðb,Ê:èÇf)¸u¢iÓËÈaeÞÍIZLÔI(Ül`OYIÎvw1^h 3ʤ0»h6l§
f³<JÌ:ΰH¡ßOüAÃÎsóO"ãÂ$ËÈjømÜzܽ£5«°Ó m³Z½d·{ÝîlØFA#NÍîöm6 at d !7Ù ÒiI! M$fùÈÊÂ'nÕJ8èÐ ®éMIÆN>ËË©x¶à\7ÇuPñ§5
+ìÚol+[!fÝöCA)Û{vl7 ÛB/i³w¨n vlp5C¨2)¨FCM®Í¡@ju³Ü D.
+¥ð-I8V "wubh5
+Ä( pE
+* Nu4¥3ÆýD_'4½Îº,öC
íy66V % j.¦h$QPËMª¡uëV8V at In¼S¢á¡5<å+¢¡¦ÁÔë,¼áÜî¸Äu$
+PÜäo mnk¬i;ÔÇøg]j¡kSVAæaËav5d»Ða½ºM"Ö6Ùd!0ÃLÜäækFÞ?9Ä@ÐO5vgpK îãeI¨¡ËËcæOYÀ2!.p`÷12Cfá!B88ª'>C`äÇ=0ÚÜ04FwÉ+|<¬ê7rì/[JuDÖªÛÕBg5Õ~pKÍnS@»,4A¢ØËlîgZi·¡7ZÓ§HÑd,.
·¨ÈËÜ512ÑN]ÕubTNºóÞ»ÛÙ790î¨a +wU\»ïÜ&¸k§©$!`÷[y~Á'½·ì¨fõ¬ôÝ_®U©ºÑi"^I¥GµbA8î
+¼\>Ô6wo]0÷ ,-©77¤IêI$(¬äI$êIÐÒA$J6Ûm¶l#ÈDÂölâ=m¶Ñ,Âcu63AR ìì|h âÝèT*kÖhÂ$&-6¼³&WqAJ9¸K2ÂÂ{3.4ÜWÌÖÆã$Ý:°Ì;«1n
+ÚàÝg {[VÔTJîh3ÊJÜ[^j+tf¶A $b£¢ ôæìMêeÕ]]å]å]æ$$UÁ9>Q3nýÉ ã<ß/¾¼úó<óĽzõë=txqú;}n¿ÌF÷Ï8dëmïj=GǪZ;4«o0yçsð ¡ ãYÓ§*û_e¢I $H$I A$II A$I\Ò
+QÝ Ai<m <r¦rf*qßZ[/¼L³rû»Îõî¾íñ$0$ZÃv¦¡Ö®Êª5j)uyÆ5¿^:wࢼ$y;Ťtc°ÛA"ÁDÑsÍO;¡Ö#àbÌRA eѤ~#½¦Ë@½àåoX9wð@cG(ÑÉÏ\
+HÌCvÛÍae^Qo+þ Ö»ÃçZOnûºO°
+¡¡Õ\² \SÉA]ucÎGÐp4m¹¥°á Lq
+½:ôÀB_¥q ^#LIÀë0Bò¤Nì¨yµÌZhU°xo¤k@Cà âX2C[(¢0²ùÃ
+×Pì¿:4î³Ú"øé
+@S¦í½RPe®a\44ÔXéeå®Ûº
+J²ôððoF7vxTqÙ£ÈUu*;^Êá Ro½()¾uªk6FwAÓ\·.k:0§EjÌ·amfã3
+f´FÍ*cÍè3d²èç
+HP7
+@`dNHÖÌ\Ä0mA=7zé!ùÄQèEàYE]néÃ@æhÓ×[G2C
«W´*÷
+ÏrÄ9âm³
vÌØaØ<êHMÉ&êÌ9mÕQ!áÕ|'«ÓÞÁó)f&h¦®À.ªV
Ú5ïakEôÏOÅ61ÑïäpsêcàÕéìø/:Xá x89ÃÉøú;ÙòðA}Dà^ñKK<+
+ÆÜÌÏ«Vm*ã0 NÙÍmï]MÎI ïPew7cî$BI$KIµ¦öI©ÐáA %6Ûl6"mɹ6h&m°/J
+ÔfPT+¸vr>.$AÙêU±(¡Ç&VèÒ
+ á¡e¦W6LÇq)EKµÁL×K$5k¹*ØÝS1ëq
+Á"³½VÕ¦¤FäwsÜ0b«jÝÙ¶Ú H¨ Ka ·.µ]×6f¤¤5ÖöäIJ pÀs{½îwðùòyç/<÷ë× V[JfzzóÄ=tÎ.ÂégÈÆyÂ#ÅFãμÄ"BÜ`稳ׯÍñÏIïÜóÀ½Ê·~'Hî?Q¶m´m¤A$$ $H$6Úm´m$Ûi&ÛôÁ>(I¶9ÚY±w2¤ÜI&äÙ'A¶!¬¼ç K£páG<_ÑãØ"èÑÞ¥¥¥64
+-ÒÀôÑ-mÐPܪÃÔ¢yª»»êg\¤r8IÔ@>Q¼A
+M»I$Á&èçRfï×,îpßi$(umXImÚwÆÂ¨!*¨$î!
+
+T9-
÷Uwi|µÈpÂN(5ÅÔ4 FðRgZ®ïFoÏ_{zæ F8P4
+HYcm4Â%+DMÚHHÒ]|䬳2¦UVèkËÐ6@#E%êÍäÊÝI ©±â½¡|=Ì¡°@| ]Bp@¹F`
̳¢a
»ÆêÁÎG3£BBÂ'%#¼ñK`M9
ÍÈéËÍt<ë
+x³Ä;ÍÕ}:£öÀ/ =¢/¯ ºÑÅÃ2`p´nuUB˲¨×TÌ
+3×YrË«ª¨Ì5=É%¢^˹+fI!¥ áð?¦etÂÃÞ !3®¼Ì00ÂQWF°ÆÖaAvR¶ËhQmv
+ÖT¬ª°ê ØÁ
Ò©{õEæI±.ãC®´ì¼w|hÐg{!e¢Í&$.ÃE¸6
àà%An'4¬(
+!P
'$³Ux|á ì|çV¬ê¼cDBëï(×|²½^fYRVXÈ7 $aBXBîÊô³®íåÏQíõéëâäòT¼ëÄÞ¼ó»DPö}z£Þoàö¿£ Ø>N¯gIÎ5½ØÔIdfawÕV)Is0mFÐg+N$¬mèd¼
£Eά]êO)$I$Å's9 K¢¨@h I$I41
+G²MÒu$£a¶JQÃ+YR¥¡ ª41
Ây«Bâ#XQI¶(¸£bN¬6USÅ%Jq´ÜÚÌ8ÙË$9DÂòæÙ%u·»UÍãMÔÚE3V¦h6)¬ºyiCMUná3×5ªH6ØIA#R *5Vj¬e7DX"a-ÌÌKI$ÎpsèÙlîw{wçÏxóÏ>=zö àÎÅuøç¯5ßÄpÖóG|ðOÃ×SÁçMðázXaç©åÓÆÛí\9å²²`sÌÅ>ú
+8U´r $H$I A$HÒM¶I¶ÒI¶ÒM¶m¾ÎÂ/
+GÅqÝ£5%Ns
+a²)çxÑ^s!¸Î Ò ºü©kôÚêenÔìSå[¤ðF¯Á$»ä4°H¬s<3;vPxý&I^NÉm¥)Gv¥êÛ[»luÕf»-ÑvYß4ÇnbÎ÷nʼN\ ÄpqkE
+÷pù;ñ/©ã\ 8¨x;x*¹º "VH87ENðtàÝôN¤}zwNúç¯NN!è7§s0CPú]5£×6l6hÜ5Zt:4d&¦3P>Ðl]Á°K '%3;Í3LÜzùà¿7רàç ÃqÏPk{
+*ë4 ñ4jæhEÐ^hÌÏN¦h»*ÔMhÖ3qÔI${ÇÉEÅ¥`ݪ9]øÍçvò«@DPúN×NcÕØAa ;÷D¡K,Ô´O°àR²I$DÎ&úáZ¦1DC:á¦ü÷¡¾KE4ÕV«Õ®«¬E¬Zª¡%
+JB(¥½\³2ËtPÁ¢ Ï$bI$JéròW¯@_RtãsBÂDzÚ]
+`]¤²×w
+`BìP[jÙ7úöõwwÞz¯hgÞç;ÏL+»½ÝA÷o;{Ï?^)ÇÞþÏøÝéJmµéçêÛÇ®½§ëqðXccx1f½tÕDõhÇêb_`#.~GBή<Î¥æ Fð´ïW|2EåÙkÞÎÎgíxwÅsÉÜy{ñù¾£9ßâø!ñ¿>7æþ¿¶öÞǯõv
1I$ ¦"I$ "!LD$I$¦"I$HS $I DBI$H
1I$DBI$I"!LD$I$ $D)I$ HªI$©
+"!$I$
1I$ ¦"I$
1I$ ®ÊSÌõMí®)µ6ÛÖ½5¿Yâµñ3âºó_Zö¿° }<;0ô±;xçP£D%¾=?:'£FÄìÊè õ72:~=ær=« 6x=%|ßà89ÏÏðO½÷=ßc½úMøîü¿L ¡÷"vûWëß³íjÖÖÜ¿<>V1Æ1Æ1L_iiRü×x[¤.ø'o.³¾v O!âi~wW¢ãçGa²ùõëÑpvzyÙë´9n«¾y,ÌóãNçG®êñ¶m´m¤lI A$I $HI¶ÒM¶mªè¿Áô89Ïj÷«ÂfP¹þÜeܨz9ìå%ï+ÞÙÜ»ñ¯.òx
Ü?¢þ»0Å,ê?ú½£§&á}p×µîë8íÀª[Òu/
+½ÇòwõïÀ"ýg£ÇÝ>çò~/òRÈ>ê}Þ³îéù«»+äÏ×uËÕõßë ×ÚûZüìú6Ym´{ÖÛm4×ã}x§Ôß<üã2¿w~®ûßmá
+¶º3¤*)`%%5d©Fk{ï`i¶týK~æëÞÒ(»ZT¿"«üýÁdDatþJ*0?é×·¯¨Óüä}gû7_©?_ìJ öçÆù¦5G¶B|ïá4õï`½ÇnRãðþº©~so6{ÿ§ù#ôyôÜ?%ï©^
+K¶»:ÿòÎÍKèIq»¾Vû)//Øùè}÷çhþtý?×uôÝü÷;ú¿û¿ª¾}¼×½³L?)D=oÖ~Gø¾öîüZÉ p:Õ~ìÜL¤Ûêó>ËÙü϶ô77I%'v¢wE{OÇ~î¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm´ÛM¶ÛmÝÝÝÝÝÝÝþ~ ßèªÿB/Ô*ªûɽý}þ¹ôâºÊY³Å¶¥¾¥Äkzp
+jA_ÊU'ªnúë*^Ç$£`<W©¯^Þ¥ËÌ+ù¢´ÔW¤-Òæùj^¢RwõÆ1XÎÒiÒA$I $ZDH$I @´$K»ª«»üÐ"þ«ÑE¡ÑQíCìZ[V*^«¢)½NáZ
+Ýy¼@$£ª+,¹¹¾é~Íú_7áy?åû^×ÚëS3?UçÏ>|ùóçÏ>[m¶Ûm·çε33ZëZÖµkZÖm¶Ûm·ç®ºë®ºë®ºë®ºm¶Ûm¶ß:ÔÌÍkkZÖµkZÖµ©×ZÖµkZÖµkS35®µkZÖµi¶Ûm¶Û~v¦ÛRSm©Nºë®ºë®ºë®ºëÏjffµÖµkZÖµ6Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶ÛÖµ©×ZÖµkZÖµkS35®µkZÖµkZÖ¦fk]kZÖµkZÓm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶ÛoZÖ¦fk]kZÖµkZÓm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶ÛÖµª×ZÖµkZÖµj53b<ùóçÏ>|ùóçÏ:ÔÌÍkkZÖµkZm¶Ûm¶ÞµLÌÖºÖµkZÖµ¦Ûm¶Ûmù뮺뮺뮺뮼ùÖ¦fk]kZÖµkZÓm¶Ûm¶Ûm¶Ûm·¶ÛmM©ço¥½Rªå+$¶%y¼D£2RkºªW*]
+qÉRµ±£Á Ú+¥ÇRÔ4©haD£
Ks7 oöfþ:©l©^ÎÌh¦EGUª]-.ïw»ÝÐA$I $H$I A$H$I A¢¬Roô4JçÊÔãJªxº¢´U'\V§?`W+ŤOSRÂâÊ¢Ã÷$´ffQ²-OÆí®²¶õzÖײY© Ò¥yj)°ªa¥#EÕJòh¶%bU±½JV9¸yûzMíêÑ\b´JOW(h®$¤Òj&ÙB(P¢üÁð]Ýüwx
+¡wm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûi¶m¶Ûm¶Ûm¶ÿSÁÁÁÇÖßÏZqñªIrM%'*\î¤Và4®ÄWÎm ð®M =. v²¥ÓÎííÙÅ*ª¡]üèçóÝüÅT¸ºõ-YÇU.²¥é(¸ê\â½gÅâTº!%-MEq
+íÊPEQ^׳¿³Ñ7ÌëÕJñmª¨êí ÐWhWhW\ýsæÀ ?9ü¿$ËiÓ-¦[L¶m9wW.êåÝ\W.]Õ˺¹w__
^
ét©^{¬îõÅuÅyB¸ê¥õâNA]Ñ\^4¤ëÚq
+ò*¥Ðgn¥¦|$£xWfQ.Q[ªYRóÿÉésä}¿·ØÙÔU' T²äúí*ªU,
+íÔ·
+Ò)UeK;»jVvԮάpE}Æ
+ò!%MK²+T¤îlÛÅÃz¥é÷Õ'T¦äWãzº <¿
+¥Êêº 9Åk¸Wª4ƪóýerÕJáëÐÓ¿)1Öáîx9þK¸ñR±E,*ÁÐÙÞñøÝî¯]DÁX©ff`I!&dH fI$I ⨮Þ
+·<!ZÏM (ê¥'5Rs\ÞÍT¦ú¥èk´«x;brðµ§Ùü`¸*LJïstlßRâÝá0V®> ®Ç±ðÅyõ-·ÂJ2¥Õ±*=b$£9=¶¥Ð©99Åv·UhUI¤ã©u¶T¿{°Ü¥wùhßRàõ»öÅoÙ¯ j¢²©>{Êu.XIGrÊ©]ZUJÑÙê
+ÙÚwå'{¯Rô®j¥4`¬à+H®¼A\J¥`®h®ýJ;§-KÙkøÊEÑ_?å¿ûà}ßoæöôî½6tÔ»áYQ;Ý`*ÐÊLñEiµH·T·T´©y;8ê[>yQµRÝãlÅ (áßʪ·*6ª^0¯Lê^åL±fÊ%¸.Ю©pRÀXIGßÛT¶*wJE²¥¯T¹j^5++°+Åß(~NéjC±*Z
+áÒÊ+ÎtuE`yDB¼ªZÔª£+ìÅn Á[~¥RÜ¢yDöt]âYE¡QhhiEv eET®Â¥¦*EÕ-qJÙæãP£\ÑÝÔ£ÏDjÙ÷EKÀ󻢼A\Pâ¼*-h°Ã¤VÀ®Z hªQ»*¥ÑÄ+ÁÀWwJÖ¥À+{V*¿QÁRj+WÍ |þÁ[*\<WÏ[áT¹EeKª+A^ÍQÁÕìúÞÑUUJ`W`W@®
+ 8 kRîs
rª[Elã©qù®×dWTVÍЮ¯*îj+©T·Ô±RÊ@â¹µÙ(t6îH^?¢º<II¿¥Ù`ªº°ýT½FkÐ+±ÁJõ`T»R¥àpQ4Ê+
+%öQñ¡%IÐä©v8Åru
+-.UDÔWtW
+ñøU/eÔºÅ\U/8Vï9¿±õ[|j¤ýø®&ì
+ïwétJMîZÎíªMâ¶<*¦¶sf2ßî
hlõ_Ù÷môfJÙYXû¼{
+ý^Zß-·ôMkWèßI$I$I$I$I$I$I$I$I$I$I$I$HI$I:úím÷×AìÔªü{Üý·÷Cò4k¿¨ä¸£üª5?ï?üýì?áÏ0÷â\Qj_¼ýÐüýë¹Ü=è~OöÿÜþÛçüÿÀϽçÎzHLsÝ?ü¿ô?s£]Cèàu2B7ÿ'ç^§ý_yû_×ý÷ó\8ù÷¨=ù¸{ðû¡ö×Ï{Τ&A¿ö_ËýèuûN«¯ºñ÷Z4ëÜ úY|·W>»ï¿wOPóT at IeÒ"V3$ÌQ4²©e¤§W-*YeJŬ ¢AÿÏöOé~Çñ?I£H(@Q#ËU,l",Ê)[mª1µE[U¾ö(.¤&Aõ÷k'Öþ_ö¿þèÓâ'%ÈA¸ñçò?sø_a¿°þNýÚ=è×ó /¾¨ûùí¼~ó?eÿÍõÇtäÈ /¿øòåþ¹?ì3ÌÉ5ó*\õüÿ?¹üÍÝ̨(âÇcñ·1·CgÄÛR×$LÊVT½f4%sç¶úÑ_cÿóe55-} JÅÿÿÿÿÿÿÿÿÿ÷½ìþÿÿ$y §ç,ÿ¢gü.?
+QóáðضßwxÞ >= @ *Ú¤B@(¡"T$¤ôR( ¤ Òê¥ à
+Ï(ß`f1ðÎ à=ÝmÍH
+Ü.¼ 8 ãÐæìDz÷- 0BðÙÉEô Pw}àzDö@UB ä 9x-ëh2Ád < w| °^Â6b2Ùi â4++u
+k&: o¸ÞÕk(¤ `1Ñ$K`:C ÝfÛÁïç×¾Jå aj at -@ ¶Ðdö`TA(ÍQii¡¦M0'¨Á4À &Fb
+ ihiTÿÒJ¨¨
+Ä ýµUII¤` 4T!$h)êi¦@ È 4h)!È 4ê¦OMe=COHh1?R4ÐÈh=COQ¦bh4i h=&i¨ THB# i hh hÐ4 x?^(£C²{Cê½Mò
+YmJN
+$,0~ Ø6¤¦¥JÃéÉ}1¨~èä8QýZ%ZáF$¶²KkF
+oa©~,l£Ìà7ªÙзHÙ $`HÀXÆ1YTb!@@ú0 ¬c¬UbôQXÃè÷2% ¨¨ ¥E4h¨¢ÖP©ij·2F$ШàóÖZaePØ0£q£¤al£%añ#î( M
+7M¤¾uºÙFË©£D¹eDöK$îiiiiiiilUUUUUaa!OÝpA
C#A}hÁû1ÿïµ¶Ûm¶ÛoØþ3òߣýGê]û¯AÛâ=ÖúöüJüºýýjþÊÿ¢ó»Öùçyß%û^ýUUU¶Ûm¿¾Ù @ý×îUUUV0 ¾Ïé{sùm³½¿Ùû|_/×ïåÙø|·ìÖúíø¶Îï×ß»èñw{y^}!çzþPëyíÍõîo^»]ùC¼çûãç¯øo|{{y^}!çzÿëyíëêÏ^»]ùBàÏ?æo=u¾¿®<zõÚïÊàÏ?¤:Þzר½y^}!çzø#ç·[ëá¾ÿ]úûw~«öÿÏ~ù~½|þ¸~¯3ùÑÿæJ-¿ÓÞæ½×¶k_Iï×οG³zý
+ý-·¯É¯ñ¶Þ¾íɶõö²$?_ûÿëôUÌÌÑÝÝs3]ÝÝs3\ÌÁWwwE\Ì1wÁÿ
+3s>ll_oѪ©}Øûáìh6¨éÓ=÷ñGÞ4û×¾8ëõ¥p9¼`n1+¸eRí
+£ãѺ>_Üéòõ¢WàëD>èë~7ªTºy2T8u³Éózþ¦k7âªT<ß;ÏÏ>v~:¶×éfßèÖ«ì5þ¼ÿf}·?ÝêPO¸×ÕÏÙÏ£þ5ûYµDEìÇøÐ~ö1RIlÈQø7Û¿"ÓUµECvTUbÆ+¬bÆJ Å*¾Ãö¿Ãðü?Ãð}§Ú|Áéôú}>O§Óéôú}>O§Óéôú}>_8d(¥÷¿#äæ~?ßí·äo¯ÈãààyÈÍæg)¦EØ^7rîîU2If·Í)rê]Ô»m×Û¶ÇûVY]¬Ý½×:8¤9ôí¼ýéCdzs¥!Ã§Ôæp©ÜÔ9¬ALk½,³=ß'\,§¸è¹ô{åÑTòë]Úâ¾Õ,NÞÄTÓ¼'SÄù<OO¹7ÝɧÜNbÅy<OîîOÉéj}®'Ýq4ö§òq8îäâq<]Ëow'uî´ú§òi÷'¾îM>äÓ¼}Éâ}é'¼N'ù7ïrx'ªÐ"}ÄM=Äêi÷'ò{®'ðñ2ò}ÉÛjoo.}y<}ɧy8Mõäû:÷¦Iäñ:ï{î¾{¼ñ?&*©ì=7¢x¦Îäñ>O¯rv¢'êxZr}ÝÉÝs{Éâu=Íq7½ÉªbÅjx/&'918'Éìî¾ê-OÔñ17ÖÔû5^4î²î®-Ú¯-ݹtâM¹¦î®
+ÕgoBR©b»±·Æ1^¶RÎÞUXÝÔsjÅCj±Ëª¤³V¢ªué±tÛªe+mH·vNbµtâj«ª§Y,6uÓ½»ºÛÃ^ö:ôG ¶gvw]íqé^ÀF
+pk@ÇÓdúm¥ÜÛä»´8ªÖß7Üw[; H}Ü7ÜÖöwv^îîæß[n[dZ»
îî仵»dݽפ¾m÷^æß[onê[; ÀëmmÖÝËÜvws}Úß6ù·Í¾ÎîîîF»îLëÙÝÝÖ¥kn·j]Ákn¶î^ìî亮|©[À$IÖÝàA¶ay·Í¾Îî O¶¶ä뻾Oo1Ïí `xÏysäOywGTÝZH>qev³^vtë×¶j§mçóX=û£æÒ˼2ÙÁó
ÞÙF5fÝÅwkTÃk®ºç]VSº##å$wVY]¬Ý½ÖöÍRQôí¼ókZáϺ>m,»Ã-WoÕ$wVY]¬Ý½ÖöÍRQôí¼ókvç=}ì¾µNï¹yÞç³¢#ÔZ.·X¦£¯G\lIt))#íZH>qb·ggou½³T};o<çÖ¸sîÏRÊpγªíâ:¥Å¤Ñó«9÷3ÛÓ¯lÕ%.ÝxÞJf»Ýs8Ám'^ÄùõݹmÝî.PÝÍ$N·/·sN.ÜÜ7wt»Ü°ÂîÌ$d¹½ÝC:ܹsÝK;u*S··78$ÎÍî ¶dvÚ§<ÙÙÀîêGå$wVY]ó5ç³§^½³ÊN·^WÄ-û£æÒ˼2ÙÎ'$t×9ÍÕÆØâ¾Õ¤ç {vvv÷[Û5IGÓ¶óÎyk>é¼õ,§ë:2÷uç^RujèvÝÛÑÕ$wVY]¬×:õí¤£%Û¯+Í`ìGt|ÚYw[;w+ ÝÊîÕÖ¹G»Þ7K»ç»ÆVÃ}¬½Áh2D»vKA½êj½=Úvùí~0¤6Ý}¾í¾ÞÛ¥ëIÖM¯wv¾íµÝ|Ûo#i[Vì§uÞî˵¼oI¥×xjnÎM#ªXÜZM:±Zö¼ííé×¶jn¼o%5ØèûYÆi;oÕ,n-&YϹðÎzöÍRQí×䦻Ýs8ÑÎùQ
vô§nöu»½Òe¶ÐÂÉ2m½C·6Ù7pÞÝÛw"ÓÃ6öÌ$d¹½ÝC®\¹sÝKx´:væ÷^ÝÍÍîá»¶Ií;'LÙÙÀï'Äé¨ì±îææÍîvÇ\êã·:e[ìzáq+[ÖnºÍsúwd|{NÍë7XÍo£nlÕ¼Ú´éJ÷Ü/^CÄ`»4ËuÕÛÕ!ãÈÚá©dliC,qîë·*¸T$ìË9U¹».rì»óÎç3SÍÛÐǧ¹zyñ¢Ã:q¦Cåð¾9ÛonøæéwKº^%Þ¸ot¾Ã{qîãÝÇí¸Å{\*Ý7µ×+Ó_m6
+ºª$ÎOä]
3a~ryÝ}óçÌÃ*¹oc®Bʱ\õöwsw%çs$çb·-Lê|XUcåçs|¦>o®wGN×ÏX^qd9³'sǹɱ.ÎìJçrÎìîY9ºe±³¯wëÃ(Í£![2w5ÙÝwbë¬iѽ
Ü;ÙÛÏw¶>m,u¾ìî,°ì·_'WNæ® Ù¹÷gtqdèâÈFû;µãΣ}«^Y%qdîqd9Åæøg½_ðæ=sðßap_õ·ÙÜßww7-×NÝ^<îçÏ:ë3½¸Í¶÷=áñRù;ßRôzd9ãÂ×»u-Öv[¯VIÜcÕËÍ¥KFû;µ×Ïst.8ß ¬+J5R¡£ªW5Dd¦D¹8×>âüKÎeËooy¼ÝÝy¾ç·=qÝn=Êujs¦H·ué{¹ú+uöÎnäb±VÖy/²i{{Í7bÓ{{g8·SÃ>$n)6í»·yï{׾ǽÛíÎnæÀaÓÁ ÃSßfaa3&wttÝÍÝ&¬ÝÍ 3w7yvjMe¹rÛL0èa·uëÙ7sw$É$Ä`Àº£Û-(w.NY»M6g°.ÝÆ3pº#7Ü¢lå;:w,ö^Ù½óaó»s°Ã³²
+Ïs§ikÈúÝ·¤^îî¹îînÉØÚgÌøO ¨ZÓjy\Ë0ØwÖß\̹2Zåîhnë©jåʾI¯ã=uì´I(ÌmÁüÖÝn(-·züå^ÝàaØûw¨÷´Õ×U©F[yWEÚIÝsì+äsĹYNÚQ¶¶ÍÒìèç+·2HÍݪ|KÍní713kw7
+;-«mÔåe;o¶sîîݹÏ{ºk¯»\(¾:6¡9¾$y§3{\íÌãY&XbÍܪeMf²d®u3ÙçfãÁôznðúIó¹Á×µÛd×Ê]É4ORÕNç˳^òlêhú|GkäÍÔ²L®ù:³«ÞÉuîãÜ
+ø±Ù®!{6åÙs¢S#msîãy¹÷qÙf»7$·zɯ'wr¯Y¹½&êIpÝÇQæhäÇaw]w2îÝÜEd|Ðæf9Ë®fgÉDÜÅ
+ÔñtÍn=7rðl`ÌìvAnÏ.õuÎÞç½zqª÷fòêMØúÈÖ×ï
+Ì·.î.ç8wµæmÆ@¼I¡ddÌs+±¯Äµôù"a³qá3$ÆÑÓs7r·»>wÞ¦s`â$î6Þn+}Üì6½ë%}µ½ç{fv«È3Eµ0Õ0$÷^ëYrªÈ§PòW=sîsæW3÷2ßnjQw¨÷s2¶·ÕºÀûz˳cùó3²ôùN}¯w³@H^#íº,ÊbIb»$iôj8]¡Ü·ªÜ»87µfE6«O#lªèlQßRµönM»²ìÝ6nsMÓuÃvnéÎp¼ç3¦Ëw6îîêÝà¶+mË ëÜÝÜÜÝÝÚîné»Ò´
+3´¾pŸ¬Ä£mÄ·f´ÖÞææ¨ôÀ .Q½y'Zfn Cæê[»u]ʸÖʽÉF½ï2pyÍÃq¥/°×
+¡lMÃrioSNhpÈÉÎç½ÉíìñãÞÓ<e!/G7;ɶ½êîÍRnnótÝÝÓ3©V^ÐZZ«8÷¼æªB×$Ù5ôÉ4915³$JL«³touÄÓRd°Ú÷Ýk»-[¯eÚ÷¬[Üìyb#^µ,*¹»ÍÜójîÝ®æîî8«!ã¾ÀqOzcuÛ¦C·¶su<ÚJ·É7ÍôÙº·^ww3¥Æõê¼øÂñÜíàÂNܳ^5©¥µ$²j¦H7º÷eîîg>ÝÇÛ
+Ùó;/LÌY;£ºÃMØ´ÞÞÙÎ-ÕfÔU½R<m+Û&î½;»Ï¢·_l7g|øò¥Æ£jzæg·0Ì0ÉtÓ¼äyÃÞGufîh¹»Ìøw&©4ÙÖ[-´Ã:w^½w7rLLI
ÕÙJPî^éÜåÓi¦{íÜc7 »¢3{Ê!¦ÎS¹9Ó¼Ég°àséÙ;;çCçvçagd3çNÒ×õ»n7I6½ÝÝs
+ÝÜÝ9±µùÀS§@aªù}ÛZ[rqn-ÝxæjÍÜK ìânÇc[¸æé8É!Ç77¤nêo^´Þf#jÐS
J%íRÚ)mëyK6ê¦Ù9»Ý»¥æbÛq3ÛSMÁHѽz>åí̲í®Ë·ö Ùm禽FìDÞhR9»ö¥vó33jæhdÈùoÌÉð`aÀqñÙW0#ÑqD`P:ïtcì§Hïz\)¦Êºi&és ÉÌ¡0'Hc½«n%Zäá62ê²Üu5,ÂhåoÅïI Rå8´NÈw&Þ)N²d· dÉ; §w¸¸#²çgHl-ko&FYèJu6ô·4ÌãdÆk4¬Ëvä«té
+$²£áD¤2d/Wz²çNH7x`'BPé§e\8àÙ2eºtÒ°hrF9[Î35¦^HRå-æ
+ é:»Ò¹^öM¥qxT²d!gGNÌÎd)W8`NÈS«½Ys§I¤-q· dÉ:Jwz\ïCIKÆBS»Ó1ÂçN¡)rðÁ(INïKèi)sÐÀìêïKì6K.sa{½3½sq³'BPé§e\8àÙ2eºtÒ°hpq·&[§&L·NV
+&9¾3\á´ÅÎcC¤§w¥Îô4¹Ìh`tîô¸p0.f40:@³zò¸l8+V22À!N:´½Ã0à¦&\ÆÉvIaǵ9*âÃ2 ö(á#,ì
â÷.Nv¸Û Itçx\8N3W
+uΧF£ÖSDçp8BvUÃ& `³{Å®4¡ÂIÒ¸áX²Ã·
K¹KpÁ,'INw
Ãés1¡ÒSápàa:\Ìh`tçx\8N3ÎxfIÙs1°Àè)Þ,«á è\¶22Â%9Þ¥ÌÆBYÅï¸Û8é\mà `;ÉL vW2´N;ÎrÆÞ´Ã¤§{ÂáÀÂt¹ÐÀé)Îð¸p0.f40¹»ÒS§.[aÙt¨å´ÉCtçx\8N3
+s¼.p0:d2tr ;Q\2de tçx\8N3%9Þ¥ÌÆHS§¨å¶ Ê[LB`N³Þ-q¶p Ò¸Û CC¹Ó4èÒqÖ®8&GUkÕ⣶ÚN `²£¶Ú`ÑL
+s¦iѤã5\4q1×:fN3ZÕÃG48dx1\X$Q°ô2Dæ,űñ eF¢VV0b±X²@:0Y ±a"}b-¨Êµ1E`"P ŵª£Aw
l¶Â7ªT>:å\°-JTªÑU*RÔ~°Ä>|eU
+}1©SêØðõÑôQÔZI×LEr*\!Ä)hoVÁ`Éb ?`·mJWâà©3*TfJFe*LÈ%"
#2%.1Cç;©8bfULÊ00Èc.±ÔRY
I©èeÇr*mMFK«aôºÖbÂ1`X±²¥áZAõ½\,HbY§õWî½>¥àûÙ$Þ§UÙUUNö
+ªªþjªUUVÕµUlàÁ8'Dà¶«¥UiUS¥UUiUXªª®U¥6ªªª®Ò /$Ñ#$Áz(£¢h¢(è£ÑG(èèèðQà¢px½WKUUVªªªªªªªªª¨ªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªª«KTû/ìàʸZl«fïZ¶n-fëmo-µ»Ûq3*âfUÄmZ«R«Sr«qlÜ[7ÚÝè¶n-µmnmZZʸʸÊJysqlÜ[7jÚÝê[7ÍÞ¥³qlÝê[7jÚÞ[kymųqg¦UĪÔîUÄÌ«WU¯ÚÜ[7Íųw¬[7Íå¶·[kw¬[7ÍųqlÝ«i9q*µ*µ*µ*µ*µ*µ>ÆUĪԪԪԪԪԪԪԪԪԪԪԪԪԪԪԪԪԪԪԪԪԪԪԪԪÔùï¶ÛmµUUUUUUUkUUUUUUZÕUUUUUUUUUUUUU^¸*ªªªªªªª ªªªª®«ªô Õ^ªô Öµêêê רzUÕzM¦=ß&¡±Ä6Ô6Ô6Ô6Ô6Ô60ØÀÀÀÍqkzPØPØPØPØPØPØPØPØPØPØPØPØPØPØPØQ»5k`MC`MC`MC`MC`MC`MC`MC`MC`MC`MC`MC`MC`MCaÔ6Ô6Ô6Ô6Ô6Ô6Ô6Ô6Ô6Ô6Ô6Ô6Ô6Ô6Ô6Ô6Ô6Ô6Ô6Ô6Ô6Ô6Ô6Ô6Ô6Ô6h¦¡°&¡°&¡°&¡°&¡°&¡°&¡°&¡°&¡°&¡°&¡°&¡°&¡°&¡°&¡°&¡°&¡°&¡°&¡°&¡°&¡°&¡°&¡°&¡±ÇóÍyo?L?ÓÃ'ë$
+2TFJÅ*²eCL¨bÉY2ÈÁ¾Þ;ë<ïC^\·Û}{gmuÏ0ú£ëC#C½²M5ß%ê0ÐÁÚII9T=9ìPFî±$:àÓzÒ¿gäuTGµe#æª
+/Ï`Ùt¨½aôôÚ£
+õ+"¾¤j¹í,°$Ío$$!db¢/¨~Íú_«úß_«úÎwÛß{ÏmMEÎÊoY%¾ ¦Km¶Km¶ñÛ<I$Ûm¶úißH[ë¤Ûm6ØJlë¦Ûm·ÒÐÛxñ4 [ëÛæ4S<%$Ûm¶Û~÷½äç32~¶i[1DÛ\ÛZ*Ìi
û³\T/,â3UÁÖ[ZY¦i¦³wpÍ.µ¶Ú¡wuÐÐvÙËw)¸k
håé!?yWÌÔ¢·Ê¥eߤ',y,4öÒQî®Ál9{¥Ú\
I®Áp¸Â8-ѼJä°(Å®9.Hȹ#Ü·[èÜ·FäSrÜÖÉH¥þ1U~BÊ/Ç12!¹|J©Èó/ ò¯1²Ù±±»vËv&Û6i¦Ì6TÙLhm¦Êm6ÄÓI£fÌm1¶Û?ÁDtté¸|!GÚõLÕ¶UXÄF ¨ ¬b«TE¨¬E*"Ì!#a\n?
+>Dr¦=ÁÈj=Üú[©xA×Ìr÷Ç!ùQÀâ6GêC)cÌ9Çb1!±Få´Tmjj0d'CãÖÕ¶UU[VÙUfÉn´ÙýdAëöGÑk5¬Ök.µ¬Ì2Q@K
8ERÀ!, e
+À+
+ÀP¬!°Â$°P@QFK :5 áQÆK m¶Ûm¼þ¦kÉõ*§lÊøß[Íí¼¹Ñ'»5»ÍÞ¹çÝvW5{O7¬~µcÍÕÖ5$ÉÌ⻬.¸á<Öïá}{Õ~t?>{êæ®µÔ$Þöù¾OúüÝ×®þö>&Øõ
A®d;ÖètJD
qÈÆM¤ËSæ:E«¶×!<M±p±33UÌzÝ S«ÙäÚL²!Âc§mXŶ¹1âm=A®d;ÖètJD
^È÷&Òeó;jÆ-µÈal\!ìLâÕs!Þ·C BTâ$*öG¹6,p§éÛV1m®Cxbábgf«õº§!W²=É´dC
<ÇNÚ±mrcÄÛ{85\ÈwÐè8
+½îM¤Ë")æ:vÕ[kÃ&ظCØÄªæC½n@©ÄHUìrm&YáO1Ó¶¬bÛ\ñ6ÅÂÄÎ ÍW2ët:%N"B¯d{i2È
+yµcÚä0Ƕ.·3UÌzÝ S«ÙäÚL²!Âc§mXŶ¹1âm
A®d;ÖètJD
qÈÆM¤ËSæ:E«¶×!<M±p³±13UÌzÝ S®9É´a
+|ÇHµcÚä0Ƕ.v&1j¹ï[¡Ð!*q{#ÜID8Sæ:E«¶×!<M±p³±13UÌzÝ S®9É´a
+|ÇHµcÚä0Ƕ.v&1j¹ï[¡Ð!*qÇ#6,p§ÌtV1m®Cxbágbcf«õº§!\r1i2ÃùjÆ-µÈal\!ìLâÕs!Þ·C BTâ$*öG¹6,p§ÌtV1m®Cxbágbcf«õº§!\r1i2ÃùjÆ-µÈal\,ìLbÕs!Þ·C BTâ$+F2m&X`Â1Ò-XŶ¹1âm
A®d;ÖètJD
qÈÆM¤ËSæ:E«¶×!<M±p³±13UÌzÝ S®9É´a
+|ÇHµcÚä0Ƕ.v&1j¹ï[¡Ð!*qÇ#6,0aOé¬bÛ\ñ6ÅÂÎÄÆ ÍW2ët:%N"B¸äc&Òe)ó"Õ[kÃ&ظYØÄªæC½n@©ÄHWdÚL°Á
>c¤Z±mrcÄÛ;5\ÈwÐè8
+ãI0§ÌtV1m®Cxbágbcf«õº§!\r1i2ÃùjÆ-¶Hal\/!of«õº§!\r1i2ÃùjÆ-¶Hal\/!of«õº§!\r1i2ÃùjÆ-µÈal\/!of«õº§!\r1i2ÃùjÆ-¶Hal\/!of«õº§!\r1i2ÃùjÆ-¶Hal\/!of«õº§!\r1i2ÃùjÆ-¶Hal\/!of«õº§!\r1i2ÃùjÆ-µÈal\/!of«õº§!\r1i2ÃùjÆ-¶Hal\/!of«õº§!\r1i2ÃùjÆ4ï3Üæîv»ÝÜÝÍÍÎnª2P¤@K
8ERÀ!, e
+ÀK B°P
+ÀKÀ!A B, èÔ
FK, &ffeÌÌý(I Þu¾s?FIOÎINýùã·¯?×W<îµ.jë^½»kÛåðù_ó;æï}÷½÷zïÞg|Îûï{îõß!ïß7sÌÕÖ´f®jë^^^Zòòðò¿2$DßßÓß×ïöûòë'2µ¸æV·ÊÖãùw¹ù~_ò~MæwÍÞûï{îõß)¼Îù»ß}ï}Þ»å7ß3Þc´ÖÍ5³MlÓ[4ÖÍ1kLZÓ´ÖÍ5³MlÖ7ëëë>¾¾O§ãMús+[\n9Ç2¶Ù¦¶iZkfµ¦¶ÆãWekq«Æ®7ù¤$·[û}_ó wñù¿6cåÂË9 6s¤² p-Î%àl³n 6s
+²Í¸É`6ÊÛ
+ã):á`aÛ,äXÙδäX £g8ÙÎ
Ý~yy}ß[îû{{¼ë×®ý½¼÷äàæ{swÙ-ööõ×·=ÿ#àG¿¿¯¯§§¿Ëj¶«m¶¨¨ª¨ªªª¨¨¨ª¨ª¾&*"ª**ª**"ªª"ªª¢""*á `f*®çùùä>µ×W:º×ËÏÏ_/Ãå|uâçËííï]fh¬*2P¤@KB U,ÀåË· , e
+Â@+ ,"K
!B, ¶6D áQÆK Àm¶Ûm¶Ûm¶Ûm¶Êªªªªªªªªªªªªªªªª«ÀÌUUUTEUUUUUUDUUTEUU\$$ÅUÀÀÍëzæVæ¶Í¶îîîÛ»»µÝô¤«ÇxUS·§®g·3Þfów9Íæï½îûÞë÷>óÆÛ;5\ÈwÐè8
+ãI0§ÌtV1m²CxÛbágbcf«õº§!\r1i2ÃùjÆ-¶Hal\,ìLbÕs!Þ·C BTâ$+F2m&X`Â1Ò-XŶÉ1ãm
A®d;ÖètJD
qÈÆM¤ËSæ:E«¶Ù!<m±p³±13UÌzÝ S®9É´a
+|ÇHµcÛ$0Ƕ.v&1j¹ï[¡Ð!*qÇ#6,0aOé¬bÛdñ¶ÅÂÎÄÆ ÍW2ët:%N"B¸äc&Òe)ó"Õdç9Îs⪪ªªªªªªªªªªªªªªªªªªªªüÂÌUUUUUUUUUUUUUUUUUU\$$Å]Ï;,l*2Éd±°P L©°FÆÀÈ[ ¬ÀÈ[@l[ ±°P@Éd±° £P@ ËçwyÝ篮ðÕú>Ã:|?¿'·)_1µ¾qQSÇ9Á\¶·WmõvãÍõÌ¾ÖÆ³Ù¸¼å6,Pe³S3-¢¢¯½wºÝL³MõÜÎnw`Ñé÷Ôö¼J#ékSxO{.eU^ówËÏ
+9g}Ëuòº:+[pUëñå}ÓvîewÜ8*Áç{¾0æ§½8ðzà´Üñêñ×¢îÔê7¾éß[;
Ƕ½[ç2ãÁpeiNSÜëÃîV·)]õæîÔ° pBH<xÏvpáÃ4
+T@9"£4ÚTC á8,TUdÑLwm¢aE8sfi¼ääp%98(EÃ.ÇæÎ8sfɲjCÀ8N"N*í!$H*T*Y,¤¥IJRR¢Ë"Ë"RR¬b¤ªRªQP©!0Ébb¨¨©R)RK%
+*T¤²XYe*R¥Z
+*R©(©JT*)*T¨¢TT¥J£¤µQCÑfShÒÖc2sIIUïI>IS§]a¥ðɹª³O_²üm¶ª«ù sÞù±´ÚKt$ùþ#üßܧó¸y~ñÄëêp±ºív¼_,ﱬÝÙ4õ;fÛ)q·Ó~T=ìm.y뮼{èRRQ)*J\&Ïs¹¡ò*§ßøO?OW}û8êôuv{ìêÖe|ïçÍóå«vm[´[mjÝ¢ÛkVíÛZ·h¶ÚÕ»E¶ÖÚ-¶µnÑmµ«vm[´[mjÝ¢ÛkVíÛZ·h¶ÚÕ»E¶ÖÚ-¶µnÑmµ«vm[´[mjÝ¢ÛkVíÛZ·h¶ÚÕ»E¶ÖÚ-¶µnÑmµ«vm[´[mjÝ¢ÛkVíÛZ·h¶ÚÕ»E¶ÖÚ-¶µnÑm·<ú÷óÏ<óUUUUU]UUUUUUUUUUUUUUUUUUUUUUUUUUTóÏ<ó
´É$f[m¸I$32Ûm¶Û~¾~ÿ}ô=z¾½5nÑmµ«vm[´[mjÝ¢ÛkVíÛZ·h¶ÛëÇ^<xñÖô\ëÇ:çdOÉûoÇ6ný}ºð} HHI'æ¡SçyÌïÄ1*T¨T¤¤©1r8\mE)Uº6ÛDq=ÕR¡ú+ò«ôYùÃê^Ëù-
+kZü6ßÜÿ6d¡-¤¥,Yd)J)HR¥Ú)d¥,¥%´)J´-°¶ÊRJP-¡m
+ýÇøae%¶K,²¥%´,¥¤)JKh[BÚØYe!m
+RmÛml,²È[@²Ê´-¡eLcfafÄOGõõþ¹Ïõé,²
´,²
)Ki,²
)B¥´¶ÒÛ,¥´)K-¶ÒÚ[Ie¶Ë)m-¤²Ê¥f`Ãfc3¸ôVË-³CîúCôS¬ëQ×%ùqùÎ>ìy¨ðѼ}1å+ûCZÖôlô{¸LlLLÄÁ$`ÆF2É0c`É3$É1Ã0adfFLÉ0cÞ~æ&dLdff1&2L333ÃF`É33ffLL3,£&CÃà 0Ì00ÀÃ0Ã0ìJ±£æRYhZYK,,¥
+R¥)B¡KBÒÊRÊZZP¥¥¶[m(R)im,ÿ#X1(#b",X1EE#E#DPEøñ5÷ÓjLf4õ7ݳïÓS bdÆI$aÄccÁ2L&31LÈÌÉ0aÌ1zµÛò&L0É00É0à fs¹Îws¼sw9ÎyãsssÁç<çç8w;çw;yW8w8w6ó<yç8w:»®çwsss¼xñÝã¹Îws44hÐihÓZÑ÷ï×>ibÎÇÊ£ª¨#"úAûD¨~Ä®PR("ª#\ÌÆ31öñGÃ&Nôyñ<yÇyN}:7àI~jj99\ÚRYe)JR¥)JRÛJR¥)m¥)m¶ÛiJR¶ÛxI&¡ñorZ²ß(Sú¿Ø}³í31¢kìÛ>æ¦3É2dÉÆa`RJRK@´²R¥Ú¥ÚØ[e)@¥(жßþ»ë0Ì1ÆIR²`R)d¶
´-¡m
RÐ¥(Ò[Kh[BË(KhV%´-¡e%)@¶
+ÚÓô¶Ox~É>ÉGÊûì_-Ú¥ö*XÉ,AO±RD>ÕbS
X±KXQabLX*ÂÅXXF,*ÂÂ0°X±V,IÁab1`±a±b0XF#"¬,,,,Ff#
±c0X#b,µR©HX*D©KBÅ&bQLF,ݢ̡P´¨}*«B:¼»#JÓähÚÍ1o¦¥j#zÍîdHñ "õdëÝ⪼¥X/Z3Ç>ûL´ÌÉßHñUUUUUUUUUUUUUUUUUUUTÍÓ¸Q°!)gÍf»ÎMÚr$2Iä|w¹X1RÃm¨o'>7
+Îm4Í$þ+Ð!Æ÷T+MiR¹í¤[ä¨Ìf2"³Q)-têÙJ¶Û5"«§ÌÕ#l¥»Urß·Vi"]Ñ7ÚcMÒü
+¶ªªªªªªªªªªªªªªªªªªªªÏ'¨í;afáÉúQ#f]Å5æÄñ$ä¿OÁë²d&[HÁ"<¾Ã\C~8ª* 1ÏsáaÞ¹)ý!!é!<f5ðÍÂãYlôÃé¦Ù³M1â*¯ÊlÒÇØ¡ßS)Úg
+{ B!Þ<iºáɤÛß&ï§$oÌ÷};så¿;ç30>`gÿBIJ ¼´MÙyÊdæó0> « FM9Ý&Ïä0å%ùÞ98R0ÃKòÓYíÃ!!÷Þè¤IÈHÚϸü;µÛoÀï~{êÍL1óEj¸e¾ÓVc4F%Äu¢Vª÷xU&r0ò<ñs#Ë8ªªzÞûªkq×{Ã-·ÓÓÃGÆ>Eg
+5QþXú¨«ÛÓÊ'C£[Ì7Þó\vn"ÄDuÍUרù;ç+ë£ Mk1NS7~<¯&pë¸LÝ÷s©ÃÖU¾õr»gmº¸µ·sMÃ]K¹s®åbu̸Üw5Çuß_P{Þ9»»7M
+
+CCf!{ÎkbÄJêÍÙ5g9Í»ºnͱ9À8C9³s0ÍÝÙ½¶lë¡ÑÓ££cf²?O<»éáݹ±°Ùs[¯Vªw庯<ußKÛÕùÁì=ËÔ|QcÆW
+8±Â,Ep£®uÒ¢ºTQ×J:éQG]*(ë¥Et¨£®uÒ¢ºTQ×J:éQG]*(ë¥Et¨£®uÒ¢ºTQ×J:éQG]*(ë¥Et¨£®uÒ¢ºTQ×J:éQG]ú>|#$F@=ðûã×âüs¯;ËÛÞuçxë¥Et¨£®uÒ¢»ÙóçÏMäã"¢×ø¡»í¢Aó$ûáþ5UUUUUUUUUUUUUUUUUUUWãçÛÒy7éûî¾]Q:_&º3Èqçívܱ}
+¸Ì+vòo¼MêÖÙt[ÄܹÞ
+íV;Àüß`Êò_Ïܱ¢?Jªªªªªªªªªªªªªªªªªªª¿cêXÃ
+ûOÉ.Q5»{h¦Û[DÚ!,®î8è·¯¡Rég½G8Ìôêwì²Zø_jê_Æ]k5ñÐu=gÎ$¿©õI¤ý[øUUUUUUUUUUUUUUUUZªªªýz7Û5¼¬ôòÓÒ:ò¯9åí¦µÓÙ2¾I®É;{y=;:©oyÖìÖ]f8ÛW°G±'·RÉ×yolõdߢrú}Ï>·ôîèðξùù=ës¡ÓÑ3ÊØOv½Ù©®B;SMdÅ_9]f±ñQ)$ý*ªªªªªªªªªªªªªªªªªªªú!>v/ùOÇ éÛ´ìsÈrEÞb,&ýPöAÊz¥C³»»2¸¤1Ìs«`
+KI ×Sª'KPîÑÎðµÎùM:aÖ½×Vy6º×TNkªçhóî·VîO7iGî©à|[ÁÈ9Ô#HÔ·ØÜ¶t[VÒÛÄMëråÉë;øÆ:8C4÷÷Úê2½ÚQxÏ£®u;§ ¦¯¢ÓÒÑÐÉ2bu¦áã§QÓÐÓF»'ÏíÓ§LÆxWÅ7·s¨FÐööõõ®î©umó$Û×:Õ¬Ö´ñªâ©bÊe0ír¼ËÕíç[Ün{VI}a²úY±ìÖH
+
+ÍY;ê¯Ô±4Úê[ï!ÞòN°,K'hG§s!|osñ³OCQ=_/fWU_ufx|¼<;ñÙÏ_%Ë:Tu«æ,ªg¼¼ãQEÇ0ËLGc¥-´ãWyÛbF§¬¦&Q¬æõäÆ#AÚ²pÍiE¹®çÛã0DÊÒÔâ½í·ÃÕçX´în·¨f¯"Ä`óÌÍð¢zÏ'yÛîyãÊ<fJÅZµõË©åG¥¬Y|ó'±-Pæ<W98ñTÔâÔsøMÙQ;.;ÍÝM#$*ÝÖ¡»º¹E"Éì[5¹×4U;Û¹9¹kL´óFm´ÇrûÌOôïñéãǽ=å<x' xyE¬}JRÙcë-¢(zIè¢">£hAAY
+Q¯½m*WȯÌ\nzçyNo.ìÝn:éwF´ÂR«Kl;'ïlQ}ë}_wªÄGRÄå©ZÑCÓÇz{ÊxôñãÞò=$òåHP=åzÙQ<VÆz[JMÑTX±SR´Xzxõ}éíóiïzwªpôñãÞò<Ä<¼¢ÇÖ(->²Ú"z÷,_#ê4U´½³.UO®pwí;µ9õZÝ
¥¨MÛFèÝøHøÞü»jñ½Ëw6Rh$¤ÓCH` aô:ñð¼xñãÇK¦»äöÖ{ú2Ñ!¨f
C4Hd*¢C!PÍ
+hÈT3DB¡l^
C4Hd*¢C!PÍ
+hÈT3DB¡$2Ñ!¨f
C4Hd*¢C!PÍ
+hÈT3DB¡$2Ñ!¨f¡Áeèa°Yzl^¡Áeèa°Y{¾ß{yî{æI!£$F@|ü÷ççùçÎ
C4Hd*¢C!PÍ
+hÈT3DB¡¯<xñÔ¼äç\çtùÎxëÆmùÛS6¿nMúúÄ'èäüÅ4ëæ\¾q8zB<Þr¦§z¼Ðv¥XñUª¬«ÌË:Dãq)Ó)¼q:k©:Åó§!ouÐÌ_A\ÁÂ
+&ÃA&dÐ-nÏv?]DiH0öä¹·$À6"¦j$üIÈ+~æ9$&Dâ)|ìÄwA3`RÃMh±mÃSu-õÜ×QQ1ÐêtuT¶H}m_.9ÂÚYæ©hf34ã÷IQ9&²úÃÞp³uÄÜ
+ÖêmÏ=ì$9#5è`ì¢D¼Ý¦¨¶9ØmÉ'7¢Ë%)*²¦â6Ø5Øä#BØí5óìïŰóX,SÇZ¹*Km´*R|åUUUUUUUUUUUUUUUUUUU_;Âo²n
+ìÐr7£f+n£|âo¼ª\bL²²b¬¬)p¥kxÓA22,Èe0X,ªX$Ê07żMÉoaêä8Åpc ÕÊr.w)ÅTÉjÚLé:»ÈGHèzâ;¼;÷Ye°±®²zý98ò^ÞlÚSg;¥ÕpÜmyÂ6nn6ÔM
+O&òÈlÑ©M<·{jMDÖÏfrÀ1«Ô;tÛnªªªªªªªªªªªªªªªªªªªªÖ!l
ËÃb×½Æõ½ZØÚ6¨Ôij¢ßc|ç]TãÔókÕÉVõSÿoþk÷?ó³ÿÑÿÆï÷þÇîïôñû^Ü«Gׯí_Ý|s¿ï¾."Îâïã~ÿ7ññOnÜ«Gׯáü|s£ß}±qhýîý÷íñ~ÿñõÛõhúõû¿`wñ}ñ÷ÅÄYÁü]üoßæþ>)ãíÛõhúõü?`t{ï¶."ͽ߾ý¾/ßâ>»p>^¿wïñÌþ/¾>ø¸8?¿ûüßÇÅ<}»p>^¿ññÌþ/¾>ø¸8?¿ûüßÇÅ<}»p>^¿ññÌ}öÅÄY£÷»÷ß·ÅûüSÇ×nÕ£ë×îýþ9Þûí«1+õݬ¢¿º¼6gåCy·ÌûY§6ðÙ¡¼ÛÃferé³2¹tÙa¹tK¶D»a¹tKË
+Ë¢]Ãÿ¼ëÊÝÒhñÓtÿê7&¥å{½4L<é:y&¥å
ZfDÃÎC§x±êß(Ó7¦0O! ñcÕ¾Q¦oM:aBâÇ«|£LÞ&tÂ<ÅVùF½4L<é:yò3zhyÓtò.MKÊ´Í&0O! ñcÕ¾Q¦oM:aBâÇ«|£LÞ&tÂ<ÅVùF½4L<é:y©ãZszhyÓtò=[åfôÑ0ó¦éä ,z·Ê4Íé¢açL!ÓÈ@<2y
+V½4L<é=<ÅVùF½4L<é:yò3zhyÓtò=[åfôÑ0ó¦éä ,z·Ê4Íé¢açL!ÓÈ@<XõoiÓDÃÎC§x±êß(Ó7¦0O! ñcÕ¾Q¦oM:aBâÇ«|£LÞ&tÂ<Ã'ÕiÓDÃÎCÓÈ@<XõoiÓDÃÎC§x±êß(Ó7¦0O! ñcÕ¾Q¦oM:aBáÈj´ÍsSÝóñ<ñcÕ¼£LÛ4L9Ótò=[åfôÑ0ó¦éä ,z·Ê4Íé¢açL!ÓÈ@<XõoiÓDÃÎC§x±êß(Ó7¦0O! ñcÕ¾Q¦oM:aBâÇ«|£LÞ&tÂ<ÅVùF½4L<é:yò3zhyÓtò=[åfôÑ0ó¦éä ,z·Ê4Íé¢açL!ÓÈ@<XõoiÓDÃÎC§x±êß(Ó7¦0O! ñcÕ¾Q¦oM:aBæäÔ¼£Ow¦0O! ðÉä5ZfôÑ0ó¦ôò=[åfôÑ0ó¦éä ,z·Ê4Íé¢açL!ÓÈ@<XõoiÓDÃÎC§x±êß(Ó7¦0O! ñcÕ¾Q¦oM:aBâÇ«|£LÞ&tÂ<ÅVùF½4L<é:yò3zhyÓtò=[åfôÑ0ó¦éä ,z·Ê4Íé¢açL!ÓÈ@<XõoiÓDÃÎC§xdò3zhyÓzyò3zhyÓtò=[åfôÑ0ó¦éä ,z·Ê4Íé¢açL!ÓÈ@<XõoiÓDÃÎC§x±êß(Ó7¦0O! ñcÕ¾Q¦oM:aBáÈj´Íé¢açL!éä <«LÞ&tÂ
BáÈj´Íé¢açL!éä <«LÞ&tÂBáÈj´Íé¢açL!éä <«LÞ&tÂBæäÔ¼£Ow¦0O! ðÉä5ZfôÑ0ó¦ôòCU¦oM:aO! ðÉä5ZfôÑ0ó¦ôòCU¦oM:aO! ðÉä5ZfôÑ0ó¦ôòCU¦oM:aO! ðÉä5ZfôÑ0ó¦ôòCU¦oM:aO! ðÉä5ZfôÑ0ó¦ôòCU¦oM:aO! ðÉä5ZfôÑ0ó¦ôòCU¦oM:aO! ðÉä5ZfôÑ0ó¦ôòCU¦oM:aO! ðÉä5ZfôÑ0ó¦ôòCU¦oM:aO! ðÉä5ZfôÑ0ó¦ôòCU¦oM:aO! ðÉä5ZfôÑ0ó¦ôòCU¦oM:aO! ðÉä5ZfôÑ0ó¦ôòCU¦oM:aO! ðÉä5ZfôÑ0ó¦ôò.MKÊ´Í&0O! ðÉä5ZfôÑ0ó¦ôòQ}£ûÞwù»¿i»ú
+Ýݸç9»»»»»»»úðýû®$ýL¨½°öýÎø R7öjªªªªªªªªªªªªªªªªªªª¿¤ÔtBH~Û~YÄ'!ÔFó&¤Ô»RlnVÄHã}Î&QÀá
+Ŧ!kYS0)V²Ú·Z³×À¬ÁC2©H6E#8NHN²f¼¤FM
+@®Â5fÉ"1`£ßÛ½'Ä'Ë k$é¿_jI ûm&íBß½¶Ûm¶Ûm¶Ûm¶Úªªªªªªªªªªªªªªªªªªªªªª½w½g®í»¾ °^B#&CBh±á²àlÉ`Ì3ÁB2±"Pɧà¶é½$£nåMB¥²ïpfbÉïbD´ï.«MâI÷þ÷ÿ£ßuUUUUUUUUUUUUUUUUUUU^qúíÊI$>¤örãâýg,ÎÏ«hÛîÏs0kV=©¨«®"ãzá«´æ[:Þq;iGÙe;kml}¶Û·ÎLDiQ0ÔµTyÞó»Ì:cÃÛ½/9u39Ï'ízzá7&5ÌLäèùc¢¼k}»>ó¾F&YãGÔ§c²ÌÁ4s}åDå5Zj£¹³Q-
G_wGMöhöêðÞÖåïpN{½,O·RÈ»Iq¥ÏA"Ĭ[²MR%¼]Ùǽ×îA=Ó¯kïz@ñêO}_{¢'©mO[U|OòKZ+QP²1óQ¯³Ë3_aqÂînÝܵm¶O@âx[Û^åñ§»:Åãoj®ÉéãÞò>óïO÷ïzCÂÈU
Emö
+«é45q[kª«¤ôñïwÙKî÷=¯yéãÞ<ú¾÷x¢'©mO[U|Oò$ðx<|ÒÑ<ª>'ïÐ Y=ú6èÄðR¦ÁîF9¾þD· 'íÉ$/òû}¯åÏ;Îó{®w{Îó{®wzSn©vÛª]¥6êiMº¥ÚSn©vÛª]¥6êiMº¥ÚSn©vÛª]¥6êiMº¥ÚSn©vÛª]¥6êiMº¥ÚSn©vÛª]¥6êiMº¥ÚSn©vÛª]¥6êiMº¥ÚSn©vÛª]¥6êiMº¥ÚSn©vÛª]¥6ê³çÏ3±dÞû»ísÛÞwÝs»ÞwÝs»JmÕ.ÒuK´¦ÝRí)·T½óçÏÞÛ9'k*CʬÉxÈH~`ú*ªªªªªªªªªªªªªªªªªªª¹&Á'ý5M¥Õ1*k¾^3
+l²eêÉ,Àa»°M}aÃfBS(ý.W¯8¸kË1õ2þ;VõÛhÞÝ>ÎÎFáøT*LÕh²É²´ÑZV&CËïÊ
+$'ÝÀûæÝÄ1û§Ý¡%é{ÎK°Hp¡ùÀ îã¡@Óù3UUUUUUUUUUUUUUUUUUUvúÁ~§MfÛ1SϨ«UdS"¬¥>¨=]»\
+ÊÖM$`Ú!S&D¥Ò¥
.¿rªs©:ö;3ß¾-õu¾AÕ@Þ*ªªªªªªªªªªªªªªªªªªªôÎä((3fÌʦo¾¡²¦·Ñ6
¶Ö
µ#³*¦ûÞl$2òU¶Eµ^>=°Òvwy7jÄB'r{¹'?IUUUUUUUUUUUUUUUUUUUU$Ø@>4íØlFno66ÔhGÍå¤ÐO;úöíâxðé½ìØEæÎüèàEñåIÎ
+>é0ÛÙÓ;ÈÈC£ÊÈn´è'MfÂk{)³a5¡ÍìI)ÖäeRb"du¨· lÍî
+Y4Ø/[Ä×r'z+./k7Cá²)³ÃݰD+~1d¨Nä5¶;µ!Á&ÔÒ´TÔKQÆÒÆÕ±KX#zMÔeTÀô>·Nsð]4¨Þò[ÆcÄN[D9±¹!0ɦi;ó¦Â61ßR$ÍÖDo0GZ×6#Dã3¬~]>ÝÐéï·O¬»2©N}µø±Îõä娨ªúh²ÁÊ[e´qÌ{¼åjw^µJeSÆ®Êxç3)Å1b¶V0áê;¼§s]Ã{mÑæqÖ*Nù9í«:4|c·4¦æoO"ÆZ¡ãG¾ñìós'½mðï';ºks
+¶¢Séæ¾ÇÙ¶i¢f¢Ç¤Åfܳw²Ã%½Öãì7Ã
+*i)- 7æ59LGiäRÞ´ÓÕÌJN3DBís=G=»UjÛ éÞw§yÎsx'TêÎéPT;:.U*Îí*ökV½iQÝìâtâvuaÕ^¬çNóçsæðt/Ì©%2ïÍÏÍÌܹ@ 4äå±Ë\¶q×98¶pãäÕd-*ÄYd*¢ªJ¨U*KIU%TIUȶPEDB,"bHU*Ñj*¡e[Ñh¶IUQT*¤´[Ë!h¶dIeHªÔ¨HÇ'ß³I%¶Â ¬?D ¿$oS·+naÔ®TÉvÖªbi£8èÜ¿Ûï}÷óvs§iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiw%ª¨ªªªEU±EDQTW¾ç±ö{yÇÍæsCHDCHDCHDCHDCéú>gÚ±üIt-SàÉE½½ß
ª@gͪgY¤m©]µ}{q·IÛ{=+tñéðbÁѲS²Ç½¿_T/¾ßiÞÜÕµÜͪÞg:µ9ÜÅ"KùUUUUUUUUUUUUUUUUUUU{ÁIA@¤ LöwÝݦäùf¨No©©ÍuÑ®25d#nðÐi×ùIúT²~±¼}ôq;Â}%ss¤ºÍ±(iÉÖn®#ÔYOÔ%çè|þ\Zß1lD$ÌdÆ"¸Y(i¶ç×ɳ§~¼CÕÂd
xÞ.¸ã3±¬±¬U*ÔE[®þ<]åmïÏx^î«Í¦>zÓ^WQ¦]äÝJÕ -ä¨@ä¬û!M¡ããÇÆo±gÉJÀPÃsNÜxQlJ }û3`BYI!ÞÙ:ý
+æ[\ùï»ÃãÛ>Pù÷I1³µµ-°dèç®7%e¡ÝÞÉk¿¹=ܬÎ|Né¬2'Ç'}ãÔ¸&ið°»õ²sÚc¿ÛóMvÏq¹|Y&)óÒeZ×Äιë§vøâ}OXHFNwô?oªªªªªªªªªªªªªªªªªªªªþ~wó~â*T<µ)6Nß#ÅÙãðrk6Ûlf3-ñ*½-»ÑD>õN*ç´Ô
M¥uÛn\N®Ní Á¸£ë*ÅÕÛÌÃja`Å3ñ½MW¹®qqÜÁGlá£ÓÊ'w£:éÛ£»³FÙ§N£j6xïgFLzÞ÷YçÞó̯`¼Ó0ÌXÄǾ¥=rc\Äý]5MrRàÅø7·y·³~3]wᯬí½ç)êõ婽ôïMz[Xs¢Înâvjmä,ʵbbo5©ÍïÉ$®íͦY!!÷pç{Þ÷½<yg½âzO)à<úÄcEO¡á_ZØÛ[}ÞD´¥-Q£J>ËrѨ«=c\\F8ªê½m£ëmõ÷¤ïm(ª*Åâ*h{Þô÷O{Þ÷§¼ª{Þ'¤òIEô}F11yg@ÕÕUUU
+Y¡ï{ÓÇãî÷§¬ï=ïzxòÏ{ÄôSÒyõÆ1EOâyÐ=äUQ¶eÏs=%²æp·xMë·ryë¯/]ô×Å[ñ¦¸ÒH®$+$âIR«m¥VÛJ¶[m*¶ÚUm´ªÛiU¶Ò«m¥VÛJ¶[m*¶ÚUm´ªÛiU¶Ò«m¥VÛJ¶[m*¶ÚUm´ªÛiU¶Ò«m¥VÛJ¶[m*¶ÞìľbI|¼»»©U¶Ò«m¥VÛJ¶[m*¶ß½=¿nÙöWp82|$ç7¯¯¼¸kKJ¥Ca68ê1ÍÕÓ"%i¬ïßÞð3μü¾8ôòßýCÙyaðÓ½;n)õXS&=09¥ÈÓIè©·!%3 ¡!Ù!§ÌdØVS¹Ù:æÙ¾NnæI>Ú}c·¾¤ÑAãÉf%[VÚ#ÔËe³QLÖ·ÄdtA3wËÆîÞ~ÞMfDá¹%döfÞj^o{%IUUUUUUUUUUUUUUUUUUUWàøà4ãO«sædKfàøù)Pîáê Ü£
+Ãáç½§W¬ Àm
+ÊYl~;0vdê(M? °ø_CbÖ{â2©^2TCÞ7×µ«ÕµÄ²Dé4#ÒâN
+wñg~ûYÔc1bK(4§2~Ýù=ï£!`pC`éqÌ7NúíÎÜÑÌÉÛ)ÔA»$Ý^ýgÓ¢Â8î]áÖF{ÒLTu¦§{õSyzuzxY¹:¶ÃEdMM>~^wÞ:ÊQ¡Ð¦£ÚÎÝ2|kåñéåÎyåëÛ~ÞÏ¿>ç·n,3Íã^{ß^®{³Ó2Üç·®(©ÛPS¾tÖ·[».[m·ËUS[Æ·ÇgDõ±É3vË|ñp{Õ¹¸áb(¾ÎsÚãf'³î{:5½ÎøQí4_yÏ=Ã]w2ºtòAöD=ÞvÚ=zû1=ãÞó4n£Ü*"8ss¾7³×4¦æ\neWNâε#Ið¦¾ÞÔmÞW6Nm-¸õg,Mb|¤rd´oY¯nHÚÛ¨ºÓknzܶfg/¸ ïëïzxñã¾}ïOIé<@÷QõTðl$ÄómTo®f*[mL¶Ú¬W<n®>ÛwØeÛrÑÜËEåÍyêæÓ¶Yä2ñÑzÛUàh/ ï{`0;çÞÐ'+RUÇÔ¶«àðn¶Ôv¸h0<wϸ{Þg;çÙÖÇù÷´EôÇ
UOCÒzO=å*»*»¦£¨[Gkhud¤3ÏÝßs\dɺlÓLcnOL½=¶ì¶[e¶[e¶[e¶[e¶[e¶[e¶[e¶[e¶[e¶[e¶[e¶[e¶[e¶[e¶[e¶[e¶[e¶[e¶[e¶[e¶[e¶[e¶[e¶[e¶[e¶[e¶[e¶[e¶[e¶[e¶[e¶[e¶]ÌùnËe¶[e¶[e¶[e¶[e¶[e¶[eôÌ.wÑAß
X»9d¹8ä.%JÎ_´æÞCÐç;sÏÀ#½P,C´ÂÈ&R9!¦èñáÎ;å®UÞ&M^jLÙ;gR©Ñm,(G$ÃMîÀ°´ºC!p2S0¶gp
+?}=ïiÔbªøùÉ|êg9M#'&b{Þº<-î&"àDçZ¶Jå²ÚªmUib[âÑ
+Ví>üN@%)I$ë O¦OüK°íÉÌ'0-éׯQ÷;¶Á Àý ¿h~Ov檳Fj±ÒÖÛRù$µ©%mµh@Ö
+ðD+¹,Iða¥Ïäèy»@f°¤s£Ì&C/PÃf'w©Äá8píª÷9ø±Õµ¾¹´wÙÓ¶z'(Î1§^Þ«~·
+öµù2-6~o¯Ufl¢F¹áÓ#sf]ô{2åþ¥îØ ¤É3Ý}V05¬Xi½éËàï
+Ð!ùù»$&üÝ'$¬»ëâ¾Ü;öÕòßjä:Ö¡åÛwdM»Òm &Ûv¾nÒaK̵Ï^éFÃ3ãnÇh/g'!°±F)¸_Ð&>]ç]!z<djBê±7CJ5>yã¯9öð¼±:u^nléÄO[»©Tܪ?îÛçñá:~?'û»«g¦"ßj%æ®
ÊZÝãÅÊQZû8tFx²QJÌ.ÕÛ±-.P«qDQ칦ÙÛFÇØ¼Æ4Üø:5¾éÈs0öÚÅÃ
+Uy<§¾²ãbøç|ù_möfw®^æWnEk-żJuÇÙöìÑ£vn{׫ؽ±{sõ|úîe> +·rtm¡:ï»Þõ¦Ìõ¹ÍµÔ®¹Ä®8VöãÍ^\qÚ)£··S®¾·´¾âÎÎÎÛëqÎsáË%:áJNΤEG¶ÒÚÒª¬Õ]·¶ÔtUPéÄïxÎNXáÃ]äãsäãsÄáÅÇd±Î¸SFÑNN8ç7ËËÇç9ÉÇç9,88lë
1ÃK6páñÛ¤©Áó1çݳ>ëáÑÓè·%VÙkªÛ-u[e®«lµÕmº²×U¶Zê¶Ë]VÙkªÛ-u[e®«lµÕmº²×U¶Zê¶Ë]VÙkªÛ-u[e®«lµÕmº²×U¶Zê¶Ë]VÙkªÛ-u[e®«lµÕmº²×U¶Zê¶Ë]VÜùòZê¶Ë]VÙkªÛ-u[e®«lµÕmºy±f}9>óØ°¿Odܤåé¦1ÓÒEëø1eK+ÑÃK±¥ÓCMÝ>?x?SÆîñõÚódäI9ilf|ÚT.àüwàÓ'Åéi£OsNIsµ9»
g$KHn|ÒhÓ@!M÷¸iìÙÅ?6öù;e5áºêÇz
ÖMRºNù©¡·Lçs¡$ßpïsJéQó·`w¼éðΦí,êm÷úø´ï¡òUUUUUUUUUUUUUUUUUUUUߢ~´ç·#>|rG@ùzMK;¿]Â;=W¾îIòbÊUªæØOÕûs'/pÕÔ`¤Þ`a¦æNì>|hÈT$R at b¤$2`°Ê¤Ì¡a[%°[BR··¦4ðﮥÓÂËÓfÌ)nfJR¥0öþsQÂÄg»OggêiKÞifc5¾ûòbLÇs¾&Ûyyyjz[Æ;ûHô°F©h5KI$j{M½Àýo~BKçÓ´®[åncQñ4áÀuÖõÖõ×[×××Yï|2¯Àøçï÷Þ÷ÞfwojÚI$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$JÛm¶Ûm¶Û>¡·ôÉLI$¶ÛzzzzUU^ªªªªªªªªª ªªªªªªªªªªªééé
ééééééW ª ª³¾û=÷ÚI$I$I$I$I$^}tºióB7¿§é{ùgé~>¥ú9èúTúÉæ¾sǦ{B5ïãû¾®¡;qì_^ïW~>9éxßc×~|ñË©ÛÊ']²¥Cú¥CÌáîãcÚ}"N¾ÿK3ß···g\^sçW¶Òâ¶Ú\VÛKÛiq[m.+m¥Åm´¸¶¶Òâ¶Ú\VÛKÛiq[m.+m¥Åm´¸¶¶Òâ¶Ú\VÛKÛiq[m.+m¥Åm´¸¶¶Òâ¶Ú\VÛKÛiq[m.+m¥Åm´¸·»1,ø_/bîî¥Åm´¸¶¶Òâ¶Ú\VóëÎsy·Ý·£Ø°~ù>=üjeÒªªªªªªªªªªªªªªªªªªª«ù¿Oòû{çñçß¹úÿ¾g²¢;÷øõøø¾1éßkèG\øcþIÚyYèõã_h>åôLXbªÛbÕ¯»¿yÑD,ý o2`_*ªª·eº26>Á«V¾î[
+;Añ/Ý?°¾Ã[> ò%u"0JörQu{Àð°~¸ªºG%SCþBI'¤ó!·k[NÕSG³*ÒªnÌÈ+°U_ÅWðEUÀñ0]ó*~¸ª¾¨äÀ÷Gt Ðò\ªtÇÕWõýárÆJ§»J§öc´ebª|jU9*§Ê¥SqàóÒ©ªU5U:R©ÒªtªJd*__Óëªã*&/ á+Ö0n´?¹R¤´=!Ϊ{íUO¼^Øõê¦ ÚÇ8êºThvªGóÚd~ØáT¨qJ§xö©îcõUMÊýÁ¤ÉC;cÇGå¥SÆ¡ójó¥{C½nêU:ãR¥CçG í*¦«Ç«*T;ãÙOÛ@TÜ^Âeì
ÇJ©ë LFØleJļe
+T¬
+Ç($碼ôªbBs»U?o«Æ3:Êz©ÔU2Bå!îF÷
+Ú¹Ô.ØqTª
+©ëa±Ñá!ê
/O@È>°ÐóFÈÒ{CJ6U! Æ*£UDF"ª¢±DTb*¢*±
+¨B!$$cDTQ¢"#UQXª,Ìc0õcuî
+È>ÄHsÀð4ì<$8;jGp5êò MT$`¯´¶KbÚ(YjZÛIÛbÉGÀ£Ca̪ò¡ÕJ§*4ª!ØãpúCÉP»ðöÇ0A°vÆ}*Üâ®Áî¯:U7nAÑ઼cÛ¥S²5J§xêãùR¡Ò1-¡ç%àJJ»©å³eØl¬9ÐWªy*C¸`*HØ|ãÞL~yì~ý÷m¶ÛjÛm¶Ûüá ?² IûbBr@ëJ{²U=Êa°Ø{Uä|qæ1ï¸?0]ÙCßÞT^ü` R¡Àx¢T¨j;(ðSQÊ(NÂ=zU=%ñªo@øê©µTëAÈj9 \Ê©µ%eT÷*CÞSÔZ
ßP¼Aó;EîJHï©*A-SæÑ¤x!Ê©zGs*§ª<ñäxëE.±*W]ÌeEç£xòÒ©ãG^ÂĦ+A°ÊÐ9b]b¡mU¶Ûm¶ü}Púáóæª|yR¡Þ£Ö¥Srªn*§ wC|ã'£bÊ)*íÑÜ-]*Ã)TñÑ¡èÃÀÔ:CÀ>Èz¹Ðr*%Ô0_Â*?T[Çmáàå%¸*¦ÄdëÞ?pnArMJ§PðT'Hê9CeTë´¹8öºº=ÑÞ<ãö-R|ð¯paY
e`¬ñITô4©Pâ(Å*Ô|X¢sЬ=Ñ¡íŨ`íCIPïìwGè*¯-*Æèf<ÃÂ<ìªj.ú¥PûeBÁèëUN#hö"ÕBT¨lCÉlÄG1åEUWêGd àlÄd7uª
+ѺJ¥#ËñãÈ8ªëªU=d òCÇG1ÛJ§TO
+ÆÃãÞ¾9Ò$æ
Uú¡íÚ©åG¿=a¤¼C!Å%0adaæ$b1&*z#²{¨¡èÈÏTn:vh*±)*ÄF¢¯*T0.µTÝ*(ó|zãØR¥C éG{TªhZMS²ªy8ôªd#U<Ú°m%¨äÇzÚSÌ0wª
+ÇJ;b®C¬sª®²FãtcÏGxÐû
¹R¡Â©ÈzÒ<¡´±áÌvGIWÝb\Àª
+ñÛU:d7F!'Xä6@U<©p¥ºÔ<Îb`ªB%ì)½Tõàýawq¼w'${<cZ£¨i~t©PúÊ¥C©# ïÀ<4ªlãU*¡ºå#ÂNñUqz¨ÕITúãÔU0`ÈéG(ö"¸ÞLT.rJ§ÅªJ»R~<}´ÿl}ÇúUUUUUUJþÖ)þD?ü°5Dþ¯ýL
+$ýÛ¬ÿî\¾¸çù#ÔÔq)EfP,À-ª*¡öU˲ÿÚ·ÄHúy×þÓ»jÕî£Mñ.yKùÅTðb)¿êÑt?þb²L¦²
+!ç
+Ýÿ
+ÿ ?ÿ¿ßÿÀPÿß¿à EðÁ| z =àÀ ÒªCï° AT P¥T Já}
+ Aà ãž 0
+ØÁ AÞ î û P úx8 4R¤D@ `EA =4§xêWL°Ëf@¹AõÜ p èøÀd9X (@Ṳ̈WÖ@M÷Àù`¤úÄ O §J,Ú, ×`DLv¹À 2°ÙJ©SP E?ÒJªL4hɦMÂhÓdÄh3Píªª§ú¤@ h O)&UMMIêh=@4
+¨d TÐQµÔ6
+=&iêhÚG©£ÊDB=@ ÔÐ ¦²B~dIþ²«)õÅ_ådWû¨«"¯¬U¸¬¢2*Ý%bVØq[¦VfA?ÙE\IY
+2%seC"°cùÅTþ$«ñ©US¤¢*öKî Ue%TÄ ò¥Júo¦Ö©¸¨ºÌIüNõôþNuÎu¹ík[ÛknëùïlúÉYÖÎÛmoݦîí¦É6»íøL©ÍÓèús}ÖåîÚÎÕÝiƦuWon{DêoÛȲTó}·
Óã²Ô[-øWpÍWM2¦OÔâÔï'm©âÑn'SÄù>îäñ>MÐâz;î¼âÒòi÷'Ôíµ4ôO©âwë§¼îäÓîMÞäÓîOâbxN'1wwz?{OÞO©â~NÛSO0ÝkÞó(Þa¾ô7[Z÷¼ÝúÔâq4ôM;Éâ|wrx&ËÉÒßF^OÞ¾L¤ONäÓá7{}Õ<O¹+Ü'ÉâîZM=O¹4ûîîOä÷\Ä´©§×}É7§'òx¾÷o5÷|ÚÚÚÚÃï<nùós³sÍ{Þa¼Ãy»ïyókk7Ýaï_
+æÌ7X»æÌ7½SO¹7ÝÉŵ۳-²íÛÚvËTìÝ6Öô\Û
+An.ÃbWgEÕ½lm¶Õ½ÑØÛm¢[[k²I×U/jâÝ6+È
+å8ÞR)Û7{WÚ¹oE¼¸V+×·®öÅÜvËÖ˺ºSnô»n »ÀXIoP«yN7ê¦Í½!.åÒöÛ½ºAð¸îÒZÛgZì{ݧTËÜwu-©^K»»¹·ÀmäHÛl%kn¥ÝÜ^]ÆÍ¾m÷wvwtyï>|Õæ¯=çÏ
+óço>jòTú PeQUG¼T{ÁðTUPU@P{ÀHUQïaUEUðUHUTUT÷¡UEUð{ÁðT{ÀððUTñ@¼ðUP ¹ TUPU@PeQUFfgØUEV¶ëvë|s^uvîí¯WYZ ÊCÆ»¡:WÆï>6>Úè6äºÎvîÅ|0ì¾ÆÉ8¯ç°tc¤¶ÎÛo6×nÓwvÓdmÝÔú§4ë"';eâo©NçÎmÝAζºIfÅÜ=ÍÝÚî©Ô&Î+¬ qÏMGzt}F/cdmµüöë&^}g[;mµ¾Sv»¶$ÛlÖî§Õ9§tívAí±ÂåìlÃþ{ õ/>³¶Úß)»MÝÛMm¶kwSêÓ¬ì
Wè÷+cr6ÞÙÏç°Y2óë:ÙÛmò´ÝÝ´Ù&Ûf·u>©Í;¤Gk²m/cdWóØOºL±½³·æÚíÛwwt6Iª÷p7ÚSu²ïQw{Ö÷{¸0³y,Énæm ëììí»©%L2Ig gîm0îÎî·.]ì'gnîæ¶Ì0îη.\0ζÛrÛÆîöu kt¸wa;80oºÜ7s°ÙÖ⬵òâ>ãÖöw±¿Háâ¿Â}é2Ï2[³Ûëy¶»vÝÝÝ
+oÝÔÏ$ædDçl¹I\ëaØÜ·¶sùì'ÖL¼úζvÛk|¦í7wm6I¶ôÞ|&TæÒ#µÙ¸]kPNqò×càaÙ{$pâ¿Â}Òeì
+½o6×nÛ»»¡²M¶Ínê}WI½z+l¹yÖ·«¯'o:áv³Ö>q¹ÝÝHó©kÝçã¨'»ÀAÝÝvÔÞ®ÔêÞë£<8m»½½î}¯ÛKiVã3rR9¬©$Ê#W6ªU]@$»¦ÞçÖÝÖ7®Û\ÖËWZ¹÷5gs 5½¸v6HáÅ=û¤ËØ;zÞm®Ý·w{i²KÝf¾á§4ë"';e
+±ÂåìlÃþ{ ÷I7°6võ¼Û]»nîîÉ6Û5»©õNiÖDNvËÄíÛ]Ö÷{¸0¯y,Énæõ¶·gga·u$³iPI,²»Ýõ¹rïa;7ww9¶au¹rå·;;»ºÜ¶ñ»½h gÇÝ&nØNÍÍÍnÓ°ÝÎÍͽï¤ÉË/³®¼ygìÎÜ·nlohÞ<îwGݵÅS&ÙÜ\ápd¼
>éÞ¦ékß©K´G½'gtxû®¼yÔw Ù¹Ås$æ»;³;:¬î=,ì½®,8³{õx÷»s
Î\ápfïNù$¼¥±Å£}Úúçn¸§w8²^qd9ãÂ[S}ÈÞ¨÷KÉ%ä÷z½]s¸qNÝxòðúçn¸²utÂ>çwÖ¦èïûÞ¥/R©K´G}¶¦ûmMöÄ{ßD{ßWû¶¦ôDágvw6û:Ç&³º8²YÑdá÷gn¼yÝ^<;YcÎîk²ö#scfä4Îèû²õqd£'»;uŪë«vó$çIÌ0,]Í¥w{ß3k~w6ï¾{6·ç±ö}I> `LTE\ª"2I#gÙöý÷ßgÛ¹©¶côuóé
+ Ûvâ@ù¾ZÙzU!v³zêÝÛ³ºTí©M¦ÃVü»
+îF¥°â¾6tIjBnÜH7Ë[/J¤.Öo][»vsî5knIÔØjßfaZ¼mããí0[s.[rÛ/KÌm0ÎVç[ñ~!õ¿Krܸ_noßiÃstÜÜØªNõDq>³í½ÇqtÃzccÃëõ¯"½Ý,¹&¬¿K=úãï»3»;ã8¿lÎÞ´Üìîܹqý{rLïãâéÛv¼°ËKÈËvcÃwO®ä6~Ó¼3L0׺ñ7òYòÌï¾Y|ÌX«U¬mÆÜÐÞwU³6ÜN\ÃQÝvæöåKÉ.\íË
MÇÍ[)»yc·nÎ16l·¶íÞÉ[m½ÙÒÙM|ÉÇEÎI.VÛäPÞÜÞÜæâ}ã3s·.IDFS6k#nÈ\[\ÝÒòk7¸h÷7SRDøÌÆ7É,|ÚY*isé(eÒâT¬¹vëÄû¡«§Bg!¼+K®^ÜìOdÍZÜeËMÊîRËzç5¯âÞãi¹Ù¦\Ü»Ã[ÙÑ^ëÚs˽eYØ µ^{¶eìnÑôáRttí&íÜÜØkª>És³»rѪ
§5gjÝuôû³¸ÚvÚøÜÓ
+a»wµÍëÙÊçh·¢Þ6jÍméË¥·$μ§h°²^x76KwxÊ:ðIUH;-0Ìå7ÕP°«~«cÍ7XniîëpSM×ÝÆMñ³íoûä¾YruâÉ&NlãFðÍmðo;«£Ó»²év¤§3
w;¸´Á°µonnnçe³Y:wd}:Øiâ«nëÛr[7SE¤Ö=ɺ·¤HH{Îq¹ºL6î¼¢×Χy¼O°Ó\:`µØ<}sËQw=o;;Î!²NÛ½'Sx#3²\3\9ãzÛzÝ9åË"ÞSvÌ£LíD77§(ÞÙÏ£î÷JØ¡bc&áa>Õö5òKîÁ[G˺BNá
+»q(.ص¡:mtÖ)6ì2gokÔúl#X»5[G˺BNá
+»q(.ص¡:mtÖ)6ì2gokã{y»ß·¾ÖE ÕíE»¦¹2vîqÊܹ~¶Û
ÅÞ¸e¯#¶ñ~îÉÖá~¹pªýråÊU~.+¢ÃAh³~Ü'Óé$É¿´æÒ6)ô(:ä©Ëvîîî¸â]ÜqzÞt;nìIZ³i$ì
ÄÛÚ
4ÂlM5Õwe]ÎõDsöæçx7Ã37çõ¦^û»ÌìÜ¿V+9Üï·½<D{=ãMïsÖQï¾.síÇãWv<Þ3o5õ1gW¼fÞ>ÊbÁwo
+ýæâ.Ñ»òNÓ4ùÃâß¹'9»8!ß
+«sus¶ñ[yÕ#zúTëŵ¥Ý{{XØÈÊݦÚòÛv:êÑ®i¼oiw6IHéÊ%oq¢
+&óåT%·¶%¹½»´ª[ÖÞMݤdFôÅ4ÝÝÜdÓå°«ÌKìYÊ®Lj[+ãgAô¨$&íÄó|µ²ôªBífêê&k6NÁ÷pÖÝSWwå:êúKoXÓNKq(>o¶^H]¬Þº·vìæ%ר$MùvÜKaÅ|lè>Õݸ>o¶^H]¬Þº·vìæ%ÜjÖÜ©°Õ¿.ÌÃ2µ[xÛÇÇ%Úa¶ýrÛܹz\¶d»ir·:ßôxaú[åÂü3pΦææÄERwª#õmîFð}0ÃØðÃ:æýkȯweË.gfÉ«/Òá~¸åã;îÂæäãLîÎøÎ/Û3·7;;·.\^Ü;ã¸ø¤úväo,2ãÇÒò2ÝðÆÝÓë¹$Íß´Âûí£ã||}˱rLCÀ|¤Í<¶âV§(Æa§0oCsm·»»´É¯BÐ}ð³7ÜÝ]ÔÝ%]UÎõqDZäs·LØ8i§Y5Qw=ÎÅ«Ckf
+7/nÒæÎy:hWÜkÝ7BDÃMæÎÕý¤URÂåãRÙ&¦ï8¹mÇlÂØÝA£{)¹V±0ÆB=Ýà Zæý1M²Ø§ö ³¶óí¹væ}Fë.ÜÉLwÞfö5<Íe<ï¼Í÷&3{·
+<÷<Í÷&3{·
+<L<ãÓ-×&L·]j°hòcÜó7Þ8ÍîÜ4òcÜó7Þ8ÍîÜ4òcÜó7Þ8ÍîÜ4ôOXñìΤ±Üèg0I²Ç,Ãr<1î<ÍóÇ!nõªÈØñ2zÞugXºtDë_$ÐÈ<ãÆkÏ&[®µX4y1îyïLf÷ny1îyïLf÷ny1îyïLf÷ny1îyïLf÷nyZãÖ²®æcÓÄâ2®æc³eM'¤açn½áÄdËuݸ4zyÏLkÏIÉ2ïX¬MOrxËuéèrIWs1Ù²ÌF£ÄÇ«æfë3ϸÌëUGzeº÷.»$Ù<·L«¶½=#r(ìý9ft:¯'¢ÎµÜî )vZû74áuyÕk:4eÛV
+LwÝfºjy»pÓÉû¬×MO3wnx;o»
n]¸ÉѤó.ÜÍj°hñ1ßgmÖn²ta<ÍÆfµX4xyçf[§FÓ-ÖµX4zc¼¹É³6v{¼æK{wzL<ó³-Ó£IéëZ¬<LwÝnÕÝfÎ3¥±Zhp>W³ö4ìµ:ML·rÜÍl¬&ÐÉÛ}Ö]Ë;&Èó.ÝZÉ5<wÝfîã±ó6Ýj²6OIû¹Y®ÆÉ|»»r6<GmyÛYWs2:MCÓ*îf6l³ ¤ôc¾ë7¦fÅ=&;ï3gMfëU&yÙéѤôËuV
+C#¶¼í¬«¹&¡éw36YÒxïºÝ«ºÍO3qV
+wÝÙÙ4zeÝË©àÎÙ}omnÇa¡}µãfË1¼ìËtèÒzeºÖ«&;î³]5<Íݸiá}ÙMwrâjx2v×§L·c¨ÐöUÜÌlÙf#Qá|½ùgZÏÐÎi¢@h0,>S§ÊHíX|¦rGj77,Âi<L:ó³-Ó£IéëZ¬<Æ÷95ÖµÔgmóÓ6v5Ûs5ªÄÔñ0ëÎÌ·N'¦[4H
+¡|½ùgZÏÐÎkUGdíÝ·.ÜaÔjO2í&Ò0Ó
"WåÚÉ6HöUÜffcM)5'ö¼í¦nfGdlWs1³eMèe/~YÖ³à43¤ëZh<ïºÍtÔó7v᧤6 ]Á1Qb¢*úVªT*,T§Õ>iU©¦æQ>YY2ïR¾iÒjtP÷Â{«ÊË,½,½v^_ßUWUUÕuNª«ªêªªºª®ª¬êºªª®«ªqUU\UUWÅUuU\UUVªªª©ªêªªª¸ª§UÅUjªUUWUUUÅUUuUH?¿,UËÊê×YV^¯V^¯UÅ«ÁE
x(ðQà¢?zUUUUUUUUUUUEUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTÿ*þ¤üSö6]MÙu?VË®JÉú¶]FFO¶]MÙu>ÙuÉY%dûeÔÝQÞfâÙ¸¶nô[7ÍâÛHJÉö˨ÒÈÒÈÒÉöË©öË©+'Û.¦ìº²ê4²4²4²}²ê}²ênË®JÎJÈÒÈÒÈÒÉ».¦ìº²êÍÖÚÞ-µ»ÑlÜ[7ÍÅFFIY9²ênË®JÎJÈÒÈÒÉ+'Û.¦ìº²êseÔÝSv]MÙuÉYÉYÉY>Ùu7eÔ
¦Ë©+$¬²JÉ+$¬²JÉ+$¬²~fË©+$¬²JÉ+$¬²JÉ+$¬²JÉ+$¬²JÉ+$¬²~}õUUUUUUUUS5UUUUUUUUUUUWUUUUUUUUUUUUUzªªªªª
+ªªªªêªªªªªªªªª½ZÖ½4 AÕu]W Öªõ 꺮«Ô5kÐ u]7²I$M4ÓM=Aèüa5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+°ÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀà ¨l ¨l0ÀÀÀÀÀÀÀÀÀÍÔ6Ô6Ô6Ô6Ô6Ô6Ô6Ô6Ô6Ô6Ô6Ô6Ô6Ô6Ô6Ô6Ô6ã9Ö¹çñë\óÎøÎu®} I>%DUúÕV© OZP½ï¢Ü÷OªIÌ®i\SÝNesE.òt'S°%*xâzO!äÂy'âxÔGS¢t$Dñ:'Pæ§2ºS¡T!Ãöé^wçz«8qÄá®ÄãMMi0cM8pÓF§i85Äã4kN&÷¡"AÃÇyï;»Úzþ«× É`2X É"cn(V 2XÊIc%È!XB2
c%#%!c(V É` ) 2
c%JH ûá>pñ÷ëyÓ5üsÆ÷wk\qîãëòxë·MmÜ÷ªªËªö]fe{×u÷E«ê7¬Ã]´öåÖJÊ%þÏ¿?>û¿]úý~»õúѸïêÓ¨ìjÓ0ºÚíÌ"Úum¬gÄöÚÝÔîLÌÎ(vâsÏtÇyììjÓ0ºÚíÌ"Úum¬gÄöÚ%§tffq@à·{¤ôn;ÎgcTN
Ö×ndYÓ«mc8î'¶ÔÙ,Ìu;¤33 ݸóÝ'£qÞpë;¢tÌ.¶»s"ȶ[kÇq=¶¦Éfc©Ý$P8íÄçé=óYØÕ¦auµÛE´êÛXÎ;íµ6K3Né$ÌÌâÀ7n'<÷IèÜw:ÎÆ¨3®ÜȲ-§VÚÆqÜOm©²YêwI&fg»
q9çºOFã¼áÖv5Dé]mvæEm:¶Ö3â{mMÌÇSºI338 p
+ÛÏwtë¼áÖv5Dé]mvæEm:¶Ö3â{mMÌÇSºI338 p
+ÛÏ=Òz7ç0ì;6¨3®ÜȲ-§VÚÆqÜOm©²YêwI&fg»q9çºOFã¼áÖv5Dé]mvæEm:¶Ö3â{mMÌÇSºI338 p
+ÛÏ=Òz7ç³±ª'LÂëk·2,iÕ¶±wÛjlf:ÒIÅnÜNyîѸï8uQ:f[]¹d[Nµã¸ÛSd³1ÔîLÌÎ(vâsÏtÇyììjÓ0ºÚíÌ"Úum¬gÄöÚ%§tffq@à·{¤ôn;ÎgcTN
Ö×ndYÓ«mc8î'¶ÔÙ,Ìu;¤33 ݸóÝ'£qÞpë;¢tÌ.¶»s"ȶ[kÇq=¶¦Éfc©Ý$P8íÄçé=óYØÕ¦auµÛE´êÛXÎ;íµ6K3Né$ÌÌâÀ7n'<÷IèÜw:ÎÆ¨3®ÜȲ-§VÚÆqÜOm©²YêwI&fg»q9çºOFã½iÔv5Dé]mvæEm:¶Ö3â{mMîêwI&fg»q9çºOFã¼áÖv5Dé]mvæEm:¶Ö3â{mMÌÇSºI338 p
+ÛÏ=Òz7ç³±ª'LÂëk·2,iÕ¶±wÛjlf:ÒIÅnÜNyîѸïZuQ:f[]¹d[Nµã¸ÛSd³1ÔîLÌÎ(vâsÏtÇyììjÓ0ºÚíÌ"Úum¬gÄöÚ%§tffq@à·{¤ôn;ÎgcTN
Ö×ndYÓ«mc8î'¶ÔÙ,Ìu;¤33 ݸóÝ'£qÞpë;¢tÌ.¶»s"ȶ[kÇq=¶¦Éfc©Ý$P8íÄçé=õ§QØÕ¦auµÛE´êÛXÎ;íµ6K3Né$ÌÌâÀ7n'<÷IèÜwììÚ¢tÌ.¶»s"ȶ[kÇq=¶¦Éfc©Ý$P8íÄçé=õ¸uTN
Ö×ndYÓ«mc8î'¶ÔÙ,Ìu;¤33 ݸóÝ'£qÞ·³³jÓ0ºÚíÌ"Úum¬gÄöÚ%§tffq@à·{¤ôn;ÖáÖvmQ:f[]¹d
[Nµã¸ÛSd³1ÔîLÌÎ(vâsÏtÇzÜ:Îͪ'LÂëk·2,iÕ¶±wÛjlf:ÒIÅnÜNyîѸï[YÙµDé]mvæEm:¶Ö3â{mMÌÇSºI338 p
+ÛÏ=Òz7ëpë;6¨3®ÜȲ-§VÚÆqÜOm©²YêwI&fg»q9çºOFã½ngfÕ¦auµÛE´êÛXÎ;íµ6K3Né$ÌÌâÀ7oémeÝ]ÝÝÝÝÝ]Ý]Ø%!<+ ,e
+ÀI$±Àd¬!B±Â±+@ d° !, e
+ÆK+ $ ïzÞ÷ï{ñE/×(¿æQ èIïÛ÷>åÝÝÝÝÝ»w at lç³ l±¬dÌFÙfÜ lçep³§\lç°eqÆÙfÜlç
+1³d±n6Y·, Îp IׯÎp ¶Y·9ÆÎplçeiÝvÙÝÝuUUUQUUUQQUQUQUQUtÌpÀÝTEUTEUDUUEDDDETDTUÜ<w<lñëxñãÇx¨ %É`$AO e
+ÀKB°I,d°+FP¬d°d°"A P¬! À e
+d±À P¬ç9ÎsÀKBNFÛ»nîªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªª®nfºªªªªªªªªªªªªªªªªª«¸`nÞffÛ|%WYDUÒ Ó/W«õûÚѸïî-:ƨ3®ÜȲ-§VÚÆqÜOm©±1ÝÝNé$ÌÌâÀ7n'<÷IèÜw:ƨ3®ÜȲ-§VÚÆqÜOm©±1ÝÝNé$ÌÌâÀ7n'<÷IèÜw:ƨ3®ÜȲ-§VÚÆqÜOm©±1ÝÝNé$ÌÌâÀ7n'<÷IèÜw:ƨ3®ÜȲ-§VÚÆqÜOm©±1ÝÝNé$ÌÌâÀ7n'<÷IèÜw:ƨ3®ÜȲ-§VÚÆqÜOm©±1ÝÝNé$ÌÌâÀ7n'<÷IèÜw:ƨ3®ÜȲ-§VÚÆqÜOm©±1ÝÝNé$ÌÌâÀ7n'<÷IèÜw:ƨ3®ÜȲ-§VÚÆqÜOm©±1ÝÝNëmÝÝüN}ÞÞî æI$I$I$UUQÅUUUUUUUUUUUUUUUUUUUUUUUUÓ0nªªªªªªªªªªªªªªªªªªïñÜñÞ;¶xwd ØØ
+
+E±·@Ù`ccd-
+666`BØB6BØØØB66Xcd- 66 0aØØ Ùccc`BØ ØÉd ÈÍÝÍÝÍÝßóq;÷íî\k~}ÕÓ]ïzy%ÖI÷SLP9N¢ãDqUq]çTAÅêNe¸yÄGÇ"æq@k3ëÀ´söiöûæû~×~ækÉ;àñGîªy³,ñ¹;.iÞ£rÁOn!îçZ\ø;Öî<úñ¦ûÍØ5Ãt6ùDS¾MÔÔ²4ÓPÔXÉÍÃÛ¼^:ëÇ»±®õãÇïÜn%§Û¯§ÛKOlõ¼ç8æg-³m@ä$>kä÷Êuò{ÞÏg¾SÏ<fÀò#ô8<Uìð©ê
pÍwØqÏT}né¥y76Ñ7mͽË
kºFòÑ6²wJ¡V÷ʾõ¡íì<ì¢r¡~IXra>±=ïg³ß)çÉï{=ùO>@<A{ÈÐâz
+ DñVs0âê"ªñÉ#÷³Ùïóß{Ùì÷TóÔ÷½Ï|§ x<Ì=äGèq="x«<f0ò'Ê¢¢eDGØp:ªUJ©JJ©U*¥KXRRªUJ©R¡J,IJJTX¡b
)*T¥JRQIbËeJJ)*(Y,%
ÉEBURTT*),Y(TRT©b%
+J
E%²¢J)(©),Rb¬S&L¶¨«åspéߦ®¿ÉOá*TR¡P¢RPéÔëÍ5<Wþ_}ö}}¿zþ5ݶ[e¶[e¶[e¶[e¶[e¶[e¶[e¶[e¶[e¶[e¶[e¶[e¶[e¶[e¶[e¶[e¶[e¶[e¶[e¶[e¶[e¶[e¶[e¶[e¶[e¶[e¶[e¶[e¶[e¶[e¶[e¶[e¶[Ù÷ÙfgowNë-²Û-²Û-²Û-²Û-²Û-²Þû>ûìöýRÑ>ÔϹ28_ãî@é#UnñÉY2dʤXP
+USâTE_¤ý³ü T¯õþØTAPYeDXD at D@TAPYdPeXe
F?YúÀ¨*0ª"""³",*ÂË " ,²¨Ë," *
+²ÈÂ"Ë ÈÂ"2"""03,²Ì" *Ü3÷0?p4ÿDDEADdEDYQYDYEaeDEYVYDeADDAYDW3`q þ¶ÛûtÝ8~¿¸a`Æ( 0, "
+( Ë È³(ËÈ +2Ì,²21Ö?Oî33Á "Ç,,Ê2Â,˰, 0a2a0cI2, "² 2Ub`ÆÁÆ#$bL 0Ì>Uý'(¢¢¢¢²2È" ***+#, ¢²" ¬²È,ÏÝEADQTªRÕU©e*RÊU-,¥U¥¥ªR©TªUJ©JRªéÃ_Ö5Óöw÷B( ²Ì"° Ë È"
+2#"³#&HÃ&#ök¯àkwMn馵£MkFÖfMºcZ4Ö´jkfMnÉkc[»6i5c[¦ÖM4kZ4ÝÔÓfÍFÖné¦î¦6j4Ö´jlÙ¤ÓZѪkSMkFÖMkQ²i¦¤ØÙ³I¦µ£[º}MD8H2g¿33UTYdDDDDUUUYeTEYQeYg30ã¼
+ü½þ¨" *
+ È2
+ ¨*,"¢2Ë#¬È²Ì,²0ýó÷Ïß ¨" " ",¨"¢2"2¬,²b," *2Ë#
+£,²0²È2"0 3,²ÕZÖ«ù+áu¨}ú&C²
URôS!2*©)D¤P¤
+
HT¡*JIR%J©P©AIQJ
JJRP©D©H¤¨*RT¤¤©%%JJ
B¥I)*
J
%DRT0É,ÉY&%e2S*2TÅL¦@ÉYIeLC%eJÊb¤Cà"Aþ¸ÁH$H>²åªUªZZÕTÑ?DZ.ìÖÅùþÄ×R_O&§¤0ÉV*ʪ¤H~Ol±ËÉiY»³ºî,#Dõ"e! 9ô²ÙhªõeÈÂíÆ3ç½¼}áÒMñð´²ÇÊÂß@ÉÂ<øUUUUUUUUUUUUUUUUUUUU}çÆå.88¢',÷¾´77ؽçÄEeñlÜó³Å%+æñäç>I ÈGÎ>n¦½Ç99Ѽ妷vlnÔÄÃL>nzvªä¸cro..v¦\ø×`N¦°ÄÆ&LLfF*blÛUaDÒ$~I!)ö²cãïÛò¿u¾ó(«qéïY©nîîÏO¾!Öw®®kû yE)©7Î
+;»ÎéÎ"¸|¡lg¬Îðç7vߣHh¸qW»Â²IdpûÙ×ÓO|Þ7\2ÏusÉcYèçÞrlË>7îæ¥ÓÊûÎyä¹¹æ×¬¦º¸p¹Ó¯¥Ï¢)jwxªq
5Ãpæoפû¼×cRq'o-¸®ý?rQ¢tù9±µ|üúa¢u;±>À3<ÏgO|+ì»ÎçNü+ܦG0és8§¼YYeí4¬,fyDEGÍ0É8&Î*p½í9[·N\çW«§®JåêÎvë´9lÇpxÏÍ~ØgÛ]W;ðû»Býk¦Y&^Ïg³Ç~î]Îçs¯umôÁé=UTzØ`ʲÑtñee´Ò"²Læf©¯+NF»¹ G³Ùìñß
úz§s¹ÓîÞÌôôôóÝ[}0ô=VGé9kçÅ^ÓHÉ2`yTÃÆÌâç¼XÌ£zÕp8xè\4ÐÓ9q^Ð$¥ø¡;¼;v·»O9éÎ:qÓ¢¶í*Û´ª+nÒ¨»J¢¶í*Û´ª+nÒ¨»J¢¶í*Û´ª+nÒ¨»J¢¶í*Û´ª+nÒ¨»J¢¶í*Û´ª+nÒ¨»J¢¶í*Û´ª+nÒ¨»J¢¶í*Û´ª+nÒ¨»J¢¶í*Û´ª+nÒ¨½}öfyEÝÛJ¢¶í*Û´ª+nÒ¨»J¢¶í*ÛÙxÜtë°¼2ÕÇÜñ\.úèR.T¸ãÆw©j±Kzò®)ytf$WNNB=×ë³÷QVØûûôÍVIW
RéquwÙÞÍ®ºÐ½R©*ËK#7¯Ü#çf¸tÈý{³÷b_Ì2þü¹/¶LÚéúÅdçµ3½Kz»ëj]oÔµÏ7§×Ë×å8_ÉOÒI7í¶ÛUUUUUUUUUUUUVÛm¶Ûm¶Ûm¿§é>¶g×
+ky21Ç!gëôïÔ?Tév·#ôRñåK¾ºÞ
+ïRḩn¶RÜܶð[Uº¼UOB5 ì:A&HÉl#SÇS°Ùã¿mÙ窪ªªªªªªªªªªªªªªªªª«ñÑmjKSê¥Äp§ÎÂ## ÈÈb×!ØdÞuòXGÓÉÎÛf,ûݶdýu׿£àÎrdääË»Ìøüoyé¹ÈE:±-Å|ÅÌËHü@Î~ ûʪªªªªªªªªªªªªªªªª¶ÛxÈGÅY²Saù*"¬p¥¸miKUÃ93p0ªªªªªªªªªªªªªªªªªª÷7aGXE9!øú«_úþ/ê~¶êîï¹~>cn³$;ù#WtÕIRguj.|¨û§½dºåe¨ê.xOnZª8q4sS63Î/NfóO
ömæóhà}Ç=äêYÏ{$¼y^pãsãÈyÂA3à÷}m;ìòx8tëlË4Õ×2Ðê"ï9æÌ³Æäì¹§ÛÄFáÇÝ<ëoâ.§6×ar^|¹5ö¢Km-Ï7ÍkQ·rÏ\æmÞ½çÇ;ÞºëU¶rOôt;Ü:ª(+'.µÙTD»lê,âöÅáÞ ö>á_¦LñÏyç\çqÎIËK%[8¶ôxöÉË̲rrûÏ:ï8ãs8ç#mÖôx÷ÕOIë|<{þÈsÏvi$2¶émµü$Ö×SVOé$û÷íßßï;Ìîw¼ïÃMc
+54Ö0ÓXÃMc
+54ßK-Û¬a¦±Æki¬a¦±Æki¬a¦±Æki¬a¦±Æki¶YnݲËví[·l²Ý»eíÛ,·nÙe»vË-ÞϾÌû38Û¦±Æki¬a¦±Æs>ûìøß bÌ®ä|ï#wñôªQRTKªU(XU(©(©>?JSä:ÉñS,É"Ù
G üB0âs!°lSll"å»2ÈrééÏ/âÙöÁªË.þ ÝÞÌee12ÌeXL\AAïáUUUUUUUUUUUUUUUUUU[m»õÙ°$1Éb~H1ÄrWèc,á°IX·a±6<9ýqê<ù(«b8èìr"=øXG~ÞüU¥nDfÏl~zÙØ}C#$&Í¥´µm²mE[î.äì#ä:½i¤`9Ù"lF
ü7Éæ[mù¹×ÏÕ´¥
±m´QUm)JxúXGÈ9ü~ÔHtä#"#0VD,²Ån-¥m[Tdd²&,YKÝ-Ãqo$[U°ÐÔ#¾r¥Ô9øo¢ÒÒÞÙ&~°y9"½UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUÜÃì0ûj[«iJZi]fÔ»8®'IÈGr<ä#rsaHz}|¾2[Uc¶Ev)o-N²÷µÚuRæssÊ»N %Ã)Ê
+ál´£QÒ¸RáQ¸N²÷ñ~øZsÿ¿hs¦þùøPy¹5/(ÓÝé¢açL!ÓÈ@<XõoiÓDÃÎC§x±êß(Ó7¦0O! ñcÕ¾Q¦oM:aBâÇ«|£LÞ&tÂ<ÅVùF½4L<é:yò3zhyÓtò=[åfôÑ0ó¦éä ,z·Ê4Íé¢açL!ÓÈ@<XõoiÓDÃÎC§x±êß(Ó7¦0O! ñcÕ¾Q¦oM:aBáÈj´Íé¢açL!éä ,z·Ê4Íé¢açL!ÓÈ@<XõoiÓDÃÎC§x±êß(Ó7¦0O! ñcÕ¾Q¦oM:aBâÇ«|£LÞ&tÂ<ÅVùF½4L<é:yò3zhyÓtò=[åfôÑ0ó¦éä ,z·Ê4Íé¢açL!ÓÈ@<XõRT³ÈiM:aBâÇ«|£LÞ&tÂ<ÅVùF½4L<é:yò3zhyÓtò=[åfôÑ0ó¦éä ,z·Ê4Íé¢açL!ÓÈ@<XõoiÓDÃÎC§xdò3zhyÓzyò3zhyÓtò=[åfôÑ0ó¦éä ,z·Ê4Íé¢açL!ÓÈ@<XõoiÓDÃÎC§x±êß(Ó7¦0O! ñcÕ¾Q¦oM:aBâÇ«|£LÞ&tÂ<ÅVùF½4L<é:yò3zhyÓtò=[åfôÑ0ó¦éä ,z·Ê4Íé¢açL!ÓÈ@<XõoiÓDÃÎC§x±êß(Ó7¦0O! ñcÕ¾Q¦oM:aBâÇ«|£LÞ&tÂ<ÅVùF½4L<é:yò3zhyÓtò=[åfôÑ0ó¦éä <«LÞ&tÂBâÇ«|£LÞ&tÂ<ÅVùF½4L<é:yò3zhyÓtò=[åfôÑ0ó¦éä ,z·Ê4Íé¢açL!ÓÈ@<XõoiÓDÃÎC§x±êß(Ó7¦0O! ðÉä5ZfôÑ0ó¦ôò=[åfôÑ0ó¦éä ,z·Ê4Íé¢açL!ÓÈ@<XõoiÓDÃÎ
C§x±êß(Ó7¦0O! ñcÕ¾Q¦oM:aBâÇ«|£LÞ&tÂ<Ã'ÕiÓDÃÎCÓÈ@<XõoiÓDÃÎC§x±êß(Ó7¦0O! ñcÕ¾Q¦oM:aBâÇ«|£LÞ&tÂ<ÅVùF½4L<é:yò3zhyÓtò=[åfôÑ0ó¦éä ,z·Ê4Íé¢açL!ÓÈ@<XõoiÓDÃÎC§x±êß(Ó7¦0O! ñcÕ¾Q¦oM:aBâÇ«|£LÞ&tÂ<Ã'ÕiÓDÃÎCÓÈ@<ÜiîôÑ0ó¦éä <«LÞ&tÂBáÈ{¹±kU¦oM:aO! ðÉä5ZfôÑ0ó¦ôòCU¦oM:aO! ðÉä5ZfôÑ0ó¦ôòCU¦oM:aO! ðÉä5ZfôÑ0ó¦ôòCU¦oM:aO! ðÉä5ZfôÑ0ó¦ôòCU¦oM:aO! ðÉä5ZfôÑ0ó¦ôò7&¥å{½4L<é:yO!ªÓ7¦0§xdò3zhyÓzyO!ªÓ7¦0§xdò3zhyÓzyO!ªÓ7¦0§xdò3zhyÓzyO!ªÓ7¦0§xdò3zhyÓzyO!ªÓ7¦0§xdò3zhyÓzyO!ªÓ7¦0§xdò3zhyÓzyO!ªÓ7¦0§xdò3zhyÓzyO!ªÓ7¦0§xdò3zhyÓzyO!ªÓ7¦0§xdò3zhyÓzyO!ªÓ7¦0§xdòü÷ß>ûð}ù2}fezb¯EìʸNMN$ÔjL,6#!±Q°Ô«Rî+º©Õ68LMICf¢$g)\Iq'8AÆFªÕ¤NI#Ì?©Ç)]"äNV-Ò,Ä,Ä,ÉVE1"Z¶ÉTȵF$S*0% ¦,^¡$å- ºÃÕØGI"=qÏÏÓÌůÁ-Xï¾d$R¹ãÉÄW)¾tÖ+'~T×EÕ>²u¹òv󪻢§^s"â#eÈ
ÂÜ>pGãϪ/¶åO&47Ú¤2Y¬K<"óÏ)GaØ´ò»wËaMLÜ<o¼¢ÓªxóÉ;ñxÖñ¼ïÆáÁbεçöläÙxæñÁXàqvÑ'^«<D©Ø¸ç=ºÛqçÑ©o8ó'yó½áóÇγ¬ËÇ¡?t÷||}Ó×ñãîø`ð3ÙáO(ý
+z¢ô(DGÒ"*±}óxû5IlSw7z³t×®7Ójm·s\EÇ{b}}g})xò¯TíOYûE¼xï{Ëxñß>>÷ìÈ #<xQ|§Èú(¨ò*}/Î*üÖ|â-ãǼsÃßy¯ñãÝðÞ<{Ç»áÀxÏg
<£ô)êТ°xìö/>W=MEõ`A¡ã>?YºËuã^!=Á9ïéÓÃÃ~?>ݺõéÛ]·Û·nÝÓj©mU#Mª¤iµT6ª¦ÕR4ÚªFUHÓj©mU#Mª¤iµT6ª¦ÕR4ÚªFUHÓj©mU#Mª¤iµT6ª¦ÕR4ÚªFUHÓj©mU#Mª¤iµT6ª¦ÕR4ÚªF^üüûóïϾû»«¯¹R4ÚªFUHÓj©mU#Mª¤iµï¿???>ü~ï¾jßårVRGØ%n!dË#"XeZ"ÈÅLIJZ±²ÉJ£$¸±LQË$ ?ß*Ùk&fI [ aßÓ#*#ÀIJx#( Q("¢òA0E#I"dÏ_´çżêïRÒºT°¤eLI±RÊXÊ@( "ÂQ\Y=YOVY>Õ¢|LbGX$T,ì%`Ð2H+µ/Êz±n2=U@Ǹb%UUUUUUUUUUUUUUUUUU[mØáö$LHO»
+hF$ÆÉ&`ËrÈ)lTcîOâeB\~ÃûmÙ%¶Ûm¶Ûy$}²JCd0°P
BKÈE@Ïý_vÕYÑ3ê¥uªeeCªî$ÊÀDÐòÛm¶ÕUUUUUUUUUUUUUUUUUøðªªªªªªªªªªªªªªªªªªªª¿uÏ6eåû?+ö~ü,ȯ\[=©±'QÓy,¨¯-vù5Dx|.uq¬ô¢(V½8À¶fë\>÷%ׯ9Þq$4×ógZ«ólË8{>|K9÷O<ÒJÍwÈ«
+ã®/;àñY¡ß9Ô²<}òtv/V±®)Â`ÝN"÷õï+ÎmÆÃQ
+Ìä¿{äIó?nÛ®rQ:ë¿wM9ÍÔÖØ®òoDêk;«×vã{"DçÆN»òü÷w×Þ:L;òçA:ªw:
+¯j)Q0»©ðñZ£¶2ªNõCç:N¹ÜÍ\ø·Þzyß_{ÏO;ëïO['¡GOÖÛn4»Uo¼ôó¾î{ÏO9ëßyéç}}ãÃÈô¶x¯[kÇáÓÅyUüÎ([d¶S0Ì3U,²2ÊfaX²ÈË,UFX1UªKE¨ªBªKQT*¡eªKd[ÊE²["ªT¡THªÔU%R*¡eHªÒÔBªX,eHªÔÏwù¸qÃeËm¨rÛ'ñ$×]8éÀàpLáÇÞü^ÇO¹Þ﹯½îóÝÓ/ÀL%~a,Ëð f_K2üÂYà&Ì¿0eø ³/ÀL%~a,Ëð f_K2üÂYà&Ì¿0eø ³/ÀL%~a,Ëð f_K2üÂYà&Ì¿0eø ³/ÀL%~a,Ëð f_K2üÂYà&Ì¿0eø ³/ÀL%~a,Ëð f_K2üÂYà÷yî﹯½ïÀ{ì;áµ(ñqÌÈ3³0ÀÂÍÏÄddRªªªªªªªªªªªªªªªª«uòE]u
+:Ãlϳìºlñ
'ÙVÈXG¤HëÓ
Ͷ¼Éll-W¥³E\UUUUUUUUUUUUUUUUUUUUè;ÎE·ZôæØ¶¥µè*Û dgéÒªªªªªªªªªªªªªªªªªªª«ã0*Ø}»^|³6Õú6FÙm+E«-"D¨0Æã ¥UUUUUUUUUUUUUUUUUUU_æÉLTȪP"
+1e=õÈk}^ÕµgÛÇáUUUUUUUUUUUUUUUUUUUW¦æf¡'^kzë]9IËm³úfvÔ·7K at 0¯UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUwüÇåÜß©ÓlrZ-öêìAó1ü*ªªªªªªªªªªªªªªªªªªªû,ÌDÌàççdRªªªªªªªªªªªªªªªªªª®fdåE_Ü*§+}¼3^9àíãZwOéͦ]r÷8"lnä7æ5G,SYWî§\$YpÏ+ÚçÛß±xââäfè¨$8n>Rù6ï¾Þ,ÍñÏ9Ö̳{9%ÜÜÐ÷|¤X^¢öuôÆç§¼ç=x<Vhov5)Ⱦ3ÅgaØ´ò¦s9.èæï9"ûuúæ¼xë»Î;BÛö©Åß\Y¾CkÛ}W+æód7Î9Î8àáÄä['--«Èå«jNS¢ââ®g×8pȵlqÎqÇçpp¢N#LÉÇ9Í·xç&8ç8ãø®'Æaë¡:Ü×[ºÇ²f<o üO>ü 7Üpw¯¯>ïRî¬a@Í«P3fêÆÙº±
6n¬a@Í«P3fêÆÙº±
6n¬a@Í«P3fêÆÙº±
6n¬a@Í«P3fêÆÙº±
6n¬a@Í«P3fêÆÙº±
6n¬a@Í«P3fêÆÙº±
6n¬a@Í«P3fêÆÙº±
6n¬a@Í«P3fêÆÙº±
6n¬a@Í«P3fêÆÙº±
6n¬a@Í«P3fêÆ
+i¿~~~Íûß{í;G,¶O·;\Û2
+¯êHWÉ$KÔ#î>sáÄ¿xÅ@ÕľW4ÌÐý¿fªªªªªªªªªªªªªªªªªªªªªªªªªªªªª©Àáø³ ¬Ì0ÁÉpÇçÜüÙòÍâvUÙ`µ'®k7nfTÐÇøØÃï$.2Ac2$LÈa ¸¥!K$Èä~âgÔp¬Ö;¬YlÛYxÖÕF°EÇ¡áß9}àP¾ÂÂá7rp2íëmü}øåI,%±ãÏ´iÛf(Êsyf¸9 dAú
+UUUUUUUUUUUUUUUUUUW33:,X,X`¬Y)Ôpës¦)q£Ñ6ÌPåÊæ°Eå¶Ù©ÑT
$´Bî3;^¨Ö¯vjb¶ZUÊÔCHüI÷ļq^÷Ä4£ßdähw¼WÌ)ðÈ¢ªºæñöÎ.¨Ë¬É;ÏS®#
+[«§W7zÄC8N.B¦¹sy»»EÊç2~%ζÏé\Ô¾:«ï7NùÍÔÔ²4Þ}ÜÏa¹ÝÅ:?gÏ sÇÞëy1¼G99=}1¹A¥f
"ä¸
:o¹l¨í Û[±ÃNoÜ®)¾§/RïܾEÖÞï6^%í-'o½ãÙÞ¯}÷g¼ú}ög}
+"¥CÁϾZaUL+ØkåõVé»ÝcuÓÖ0îé¥;»B*.(>Qñ×µïrò¯³:Õ"*üÔç\{dzÞ_Ï{dzÞ_ÏÀA°=êôçS`qå¨ãÉ.aïxö{Ï®Ýöxö{Ëß³Þñì÷O³ÁàðÌò/¡DQô¨ysÀx+ñJWÌXøOç"Hä¶#ÛSù[mËjrÛ$Ã5Äâk~{ï³ï¿/ïËûã»}¿·ÏÙ1Yï$rÜV|ËqYòG-ÅgÉ·$rÜV|ËqYòG-ÅgÉ·$rÜV|ËqYòG-ÅgÉ·$rÜV|ËqYòG-ÅgÉ·$rÜV{É·$rÜV|ËqYòG-ÅgÉ·$rÜV|ËqYòG-ÅgÉ·$rÜV|ËqYòG-ÅgÉ·$rÜV|ËqYòGwY=ä[Ïy#â³ÞH帬÷9n+=ä[Ïy#ã÷ïûóßyú~§gåÇßËVÎw&Md(ÎC¥ÌlNsù*aÎv'*GíeQX©É#ñ³ó3R©EáhhhBôtp{9ËartNÈÅR¤©Q'ëãã×åùm912,ø¢ôåu9É:+hɰÒÅ2ºÙ$¯æ|÷ªÛe϶<Ô©ìë¶ùm·,ä<¯æXG×$ZÅ*ERV%*Ë
+
+ WÇǹbß'v>óbÉå,ß2Ìdât#pIU>J$( aûD$c·k:óS³Ní[·2qa}ÙÑA$æùªªªªªªªªªªªªªªªªªªª«~¸Kñ'Üúãå¶ö¤³
+ÈÉc«7q¶nÌäªì¥¤v²§]Dµ#%Iæ1ñU§Êäf*agº#K^»zI5ûO°¾Iò¤ÝC"©,YbYX«+ÁâªT®{s
+4?3Ãù×àwîó./JßN4|2«)}¤ÆÖÉò²¤Î=çz¢zÓm^:N#|ýÎ{"f¨
Y:ig»}öºæ¶e6ö¹ôí)Gïä¼u^ç%Ï¢)éä<9º!¾ù:"©}ÕN¶dxû½ÔòYæRq
+T²G
+§=©ä²=³¹©cY°&FæúZ¸ë6ë»õqÝvÞVýÛE׿×èç©Õ6Íuôóxñç}ãÇ>{z}ïx÷^gÊ({3Þ©òÊúT==JÔÒ®({\×ܽµN%Cæ-¶jÛÛ5ÖÆík«dÉ&p÷ÏÍéözèóËÆyú¨L¼Y{Þ=ç×§Þ÷yõéöy|¢á#Ì÷ªEÅ<²¾$9Ç"
+s' |(,0ø=++À+Çáï÷Þð{3Þ©òÊúTðxðªÉòß[lù2¯ÅV)Ç8þGûï½÷¾üÏ¿3ï¿gÌcúßÖvö&´Ç[SZc©1ÖÔÖëjkLuµ5¦:ÚÓmMi¶¦´Ç[SZc©1ÖÔÖëjkLuµ5¦:ÚÓmMi¶¦´Ç[SZc©1ÖÔÖëjkLuµ5¦:ÚÓmMi¶¦´Ç[SZc©1ÖÔÖëjkLuµ5¦:ÚÓmMi¶¦´Ç[SZc©1ÖÔÖëjkLuµ5¦:ÚÓoïßû}÷ÑÛiò^³wjdS8¹.$÷jå¾ Ä8XdUeRª['yÅì¹Yc,p{LäímOÓør~êÙôêÏT,ÌÞKXNl¸ÉØøT¥ü¶Ûjªªªªªªªªªªªªªªªªª«øö{¿\Ã?,(¿-üévä/SÙ$v®ÄæH´ç3>-mÌQÄܰúúg >Û7W70ø:Ð>3ôøUUUUUUUUUUUUUUUUU¶Ûm¶Û!"AñV¥YT) &F*Çñóqê\ÌGÇü9tÌû?<LL
+ªªªªªªªªªªªªªªªªªªª¾ÄA1DÁîvóæ&ؼì/L:Ï[mµUUUUUUUUUUUUUUUUUUä|àaúp#á±ilAüRÒQ#iil¿xü"u×NÓR«®}ôúûöVLý¯Û.aAº0 ÝPn
Ì(7Bæ¡s
+
+й
è\Ât.aAº0 ÝPn
Ì(7Bæ¡s
+
+й
è\Ât.aAº0 ÝPn
Ì(7Bæ¡s
+
+й
è\Ât.aAº0 ÝPn
Ì(7Bæ¡s
+
+й
è\Ât.aAº0 ÝPn
Ì(7Bæ¡s
+
+й
è\Ã>|èOÒþ!Áj²åWéEZ®·í;N+¾÷Þûï¯ïËûïÛ~·gí±Õ¢H±iUbҪťUJ«V-*¬ZUX´ª±iUbҪťUJ«V-*¬ZUX´ª±iUbҪťUJ«V-*¬ZUX´ª±iUbҪťUJ«V-*¬ZUX´ª±iUbҪťUJ«û÷ï¾ýÏ¿~ýû÷ß~çß¿~ýûïâ§ìÈGñ
+Ç
+ÍeUUUUUUUUUUUUUUUUUU\ÌÏ RÒN+¸By!<hM!>y úT'øÁ?2÷A;Ô&HO©B~ T'PBe"¬d¨{Wç ú*>°A?pMú'*«ÿ'ì`OÝ!>Ù ÑBx*"ÐO DUøÔ*4ªT¬û*?úB`MIWrø¡>
+¤Ò%.N«(O¹Bw
+²ÌÌËË3UqÄEWUDqÅUDEQÄDqÄqDDqDEs030Ç0ÀUU\qQÄUU\qq0¬³1æ¡QöøÑK Nä&(O¹B{%V'Ü¡:¨O|¢*÷J"¬Põ òÐ ý¯ÛBÿ¸|ÀUW夽å èøÂjQy
UWJÙA6¥SÍBp¡Q¥ ë{nBpIW¶Q{à:²Û(¾Y(LHNèLte Ø'½Byê¡>YDUà¡<è&A<ÔªtEZP2ôE\B~)DUÊØ«íB}°êÊBw'¢*ôR©æ¡=ªU;¡=ªm½'PÊ"¯ï êR©øeWT*J꨽JRûÐM¨M"»Å*ò|ò«¾Qq(½«&ä'¶Qy¨O% a1BiBzä'|ôtTE]%WÇ ÒE] D¢*êEDU¸'¤&ä&ªnÅBwHM¨Ob%yÂw(OÕ(¾åDUÔÖBuõÈOE**JÂQxÈO`MJ"®ÒûÊ
Eÿæ(+$Êk#²wC\?ðßòÿûýÿü
@ýûþ _ 3ãê³éT (g¸©N¶²¢UM´O# Þ ïC¾ aÐùÜp@³'
+¢è>ØÐ{¸; HA¨Ûª ô @à
+!Ð#tx!£ÃÐ
!* ÃÃ`pl 9((QSÿ`IU$Ä4ÑÄÐdd4a i£ª~¡UPÐ&& ÈÑa4M
+
+O=U%OhÑ`¦@iä©5$ÄÐ C 4 BQêmAé4iµ
+ @ )DD#F#&@ЦFhi²ÔQ ý
ýÂWý2èÄÈ3
[W,â¸[MfaýH?O-)¥&¦tªÑ4aº¨½ù ¦*¤õÕ
+9Ê¡¥PÑZdQß$Wæóø+R¤`_ÃüuÎgÜ"j8ûÊÄË%/ º¶÷57Úc9*øhÄ.B´¸înûÞs4`è:4hÁðÑ£]AÑmº+Brh ÍÉ '4æ èrMÍI¢94h¯@èÑ|0{
+Ý£F½îó¾÷~,·à»´u@®hMY£4)3mÑ.ïxk|:4G÷¡ï{ÂûÝ÷£Ô´·Hm;[FÆÚÛ¶5îÇ·+W+6ж ª´´JzBC M\ÚdɵN²kodµÔ¶f'wm¶Ôéi$ ®I»$¶Ûl !$vÐ + I-m¢KÝNI '´»ní»m¶À¶Ü¶îÚI2ID¶É%m¶íI-V´Ø9cÃ2ÆàR©¸7Sv©l7µ:V $ã"j8fEòc=T)P S`¬·nÕZã!ê8fEòc=T)P Ñ9f¼ÁaU
+T(68N"£ÆdY¯&0XAãÕB
+M¨åKVkͬÈ`d+hÖ\JÕMÜ
¥a!ãÝÃ.\ã6MÒRÝ5m²X#Ov"Pl&í@@2ᩪIÆCÔp:Ì5äÆ<zU.J͹vNB£ÆdY¯&0XAãÕB
+
+Øæ (D=Gȳ^L`°Çª
n¡A£%r6ÞáPOp{©0ëK[t 7xÞAï7+pn¾&§Íá&Ä»Q¬QS42]Fë8åÕók2&=T+hÖÃ=G,²Z³^\`°Çª
*uH$ÝÈZV=ԥ˼fɺJ[¢îÚÜb1%wj%ÂnÔ-»àn^ÍÙ·á¹ÔrÔ#Æ`
+¡,pnD2È,Ãsmñ;ÉÞ¨G«XÕÎëïkI}ÖÌSpLѸ&lnâxÍã `dz"¡, ò(*À·á¸¨2Ápe¨[e'£fZ@¹b2Ç©b 8ñb`E¡n[^[¸6Byha0ÞÍÆôÍÆöÏ<yç[î\U²à¶KÈ)ìõ¤ôUûzpvfÜçUÉ¡sµ¾vxîðìñÊÑá=ÞEÐúì'3:é-í¹wwfÛí´W§'< zZÃ%¦XÞ;î»
+%uü][ïJñm
ëUÚªåZonÓvзwc@!Ìé@ÀïÖÉ"*¹²½lèâ%À´<³·2a mI5;Ã.A]]Ñp«*Ûª>3<UÞ½ä«;RTîªË¯C¼ç&/*ª_ºâ¡3;Ýѧ'dì#ÙÔË«¸3N=n&í´9§E§ÝYC0ªÎëÉÎV^¡¬i5¿792¼çªD.0îÙD]në@¬mrÆ!0$»·s)Ð ¨ÂÆäSmÉxÏÁìäfìõ]ÛZBÎ9ÑU( z
+3ZÓ¶«"¹Íª¯9¢ë4áÚ¸Bo´Må¦sFò±°ÎFö×'·eØ0Â3¾¡ÎøÄ÷xvxxÒðã#ys^èÚ;[;×ô}àøºá+£øïÙݾÔ'$dzFª¬ç·w7}Í»e²Ö5ÀÀÏO zOj w».u]öÍÙB¸Ö@ñsÕ@:Nê©UU2Ûí²Ùu§Õî»N.¼mÒ5Ôt
+Tå÷°w[[¢1!p @¶Ó£m´¼æ+ZWÝ"(¤Ï6Ù¬*r7Ê·vÃa!''|Ë,8ºÔ}ÅÖY\$]à¤jsÎÁAÖôÝϬ²¸?»3ns·&
ÎÖÎ.µx>.²Êàþ2ì͹ÎÜ>KuKAg/wswwfÛí´WºOí @%¦XÞ;î»
+%+ë\Åov¶ÂÇuªíUrË-D··i»h[»±0Â9ÐÏIh1½©k°ú¶Û%00ÓÐçÒãIp´H^7WnÝÀÄl}í¸l×°IU>ìÖta2~<goÀ%üfK=qddó½9:ÞQË'dÊaÓ¨-"ìì²HĤFr0d¹³y/)ËÉîö7½f1¼£%³Ýìo{&ÌcyFK'qÞÆòK'crvc9ÞÆ÷²lÆ7d²vc;½ïdÙo(ÉdìÆw{ÞɳÞQÉÙîö7½f1¼£%³Ýìo{&ÌcÎùpñ<Ìtó1¸ÎnëËÂé$*³pÆL²adz
+æËÞåÈÆí6áâ×xÞ;8¼o9ÌÓ]ùÛxí,ÎÆÚ2Y;1ï#g$³;hÉdìµß·Î/Îs4áâ×~vÞ;8¼m´d²vc9ÞFÎIfv6ÑɽcÞK9#3±¶NÌg{ÈÙÉ,ÎÆÚ2T¸¾à¥BU}Å-®%Râú# UãyÎf<ZïÎÛÇgç9pòÎw% .!rs&\É;q\¶[.KɽùÛÛ<Þs·/O;·3cå¹Ç76¹^+NÞ;·3±Åy¸ÌÎ9rËcâ×~vÞ;8¼o9ÌÓ]ùÛxìâñ¼ç3N-wçmã³ÆóÍ8xZïÎÛË9Æòìp¼mbÙa%uåÞmæGì³äëm¹Ùïy9%ØÛFK'fFs¯ÆÙläÌ´d3±²7ÝäÃ䳸äëm²vFw¼äNËçc²;3g;ÈÙÉ,ÎÆÚ2Y;àwç3vìr79¼ã8<ãd>d2åÀJRÀ]Q8MJÓCMCµ5f©¦j
+öcú1kÇçcïc:cqcÆcÆ8Æ0û1vÇLvÇÆ8Çã
+c¦1
"tÊÁ0dì$ØaÂvlþ Ñ@}ÐûF & $úÕ
+KP¦ & $}ª
1"M¨RmB&Ô)-BÔ)6¡Ij >ÕBÔ)¨S
+ ¡L at H($@L at Iµ
+KP¤@Hê
+D $²¡H"D >9åUUUUUUvÚªªªª¶Úªªª¶ªªªªªªª¬UUU²í¶×\6Ûk®Ûw ºñBæHÌ 2 at .d\É ¹s$æHÌ 2 at .d\É ¹s$æHÌ 2 at .d\É ¹s$æHÌ 2 at .d\É ¹s$æHÌ 2 at .dé0\É; 2 at .d\É ¹w2 at .d
+Y 2 at .d÷ß:Î÷{üBüP@þ l¢^D¾¹Ö¯"xTår§4®%]ªN0¸º]®J¸Ë¤+¢è»]í.ÑN
ÅRÕÿ´_rðÃï}íq´âûÌqÓMkXáÓsN§?NI$êwrIgo0 ¦Vk¶+1FÔ Ù a35 6À [
+¨0zósîNIÎݬ$Mþ,öü7óøÃ?ÚÈ{ÒûñÙ}ïÀ¾û}ñxøåÓ¶üF$lùâ/¼Âì¤¦Ï è½8oHÙó[¥÷SÝÔÙà§mñ#~kt¾ó
+{²z<¢ôà-¾1#doÍnÞaOvORSgt^·Æ$lùÒûÌ)îÉêJlðÓ¶øÄ¿5º_y
=Ù=IMÑzpß²7æ·Kï0§»'©)³À:/NÛã6FüÖé}æ÷dõ%6xEéÀ[|bFÈßÝ/¼Â줦ÏV^·Æ$lùÒûÌ)îÉêJlðueéÀ[|bFÈßÝ/¼Â줦ÏV^·Æ$lùÒûÌ)îÉêJlðueéÀ[|bFÈßÝ/¼Â줦ÏV^·Æ$lùÒûÌ)îÉêJlðueéÀ[|bFÈßÝ/¼Âì¤¦Ï è½8oHÙó[¥÷SÝÔÙàêËÓ¶øÄ¿5º_y
=Ù=IM¬½8oHÙóÄ_y
=Ù=IM¬½8oHÙó[¥÷SÝÔÙàêËÓ¶øÄ¿5º_y
=Ù=IM¬½8oHÙó[¥÷SÝÔÙàêËÓ¶øÄ¿5º_y
=Ù=IM¬½8oHÙóÄ_y
=Ù=IM¬½8oHÙó[¥÷SÝÔÙàêËÓ¶øÄ¿5º_y
=Ù=IM¬½8o¢HYó[¥÷SÝÔÙàêËÓ¶øÄ¿5º_y
=Ù=IM¬½8oHÙó[¥÷SÝÔÙàêËÓ¶ú$
¿5º_y
=Ù=IM¬½8oHÙó[¥÷SÝÔÙàêËÓ¶øÄ¿5º_y
=Ù=IM¬½8oHÙó[¥÷SÝÔÙàêËÓ¶ú$
¿5º_y
=Þ¶I$I$ ÊÍvÅf(Ú 0Æf l6 1Þ9ÎNIü¤rþAöïª{÷ïß9Îs ËQ6Ũ
¨ f¥lÉ mj¶[´ä CB ä\Ì´ ×9Ç,s¾rN
+ef»b³R³P ÌÔ Ômm¶Ûm¶Ûm¡ $äZ s2æe åû`è<"ùó×®sé÷w϶÷öé~4à-¿&$
¿<E÷SÝÔÙàêËÓ¶ú$
¿<E÷SÝÔÙàêËÓ¶ú$
¿<E÷SÝÔÙàêËÓ¶ú$
¿<E÷SÝÔÙàêËÓ¶ú$
¿<E÷SÝÔÙàêËÓ¶ú$
¿<E÷SÝÔÙàêËÓ¶ú$
¿<E÷SÜÞîîîîîîè w$éIh ÌË
¶¸ 2ÒݱiJÍh
+² ÃjZ ZÃZIÎNu9&ðï³Otufï v'zÒn÷gLyèÎs,¤x¤á××§käÝá¾2ôïlcAôçF=áÎo£ÙÂw¤bÈRRç»=æ/:mÕä-#µN!}·Yv!¼eW]zPffw$$oyÞMÝÝÍdÝU3dÐ t5YUUUÌÙ-º-
+¬W&îîæîîæÉ²nªÄÈ W3wwswwswwsdÙ7@ÕbLÙ6MÐ5DaÉc&,F1c0Æ,bÆ,bÆ,YF2c°Å,1aXbðÅ(Á&,VXbÃ,,30ÅÆc&°Å)fÑB«õ·79·êÑvt,X,X±bèíÚã_×EÎ>_MÝç
¡hZ
¡hZ
¡hZ
¡hZ
¡hZ
¡hZ
¡hZ
¡hZsç9ͺè´-Bд-§9'8Êè\×G
t[±EAÖâÒÂ1m&P¢«P~¬>¯Ìÿdníüà~bÝÌÓwFîºjȬÈãLW7íý¹YYYYYqÉâ²GdÈ¬ÈÆ9"¸¬ÉW1Ac$~äϹ33îMþ&+Åb±X¬V+ãVEdqÆ+ÈÆ1X¬V+a¹¹]Aüm£øG9sEòþfiºiºiºiºiºiºiºiºim¥¦éügÇñnnnnnnnnnn-¶[nÚ7kFÛnnn5£s-ÛMÓFífiºi榤c$öN@ùÍ1X"±X¬V.3XçÝ @ @Ì0 C HB @LrtqüqÎmô^_ÆZÝ5ºktÖéÓ[¦·Mn¶ÒÜÍÛè篸ã$A" HD $s8äàq!âGÉHD$DI !L×M¤%$HwÎwºÌäÉ$ÜsÓéUXªªª®8â½Aù_ÌþQ»§ç¿ÿfn黵»¦î²+"²8ã&+'ÞûßzEdVEdVEdVEdVEdVGrb¸ÅÌcH¬È¬c+ÈÅÌÓrÜÝÓ[£?Ç~ò¿nHÿ
+¬(iV¡^ÔV))ÂÅX,X«!Á1bÅbÄa,F,XXFaa±bÂLF*ÂİF#1b¿nBî¯Ýä~@ÌæÛTÀºUû·½LÉ\Ü»æüË«¦°ú"Ýe@ø¼õæVaÍï×®®èOP¼Ä,÷´
^»z½¬ÌÌÜÇz¦]vuÀ¡9$9K7îgzàËs¾ÐuMÒvóȸÇ=íÝnÍõÍm[oûkôèÓi±4GöêI#;´ÖíYî·wÇ2&E9&Y}$ÌÎ÷ÁîFïu'wáÝh@ç^N§C)Èeؤ#Q¶/@7r¼
v¶ð=Ò3Ç:§T·)ð¸ºÔù¸QçN7ß§ZCeóä<E-ßQöÍ©6¤Ö½ææ»ÇFç}&LлrÛdÍÆ t ,6IØÉ8sÚе y4¼Ù9 º -·-¶dÀs åÀ2¶× u'nÒ%¶ÙÛµ¶ÚZÌe×YÓ£·8×ãEôù/¾Köþù/©ÞþâÛl¶Û-¶Ëm²Ûl¶Û-¶Ëm²Ûl¶Û-¶Ëm²Ûl¶Û-¶Ëm²Ûl¶Û-¶Ëm²Ûl¶Û-¶Ëm²Ûl¶Û-¶Ëm²Ûl¶Û-¶Ëm²Ûl¾ûï¾ø [mÛe¶ÙmÝÙ»»³wwg&dñó&|ù&}RLÓ"N:ÌWѪ'}G¶YÉãÚÜvú¶&â{tÆ'ßTª±±m
z½ün{Û®°Ë3á<ù_;ælL|"Óã,ñî'/e¯/
¾½¢kÓ=ßDí·=k}(¼ù½[¦dÓ+Ó~@ú[Tªºº}"b..-ÚÔÙôw|»úGxg7éÎ[Òô^âqr=´ØêÙ±6·m[7Ï]̽}YôÉ@ |gÇ35ÜN8ã2øg;»Î.]Hó3Y}±¹Óá6È=ëùÊÖ6äOÄNÖDÕ4ȶ'"i¶ÒdgÌ÷Ï£tàÏ ÎÆ9ËjæÀb^p$aÙ;±<ÅXöçyÍ¢ïssé¸R1âñll{ï.ÂÒw{'ï¹Êwc=`Ís;ßXÆ1cÉKHJxua
+m;îîã;¼z¸ó{¨²±à¡[dDI$3ØCYªÛcuº&ePb¼Û>ʧ¢Õ$Gkãï²éÑI$Õ¦HÜRF 1F?²½I$¥SD³;n³_òTWï½=¤Ìdû¨º:,&ϱ2Lø¿gF4hÑ£F2åË.\¹råË.\¹phÑ£F4hÑ£F4W.\¹råË.\¹råË£F;Ý4hÑ£F4hÑÙ&|Îiõ!B Lúù&O&d³¤ Ùº9¬Ü³6˧=uñO:õÕ½¾ØÌd¬3Á1`ÃÎ-Þê×+ùuKe«mjÖá3oó»ÙÊíååw·kÑç,ùÓ}ngxÏ_Ì0bbYXË10yÇ«âøÓ§Eè¹sÊW.8_:®GÁÈçÀr¶ScC}^¢ts1ï3ss^>.Î:®Ø¶5R®'¨0ªÆeGåÂXÆM0ZYUihã)hÚ¶jÚ¾/r¹/>=YçÏ/UKÝÜÚòÉñkN¸®rç Öí»ªêñÈõ0ñYOhå;vøqQÇ/
ÜN¥Q×SvÚäN#g!râîeòþý;Ïìý<ë¼ÞûþÝó·|?ý½ï;7nN§oÀ©ó±ÃváÀôàvùï;7nN§oÀ©ó±ÃváÀôàvùï;7nN§oÀ©ó±ÃváÀôàvùï;7nN§oÀ©ó±ÃváÀôàvùï;7nN§oÀWÌÃváÀôàzùï;7nN§oÀ©ó±ÃváÀôàvùï;7nN§oÀ©ó±ÃváÀôàvùï;7nN§oÀ©ó±ÃváÀôàvù
|Èù7nN§¯À©ó±ÃváÀôàvùï;7nN§oÀ©ó±ÃváÀôàvùï;7nN§oÀ©ó±ÃváÀôàvù
|Èù7nN§¯À©ó±ÃváÀôàvùï;7nN§oÀ©ó±ÃváÀôàvùï;7nN§oÀ©ó±
ÃváÀôàvùï;7nN§oÀ©ó±ÃváÀôàvùï;7nN§oÀ©ó±ÃváÀôàvùï;7nN§oÀWÌÃváÀôàzùï;7nN§oÀ©ó±ÃváÀôàvùï;7nN§oÀWÌåpݸp=ÁÓÏ>
ó#ÛÓ)Ûæ0"ÊæüìsnÜ8Nß1¯#íÃéÁõó
+ùò8nÜ8O_1¯#íÃéÁõó
+ùò8nÜ8O_1W7çcváÀôàvù
|Èù7nN§¯Àæüù1pàzpE;|ÆB¾d|·§S×Ì`D+æGÈá»pàzpE=|ÆB¾d|·§S×Ì`Gn{Ï¥}/¥¦×àÈÜO¾&þ&GuM8Ë\eräxÅÇ*º"¬®¹HMåÇE³®«6tê ·:ÚéÐ0ÜäÌÜNÅø=v;ËÍ3k3±fe¬Á°ÔÃL¸Æ4dÜñM$! gÚ&ïÁðzóÁäòC¢]T.ÚA ãl"©[ÚBvx½HÎM
+ì÷Çg÷Z7è¶[}Iî÷³½#;Þú>X&Gcîú>ÆÞÆ\°Í°E|ݺÙR¥Ýg6íÖWo<´»í}mÄ1É6å"Cl¤vâymVI¶K"ÈÉvÚª²mÊeÃM?*Ùãò.ÜjûQ~J-ü¾ö+Åb±X¬V+Åb±X¬V+Åb±X¬V+Åb±X¬V+s330µÇu»Ýnëwx¢õ}³xú`}×¼IâÇ[X2ea1c.5nnäû³¬/2;Q¦²&ÖÒ®ÌÇÑKòÄåÒ*±4V-ª]Ø@à(§õã,d÷
ìeØ*²SȬ)&+1Þ.ñ¸w
ÚÜÌjv&ÊÖ*ÖÌa¬±í]*}×½µäÛv8&íhã=b»E»|*äx&& q¦àÊ %6yß«´\ìL`+\¤ï¯{ÌgÍ:úvv¼¦î B$6lé$¥$ôbÜàAË7·¹³mÞ·½#:Êg¯}<ãé}8g;ÏÞʳ_xò1ìzK »,а[Óa^Xç9u+BrI32}ñ÷wNh
#ïH)dyµ3L@&r^yMÝ·wE®ë!¶é" Cwa'#Â.ÛmÔn7÷ÂÆP1¢>ûåÆ)!dͶ¢I¥cÍϤլßÑ$(©
4B÷Ê$*H¤-æÔoï¾Pï¼ÎÞøÇY´íd3
+4¦Õm0fÁ3`ÌÃ%cÁ3c2¬ÊÌLeY3^»ú±xºK¦IÔÓ©/^Zl@ @ @ @ @$í<^üqÛ©mäòu[l
ØQ×§ëAnf óEéï޻Ͳ³ÚyH»tǾóxtqeâÌÌò*ã¿3sÇËÃq'aU\²ñ®å¬Æw[°@èg3¹TVrÁ[N!5¼ßWwoNù]Ü·>»Î
+¶ï
&¯:xáÓ.g:2õãÊèí]äáã«71ÎÅ:øó±øMøá
+9Ô
+ÙÅÞN¿Kèn|éIAé!ÞöZF>ã;ÈÙïvÆu=ïÝöz¾}Ò3'¼F6lál BZötÎùöéºJ3[Ë·]#¯CW$ß.sço77vKd&æåÈ dÃv2hHnPS,]ÜÝÝÜÝÙ,Hi6MÂC7w7ww7ww7vKd&æÉsLdÜûLõä²vg;öUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU~>g >}Ä&BrI2I!à ±3>$ÎÐ2oI4p°oÝk¦K,0bÆ.ý]¸ç!í2HO°HCä ÎIùrHÅ29æAfÑ6Í»ª=ü|{Ã.³£6nIô#;èì'²i|Yrîe77.ÈÙaa)ή®øºæãr
+t&å¬XÉÌ£°ëÇsÍÓ]Ü33¬©|¯$2L$;ÜwÐx³Y²9ÀrÉ2ñ'²L9ñøøøsºJùñãYË^`óa
¯©â[B úoye:[yîz>Þ#ÙϰÄ;=j÷<°yï÷¬Ó-Ùtne(Ð^T.ÛÉí}Z}ëÛk#'nd
+º ¨ ɹMt 7j¬º
+Úª¬t 6Mzë33>µGªï(úåÞf\ÄmqŬK,H¬V+Åb±X¬V+Åb±XX¬V++Åb±X¬V+!:Üñݲâ±ÉèÏìN_[ydÇ6²=9ç¦o®°G³Y¯2ÉÉ&KdäÀÉ
ÌÀGsÀÍrÏö=·btØÍE±5XÌÙwß®¼s[c&Ó3\Üë§*²`¡ª¦` dÉ(ó·³3l[æwç]ÔsêK¬ ñÌ$ÂEY|K9ïßxËvÓæÉÏx|· 3,é&aQÂFNóºkÉ&Mlc"c*ëUleCÖÚéï¬æqk.wÌÝèN>®üÊî«)¸®±¸7,Fû¨¾(zwËô~9Ýøµp´[ ^pRCÒÝÍÍ0 G§YÝNõï)®ØÆ¶s÷½Ð<Eû½1ÎÎxyñïA½NÏEñHÊG©Ãiæ<Ëíï/ Þñ(n[rÛnBBo|ñTkmVÉ$nEò¶á m¼Û` $$!¶òJ¥Umº5ð m½÷Ù,Y¶÷ÃK«/ËKÊ/GoÀ vý§tÙ-yß¹<'kÝ/m¥Y2YÞôñçxæçóZuÞ3!|õwë{³3¾®t'Öñéç©{Ï~³[g¾ø;fìO»½;ʼÇÔ̽tÞ ;otnm»ÎÙæo_G~© f}`¦îXò{XuË©¬±0åÕ:Êãï=ÈyÞaÛÃ0ÌUÌðÌ3À¹¹}"\4ã¡Çn¹õóéß}÷½
îü×Í|ãm¶Ûm
¶ Lú¦ &fFI&ùÁåéѬ_S¾{ï¾wß}÷ß}ö å÷ß/Äi£ïú}'·ÄN^Ô_*-Q~ÉEüè§rù(§JsÑME>ª%ÿt^/H½"ʦAJêÁùh¿Aô"ìûqüÊ/ ÿÒúÊ/ê¢þÂô^_t8"úæ¢AýPiE¸¡ðQ~J/ð^~£Â/ª©é(¾L3$ @ @É$2fC$ÀÌÌÌÌÌÌÌËaöKô"ýe#²¾XQ~ñ_¤¢ôQ~¼?"©Uj)âÑN ~ÕOÞUüU<I^t|Rºª)ÓìÊpQíÆ"ÕR}J/´"ZQ~"/È
IUúª®ªSÉsÅ;
+¥UÚ¦$_XEáE¥¡Eí÷J/ª/E÷ ô(¾Â,"û*À@ÒõÊ/ÂQ;(¹EU~
è¢ù(¾¥À¢úAðTE;K¼)ӸĮ%é`û
Ê/½T¼zÞQt¤~Á
+.JT>jªú~Ì>A @ü`Ñ
+/ÔØ¢úX"â,(´¢üEÉEøyòÑx¿|=Ql"ü(¸Qj©9E÷_
+/ÆPCíEðQL?L=¨z(½)×¢0K½¢(§ED¸¢üh´=/Ø©%/ü]ÉáBBIO
¨
\ No newline at end of file
Copied: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/2amd64-2n.output (from rev 7493, mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/2amd64-2n.tar.gz.output)
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/2amd64-2n.output (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/2amd64-2n.output 2010-11-24 09:21:55 UTC (rev 7494)
@@ -0,0 +1,21 @@
+Machine (phys=0 total=4192952KB Backend=Linux)
+ NUMANode #0 (phys=0 local=2095800KB total=2095800KB)
+ Socket #0 (phys=0)
+ L2Cache #0 (1024KB line=64)
+ L1Cache #0 (64KB line=64)
+ Core #0 (phys=0)
+ PU #0 (phys=0)
+ NUMANode #1 (phys=1 local=2097152KB total=2097152KB)
+ Socket #1 (phys=1)
+ L2Cache #1 (1024KB line=64)
+ L1Cache #1 (64KB line=64)
+ Core #1 (phys=0)
+ PU #1 (phys=1)
+depth 0: 1 Machine (type #1)
+ depth 1: 2 NUMANodes (type #2)
+ depth 2: 2 Sockets (type #3)
+ depth 3: 2 Caches (type #4)
+ depth 4: 2 Caches (type #4)
+ depth 5: 2 Cores (type #5)
+ depth 6: 2 PUs (type #6)
+Topology not from this system
Added: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/2amd64-2n.tar.bz2
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/2amd64-2n.tar.bz2 (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/2amd64-2n.tar.bz2 2010-11-24 09:21:55 UTC (rev 7494)
@@ -0,0 +1,14 @@
+BZh91AY&SYÜ¡² Pÿ¥ÿðQÔsÿñ½;_ÿïßð P *ø`Þùè>í@ÈP q¡ hÓ#Md& ÐdÈ8ÐÐ4i¦2 @h
+2d6%5@ Pié ¤Óħê4 6©Qå=4#G¤ÄÐÓ Â4bbÐi¦&0&
+B&LCj§¦PdÞ¤ñ LÒ3)O'ªBGÿÚ,"¸¨_7ÚºÄ-dç>IŪW³ÛþùñjGÀÒIE ÔêI" %"TEäÓãøínU·ÄøóUþV¶µZ^
@bh
+C¼44 Á'e5®Öºb±½VºÖ¹ÒùÚÒHÙ$$ÄlÎÆUIK,HdõÈÖ©¦Ì°Ý}î6av°Êô.YuÒRfhGÁ¼H*©REB%H¤¢Ê
(¨¥B*%§àz¾/ìéákgĶR[\pÙÅ,X
+(mê'ª:ÇÐ à@ P^H;^.àpÂ몼Euâ©UJ BAÁ죢Õ*LÔ9¥S¥4ÂI4RÆÎ×PÏÃ%ªÖ 6µlfƨ4¤
³bH½î$µª®´$¨LQ,]R(ÆÁ¢!^!D+*Ô ¨M!5£8IcY
4ó¤¹
"Alß¾n^ö
+=¾z»±ì'o\Ie¥)BÑG2#tH9ð²$T9¬üî{ï¾ñ÷¹î{ä÷&]<}¡©Mìê]éù=û?OæüNû8<@HôHèö&Í5&RH©l&KÒ©¢¢ ¥¬M
+J¢"¦%/Vª8ZÏ^5¼ïp×Z9§}ÀÓØ÷¹ÄZRµ%Egäg^£ä\×ZÐ9Hè߬Î]Yµ³ÃI1*£
+W¬çÛºI£m3ª÷â÷øòË\.p¤4£÷í¶ô[Z®RÇËÑ(Õ9¥iu»çlôkÒªrµåpÝqΣæ¬0ÄF¤«ß¯mM)Ù{)Ô©Æá¶m´ÒÉeZÝÍ¥Q·=%±È©*¯³!KirA
IFÁ<¦\" á
+eÅ
+^²OUçLéLX)JMgR¼<µV¿o=kR-ôÆFdHóßÂR°yÞ|gOo/OkR$nÙ®ù4åVÓfa®b¨ÑFZ&Üs{V)$íìEé¦׶i,à²kt7MvH5¾sÒåmØã®àtÚûçfql^Üo§8Õ$c]î¾yöÎú/Õi)=ßñhºb5º¸[«NkI×ÇYIJµA6̺((T¼Z®]IÉùÒH×|çmËe®®ý»ñi¶k,roÖ×Ji®ÒfËé2¤5ÖøÅJöï-uÖ[M8ªaxÑZ¸Ø¾ÎNo¼Ë·
+ÔÓ6ͳêU¾«?#°äd·ÏN
+]t|@¦ÿ«Oü`þ
+hÝ»Gл\°þÙØ¯öªSêò§r~¶Ëy),Õ-Á8.9¤ÅÑ5RÏ¡ýD/ÝÞàú^
N
+Ó.¸úVI#êNIO:hÃéx§7ÖeNä4ÂQüÄB¥FJ54E¸Ø!IQè]ÿ˶M\H¤e¼I#)7û¬¢ígº«ÎCµkRHg%>Ã+>ÅÔõ¶JRSõöè÷Fé<Sº`V:´¤Êû$Ð:9Ò®hC¸n×a$9¤#dò¸9°,òC #Hðó½ïºÄ:$JIÜ£Úê¦ÎóÁ¢u¥¤ì'í:¤Ojç3ÎÄñI#¹àL¯s#u',áª]Hâ¿ÜÕejFÃí$gÔÝÁªjû-Î1'Ús¾ÍÑÑMÆÞ§¥à; s'jI#½=è2âó¢ÚVõkð:ÕËÌ:
5s¼È¶W$É$PÄ{Î'Ûa¢w¾·²ìW?RÉ$lîöi; $xµòDP&Ë'¥Á$)äMlh).NN['ZíH»i0ÔIh]fTaR$av'É(Õ0\)·zH
Õ,¡»wÖGØÑHRÚØ,Rɱ9v"Î)IÒ$ÓÊ-"FäøRû¹"(HnPÙ
\ No newline at end of file
Deleted: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/2amd64-2n.tar.gz
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/2amd64-2n.tar.gz 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/2amd64-2n.tar.gz 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,14 +0,0 @@
- ÀÕ9K íïnÛ8Åó9O¡]¢H{¾Í`P`0ØÁb;Å~4uÚ!)ÙÍ>ýJNÊv&oãÛAîùõOm]â="M¾[;û©þ~u1Tϲá«ö:|¯=|ýÌÖFL)«õÒÚksd{K_¹k»¼I«M½ÙÕåBÓr¼!^ÌSüÛöB×À¼øë4K2Þôñ7U?Çñ_û²¯}ÄÇßjý³ð|üûwa÷ZA|ü³L9Äã_ìï^ã¿âï·?ñïÿëmøë &þýï>þã?&fÇ¿¸kPu«uSÞ&ª!Àö1ÞÏÇ¿öQüqN_%êBùáñÏ}¹|ý½ß øDëS÷ò¯êfÕÔsëÔ¿ÊNôúúgaª;H_.sô¯¿ñ&0þë¿Áøyñïê}½7´!:þF+"ãßÝ6!_¯Úò¦?WçcºÿOOâo³èÿ9P½¿d"õ¿¿}hË"ß®öyñ)ßþÖqºiýÞÿ[ç2è
-ù&RÿEÝÌÓüxýÔ8èý¢ÿ¸Ñ?eüfý?ÿËfþëªF Ö1(ÜEõÿ*MqÿÏÆÿ²§ÿ"/néùßÿÇô¿<æ9YÃMüe@ÿO=æÿY Ä¿-ÿ7ÿ»Óûãú´2ö7ÄBÐÿS`¸'Xíó¦+»²þsåæÿÑÿcãÙôß=ì_¹ÿ×§ã?3Ü@ÿ|¨ÊeX£
-AÿÛp¶1uòÃcÀÐ?þ
-AÿE}P7 ÓÓñù¿,5)ôϳh $CÐÿòvU\åm[eÞ÷e÷ðRý{ü?ÚAÿ¡ÌÿßæMX¯úV»|?£xý[Aÿ,Àÿ#þ«»ÝMh@º9Öÿéó¿6Õúç`Èÿ¡K´þÿÃÁÿÃ!þðسüOÿ'îÑôÏãÿþYÿC6ý¿¾ÿãìþϬÿÀÃ/y£ Aÿ,þ
ùÐÿË ÿü_,Àÿ!þ/àÿ8íÿ3oàÿfé_ÙPæÿYüð² ÿlú¿ÿã4ÿgSÌÿói4 Ö?a1xÿÃcÿ?ñçñÀÿËü²!èÇÿý³ülú¿Àúçý?Öÿçáתí»bhÀÑ õ?°þèÿeCÐ?ÿù_àÿ
-Aÿ<þäY@öG6ùÿò¿,Àÿ!þyüÿcþÙÌÑ?aÉ#büý´×6
ÿyñÚÿTGLü?û%á"ãßÝ6!_Gî Jÿ+û ¢Ôÿ÷gòͼ½Àãçÿ¬Ãú<`ÿoÙDêÿ°ÿ÷Í!äÿS¬ÿÍô/þãFÿñYôÿ,`ü/yúÿû;ÌÿpÖý¿1ÿÇ!þ,ûgXÿìÿ-þñüßÃÙôϳÿ7ÖdûË <ÿ÷ûO6ýãù¿7ÿ
-Aÿ<û#ÿÇöÿ
-eþÏÿ½ÿ
-Aÿ<û;èìÿ-hýsíÿ
-ÿøó¬ÿç¿XÀúϲ!èÇÿý³Û?Ùôϳÿ7ôÏöÿ
-Aÿ<ûcþôÿ²!èÇÿÿðÈ õáÿfþOÙPæÿYüð² ÿlúçYÿó,`ýgÙDëiÿoçáÿàÿü¿,Àÿ!þyüÐ?¸ý
-Aÿ<ûCÿ,`ÿoÙôÏãÿÀú, ÿ
-Aÿ<þäYÿC6ýóø?ÿeÙÙPæÿYüÈÿ² ÿlúçñ`þø?dó¢þ«zMßõç+Ñþí¬Áþß,LÇø`úßw ?sãßwúy¦:JSý¿¶§Ïkç?y⺺-»$5K¹tq}øÉ®lÛD=þûcÝrSõßUmÈïÃá¿,3e®·õ`.áÎéÅâºînûâ
ágKaÑ¿0sõ¿»²úXêпîõ~¢å=ôÏÂõïJuò°û£îòíÉ£^g&ùôó¨À»&ϯ'}míÂøÐõIç£?]yÿt¡_Úq_«ü¸Hj
-üR6ÝÃè w:~ÿnÊ.Üäŧq!5*ð®ÜæÐ~ù~¸ÔÆ"ßïG¢ÇûÅø?Uu5>BÒ_·z|áÅ?òí¨uã7ùû»÷«UÙõe~|îMþ\ßUE8ùãï·ùÍÑËF/Îäû
b»§*´Ëü8ï?TÍc/ÇÉÌãyøÞ$`enû_ìï4µÃøßûñªÝ¡ÉÐCû÷æo¯ùIÿáíÿÜø¯Ëþ<õ¥éù¿Óý?µ¶Xÿ£º\"ÚÿyɾgÏÿ)Bÿ,(LÿfZÿu5Øü¾¥èüöþÔ0 Hf^ÿOXô)ÿ£ÿá`nü/ÿ9ÿi£àÿbá)ÿc2çÓlÆäìÒó?PvÿY,ѽü«öüOýsðPÏä²
úsP§ù£ô"µö¸ÀQþ'ñÞfnTà,ÿd©Õ£gùD[µx.ÿ£ÇULäÔYþ'1VûñÎó?[?æYþ'1nZQÏäqþGMåÔTþGçú3ytªÏò?^8Ëÿô
-·BþGsÛîùÿÏÿ² UßCôb«ÿá1 j¤ü¯Fþø³æÚðül¦õ¿¯Û¶ìï#èuDçúËþOÿÍ´þoóvxÖûê ä½ÿè_6óô_ÕÍ.ß®vaW7/.õò,ñý¿QÖbú àíðߣÖh h
\ No newline at end of file
Deleted: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/2amd64-2n.tar.gz.output
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/2amd64-2n.tar.gz.output 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/2amd64-2n.tar.gz.output 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,21 +0,0 @@
-Machine (phys=0 total=4192952KB)
- NUMANode #0 (phys=0 local=2095800KB total=2095800KB)
- Socket #0 (phys=0)
- L2Cache #0 (1024KB)
- L1Cache #0 (64KB)
- Core #0 (phys=0)
- PU #0 (phys=0)
- NUMANode #1 (phys=1 local=2097152KB total=2097152KB)
- Socket #1 (phys=1)
- L2Cache #1 (1024KB)
- L1Cache #1 (64KB)
- Core #1 (phys=0)
- PU #1 (phys=1)
-depth 0: 1 Machine (type #1)
- depth 1: 2 NUMANodes (type #2)
- depth 2: 2 Sockets (type #3)
- depth 3: 2 Caches (type #4)
- depth 4: 2 Caches (type #4)
- depth 5: 2 Cores (type #5)
- depth 6: 2 PUs (type #6)
-Topology not from this system
Copied: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/2ps3-2t.output (from rev 7493, mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/2ps3-2t.tar.gz.output)
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/2ps3-2t.output (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/2ps3-2t.output 2010-11-24 09:21:55 UTC (rev 7494)
@@ -0,0 +1,8 @@
+Machine (phys=0 Backend=Linux)
+ Core #0
+ PU #0 (phys=0)
+ PU #1 (phys=1)
+depth 0: 1 Machine (type #1)
+ depth 1: 1 Core (type #5)
+ depth 2: 2 PUs (type #6)
+Topology not from this system
Added: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/2ps3-2t.tar.bz2
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/2ps3-2t.tar.bz2 (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/2ps3-2t.tar.bz2 2010-11-24 09:21:55 UTC (rev 7494)
@@ -0,0 +1,10 @@
+BZh91AY&SYß'4 ÿ° Äwÿü:FL@ÿïß° 0 (P{ÒVJU Ó@hM0&jh 0L at 0 hÈh`ba"M4 z&Òz'¨Ða14¢=OSÔòjhmC0L at 0 hÈh`bajf¦©þ=SÔ6õ!¡êhÓ@ýSn¬Ö»ÃûUÀja¬C¾.<¬
+89Åø[³"¼íÒÕKDM2ªd6)"F@eI¡!´¤ØjØyI¯Ä\ÆàIȳ·úFä:/%ù"H 7dAê?bÒòâ|c)Ô©ÈóÅ|x|9Çt H)-h,:R^ Ûñ!;¼ùU-Î"!Ä»¼ó&cV@$a!±Û®Þ
+§¢(a((hYS³°%R5
<ùY¤åa±1ÇßÉ&'l*lÃ)*
+PµRY.)*°ÇͯæY
+H°Ayº{<'{[FÞØ!¸J=êcËØG¥S1MMûõ)¦¨$I:×TCT ³;+*£øÙc9 öPK)¸HLD]2C% ²|PDL¬Úa/':ÉæDT4}ÏtÓôDQöþ Bªià`EU#`À¿OâY@¦söËl,a¶g4oühyhÿdaÒ8(aT(eX6ªj©D ÖÀè^»4,ÜÐõж
+(Z^k&¦2g¦t
+
æcyÕ`;Z*T©@üI°:^;N;U(;ÍßÖoÌ®
+
ÆêשG×_R¦ ÁS°áÚàWȵRNb¤ú BÕK
+7l·EMö
çXeqir¥ÂÅâ
ÇyS*HΡ§" iä©ÑSi¹C*i&ñÛ&¤t*sñw$S
+ø¢s@
\ No newline at end of file
Deleted: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/2ps3-2t.tar.gz
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/2ps3-2t.tar.gz 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/2ps3-2t.tar.gz 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,2 +0,0 @@
- èÕ9K íßn0s[ËMj;ÿ¯»Ü4i7&õ7As0Â$Súô3I#uQ ©>T
&¤FùùÃÇ'eåw¬ù4âQÔ>RÝïTÝã3Ja!²¡4¢|FS^ÔµmÒ:gó
Yè¢<qª-ÄÁÂ^ò¯jM5 úåOyDcs÷:eB2ÌòϪuQ>KÑïó~3!ØQþÄdK_È[x»²ÖÔ7_B¸ pã¾)ïµIóyZæá÷rQê6LuSlTÚuUºQyiýnßÁé»ß§ùóÇsP«MaSºWh|OÂÕ¦ÝMÔñ1^Kám§V¹äÃçÝûJ§Í©Wî¹_<X\éöo?rÛ>qí¦åà¿ÝÚÉjþ÷áôßÝÿ¹ xÿàuþ¹ÓÇYyñy0<.c\ÿAx+wܨÕå¦Áðü#NbÌù»Uù2s`xýSþп)Ýg¢FÑUÿ»ÀQþõ?ä¾ó
-9EÿU¬*qcá¿ý ý÷.ÿµÅ\« Îð?æè?è¿ßtøï~èèMàû?áþ>ù7¦2Ú,¶çNÁù33ìÿ0(ÿfY«4OÚ (½?Îõ_ÿKßÿpàö¿ïý0¿ã¢Û§50¸þgBbýÖÿ~ÓÇ»j[ó¬\ét;táþ3&"ôJúï1}ü¯[[d©Nü¬1ºý?úÿ?Fiþ«¿ßtøo³¥r¿+ *óGÕM7Cvþ{ûÏ$è?¸úûM÷úO®Óÿ§Øÿ
OþWéÿG?òìÿìÿý¿ãÿ¤ýÿý ûÿ~ÓÇÿ«ôÿqÿöÿý¦ÿWéÿ£ÿ ý ~ñAc! P
\ No newline at end of file
Deleted: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/2ps3-2t.tar.gz.output
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/2ps3-2t.tar.gz.output 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/2ps3-2t.tar.gz.output 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,8 +0,0 @@
-Machine (phys=0)
- Core #0
- PU #0 (phys=0)
- PU #1 (phys=1)
-depth 0: 1 Machine (type #1)
- depth 1: 1 Core (type #5)
- depth 2: 2 PUs (type #6)
-Topology not from this system
Copied: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/2s390-2c.output (from rev 7493, mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/2s390-2c.tar.gz.output)
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/2s390-2c.output (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/2s390-2c.output 2010-11-24 09:21:55 UTC (rev 7494)
@@ -0,0 +1,8 @@
+Machine (phys=0 local=1025408KB total=1025408KB Backend=Linux)
+ Socket #0
+ PU #0 (phys=0)
+ PU #1 (phys=1)
+depth 0: 1 Machine (type #1)
+ depth 1: 1 Socket (type #3)
+ depth 2: 2 PUs (type #6)
+Topology not from this system
Added: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/2s390-2c.tar.bz2
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/2s390-2c.tar.bz2 (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/2s390-2c.tar.bz2 2010-11-24 09:21:55 UTC (rev 7494)
@@ -0,0 +1,13 @@
+BZh91AY&SYOwM Õÿ
ÿð@Jÿú}o_ÿïßð h`{ᮽ,ñÀô @5M4ý)é2 ¡ê
+
+ E=&2
+ s 4F¦&LM d&A2iL Ó@ "Ci¤ôjM ¦ ¦Ð4 ¦i6Q§© 4 4
+èËíR¡ÿ:²B¡þc
+Pî"Hs4R aqzàD
+À,!8*«Z;A-¢E»gÌ¡Õ4`BÂMÖNnD¤DÒA¤cH :T9ÎÉ\¤ÊL©rH,3RI!I$ÐCÁÐÁ6 Ö¨ÊݾbüfãÂæ{ol¶{+YSÇ_½PFí\+V
+CY¦µ!îÙo×l¦|ºrÀásÝàU.ݬE´ÐÎ8kt#`1;P IŤÕÙ _x±-fT_)ñF}¤söoÏôo ú®¹¶ì$WR@D¢ 1¤À Ͷù9xA0Sþ×/g¹L£|vWV>?!Ëý
é w¥-B¢Ï¨Nzh-Ȳpܵl±1&)Ùzõ~ncûdª*Øð¨D¢Ê¨E
V¬¤3g\º+xËS|êayi@÷ NÍ·B·¤Pæ&÷b&ª ·.PÖAx@´Ø$¤£6l½ù`ÅÒ*ysÄØBH3+ õmbDå§å$ʱ¶Ð§6sî-µË9Wvv7ÅÛ0¢Ò T¬²¦ Tpk«5TT2År Èt¥&dIwZØÀ" 9çõ4kÓßOÜ;§WÒ£¤êæÜ8ÇM6³ynòÂ[~íÌ3H¬âDâ8qÎR3«q*_[S·ÝI¼©XCüC('¨âe«Ð×{¬"
+\H"[§Iô9^6qÅÏdJ\¥|L@µ() Ô*:mìéyHi¤4YrC¦dµ:Òéá;aRs¾òûîº5¤ªÂPETT'jrh#iÄãG(ª!UïU«4È!
+&¤PÉIRs¢Ã¸¢¬5Î3ÓMì S¹¦I²WU,:½TáÌÓzèéæ^Kn'"2"¯Ôm6&¾=úm8PGHÃü£ /$*«A1ô
+sÂãÈ8àUw(ÒdvÀ\¥{°MÆP¥plÊ,(ÉÊç@ì@×ÊÎdK&í^ØÔ7ï<âµåâ¹gzò¢H=7 _2¦ËÿH9A{L::?
+l¿iq¹
+f¢ÂÈå %©l
ªvS+ýT$\-¾$úÍ(ö27áFùyÐË,z7ózþ.§WU¶@Ã]¹ðëH3©yô@ѪÉ(oÀÉdá±ËT.*"ajÓïU')@3é3ÉCQ%þõð£èÝ36p¼4-æç*Hè$U0Ú!A »`è'·s5âÔ9ÄÅkSÀZp *ÇÞ¯é¥Ò¸pzöH$bÁ¾î6¢&4ÎIúÙä¨2í§ æL6¤l
â]
ÂÏÞ»N¡uh±éÎêÙ]\QºuêÐà'Ót#±QµJ ¸Û9é&;±Õ¼ýË&"¸$Me¯¥P°ÚnÏá îI&Ãe¾X=9FI ËXêÌ
¨6Ù$k 8wH@Yzo'3Iò &:eÁÌ`*_9Á¦ôº½¹Rs_ngÊ¡P¦ÁvÙSY»8Åa ì`ô.äp¡ î
\ No newline at end of file
Deleted: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/2s390-2c.tar.gz
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/2s390-2c.tar.gz 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/2s390-2c.tar.gz 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,7 +0,0 @@
- *¹K í[oÛ6Çó:
-{]WÞEØCÒ!Xuv{4dvèQN~úQ²Øn]PØt~cGǼÞ$ZÔ²¿¡ñÛ³×;!êw¼ÿþÀ!»£õ÷L!ñyzdc«¨DèÌFéýsßk³ÿG¡þ·÷öµê@ÿ.8øßþ_ê;ë¯ýýÏp ú÷Âwýï>W:}±jÐßÿS
-þ÷ÁsþÍÔþþð¿Úü_äÖE¢OI£v°äüÿ#ÿËg¿ÔI>ÇÄýß02;Àh´ê¿ÔVgÕIi´ëë_b ú÷~ò2múw/|ê °ÿøÏÉÃøÏüGE´0©@ïñuaüçWì:éÒIÿU^äI¾¾ØôoÿÁú¯úù?ÎK=¯×L¶¶Óhmÿ 9jÿ)´ÿ>ØyA0MNÐÿ<1¶ÓÂ@ïù?eÂüß0ÿ6ô-¥¶Ý;ü#ÚõOÇbп@ýÓ¦þÍ2Ñó8ß¼Ðü èßT1¥
5 Òmý7ÏVf½)Þ0 ÿêûÿ@ÿ¯ôÿÓ¦þóÌMøß4@ÿTÀõ/þ§M·þ¿ìÍ<Ë+=h
- ]ÿøxüïþýû ûü¯2©oTöù<ö?çüïp5 ä*$úÉÑIÿED¥ùU&ϤѮv¬A`ýÇ7¹slUQâ"mú?qê×Ðûú/@ÿï¸þ;mÚô_jGC:ý=zÏÿd ýû ÍÿKc¨oL¶Æ ëÿ0ÿ÷ÖÒtÿQöÿÀþo/tòÿûàþ?ÀþiÓIÿcìÿÐþû ÿ=îÿõ/ì< û&Ê úÝý?pÿ`ýwÚtÒÿû`ýϰþ7m:éý? /0Ì¥Tný(ÝÖGØÿ×½ £ÿiÓIÿ#ìÿpýÇ ÿiÓÿaÿ¬ÿ{¡ûüÏóþþ÷Á
!¾`rtÒÿû`ýǰÿgÚ´é߯7z9OãyÑåÜFw½nýhè=ÿ£õ пàúÏ´yÔQæ¯õÐZá=ÿ(1Üÿí
Cÿ»²8íQ?ߥýçâøù_T`ÿyÁõñJ%Fa(ÀL18 qÀ%Q(CbäºeÉ(áî3(³ú÷Ê8¤b+.Å!¨ÐÅC0ÁH9O×)
Û°.º$°P²;t!\XI)§!bJqUg¬Nr7SE.¬`.´ÉªI¥Hg¡B*ÁR2¡Y\ýS!æêQ©Ù¢^¿péWó곺ÂkkµE\ÊúÃæ,sDwÿ/<¾ÕKô¿ì*õêÔd«ü
ÓhÑ?áß>ÿÕùôï:ý»Ùß9j
-º½9ËU©õÎàem¹Ü¬Vº´ONÎò.ª§O0
Ëõ¨8¶¢ÆrWæn/!òqmyE6ʸê!¶ýlÊ,ûÙv¾ÍÁ¯¦¬î÷¯=ÒÏߥ©ô"o÷MlYýµ}Ê®)¨(Î
Pµ-·ë$ZìGTWj×TÖ:N"F¤É_Ýìªmé|ÎÊíÑB5±Õ©ª<·\ÿqu=ÿ¹Ú»í)×ù&õÁ©î,gú)-üËÓÔT¿÷§ÉfrWn[Kåf×Mî*H·¿Ò(qmã#æJló¶³|¶EäÎu?Ì»Mv»
-ãÚÞ¦t~Û¬uSÖó=Ïâ½Ã{nÝ?üÑÞ-¿søzSú°ùºÂUôæìÆÖߨ¶ÿ®GößþcþÍï0"áþ/Üéls³Ü5çèýå·×®RÌ~D»!R^ÚÎù:OMaQ¡KäjË9
-¤T?c<[é¨ÚÚþp´2¾Fe|lµJ4Jmú§6i«Í#GøÝ¹þÄäú]]ýYê¬2+7KÎî(D]8KÕ¿E Ý!7Hö"!Ã#Û /Á¿búJ
\ No newline at end of file
Deleted: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/2s390-2c.tar.gz.output
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/2s390-2c.tar.gz.output 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/2s390-2c.tar.gz.output 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,8 +0,0 @@
-Machine (phys=0 local=1025408KB total=1025408KB)
- Socket #0
- PU #0 (phys=0)
- PU #1 (phys=1)
-depth 0: 1 Machine (type #1)
- depth 1: 1 Socket (type #3)
- depth 2: 2 PUs (type #6)
-Topology not from this system
Added: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/48amd64-4d2n6c-sparse.output
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/48amd64-4d2n6c-sparse.output (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/48amd64-4d2n6c-sparse.output 2010-11-24 09:21:55 UTC (rev 7494)
@@ -0,0 +1,222 @@
+Machine (phys=0 total=100661148KB DMIProductName=DRACHMA DMIProductVersion="Rev 2" DMIProductSerial=0123456789 DMIProductUUID=008844D0-2214-DF11-B89F-F50F715B14E8 DMIBoardVendor=AMD DMIBoardName=DRACHMA DMIBoardVersion="Rev 2" DMIBoardSerial=0123456789 DMIBoardAssetTag= )
+ Socket #0 (phys=0 total=25163676KB)
+ NUMANode #0 (phys=0 local=8386460KB total=8386460KB)
+ L3Cache #0 (5118KB line=64)
+ L2Cache #0 (512KB line=64)
+ L1Cache #0 (64KB line=64)
+ Core #0 (phys=0)
+ PU #0 (phys=0)
+ L2Cache #1 (512KB line=64)
+ L1Cache #1 (64KB line=64)
+ Core #1 (phys=1)
+ PU #1 (phys=1)
+ L2Cache #2 (512KB line=64)
+ L1Cache #2 (64KB line=64)
+ Core #2 (phys=2)
+ PU #2 (phys=2)
+ L2Cache #3 (512KB line=64)
+ L1Cache #3 (64KB line=64)
+ Core #3 (phys=3)
+ PU #3 (phys=3)
+ L2Cache #4 (512KB line=64)
+ L1Cache #4 (64KB line=64)
+ Core #4 (phys=4)
+ PU #4 (phys=4)
+ L2Cache #5 (512KB line=64)
+ L1Cache #5 (64KB line=64)
+ Core #5 (phys=5)
+ PU #5 (phys=5)
+ NUMANode #1 (phys=1 local=16777216KB total=16777216KB)
+ L3Cache #1 (5118KB line=64)
+ L2Cache #6 (512KB line=64)
+ L1Cache #6 (64KB line=64)
+ Core #6 (phys=0)
+ PU #6 (phys=6)
+ L2Cache #7 (512KB line=64)
+ L1Cache #7 (64KB line=64)
+ Core #7 (phys=1)
+ PU #7 (phys=7)
+ L2Cache #8 (512KB line=64)
+ L1Cache #8 (64KB line=64)
+ Core #8 (phys=2)
+ PU #8 (phys=8)
+ L2Cache #9 (512KB line=64)
+ L1Cache #9 (64KB line=64)
+ Core #9 (phys=3)
+ PU #9 (phys=9)
+ L2Cache #10 (512KB line=64)
+ L1Cache #10 (64KB line=64)
+ Core #10 (phys=4)
+ PU #10 (phys=10)
+ L2Cache #11 (512KB line=64)
+ L1Cache #11 (64KB line=64)
+ Core #11 (phys=5)
+ PU #11 (phys=11)
+ Socket #1 (phys=1 total=25165824KB)
+ NUMANode #2 (phys=2 local=8388608KB total=8388608KB)
+ L3Cache #2 (5118KB line=64)
+ L2Cache #12 (512KB line=64)
+ L1Cache #12 (64KB line=64)
+ Core #12 (phys=0)
+ PU #12 (phys=12)
+ L2Cache #13 (512KB line=64)
+ L1Cache #13 (64KB line=64)
+ Core #13 (phys=1)
+ PU #13 (phys=13)
+ L2Cache #14 (512KB line=64)
+ L1Cache #14 (64KB line=64)
+ Core #14 (phys=2)
+ PU #14 (phys=14)
+ L2Cache #15 (512KB line=64)
+ L1Cache #15 (64KB line=64)
+ Core #15 (phys=3)
+ PU #15 (phys=15)
+ L2Cache #16 (512KB line=64)
+ L1Cache #16 (64KB line=64)
+ Core #16 (phys=4)
+ PU #16 (phys=16)
+ L2Cache #17 (512KB line=64)
+ L1Cache #17 (64KB line=64)
+ Core #17 (phys=5)
+ PU #17 (phys=17)
+ NUMANode #3 (phys=33 local=16777216KB total=16777216KB)
+ L3Cache #3 (5118KB line=64)
+ L2Cache #18 (512KB line=64)
+ L1Cache #18 (64KB line=64)
+ Core #18 (phys=0)
+ PU #18 (phys=18)
+ L2Cache #19 (512KB line=64)
+ L1Cache #19 (64KB line=64)
+ Core #19 (phys=1)
+ PU #19 (phys=19)
+ L2Cache #20 (512KB line=64)
+ L1Cache #20 (64KB line=64)
+ Core #20 (phys=2)
+ PU #20 (phys=20)
+ L2Cache #21 (512KB line=64)
+ L1Cache #21 (64KB line=64)
+ Core #21 (phys=3)
+ PU #21 (phys=21)
+ L2Cache #22 (512KB line=64)
+ L1Cache #22 (64KB line=64)
+ Core #22 (phys=4)
+ PU #22 (phys=22)
+ L2Cache #23 (512KB line=64)
+ L1Cache #23 (64KB line=64)
+ Core #23 (phys=5)
+ PU #23 (phys=23)
+ Socket #2 (phys=2 total=25165824KB)
+ NUMANode #4 (phys=34 local=8388608KB total=8388608KB)
+ L3Cache #4 (5118KB line=64)
+ L2Cache #24 (512KB line=64)
+ L1Cache #24 (64KB line=64)
+ Core #24 (phys=0)
+ PU #24 (phys=24)
+ L2Cache #25 (512KB line=64)
+ L1Cache #25 (64KB line=64)
+ Core #25 (phys=1)
+ PU #25 (phys=25)
+ L2Cache #26 (512KB line=64)
+ L1Cache #26 (64KB line=64)
+ Core #26 (phys=2)
+ PU #26 (phys=26)
+ L2Cache #27 (512KB line=64)
+ L1Cache #27 (64KB line=64)
+ Core #27 (phys=3)
+ PU #27 (phys=27)
+ L2Cache #28 (512KB line=64)
+ L1Cache #28 (64KB line=64)
+ Core #28 (phys=4)
+ PU #28 (phys=28)
+ L2Cache #29 (512KB line=64)
+ L1Cache #29 (64KB line=64)
+ Core #29 (phys=5)
+ PU #29 (phys=29)
+ NUMANode #5 (phys=45 local=16777216KB total=16777216KB)
+ L3Cache #5 (5118KB line=64)
+ L2Cache #30 (512KB line=64)
+ L1Cache #30 (64KB line=64)
+ Core #30 (phys=0)
+ PU #30 (phys=30)
+ L2Cache #31 (512KB line=64)
+ L1Cache #31 (64KB line=64)
+ Core #31 (phys=1)
+ PU #31 (phys=31)
+ L2Cache #32 (512KB line=64)
+ L1Cache #32 (64KB line=64)
+ Core #32 (phys=2)
+ PU #32 (phys=32)
+ L2Cache #33 (512KB line=64)
+ L1Cache #33 (64KB line=64)
+ Core #33 (phys=3)
+ PU #33 (phys=33)
+ L2Cache #34 (512KB line=64)
+ L1Cache #34 (64KB line=64)
+ Core #34 (phys=4)
+ PU #34 (phys=34)
+ L2Cache #35 (512KB line=64)
+ L1Cache #35 (64KB line=64)
+ Core #35 (phys=5)
+ PU #35 (phys=35)
+ Socket #3 (phys=3 total=25165824KB)
+ NUMANode #6 (phys=72 local=8388608KB total=8388608KB)
+ L3Cache #6 (5118KB line=64)
+ L2Cache #36 (512KB line=64)
+ L1Cache #36 (64KB line=64)
+ Core #36 (phys=0)
+ PU #36 (phys=36)
+ L2Cache #37 (512KB line=64)
+ L1Cache #37 (64KB line=64)
+ Core #37 (phys=1)
+ PU #37 (phys=37)
+ L2Cache #38 (512KB line=64)
+ L1Cache #38 (64KB line=64)
+ Core #38 (phys=2)
+ PU #38 (phys=38)
+ L2Cache #39 (512KB line=64)
+ L1Cache #39 (64KB line=64)
+ Core #39 (phys=3)
+ PU #39 (phys=39)
+ L2Cache #40 (512KB line=64)
+ L1Cache #40 (64KB line=64)
+ Core #40 (phys=4)
+ PU #40 (phys=40)
+ L2Cache #41 (512KB line=64)
+ L1Cache #41 (64KB line=64)
+ Core #41 (phys=5)
+ PU #41 (phys=41)
+ NUMANode #7 (phys=73 local=16777216KB total=16777216KB)
+ L3Cache #7 (5118KB line=64)
+ L2Cache #42 (512KB line=64)
+ L1Cache #42 (64KB line=64)
+ Core #42 (phys=0)
+ PU #42 (phys=42)
+ L2Cache #43 (512KB line=64)
+ L1Cache #43 (64KB line=64)
+ Core #43 (phys=1)
+ PU #43 (phys=43)
+ L2Cache #44 (512KB line=64)
+ L1Cache #44 (64KB line=64)
+ Core #44 (phys=2)
+ PU #44 (phys=44)
+ L2Cache #45 (512KB line=64)
+ L1Cache #45 (64KB line=64)
+ Core #45 (phys=3)
+ PU #45 (phys=45)
+ L2Cache #46 (512KB line=64)
+ L1Cache #46 (64KB line=64)
+ Core #46 (phys=4)
+ PU #46 (phys=46)
+ L2Cache #47 (512KB line=64)
+ L1Cache #47 (64KB line=64)
+ Core #47 (phys=5)
+ PU #47 (phys=47)
+depth 0: 1 Machine (type #1)
+ depth 1: 4 Sockets (type #3)
+ depth 2: 8 NUMANodes (type #2)
+ depth 3: 8 Caches (type #4)
+ depth 4: 48 Caches (type #4)
+ depth 5: 48 Caches (type #4)
+ depth 6: 48 Cores (type #5)
+ depth 7: 48 PUs (type #6)
+Topology not from this system
Added: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/48amd64-4d2n6c-sparse.tar.bz2
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/48amd64-4d2n6c-sparse.tar.bz2 (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/48amd64-4d2n6c-sparse.tar.bz2 2010-11-24 09:21:55 UTC (rev 7494)
@@ -0,0 +1,118 @@
+BZh91AY&SYò®ÿ÷ÿÿÿÿÿÿ÷ÿßÀÿïÿð "@
+ ¿ø`ßxñJ " *¥rhHHè±I
+H Ð yS^E { 9óï6ã´
+<p@,ø} ;¹ ïéòÝî`©@ /`4-dÕ!³uEÜÀ,UQÇJçeÀ@(çg ° thuTäåÀ]À¨Éôtð ¸äs ÚÛEJ8;8ÇYD Ò0
+Êv^Àa<x TD H Û &¿ÓÕU)¦£õ5bi¦&hÄÑ 0L`0 FhTñé5$eRH@&& ÔÀ¡ iFO=T êPd $Ò!SQ"¦5O52h``LÄÐLA AB¤ô4hiê
+44mA h z¦@) F¦ÔÓ)´ziª~¢zG¨z4ÄôÓQêéyC hð¦'ýôâbüWñþÜ?ÜÿuUUUUUUUUUUUUUUUUUUpèÄd@Ùºªªªª¿Ù@é p'AÃ,bêÆXe#q7MØÃcà(þ5ÛXdÉ2aLdÉ#bôAX&é½¹dØ(ÒLøñ?Ç|gUÆ(Áܱ
- LN;(ãdZO!¬E2(G)Be:KiBß)m4Á0(ECü´
ú×ëàñ~æjÚyëM
+ªø5çÃÕ¡ÀF¿Ø*dXHõSÑV¡ªHYµ+iTT~éûªÔ@UGJETïÕÏÑ»ç_~ë7¯¯½oUkh{·µ·³Y´^îBSÝݽ2ä»u«cnÝ^¼s^ÂäÜ+KÞæf^ȦäÜɰµn±lr],ªR©L%]]*[º&fìÝ*u#nIJ²«Qò>GÈù<ÝÍöÛäzÖ£ä}ª¥ #suÅÕ:U)VÕnÒ©J¥6ð
*T¥[J¥*à ZÞ6÷Võ#ä|§;}^ssx[Qò¾»Î^VåË.I{3.á·.\¹%˪ªÙ·.\¹%Ë®fܹrÜÛÛ¼»ËîTÃkFaH<`kȼ3/a^ÄäkÈ ×Í !Aæ£MÍkÈ ×RÖ¼3Dä^K×÷0Í<kÈí·Ûoê·hä^@5ä½Ì3@%
ëȼ4ÜGRõáy ×ÂõäªÉ3@ ò"¼kÉazâ¹!U at Z®èEòua4ËÝêÖï+E¡4Y¯S${DIw$¦:Û׺Üë[ÜÚ¦æÝÛÒ;IIÐÌ*ªòeBe@ÚØeCr¡¹PÔô2´2´%lÙRL¦¶PܨnT5=&T-lÌtóv¤2¡¹PܨjzZZL¨nT1Õ½ÚÊåCr¡¹PEÊdʲe2eBª¯&Ty¸än:ÝÙÝÚÝ^îÖì[»¹$$ÐA»5ó[æ·575¹»»$m§§2Nk·wdszmÍsv·vMnîäÍëV]ÍÕ.æíVÔÆö·(ÊuR
+FI2¢Mêóe¦*fÜ6ÂGd°wBLo,6Â2¦mÁYYåL©1Ê2¦eeO{q©wDÒ,njlÈÖGÂC3ÓouÍÅ. ²<Õ5ÍY¯"Èòu²æM¸ëMÛäÚ¬¦ú·Ùé°vã2TlÇ´äÝêÃe]äk&ãYEäYE5ÍêcqUI$·Èò,"qìS^õiá«(zÅæõ¹#zL5äNá«ÍUUdÜ5Ç[»²9½6æ¹»[»&·wrQvãU-ïOMÜÝãÝÙÞs_7kwdÖîïÝÕ2Jª×½_/Ëã¾_öî®®òù|¾=åòúÛm^ùòù|¾=åòù}¼¾jUI%TªUETÝÜLk·wdszmÍsySwã»·µ¹rïaiènfeÝîìw.î]IwrîåÝ˻ک.îUHÛå·ß=¾¶úÛëoÞ¶úÛìÌÌÌËoYrîåÝË»R]Ü»¹wpîå;w.î]ÜRK»wnîÝÝ»»7oHEB-[º¤H¢H¢UJH¢H¢]«EÝZ·1bűÕh,Ö¯«d\u»»#Ónkµ»²kww"
+2åì1ÍÙº03Ý£ªªÝ£ÝÌ 7f¶ÝË,
+fnÆãݽÝÙ5îínÉ5»»êË#5·RÛÇε¾ksjGw|³y5ñï/w¾uó[TÜÒ;¾l+#M6Ö¨¢)&bÅQE»«rªQE¸¢j(¢8µnbÅc3H$n:ÝÙÝÚÝ^îÖì[»¹3I7`µä&îÈÛw+%¼«Öñìn:ÝÙ#Ónkµ»²kww".éf]`¨\Ë×h:¥"Õs.].sÉâ·K¹VEfnZ"³.Es.é{3¥æTÏÙS<_eL÷oÕ{K½Åj½ÊÔÅ{K¹Y5^åLé{3ÅöTÏÙS=ÛäÃ:^åLâ½Ë¥\ÃÝ6«2ë«ÜºYª÷-3ÅöTÏÙS=ÛäÃ:^åLá{3ÅöTÏÙÞ
îW;â÷*gKÜ©/²«"¹K"¹Þ],÷.Es+Sû*gì©/²¦tîr¦t¼Ï³Ó'mÖuJNK+*)X+fAmQ,ÅN7Æu¥U-°¡ô{Túõ«åç3;»Ì̯«=±aYÙC!guOvÕò·¡uRé"º¾Äµ]S©wjMÐ̾ÏfUífÆXRsÊ{¶Ûy¹ÝܯµA!Ï)îÛën[Îfwsww}râi Õ
+ذ Páåæ_f>¡Ï[»oÏsbY¸Î@èH×)©©>©´úiMëZjj[ÖôÓiôÒiZLèÖ+ê±sÊ{¶Ûy¹Ýܯµ
+¶´£Æ Æ"1BÊxÃ2àó5ÝOpÓçM7Öjn¥³Vå-[©6¶ö]Æ®ÓÞjÖ[NnÁDQ2滽Õz·U-MS×{LS+iEuÜËæUi§³&KjJ¢Z"åˤËpÔÔ¸·wnÌ4ZyMãÍ3Uµ«36í⫺.ñ]]]l@ÙÏ/)ëyÏf¹÷³pÝ¡mX Ð8,´¼´OaqªX²ê©4Ýí[«J¦©¨ÖfæËQhÌ»¶§vc©ËÛ¶5T^,mlI£,)Ï)îÚ{mæ_fwwr¾¶Ö`
9å=ÛOm¼ÌÎîægs*ú³D(YÏ)îÚ{mæfww3;WÕ2Âʪ¼òë_¼;ÜÌÜܵ|òå«åç3=»Ì«êÅTUHP Zª*ªªBU¤òÔËÊʺ¹¸kݬÅy3
+ÂSdÖïswY`fn0Ó/ Öi£ap»»ÆñbÖeÎ.\è09á»wwW/1ãÇ)´7·7^Þê5î¶£#d3V3Í6{ºf¦õzñ¶f7Yˬ¼Ë»ËN»V¦Ý©»ÁÓy°ç{ç{/C¦ö[y[Ó¡Ó{
+½¬Ñ,/×0ËKî黹Ïa·yÉÃwBîg9.¥+cZ
+
+Vó0ötÜaîèAÐi¨ÓM6¤ÓLO§ÖÒÝZµjCÕU«Vê[ÓI´t%¥Mn©l¥"N¢[´·¦KVëVÞµ.ôïg
+àsfé³)hT-ãcì3Yî÷w¹;;ÓÁ99îÍoUÌëV£-µôÖCËm5˼¶V¤Øb
QbÂRÊU,âl§3'°Ì0¦ä÷»Ã''8s§Ô}6ê¢Þ·Z÷Vëw_MMè-jnîº[zYÐÌF]ÝÝttåRv¡vòægww+ëmLT(YÏ)îÚ¾å´ægws3¹ËkX!³Sݵ|¼ægws3¹}Y¢,ç÷m_/9ÝÜÌîe_Vh*ITHqñcÊö¥+Rk[©4Úm>NoM55&M6L8sfàsfé³)hTDQI(Q<R´yí3Ã.5Å&{kVêÓnõV©©ÁDHmÙªõ;1©îæîeê½-»j̼ºWv¬4B
+°)m§ëB û¹3)oÝÌæîfw2¯«4eEÎP§°À¥,¡O{¼;ÐáÎáÉÄÞjjM>m>M3¡kI:År
I³SÝ´öÛ̾Ìîîå}m¬Áòí§¶Þeîgww+ëmf@_ïóõ÷Ùªo´²} vEùWj6RÛiÀD
°û*,*©¡Éà(@ê*l
YÉp
ÉÙè, Nç·ÒÚ9Kim´à a¡êªÐ«
+ª¸dÖ(®¨´ä r@`¢°¡daèÁÓ8\8TuuJ[TÐA=pc6yie\,ÁÅ[(U\8r*Xdé¤ÈLlN!Nd¡vMa
4°ì<C$<E=m¼¶G)m´àÀ`rO*©eXUU02²Ö(©¡ÀaÈ`E&ÂÈ`1QBÇ1)jáId8<¨+J-¶Úrb*ÕH+ä0àÚ¦LÌ0ÃsTo9c!ôâ)ëm^G)m´á!âʪYVULCÂëTÀ¡ÀaÈa ÁDRl,C¡à2*(CÁÏ^"&
+®W¨å´äÈx0UmFÒªà`r,Q!2@TÂb98$ca¡d
+aâCÓ§µxTm¥¶Ód9'T²¬*ª)$ëTÀ¡ÀaÈa ÁDRl,C¡à2
+£xë8=W*6RÛiÙ!è'V
XUUÀÀä(°@0'QS 098$`¢¤Ð²Ã°ñSÖÚ½*6RÛiÒC!ÒC åU[*¨UU\Cá Âu*`LPärH0Q Øv=ÌÉÍÍúáäW¹»¹=@öÜ=;0Éè9Ø+Õê¶ ÉÒ\h}*ØdÀÅ]=9t@Ü
¡néµbI
+;b&ÊÖìß\/I¡y t<
+Ò*ldR³YJ
+ÄAY(Ð*hde1(ÀÔÑ¡PY ²A²
"±D˦¦Ædµj¥F°RbÈÁ,,UTÁIY1°Å%eM(ÃÚäð¼Â÷
ñèÊ}ñÒ_-ÒÛ3ó K~ ¿¦32 ¶Úa+m¶Ûm¶Ûm¶Øa,m¶îfdm¶Ûm¨¶Ûm¶Ø[Ø}À%ÅèµUUU]üÀ@&ûékY µ°[°_0XÌ?
ÿ1ÿUýÊþoÍõùꪪªªªªªªªªªªªªªªªªªª¬I$ú ÇésÉkñþ§ýϦ®VBR)~ª5 ÖÂÛoâýÝã030=bf¤ÍI<MK.d²÷õÙ¹YÝe·½¨303YfjLÒONãp1"H¤R)YØ[am
¶Ü¼æ^ü¿£m¶µm«m¶¶Ú¶Ûm¶Ûm¶ÛVÚ¶Õ¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶ÉùÓàI:( ¢(¢(Doê?géÁ#`0FÁZX#`0FÁ#ai`0FÁ#`
¥0FÁ#`
¥0FÁ@þt?aú6Ûm¶Ûm¨¢"(ýÿcm¶Ûm¶Ú"(¢åå¶Ûm¥¶Ú(¢0yÎs³¾}` PPfffc ÌÌÌÌÌÌ ã{ÞÀ Îo{Øs½ï|ï{Ø ÷½ì {ÞÛÞÛ»îîkÇù3ïÕ~5ZÕEQTUEQTUEQVµQTUEQTUEQTUTUEQTUEQTUkUEQTUEQTUTUE^b}ÿJ|9¿j¦[}±M·lúÅ6ݳ¸¦Û¶Xbc>2ܳ1DrϬRÛ5LµÅTËrË1Íùm»gÌSmÛ>bnÙóÛvËLgÅL·,ÌQ³ë¶åS-CåS-Ë,Ç>U2ܳæ)¶í1M·lùm»e&3â¦[f(Yó¶åS-CåS-Ë,Ç>U2ܳæ)¶í1M·lùm»e&3â¦[f(Yó¶åcek+YZîO>5¨ÛòÅÄÅf"^ÝEv¿.¢»Dq\Ê.e1QEÌ¥q[㨢îÓ¢»EÄQs,ÅUDr*.e1QEÌ¥q[㨢îÓ¢»rÚ.eÄQE̸*(¹2ÔQn\娢îÜææ5¨ÚÍ."rå-E2â(¢æ\\Ë
j(·.rÔQwnrÔQwm·E̵1[åQE¹iËj6å7]Evݺ.m¼º.m¶â(¹¦"rܪ(·-E强.m¼.µ¨ÛÜiõkQ·æ5ùkQ·ÜmøñFÞSÝûmkQ·få]Øð ~ÇÎ* =÷Zxï¼÷YÎñ¼c{ÄÇÞì¾1£YÏçÎo×êF22Ddüi Q¤
+2TFJ(ÉR*@£%d¿bTm¡÷J
µÆ³Ið~ ñxrá}ap`·ÍqÇqÇqÇ6Ûm¶Ûm¶Ûm¶ÛmþQ$ºÔê$UI%ÕMßø¿¡>Vؾ÷7aËï2NI×½»<8ã:x]æsÏ\ð;»û;ûûûÎðç<óÍy综¡8ç¤ÍÍ9ºÜÄò þ ßÚU&º6Yà²Ë,²Ë,²Ö,X±bÅ,YøKªñîù<÷òI$¾5US5US7wqÇOqèqÇ8ã§gqÓ±,eB¦H©^{ÂÕKêDïDÊ ¸úàxBÏ kÞ6/6|ÇÌOH2(| |aò¦añ¼oùnÙª3ãgå©o©\Õï[â´q³,ããê:Bqópçyϧ~v}×åç%q¼åË<Ãd
Vîì©Vg'ÈÜDðPÝÇùÓ¯nÅsÕÇ=ÍÏP_ã}fÏNæÀqθë=Õséã|ÛñÌâ¼Wu3
ÒäÔ`wÇà)»ß¶[Ýsã3õáÆ|[ké¼BRá¸ì¬~>LÞë-âí²kåÝÞ=lSÛø°ñaÔî°ØP/|L ´ªy#lsM:£:0ÝÓE ?À2G$µ¹Y¾m¿º´Ø/t´¯\Ùâ¨õ¬X~ê
+|Û§¿Çù
Ìö×Ã3wZÖw¿ÅkfC^'Øð<ñhÌ*Óà==ÛYaº,ãÇÒ ×RºïK¯Ã3äü.tÛLM¶mêItØ=̬v¿>]Ç®ñ1ff7wæ7Þc¥¾M·ÒK§IáoòÿI.£t±ºc¥V6æ7Þb¬ll¤`éQcüÊIt<ÝF¿a¯G¹ÍÞswÝç7 ý@°öÀ ?/¾Îò
èÝåâ¶p½á{ùôÞp_ 'ã ù`þKJ_ÈýÌvâk´ÆÚ·lÝ2îfîâæí«lÛZwmLbṦ¢5Ͳæ]£¢nåC6îÛrnW\CuÓs4ÕEc1sw7w4×Z\Éõ\ß°?8°õ
ÞØþazü{Bè ]ÁwÜò
¸]áw¸_h_.¡pá{ø
îp\ü¡yûBÜ.ðºìÁvóÞp^|¡rP½A`_0\
ÀGàH
«Ø
A|~éòAôÄqù(ÅM>93333ÉøÀ¤êªª¯¡1UUWÉ$I)±bðÆW÷~ØõÄøhíMªéÈ©¬Îê¿îîæcvì ¶h«b¨ ¶Kb¨ ¶E - ØE¢ØE -Z - ¼Ìðfµ¬ñ52k5¬ðó]8ã·³§N;½»NÞ½zö÷÷øúÚóz fÀmyç{Þ÷½ïzúÿWÕðü?cæùgÑø<@/Çã7óy«Íælت¨ ¨
+m²ª 6l¶Êª
+Ù°fØ*ª *fÁ`lª¨ ¨
+m²ª 6l¶Êª
+Ù°fØ*ª *fÁ`lª¨ ¨
+m²ª 6l¶Êª
+Ù°fØ*ª *fÁ`lª¨ ¨
+m²ª 6l¶Êª
+Ù°fØ*ª *fÁ`lª¨ ¨
+m²ª 6l¶Êª
+Ù°fØ*ª *fÁ`lª¨ °`
+ª 6l¶Êª
+Ù°fØ*ª *(²ª 6l¶Êª
+¶ ªª (l ÙUP@3``ʪ
+Ù°fØ*ª *fÁ`lª¨ °`
+ª fÀm*ª
+¶ ªª (lت¨ °`
+ª fÀm*ª
+¶ ªª (lت¨ °`
+ª fÀm*ª
+¶ ªª (lØ;Þ÷½ï|ó é={îwU»»wUwwvaIjÂPØER[E° ¶e´° ¶h¶haÝÝÝÝÝÝUÝÜù !ðG䪨<óÏËåç/Ê¶Û UU 9ä¶lUT ç¶Û UU 9äm¶ÀU@ ÍÛ UU 6lUT PØ
+°UP@`6ÀU@y`m°UP@fØlUT ç¶Û UU 9äm¶ÀU@y mÛ UU 6lUT PØ
+°UP@fØlUT ç¶Û UU 9äm¶ÀU@y`m°UQáÓÐô|qÇqÐxvù<½½ýý½½ýý½zõíïïòy*òyfÁ`lª¨ô8ô}:qÇN:táãy¾ûÆ~`8( ×jøâï9»Înó¼æï9»Înª¯9»ù*p *¾Üq$ÕUjBîE´dÂH±!#I [&0I$ÂHÙ0[$¶ÒÙ0 ¶L$a$[KdÂH¶lÙØqÃÆx~³YîÌÌÍwÀúû}¾³íöË[m¶Ûm¶Ûmmm¶¶¶¶¶Ûmµm¶µ¶Ûmµ¶ÚÛm¶¶¶Ûm¶× 1Ëm¶¶¶Ûׯ^½zõìëׯo8ó»»»»¹çÇÆ¯Ù°fØvöövsÏ<óÏ={Þ6k¯YÖÞ Ðl"Ñi-XJ [ªKh¶Ál¶¶Â-Â-l"лª»»zö%Äæ ë××ï·qÛm¶Ûm¶Ùl¶Ûd¶Ym¶Ûkkm[mm¶ÛmmVÛmµ¶Ûm¶×I1Ëm¶¶¶Ûm¶ÖÚÍa1rÔ-¶¶aÚÅ«E¬Â)bÛVb´³²ÛmÌ QjÌ"ÛVa¶mL· `ªªªªªªªªªªªªªªªªªª¸HHªª¹&Éëêê^ª¸éçñÇqÓ³8ã§çøø×3`6ÀU@ ÍÛ UU 6lUT PØ
+°UP@3`6ÀU@ ÍÛ UU 6lUTùö _Jªªªªªª¨ªªªªª«ð>Īªªª¸C~⪪ªªªªªªªªªªªªªªªªð⪨¢*ª¢¢ª¨ÅTUUS1UUUUpÆHBI$ü¤U r©xòy17æ«rwñ¼;Ïex»xàÊá¬Ó¼
¾ON¼=¦k©ÃÇ&R»SÏ{ÃzÔݧUÕ§WJõ\ËWº<J(¥'ÓOS´¯.îÕ+PÅ&æÒÈt»ÙO[g{¬î0ç©e{Þto:'M°f:wÌÝ
Üïåë}Ã{¢s¾É*hóCRí¸aܧ·ÕíxÞÞ[
×[ÜïyÚÓ½«^·7;!$:D´j`°Ë&Ë,¦2Ë E 0A$`*©"11cdAQªÄ"$0D c*1eÂÄabeae2ËJÕ2d0`2eVU&!I«[Jhì^Ü3(hìv·ÏKYŬ3°Z
Âê·_¥Ôûó: 3óÜ{I$I$ ú :k<ºÊ®oÓXAD¸9"¢í+ ¬ÖC Kñ!?3 úÔÜζI_û?È_±üÛïã?üæ}Zÿu.GÛsomWáGS]ÞÝÛy8xyÜã³´ÛÁËyÞÞuyÔÆ{Ç>ïã¶ÃDËDD$ID$XÍø-#÷`ÜëuóãÀ ]6Û
+M¶ÚëRKªT]nî%Ó¤é&ÛÐ i$ºt>¦Wm¿Fq M`1J*`BL!J&èt5Ï9ÓÛ>ÃaËs§-@$ 4 ÁDSÍ-3¥¦t´Ì¦ùÂàààÜØØÚëÚÌt©ùÂ+çüÿÞ¿½6õÇÂôÀý7ùÙbZX
é¶óAÙ64F¦¨Ñ¤j54F#Q©¤j54Oöu½¹mÏCûé~ñ?x¦1>^{uÐþåâjjh׳ûïscF¦¦¦4jjjhÑ£SSV[×üA£Qª4ÞØÝo<%¼Ú5FF©¨Ò4j4MF£Qª54ïÞ齺ܽ·¤ú}>Ôüj;ïÕ²dÇ[OÉhÃ&L0É2dÉ,¾áëï×øOß=Áïýó÷Ïeà!úãÈ;§qÜNÇc´íGc²v£·øNç}Þ}2ðx<à¼gñzëÊ{¥äxÏ
+;gHæg'4s99NhäæsNg#s99£ÉÊsG'3rs9ÃÉÍÎNS99ÃÌäsnnK;þ{Âv»]bþýù§è¿n}£øÀ±dy_~ðOà¸Á.o%ÐètWIÍ'¸8£âq8q+8'q8ÁÁ¸8£âq8q\\GÂú=îÄÒj4ùkkdÔb±2¬X¬,L«ÛÇÙºÞ>îÿ{]Gaæl:0ØÙÖ¶o<iÃÂâ654
%% AA at RRs÷<~®N·¬RXXP¡BÂÂÂ
+(SSSS¯^¿dæææú ôyþ?°×à>Û¼ôì\N'q8{®~ýÑÒyÝgZ¿ë:NNgpppq88GÄàâp'âq8NÁÁÁÄàáN'ÄáOÞþ/ù¿Gìw_Òx
ùoòW¾û³ü_ôÿ·çú|ÏÚ4~ôЫ ·°,`\*°þy8h4N$S ÔP ÐiüùÒÖdàäa
û´ Wö
+"
+Ѫae×0ÃGHºá¹æê5M6:¹æ»[QµÁmáûËvæöíÁRÎZÆh ÀiTÆ3ÈÏ@ø ¨¤2ýé´¾¥úÀ²ê 1s
+=\ms@Ã{³¯ ¿´ÓãyÞ»mÁíÄlmio¦Î»J&¶c°[ ^¢ª2xaݪ
+ 2(²
+rªï±D`ÎgÐø4ÓësJǶXL74ã^@|/-ñÊ H»Î¡Æ¸4ÃJ ôùÀäÎJ´¥)Îé7:d2eExkµ»Þ¬Ôè0`:ÁÅjqxÌ,È &}ußG^Bðíì2ZaJ¡X°úØóp,ÃC0;©ÄÎBâ}a9Îmòxï!L0²Ée:ºè!gÝ ÏRö<ÙLs=&ÎÇO¯aî÷,ÓkÒ'WVõ0ÈÄçZYCq øo;ÕlÂØ`ï¢ÁÒ´ozÑ ¢t ?É o!R¯w1\MÍîLtãÂq;K®&¢ÉÃÉéß W:ÊÒ3)e^;»©!Z®)³qk·wpÕí®3ÆYî4ìÜçáÜÈeÚºªQDÕ¡cT¥2õ*Ø-ÁõË'½Ì÷é6rzw¶¼:xFO0ÐÑ£äçszÎo¶u¼ÎM}äê{)ïr¼M2ó|ºm/»Söz^ÝkÇMÝ^SAE]
\¼,¬Çº¦LýgAæ5[EÙv[ÄE'¦1ëÖÃéAfwâJÍñ¤u3<ãXÈç©ü|c\ñÎAvÍ* ïßõÞ1` 5$ºm¶ mµÖ¤T©$ºÝÝÖ]m$Inîè 4]~àPÖç<Æ®sMT2ãä7POÎIãúRéî{Ë
+òë6ÿtÃâphÖaûtä0-ôòØîÏÆEÏ®mKª3ïÖ_xÖ~áç?*;[æöyÑk#nIòü
qù«òåPzwÏqù ; ~|3«,«
Ën|A@° ¿nËh¦`½è(©ÎLMjdqÖHüv ¸ý=Ù w:ûÇÏʧé¨òú<mÂwõð`Å>r85í¼øFéÍ' îfX:s¾÷¸fÍ4fI&}ÕGÀç£Ñk¯ÇÜm//
+Tç1¾yf¼
+j¯¬3>M%cr5é¾5æÍÔ$2z 'éìw÷ù÷à÷îã÷xåÛá´ØèËàg©~GÓÎL¦hóW¯ó³ï}±Þ²qñåÄ09Î
+I$5Çß¼ÉsóبÁDøx4ççwgÜÆë°jÍà¦ñsA¬qÎøôç<ì
åÙãéëëå~µÎ<Jõû@õ5=¸á,Ãæ¨âS%q8`0
ß¾À9ÏØËNÎRõYİֲ«1>ÊüÉìO^¹¡;ÎBêyX<®oh¤ ëHW\%¨ ëôañÍ6¥!$I?µýäøO]ah;ï®ýý /Í9AßÇ_Gøãõ;Ä ~où¸ùîæ1c'tûrqU¨l9;hyibYÛ¥óÛëëëãÉîç{zºZ·´¥j[ghózuCiÃts½é¾æ]¢TS£^ÛE¢USÕZ©¢mÉ:Xú3ss¾i˽;Êrt¶P0aÆzwLÜõöV«Þç;vÓãèN#wÕ
+kÝ[.åm^¼Ê*˼ººë}s½;½Ìåæç³¹H@ÞHy©a2d2U a)Ætõ¼OGE#eÑr>DÆî@j_[*ºÍä]^±Å5;Ëݲßɽìâwʪ¢*"¢:-UQUUUü@ü$&®èÍTÄ.ñ,¹}8_¬ ëuÎý ]6Û *·wwvªªª©TI.ªê$ºHÒK©-$ºJI 4]8úïñtùòUÒÖòó¥¯yÞϨ=ô|Nºêro°Ød´AÞhÖ¬ú.GªÎ={Ù²ù8öüàê9_ÙÆ£__ÁÇÄÛ×+URâ²UØëZuðôüPC¿·AÜKP;èÂ"Õ,^ªÖZ(}m.Ý©$:?&ßG'<BBI=/8)îóqF5%rúK¡¸H³X
+P8äæï(Ùïv;ÄL[; ¡Aqã8\ÁÃG
+
+¥ÄY$Rxô÷×<1ä-ßæªIWD9ÐT][*µÚôyôæ wi2P¨Q¾mK/Nâa1ÆÃd¢*H»rÁØ-0!-d °ÃÜñD|Léþ¡cÑ£9uU1Ä-1Mj[_#áϱöþ~§[åCðãÐì xÈgbÉê_2C)NT°P*A¸@
IÔEj,Ã@5 ºBÒcÖÛ"\&|Î'/á7$fðÖ.tGVWcëÑqçp:.F@B)
¤93|¼I}¹ÜÛÄd3¤¼æ%{&5!Äâñ.§Ä]:Ö0ïÇ!ß81ÏÕÅà,¢LARDREEA$qø8X E$ ,8ÒA!o²HVÏ2XlëSÞ}µ{ÌÔt¨JSnsÄÀìÃÐçsª!ªÑS$A
¡+ÏùM:
Dõºè
+jJÇXȪ÷¿K£ #/U"o¥öÌzOMÞ7çzõòçß´ô>Kè>ºÏ~`z`õªÅü1$
z{`,û:Ô ,ñòè²æï
+syßÂÁTF¨ÂÑrÎLz<îja^å&ì+,Ìób«Þ¤HÀåQ1egUvSËUJ8jÌw>¯(Ä^â^îR©èZ»o%ɳ}0RÉ9v骮Ô:ç¹Î%¶Ym
+ÒN0ï¼¼<çCÚ³¶
îè¦ÃnúÏr¼z+¾MyêÜw]q»]ºîÖãÖû7Ës¶õsmy!ÄĬ+ `ÁXS&©&&ÅÌ× :QÝß?/öC÷~ûÈNÞ÷6Ûõ.÷o¾éeùUETEUEEUDTDEUWý ky½ ©%ÒM¶À ö©¼nÝUUUUV¤WuV]n$ºÍ´é-Ót 7wwwwwwwx K'FÛíë(Éi÷Pá3|ávcç>çãªÂØpuÌ×ÔÐ Ð ~ÔÔ rãÏXQLIÖ5¬dLc/¨Ìc
Û²ó
o-"O[½.Èì"`8zÖ¯#Ç^PC¬õÆ-,
+¸`?¡ö0¹ËDÊ[o#IT ö BuoÏDVõsn bSâ)©f¸hÏÇØ}Úq~2,¤Cºy´ñX³d§æ»ë«¤<ÄÔãc«¨$ÊùhÍ-ÇG&fäzéó ·J¬$H½§ñakwg»|U¢ª«fµ¨®gU#o<FyØPIäxä;Í-UIMª1év_<(îÜòãpJ[··Ù¶TÆÍ%ó|«Ù]%hÞ)d.¼qhTÛMXWØP÷Cj`w®ykÚ¦Lã90âí²ðcßò
+ ,p8sÃCr~fðäü¼o>¾µ*@j^) é°ÝÏó8ÄÅÍÆÔ6¡ïN³,¹¦Òí--l±°´(hhnÒÖÒ¤¯wç
+ÈtwÏ?AÕ ×D'Uô³¨_±? Äû¨>Ð¥ B´"¸°XYw÷ ¸Æ¬5v]cèiêfC'ÖñYóQuâ5×ѪÔînT,¬¾EûOɪªªªªªª®Eô-Û/¨L_¿'®ýyÜòiѪ"q®ám15*){]g[)eæ+»êâD{q¤åNwݺáñz5¼JÇ6W¶ûÇg¹ík]ÞõÊQÕ¼¡µ6d6ªJ`V^sÉÍævòñîÀèp3rº;-VºÕ¢¥ÓOh×)Ô´,[v¯-`}c½zùÞ>nÖË£¶¸Ü·¼âñ̼¯2ñÛ§6Û¼@ôtË
+6ôSÅeÅ0°YVTÉb¬S#$D&0,ïèTV Cø¨¬@Ò¢± =Åê½÷« T8¾¤Æñ£RµÏµkzó®5¯}bÀ§s¾ë·ækrèÁ%1ßç3yÎ+¡² @ >yË϶îîîè ZI
nîåP·;ø_¥9XVN[ã 8?`ÍyÞóéÝÎe|ÆAÔÑ{ºª§Ø¶ñG¥%b/»ö|döø×ÄN¡Ïà¯Y\Í?+\ÂòÔ¾ã®>9!¾¸Yj¨eJ#]{ÛÆ3,/¾-,ºÈmtk'5Á 5!¨^Ó±®É;´&NxèÃpÁF1¸á£Êã!ãã,2õÊ,×·ËBcuRm³yʱr}ps® ÄÐ`îö¸ð5~^fü X éì °ia8L+XN3,ÂäåÐ( µs)C
++PbàZLE÷÷
+#&AW+¤J¡¿\û5GÉï½Í$÷Hv ügóÍ¿^µ°¤qÐÈVɲ-]²
+ ¡BÐÊMÀlJZ*âÁªP$û9/í{îÍ»õçõ5)ÕãV5eDuרúù¿fXHy{y"Ld¢e1bÉbDÓKRDÁJóÕ¬ÄîéYT Tç¼ÓRhÉæ¤ÄÅn½K$À×NÜÍfqÝ/rƯo{¯h sæs®wÏ+»Ö£2ª'vÕÔhl·WXipØ|qW¾|Ü&o#zÔSæô_zT&ȼ'/wc}Ò4cqÆC8HYÖ àl7` hMlU
+pX¨% ;äñÅØ 릾5>¯ýñúÿ±_¯ü³£ö?k?öü?Õãÿ_þÏÿz»¥ôÿ®ÿNUßÉÄ:´Ü¼Ö3ºù%ÖI9ÿDóÿ×òyMy¥R*¿jlÄ:´Ü¼Ö3ÊòK¬sÄóùç)¯4¥J\ª?'éöêÔØÇui¹x=¬7¯Ø]d}[JÏ}שs(ô=º´=cº´Ü¼ÖÃ×ì.²I¾Ì¥g¾ÊkÎÊT¹ÎýnMwVÚÃxzý
ÖI'«sûï)¯>©|ç
+¯rýºµ¯ëÕ¦ùx=¬7³·ì.²I=[¥oßyMyð¥Kç8Sô=ºµ7ëÕ¦åàö°ÞÎß°ºÉ$õnr¿}å5çÂ/á]úÝZ¬wVåàö°ÞÎß°ºÉ$õnr¿}å5çÂ/áOÐöêÔ߬wVÚÃ{;~Âë$Õ¹ÊVý÷×
+T¾s
?CÛ«S~±ÝZn^k
+ìíû¬OVç)[÷ÞS^|)RùÎø~ø]ZãÕ¦û¼Öðøÿ]d~sþ)¯>©|ç
+~·V¦ýcº´Ü¼ÖÙÛöY$ÎR·ï¼¦¼øR¥ó)î/ZóêÓrð{XlÎW]d'¥oÏ9My¥*RåWÏk>ÝZ׬wVÚÃxzý
ÖI'«sûï)¯>©|ç
+~·V¦ýcº´Ü¼ÖÙÛöY$ÎR·ï¼¦¼øR¥ó)úÝZõêÓrð{XogoØ]dz·9Jß¾òóáJÎp§è{ujoÖ;«MËÁía½¿auIêÜå+~ûÊkÏ
*_9¡íÕ©¿Xî7/µövý
ÖI'«sûï)¯>©|ç
+~·V¦ýcº´Ü¼ÖÙÛöY$ÎR·ï¼¦¼øR¥ó)úÝZõêÓrð{XogoØ]dz·9Jß¾òóáJÎp§è{ujoÖ;«MËÁía½¿auIêÜå+~ûÊkÏ
*_9»ô=ºµ7Xî7ËÁía½¿auIêÜå+~ûÊkÏ
*_9¡íÕ©¿Xî7/µövý
ÖI'«sûï)¯>©|ç
+îbñÕ©»ui¾^k
+ÊòK¬sÄóùç)¯4¥J\ª=ú}ºµ61ÝZn^k
+áëöY$ÎR·ï¼¦¼øR¥ó*½ËöêÖ¿¬wVåàö°ÞÎß°ºÉ$õnr¿}å5çÂ/áOÐöêÔ߬wVÚÃ{;~Âë$Õ¹ÊVý÷×
+T¾s
?CÛ«S~±ÝZn^k
+ìíû¬OVç)[÷ÞS^|)RùÎýnMúÇui¹x=¬7³·ì.²I=[¥oßyMyð¥Kç8Sô=ºµ7ëÕ¦åàö°ÞÎß°ºÉ$õnr¿}å5çÂ/áOèyujoÖ;«MËÁía½¾áuIâÜå+~yÊkÏ
*_9ÂÐòêÔ߬wVÚÃ{;}Âë$ŹÊVüó×
+T¾s
?¡åÕ©¿Xî7/µövû
ÖI'sùç)¯>©|ç
+CË«S~±ÝZn^k
+ìí÷¬Oç)[óÎS^|)RùÎ÷Mùui¹x=¬6g+É.²IÏÎR·ç¦¼Ò)r¨ûôûujlcº´Ü¼ÖÃÇÜ.²I<[¥oÏ9Myð¥Kç8Sú]ZõêÓrð{Xogo¸]dx·9JßróáJÎp§ô<ºµ7ëÕ¦åàö°ÞÎßpºÉ$ñnr¿<å5çÂ/áOèyujoÖ;«MËÁía½¾áuIâÜå+~yÊkÏ
*_9ÂÐòêÔ߬wVÚÃ{;}Âë$ŹÊVüó×
+T¾s
?¡åÕ©¿Xî7/µövû
ÖI'sùç)¯>©|ç
+CË«S~±ÝZn^k
+ìí÷¬Oç)[óÎS^|)RùÎþV¦ýcº´Ü¼ÖÙÛîY$-ÎR·ç¦¼øR¥ó)î/ZóêÓrð{XlÎW]d'¥oÏ9My¥*RåQî/jÔÙui¹x=¬7í{%ÖI7Ôó)Yï²óJT¥Ê£Ü^ý«Sf!Õ¦åàö°ÞgµìY$ßSÌ¥g¾ÊkÍ)R*q{öMVÚÃyײ]d}O2û)¯4¥J\ª=ÅïÚµ6bZn^k
+æ{^ÉuMõ<ÊV{즼Ò)r¨=´¬·YíoýóEU_ú;ÝæjªÛÝülÕU[·»¹ªª·ú÷»¹ªª·owsUUnß{·¢IVµ«Ñ$Öª÷ø Ü?¾ïâ}¿÷½}Ú BüA~ª ¯Ñ´¿OÃ×É8Ö±OÅxýøuàu5Js»m§8&¾|^a®&ËK5¨"SÇÞe=ï¦gqñÄëW
9sÝÍóÞDãì½±«7E®Z}^ÊS-[e ,T·qfnåtéi="µ.ú´õ©b2ô*x´²¦÷;îLöéînfy¯y·Ë×
¶e±éërÃqóïWóÞ¹ï3ºï-ç3ÊÜŹV¸Üï+yÁDDZÄJ¢xD@
+¨vºFÇ#î.ñÇWØÎnë=ççÓ·Ø]YVýMþáZÿ+Å{Ó}.ºÐÈ$ R
+I
cÆ1o¬·ÆóÜkW&ü°ü÷Ë)6"a²Ø¸´bo,ÌÞÌn$MÆØÍPaøZ:ÀI ®âmØÁJdÁKÇèu}ãeãg5ݯ7èΧ ûuc80!ø²^Am¬e ý¾ùo×÷nß1¿Zƪ̢××uÏZô8³Y¬ãxTª¡ürÏ!
1úÞ)¡õòée>s×NLa²ÇÄ,AzÐÒ)&ú8¼BsÕY3©©&C~NÍäHHJ=r /QYëCv-- @~rÌù¸snû¹°ßn#juÇ&vD @ Eâe â®&
+?A Ì=ô|ÍK0ÎbÍSîvåUÃèíïe"s$¹´ oo¬íJVp
ôó³x°¢õ®8SUöà|ëÕÄ_±ÎþLÙ(01b¡%+¨w;Ƥ$I'Þþ.ËéæW<äëç~¦<xÖl:dÝräûîç×|úq¼<÷ÔÆ)
ªû!4çç¸z¾zÞd×fÙeæ`#bthj¼Õ©ÓËXîU
+®®®Í½t9K]fV®K¸ân!]C6¥\d©ºÛ/©¶Í¼éj[ml®ªêîúO]ÔÜÊlË([[ÔãÒÛ2˾çTê:<ñÅ/ym£Zr
3ÜáÌå3ÌÄ÷iSÍáåÚÞ¼7ÚÓ;Jñ¹kÊW;Çõê`Æ Æ@IÈ 0ÊÁeF%*eSff,0ÀÊ02&`²ÉæqKL+ ÅeVKʬÉ`0°jÔjL\í±ïÐZ£0A9$'$à8çÎ÷Þç¦ñ¬w
®Þ÷~q¼ÍÎ;|
+ ÀïF}r¢;ÃæºêãZîfåm@'ÞM/¯¾À ´ »Å×iljªn²©j¾·kqUUuëÆ0ìî«]`º¯\r;jnÀ]qºÀém9FaÒ÷¢bãÞæ¼ÎÛI@¼ÜͲJ-!e¤
°d+#ó½GhÈÃ<ÐçÏ@&FB74Û
+Ykýi`22ëáÆÈX}Ð9ðùlÎw¥µª9Ë^óÌS"±ï!xq* \Ý¡ÆÞa BÂímò<W}°úFõ³ÅÙÛcPî'xm8Ó[ x@58îzëÂ@·»ónQ$ Õ"ÄÎ>U }p¨ãu #Ä -@ÏâÝÆ£´p?§iFÖ[Æ<0³Qø½ôH"¯¨ZÒ®ý{xýPÛÌdÑÃCè÷´±òu"îNçxbÑõÁì´ °,¶L
)`w
+KÀÈJþWß>}v
CÌQ÷g!ߣ¡Ì-K×Ì=g<5OÒ 'Û¦Niïm¢:ªnîí«hÕÝÑ3ÁG§×Ñ®<oxñgSQxç]c5/ä~° ý|>bþ
3vüùÇ,í®å|ÙäÔÁ£¦B®ðç½<Òñäå12fa
[ºVyî»N÷¶»31óW¦\¬z¯tl¤¬ºéôb¬VÛ&f§/TÆhU°Î¯*æïXë/5¢±K}-G¥¥päÜfÀìåÑí,¹9}½{ê_r¯KÌöN¯4°¦QÛÎJå«VRµIJÊ
ÕãmS¼u{xÞqç-å×[´½ëä,0`3dÉ31F!!0`$ EUH TY BA2A0A#!d2¦L¦L#¢Á&&0bbbbÅÑtFaÝik¢ì´ºüeÕ~Í÷'f|.vø%lºñézùVT »»»»»·X¤ðæC§O
+Ãåò¥;Ú`Ä®x׿ûløÀN4ꨪ¢ª
+¨A©*Á²ùç²EìwºÉÙÌ¡jÂs¡Ù*á÷Üô¨~|8ôúkçÝb¼NßÓáÁ£1²î9:3wðÏéi´£ AI#hTX"ÙxNsääÀiÌ%ÜF¢äÓ¦ªåx
+ï¬]qÒ"fÓ£Mx¹t Ytj°eõøÐe"¦ ±Ñ¯Y`ìç úI¦NÎéYÜY¡ÁÏ<nm׿vøåVÆ;ÐUSö8ÁtFª"-Xní´ñ¼ã8ÙÈ9-qÎW-²Á2ñ qâõÌçC&ef'ÐFé¬UÂüUÆóLZñ!²ÇFÇ<B¬C! AØ~ú³8 u߯N¶kxÍÖüxß3«óôÝÉww$ H÷Þ;3õkZÖwf20NÙ'F+®=Þyõöyöë~qw|é}Ì+'7?5-ÿáÈ5>ýýâIuIu´¡YçîdâêÝ_'Åq87¼ÎÜÌwwÀ Èf9+/LÏg3<f³W3&`ÀüàÃóÃëüÞ¯RxñSß~öÙfñ¬d1|ø:ºÅVñ\}®þañöúÇ0c®õÃÑòÅs³ïûƳ<uÜ3Ïm{}tgz¾>ÿ@ùÀ
+ç~&×C÷õgU~f@×<oKÆ7;ûãÉsϸîÜég ×Áׯ^Y®÷u[ëÇ^î׺öÞ;»¥Ï3u³²ù¼zxY×f·¸xñÏr~z¡ÞzÜ_Èê¸Ç?½yÏâoxÅ}8øúv{|çøä~ÇàöpäûW_TM"(²ÜæÀÀðÿÇöá`ä:ªªªªé¢xÂâdXÖ
q.@÷û9ûÔä%¡ª%pµXìéÓâWXð+ð¿ñ|?~Üü!{ýal|ô.ÜßÛð
ûKû¿þE»öpfÄÌ%ñ¯þþ`´Çúx½«ë×=T/ÖÅý|oSÔ`]ñíí ¾{{}¿Ñ|}qêü¿Î¸,°¾Ø33+Ð//ÖéÖÄ.r¿¤/àÛñ:Jâ%¸]üÚuÄÌa4Á¯}¿äoÀüGÊeƯ¿:÷WlYû1ZË0~(â6¢ïÿqõÇóGÍõuè<AyGHã ääf¼ê{Êí°[gð0-_ÑaL Á0`ÁÆ0` ·áÍúBýÙ{ì²Ã3,1b"1±b±b+V1Pb Æ1¤c*!ô?@.ÁvØ.} ÔÐ-ýMÔ/¸`¹âû ZÄòÜÀ\y^«&D`Á0AÄAOÔæL Á1,°Ã11¸^éÈÊîþp°AVÁzD_
+·ó]vëäàêW¨.]Áx
ÜÁvàk]2Öµõ"
+Ø/ ¾ ¿èÁxFG(ê`Z~>`¼Bî Cìq
÷}){xû}À¹øìüqõ
Ø.Jg /âþo½}À°/X.â`¿h/ðñp¥Åõ"
+ø
æéï
Èä.áäGÞ°[¾ÛÒØ.à¾`^Aq¢
+ú§Ö÷¢R½w
î«i^¬tíA{°.¾wlÔ¼Ì3ºÔôô?rçrö"
+û´^ð^.
+¯
+¼øèk±æÁy`_¶+à|ò¹_Zà-ïH]Áx·n0.Â¥÷¹È-Gê
ÅRæ]g(:û. ¹êâº9Öx_´åp/Ì-Âä-Â4]ÜûºtèP¥PÌ#0F`Á3fÌ#0F`Á3fÌ#0F`Á3fÌ#0F`Á3fÌ#0F`Á3fÌ#0F`Á3lÀÐXIh@´{Úð¾£ÎA~+Â1ede2;»vu;zÐwÜA»ÂØ/UµO±ú¨½È¿%ví÷2QÔ/fW!g`¶rþp¶AWY$!yÑU,UÀ-ú}¿ #_ ¾!u
÷ñ¼þ/P]Y$ ª0AUÁX1 $ Á¤?Pvª}Ö=k\ò ¹Âö
¶ÀW*|áe)°[ÞÖ¸. ¸¿ ]AnGdlo¾l
+«¶ñAhÖ´
ðY4º°ÔjÈÉk´l;ä`.àÀàn^!p<À¹Ü°ÃÍÚ?Ö¾°»ù~?Ty=ѺPßT¶À-àÖÀ°-Ó`º"ª^qö¥À^ ¶O¬.ä©/
å®AnñkmÂÜ.°]{BØÂø¢ê>è¶ôÜ(]¯`]ègH.¡r+Ý ¶6ñ£Ü¡dñâü¡ó°ET±ðÅ,Ë-+£0-ápï¯ê{¾{áET¾H`*î þ8÷ íxI$I÷%I$YUUYUUYôÀ~Iò
.BþÕ}Úë]a|Áai}AzºBè]¾ ¿">л½À½É´zp XØ7yVßÀ/7X*õüa}Au+Ab
Òä,Dæ%õ¢
+Ð]Ðà¸6 >p¾°x´)Cï
+ܺõ#òÜôuûæ~ ^!bZöÝB÷wy¢®¡r¶ >Ê*¥°FCÀ³è`ÁX2¦aeadabÀ¶Æ§¸-ö¾ ¸ïÞ`¹ ½¹GìP[#Ò~lD¸/ ¼AUl]án<s ½ñõ
È*õ`GØÍâí0#ä¢èx_Õ·ì£öàWp¡¨_Xx§dh.À]Ð]À¸îáEÌ,âæ|üáeúùVÿ,¥XP{¾=Bùµ`,À½Ah£ ³"_L}Ð_@]Áv¤ä/-ö=ß ]Q«jZ"öAj<ºØ|ȽUOlÜÔ*Ð#æQu`½/h.$}ê$õð^uòæP¾@½¨ª18Ì[G³ý ZÈ^`\A`nÔJéÔ,çtsí°_gØÅ.à¹Ä{ðaÞÓÞÜÄéíõãî¸.vعV|£û½kå{ÆÎAh,¸^ÞïB^øóh.tU±,B®ÉþämI'öÂÈUàà¾ê[¦¡y
¯ öÈ^!|o$~Ôl.p,àÀ[ÐyFèxXx[ÆÀ½AxâÜ"èÐYÀ|À//¥"ú&¦ïi+O0¾oÒ+ã
bÁX³e*´sã| ^»^ôA]áh$öw_ IÀ[~«ÚDqKõä|.Ap@¾ð]ÀÄ-ÂùO ·AmÐØ0-hÐ.ï
+-<ûì!{ö£¨^~p\íD`/EòÿT/0¾`¼âøÇ|jÜ-èÊ´/p^À¹£C&Èl°[
ZïÒ9]ó
и,`«ÓÈ*ê^cöÝò 0.êì;ûÂà.èóذ.¯L
£Ö!uÈ^мÜ/GÄ,`YJX¢ólôÀ*à,
¼{´Á{p§@¾¡êÞ:Àµ® º§iâ _ at .±çpüyp]¬.à/Gx\£¹çàE#¼/ô£h[`½RZW²~°´è4^°Ð\ÓîÌ.ÇMPzÈF&óIÞ4(µ6À¼ÐUîÐ]BØ.ð´p`X36ù¥°ZÌET°GLªy{û¼|ànà.9¸ÛZÀ0»Á°!dh/ ^Ar+Ah,ê/p]¯4^ ·æÜ*Ü]à-ÛùBÀ^!'¼ìà\ww`. ºà]ýdA^A} ¿0/Pì^!wm³ÖÉAp$q0/DA[/0½ah#°^¤UKÔç°Góòâòu@ÄUKÚò
â4:µm^`À´_ X}rÅ
´Ç± ´à.Ѩ~8ö<n+À,¥E]Bý`ºÁw#äãÞáuET°,à;øÔ°[
óìÀ^ » ¾ .ð·RÀ/h^u :x
ßêò
È^°.uìKtp°/p\
Îáxá°£À§.ì))^!w
þº}þB+ýr¾ ³Ý±Uw½Ñà9îÿÔ/W°/P/44îöýÑ{Ð/õ"
+üx÷<ñGÄðÐ_°,RÁ¶áW'ÞGº!nl at W=ápÔòiÙó¶cO6áwøBÀ¾>» »µäíÇÇçÞ *ü °zÀApäÁrÒ騍Á1= ´õOìñzjí
+ïÈ^a&"ª_@^P#`ºþ.äp¡ % ?ä
\ No newline at end of file
Deleted: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/48amd64-4d2n6c.tar.gz
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/48amd64-4d2n6c.tar.gz 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/48amd64-4d2n6c.tar.gz 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,481 +0,0 @@
- I¹±K ì]sÛ6Úsºþ8ìÎÄ-¾Aæ,i·owºéìÔÉâ+ÑNÒ_¿ )Ë "A|nµl@ >x䣿]-Æãüv>þéÕµÅßZõ¿÷0ÁãWé+$U![«<Z"ôj¹XämùºÒ/TÜÿl¹8ÊI°ûøSÁ¿5ÆÏtº8ä1Ì Kη?%RÖÆª^!|ÈJlÓÀÇÿ}<ÿ°È£ÙT*)¦2Ðçw7:í×e?'¡0)ÎMÚ»Çé4^®6i
´øÜÏÑø!XI¦XV¦Ý}2G:6ioÇyòW?'9£&íiTK¥XÜúÜQºHÿ¾i
-°ý¹jª}¼¦É,~N 㽤¾ïc?%ã<ºU*[¤½;U÷fÚ^éìZZ¥³´_eþ@ôYÔó¿Ë$ï£ñgGouÿ}íQ
-DX|î}eõj>íÝê-ÐCQ¤Í¢ûZUp ˾¾û3Ï¢dnuRTe~LeêæÓLÛ¼(ó÷xƳ»ÜnÇe©ÿS ÕÊdq.ýñëÝècºªDQwÇt\ïÍuÚ¦Ï>̳úç~^ÌçIþ¯DÿQ$ñPbÂÊ~)Óòx2z{·þ!¸¬ËæÑLýfxg"T,`RYÉW>gD²kÖi??<¦ËR=T0UôÀoâbGs[ ÇNøsõ4q&Ü=.³ZBf¿6QÌõÙs}¾pëãµ4úþÍúC¡ WÒÈÿizö=yêYô¬Æõ_ÛéÐ×¹ö뿾Ùcõû?m8×gzca$FféÉ'èÉG9$zÓW×ÎõuB¿!¡¨XôíÎ¥^òèpó#£ÒdÒS¨.WOYQÄL9eÏ<§³â.Ǥ¢¬¦sÄõ[]÷"_g ì%(ÞR9T8«!¥æ ú&£¨
Ìu®J¥ûÁ|éºÈpÝ0SYú+(~`¢¬,
-uöj1!"¨èº¢*¦ÒÕtR¾/+¢8³:cäº1¼DÓe{Í¥GZ"¬\}+Fu£qÑsL÷©5èî5¥é[SX ²«ì,¢lSY£ +Të]RcëúúU&dªÂô!cõéÓËÔ.,{7Ô×¢YVÐ$1*H· ÑW¡å{êûRºîâò8z¯{ l>ù¤MQc]
-û\Zgà¥}ȺרÎR½Õ}êP}lLM&¥Í¡çÇZI:¨L¸i2©
-Uö)Ci³6ëÓ¯ë"Bû¬¤vMª;Õ|*X÷ª6©g!æÞQȺWôÿrJn2Q»ãô´©å`Eñ²*ú>ÕZËÊÓbme6ë*ìá%AÃAº£XqfÑuYÔ¨GÏÅi`ίrp$Rµ©û5\W
5æ¶õt°îfU8¶Î4gb¦Öê¢AÑõÐ(
-gV3¢M¢ÍÍ'ë$/gÚueõ]{}îâ¼P²F]d¥¹fN©ePEQxm£çI/uh ¤û¢lBåt6-ÅÏ.ÆG_qd-G÷KP3Míú©]_ºG
-uôÅ)¬´^ð¼à/xÁ^ð¼àµýu3Î¿æ© ÝÜçÉ<ÖW2ýpKoLX;^â~tdT?¯FËÇ4MÒO®¾/¿¸Ó¥Ó<Yþ?Ô2a%&C¡Q é'7ó¤Q)Ì<Ð×(¡Àap1ßp4âÿúaÜë÷ÿR,xãûßÿ{ÑÚåßÞèSÿ)N'å(èÞ>æq'ã·ï1!4æÉìN!òf¾Ä³¿é÷aù¥Ñ<6zÿúGú)IãxiÜuͳY|³Êã,Ó?e½ÿí/ói¢0þQ7c óõ£þ ýþî&{ø¶JÆÑÕѾLîgºù½/±I)Læë´(KÆe®j&y¢KYÿÒdf&ñ[¼2oGñ×qåÉ"]ÿÎX`fñn¢®ÍÍl{éãëôÇÐf&1ÊV1ÊWc4_-QÅh>ÑøkPâÍó¥NùdR"4/t¶Ü|I4Mg«4EÓ¯º=Oÿ)zÈÑêÛJ7_÷íWë9Îd-2ýéIO÷h9ÑÎÐlØ$]|1y7º7Ìãi>2U[ÆÙèÓb1A©ùí"+~©óNFe§ h>MÆs¥ /t-º
-D¢lÓÍ¢éHd<ÏF³øS4þVOsSDÑÊñ2xþut?7õç'«h|JM:eËxçã´X=}AÉý
->ÁA_&¹®Ù$N&#Ó©nßì~ùd12³2JI6ZEOñÍýâÓbdf~ÿz÷|âL9â¿£â«ìç¾]'J^e£¢Vs}j¿&}â¬l¦\=ß'ù
-=~¯7¿yJùc4»ÉtG/Ñ<JõaL9oôø£<ÏP®Ûu5ðüá/sίÐÃÌ|£ßÜØN#ê4Òâ4Õt§]
Ó8&?âËt½P§Ñ§M§QpÚÕ8àt»P§±§
M§1pÚÕ8íB¯iüBÆ·;â¦Ó88
-vZ§uhqi:MÓ®Æiz÷(/Ôi-±GJNà´«q/ÒiêBÖ{¤¬é4N§ÖiÁ
:%öHyÓi8
-vZ§
ê´Ø#M§
à4pÚ¿¹¾TH¤-øèDP"àµS{íR1¶ð£N¼vj¯5(Bö
- at 2G @¼vj¯5*Òâµ$s Ä Ák§öÚYÃ"-^k B2G@¼vj¯5.Òâµ0$s! Ä!¯ÇkʳFZ¼Öd8$
8äõxíR¯kg´x%ÉqH
-qHðÚ©½vÖÐÈqH×5X±v=^»Ô{ȳÆFöC:¬QX³v=^»Ðë=knd¿8$w,Z£°jíz¼v¡×5zÖÜÈ~qHîX¶FaÝxíÔ^»Tn¤%ÉÜn¼vj¯]*7Òän7^;µ×Ρ{Å!¹#É yE^#éµ³æFZ¼Ö䮳 yE^»ÐëÚYs#-^kC
-GA¼vj¯57Òâµ8¤pÄ!Ä!¯ÇkúýÚYs#-^kC
-GAòz¼v©×µ³æFZ¼Ö8$8$xíÔ»57²_R8Ö¯1X¿^;µ×ÎÙ/)ë׬_»"¯]fÌ57²gÒ±~Ãú5ðÚ©½vÖÜÈqHÇú5ë×®Èkzy©ÜH[ÒÁpàFÀk§öÚ¥r#mqH7¹¯]è÷k쬹¶WR:ââ×ãµK½®57Òâµ8¤tÄ!9Ä!¯Èk9kn¤Åk-qHéC
-C^×.ôºvÖÜH×ZâÒ¯úßÈ>kn¤Åk-qHéC
-C×Níµ³æFZ¼Ö8¤8$xíÔ^;knd¿8¤r¬_°~
-¼vj¯57²_R9Ö¯ X¿^;µ×ÎÙ/©ë׬_»¯]èwÙü¬¹ýâʱ~MÀúµëñÚ¥^×.iC*7"¯ÚkÊ´Ä!À×NàµW «¿]éó3Îoçã´[:Æ1ôüÅßZõ¿÷0ÁãèßÊz
Ä1*S×£>¹½Z.y[¾®ôU}ü'ñS¢/¨=v®¤ñ÷¡mã¯ßçñü0§ÁîþL
-êsSóÝ'Áîã/¡0þ>ÔgüÍâ;ÎÝÇ_1
-ó¿õÿôqÝaXr¾uü 'Õñ§+}ÿßܦ>þfTGúò@à¦øY?ø®.ßOËX?m"ÃhäñrëØâ2$âF?ÜF³9At8Pâf?ÄËò7*àÏ[ýý?çI:]ìqÿ
eÍÿXaþ÷¡?SzÏ?,òhö"R)EDßYY~]Æñs
ä¸åã*l² DU ]ÊÛq<ÅV-AåiÔȤoq£¢tþ}Se¡¨£j&ä(eÌâM&$wbeªÕåcj<G÷³J+ýb~idù%Yæßê¬,ÿ]&y|?¿ÙZʯºÿ6±C+TØnÑû(ËU¡} ·ºÇê¥íÝ=èù ^]Dìø=^¦ñì.¯UØ>9ÈÓq«JQöþøõnôÑD«Ýkgy·xLÇq£2ØÕuæÙRîfÑ}½
Ý¢»?ãñ,Jæv]hPiôÝÇtYfz)KßÌÚúíñS9F#Ëq¸jÍz÷¸Ì6©ûû¿ÿü¿Géèñå\1ê>ÇèºÿÃÖæ¦(ùß¾çÜ]¾úûéÇlctú4îÿ#àÒ½?}=^ÌÓNþ%«}<Ð}ýo>ÿQ þ÷!o ßVýýÿ =[þ¿ Ø9þO Uÿ÷¢}Æóîb|~×uBì>þ/:ÈøOq<Úü¶qÝÿIë¿Á=ÿ°uÿ§Ë÷ïãi00ð¿ÿøõ¸Ìf«mÀ×aîÿÁÿÇøØêïÿIbããÝÑéÖxþÇÿ}R¤ÿ#òù?\þ³Â@Ô×ÿÄ7ÿ!þãCýÇß3ÿü½ð¿"LìÆÿÊ
-ÿ+Hÿ.$çþþ÷ÌÿÿáE%XHºù_âæ¹H7ÿ«, ¸ù_FìRü/g²QJ
-í%J:JÙÊÿ'ÿ[aÿÖ¥ÿ%Ýü/qó¿VNþ8ùß@ö ¸ø_2{ \üo±©ÅK7ÿìêºù_j×ÅÍÿJ»Nþtó¿¤ÿ%NþW¨°ÒhÿK+½ëä¶[ÔÆÿVþÿ%ù_뿼âÃVÿûå)¬ÿò"Óý¯Aa.vòÿÑø_ÑäáùÏä-!`ûᪿÿ=ó¿ÿ÷¢}ÆßÿãïEÿó¿RÿãGpÏ?lÄÿÇàÿñ"ðÿ°uÿÿ
õ?^þ¶úûß/ÿëÿýÈb~ÍÏ80Ì
-Q_ÿSßü/øõÏü/ļhÃÿ²S~ÿËÉ
ªò¿Â
ä¼Õßÿù_ÿxQ ÒÿÒâiÿEÆZT(uð¿,`,Vÿ˱
-ì5ù_Ây@¥ÔÐ^î,e+ÿK]ü/×#ØUÊ&S£.ü/íæ©ÿeÕuò¿ÔÁÿ@^F×þ¿¨Å¹ÿ¯n·ÅÍÿR;ÿ%¡}¾8ù_ªì,ü/íæi7ÿK]ü/ça¥EþN+¥¸ù_»6þ¶ò¿ôtü/õ½ÿ/Äÿ¼âÃVÿ{æ!þçE¦û
-ÿ˦öÿ vò¿Ïýaý·zKø~°êïÏü/Äÿ½hñ÷ÂÿÂø{ÑAÆÿü/¬ÿó"¸ç¶âÿcð¿pÿïEàÿaë þ?ÿë½ü?lõ÷¿gþöÿñ¢ù%ØÚXÿ;õñÿC´¥å<æñ|±ü¶ã1º¯ÿõý?âpÿïEø¢ÿCVßë?öÌÿýÿ þ{|õÏü?ð¿^ôÂÿ+ɸÜÿçþ_ Ìÿ'4àârÞêïÏü?ð^TÅØÉÿK._Ðfìàÿ ¸µC5vïÿ½¥±ÿ'vÇþß3¡ÆNþg)[ùìâÿ »JyÉT¯K'ÿ»ùìäÿi`-ÀÝü?víÿMiPF×þ߬Òh'ÿ/
]7ÿOì,.þñJü¿¨¨ÿÇÝü?îæÿ±ÿ§æ·³4ùÝs¹ø¶IÚøÜÊÿãÓñÿØ÷þßÀÿzÄÿþþ÷ÌÿÃúo/2Ýÿzý-ÌæÁi'ÿÿçç?ø÷?üß
-pýÕßÿ~ù ñ/Úgü}ðÿÆß2þÇàÿáû/çÿaë þ?ÿü¯ÿøÿü¿ç/ÿ[ýýïÿõ¿^´!ÿË-ÀÿYa êëå{ÿo ñê?þ^ù_áùÏ6ü/f»ßïà©$6ÿ+Â
ä¼Õßÿù_xþó¢,T
-þH¥µxNÕàä*°7kV.þ7BkãhåâE¬ü¯nRßÿsG)[ù_åâ"ÔYÅÿÖêÒÉÿªnþW9ù_$+]×Éÿ*'ÿ˶{×½ÿwP#ÿÀ.ÅÍÿ"»çþߺIV÷þßÜ>P'ÿ«ºù_ÕÍÿ*ÿ°â ÿ¤m8÷ÿ¦SªÿUü¯:ÿ«|ïÿ
-Ïÿ^ñ¿a«¿ÿýò¿¾ÿ÷¢éxÃÿÂþßÔNþ÷¸ÿ7õ^Äé-@«þþ÷¼ÿ7Äÿ½hñ÷²ÿ7¿düÎÿ*ÿþ£Á=ÿ°uÿÿ°ÿÿøÿûÃþ^þ¶úûß/ÿË`ÿ/*ßüݼ'0+E}ü¿HgIºïÕ}ýuþWð¿ÁþßÃVßë?óÍÿSÿúPÿñ÷¼ÿ7ð_^ôÂÿJU¸ÿ¯*ü?ç
-ÿWàpq9oõ÷¿gþø//*ÁbÖÍÿ3'ÿ/EXËRãÿz,.þ?´ÙræäÿÌd£Ú¯0v²ÿgNþ?$κØü.ü?ëæÿÿ¯ön'ÿÏü¿¢Ö*¶
ÿ¯dqîÿÍ+øeÿojeqóÿSÊÉÿW[ÔÉÿ³nþuóÿÌÉÿ+T²8ø}ͳ[ääÿ9µ{·ÿgü?;ÿÏ|óÿ°þÓ Ò7lõ÷¿çý¿aý§î±Y üÿ µÿ=òÿ°ÿ¿à2ðý`Õßÿùÿ{Ñ>ãï
ÿñ÷¢ÿ1öÿþÏàØ:ÿ±ÿ7Üÿ{øØ:ÿÁÿÃú?/ÿ[ýýïÿõ^d1ÿöB ¢>þÏ«Ur?Û{@÷õ_ÔãÿXÿ½øÿa«ïõûæÿÄ}¨ÿø{æÿ!þëEþiË ±ÿ/mþQ.xXåÿ±Ëy«¿ÿ=óÿÿõ¢,æ
-þ,0ÿ È[æ
-þÊâ¹¹ÿ'2¬
-Ò¹ÿ²ÅÁÿ#êùýÿ+Y:ùîäÿ4ÚÁÿ×ëÒÉÿónþ;ùª¤¥ÿç.þ
¬:nþßÎâÜÿ¿:F[øûdèäÿùýÿ»Eü?ïæÿy7ÿÏÝüX©®ÿÁ½ÿ?³»®ÿçü??ÿÏ}óÿÿ÷"ÿ[ýýïyÿÿyéþ×lZÌÓNþ÷ÉÿÃþ^Dù-
¤q¸êïÏü?Äÿ½hñ÷ÂÿÃø{ÑAÆÿü?¬ÿõ"¸ç¶âÿcðÿpÿïEàÿaë þ?ÿû¿yøØêïÏü?ìÿåEkø¿¾ f
¨ÿ¢Õh=î}îëÿîÿ½¨ïü/}óßâ>Ôü½òßþý??²øo¥8ÙÿaÿÍðþÂþïg®þþ÷ÌÃú/*ÁRÙÍKÿM)³ Yéä¿%µÀaéä¿y(¹ÅɳJ'ÿmï"/»ùoéä¿9VÒUÍWëÒÉËnþ[ná¿©¥ÿNþ;àpóßÕ~qñßöîúrÿì~qòß*°³tîÿ.»ùoÙÍËnþ[:ùoAd%ÿ&!µ[´
ÿ¶O©6þ[¶òßòtü·ôÍÃú/øï°ÕßÿùoXÿáEMÍþï¥`.vò¿Oþø//bòðý`Õßÿùoÿ{Ñ>ãï
ÿñ÷¢ÿÁùo¥ àúïCpÏ?lÄÿÇà¿áþßÀÿÃÖAüþø//ÿ
[ýýïÿõ^Tnø^ùÓPà0+Dþgßþ®õ?öÎgÇqÙú³®§ÈDýõ ^õ¦Ñë^LÊÊÔUÙOÿrºnµTùQKÑ@ÅùÝk§k
-*ydÄaÐ;ÿ£RÄÈÿp°büÇÿªð߯ñ&ÿ·
-ÿcaõøMÛç7Â/÷øA*?þãß¾¼õu}·ºø<nöòêèx×þoÿ8ÿaµ_Ùøë¿hºÿýÎÿðülú·÷Uõs¯±¹õÎã ÿË
-ÃsXüõ?¼tF}f ·þ£þ ÿ
V¢¹[ÿ+áÔ¿ZÄÿ Æùì×?ÿPÎäÎõÿªgøë?JBÔYx×YпDVë¿ètÿ×ͰîÌ÷÷¸õ?Ïÿ©ýÿxH£2T¡}¬×¿.^Í`%îYÿUIú/ã_ÕGóÕ×â?þ*Qÿg6þ}õ·ÔÿKæõ¿ñD
ôË
¦ÿy5§ÕÏpëYÿO±ÿgéÙÐô_4/¦3uñªÚfÿ¿Ë·þõ¿ç¿xHÑ¡W44ýó Oòou7TCÕÔ<Ã?þ§*ÿøeCÓÿýÖçMë~üÛª×jxûðø¢ÿ8ê)bþïEwæh/ÊWôuêéÿ qþûõÃÿ#»õ¿â üãûàÿ
-MÿÃ[»eýOÍë¿aáþþ¬«²2GLB¡é¿¾Lg3 ½~@wüëäÿxH°
-EÿÿËöÿÿkh㿵ÿk>ÿàþGÒö/ÉÐôÏàÿÿÔeCÓ?ÿõàÿ
-Mÿûû¿R¬ÿY@ü
-Mÿ[û¿æúOÒõý
-1ÿ·¿ÿûì×ÿ\îÖÿ^þ/ìÿY@ùW64ýoìÿúQÿìÿYøM3\húßßÿ
üðÉ¢ÿ£ÿWÿ´ñßÚÿ5Ïÿ8ÿÇD¢Ô0¹ÐôÏàÿBýÜý#þü_Øÿ± ÿlú·?äǪ×O'»têÔ¿ZÔÂñ
àëm0H¦þð° ÿ§lhúß½ÿ_û¿y $CÌÿïïÿÄúûõ[ÿgûÿDr·þ7ñ.ôÃÿÍ
-UÝ
¦þèÿÉúÿÉfü¿r<ÿþY@þ_64ýoíÿÿÃ,þ9PY@CÑ¿âðãþohãÏÐÿ÷?±þ²¡éÁÿõðȦÿ7ê¿,Àÿ-þúbýÏâ¿lhúgèÿúèþ!bþoÿ'öÿ,دý?år·þ÷êÿý?hÿ%þ·ö.ëöÿ,ü^÷Cw)lö@húgèÿ ý³þ²Yÿ¦¶¹~Ò3üóA`ýÏòÿ²YÿÛKÙ¿<Vá~þÏ IÐÿïñïÌI×Üsá÷þ'R1ú°ål¼õ?¾VuÙäÅ¥Ëí+áÎÿÌçÿ8P¨ÿ² ²i0 Å[ÿ}¡Çàs®_uuÿÚ/¦.*óÁÀ©ÿd®ÿ4 Ðÿ
wý?¨èýU½¿^Gæáp}ÁüðBÖÿsójººéV<Ãÿùß ýxhMW6ÝY×
ƲAü¿Í¦úO³yüGÿo&¦îM÷j-¼æ¡©f
-ñ³¾Õ
yh/ã[=þáw3?
-dýïºÿ2ôÿàûÙxëÿ©júüT«õjð׿= ýs ýËÿÏúëñ÷?ó ýË\ÿ:]÷Ó©ïÜêâóóþ©ÂþÄ/²þwÿq ÿgñ_6týWõfúæùø¸8@þ¢ñßÿzèý\àÂýúÿf
-ýY ÿPM>F ûóPsþ_Ôãý?y¸ù¿Ì&ÝO7ØøN}{ÜÞnoþí6تþA®9 ÷3Üë¿ùù¿X%Xÿ± )Ë^ÿÙsÿÿØÿɬÿcW½5îoÿ;Óúç`òwÖÍÇϸ^"Þú×ei
-¿àîø¿8ÿ¦¨ÿ°óß²!ÇÛø«5æ¸âîø¿èÿk¯þøåR÷¶mºqJÿS8Öé?)}nL;üÕõì?ÊT¨Pÿá`õøMÛç7Â/÷øAfïÀøïÿø»û§ÕÅgýlòʵp¯ÿÃÙøÇiý?b¾hüõ_4Ý
-Í¿þm8èlÿeCÔ_=Ù,@¿æúúOçñ?Éÿc!JãsXüõ?¼tF}f ·þ£þÀÿÃBûEs·þW<éµÿAü?ÖÛûßÛ8`*ÇëÿUÏð×àþ/ʲþ³ZÿE§û¼nº<[ÿóõ¿bÄ=jõ¿LÇ¿HÖëºÿô+qÏú¯JcÔ9ðÿéþÇÐó×ÀüÇPÿg6þ}õ÷÷ÿþ£ÿÓTÿcäÿXHTø"¿\hú?WsZý·þõÿûPÿ
-MÿEób:Ûó1·çå[ÿú_þo<¤¨ÿ¦ÿoàIþî©ìÏðÿiû¿yÀýß²¡éÿ~ëó¦Ìu?þíÊ^T
-÷ô^ÄÿLÁÿÏJ1Hÿ{Ñݵ@~ÖëNý/ý?aý?ðÿÈæný¯8 àÿã8ÆþøeCÓÿðÖnYÿSóúo&ôÏÁuUVæI@(4ý×óélÀ¶r=Ãÿãyüÿã!A0ÑPôpø¿"ø¿8 ÿÖþ¯ùü1ú?³Æ°I¦ÿü, þ+þ÷÷¨ÿ° ÿlhúgðaýÏâ¿lhúßÚÿ5×2Ýÿ ýﲿ²!æÿö÷aÿÏü_²¹[ÿ;ù¿Ðÿø¿dCÓÿÆþ¯ôH°ÿgá7=hÌ r¡éÁÿý³ ÿl(ú8ü_)ü_ÐÆkÿ×<ÿâüR8ÀäBÓÿîþ¯8@ýÜÿ'þúaÿÇü_²!êßþ«^?LîÒ©Sÿþÿñ¸ þ9¾ÞóDhúgðÂÿÁü²¡é¡ÿÎÿ³0HÿßÝÿþ?<ü¹[ÿø?úáÿæ!ãºMÿýÿÐÿôÿÍùåx[ÿ?ÈÿCÿ, ÿ/þ·öÏÏÄQû¿YPY@CÑ¿âðãþohãÏÐÿ÷?±þ²¡é¡ÿ'Ö,Àÿ!þüߨÿ² ÿ·lhúgðbýÏâ¿lhúgèÿúèþ!bþoÿþØÿ³þ²¹[ÿ{Ýÿý?èÿ)þ·ö.ë öÿ,ü^÷Cw)lö@húgèÿ ý³þ²Yÿ¦¶¹~Ò3üóAbýÏòÿ²YÿÛKÙ¿<Vá~þÏ IÑÿïñïÌI×Üsá÷þ'R ú°ül¼õ?¾VuÙäÅ¥Ëí+
áÎÿÌçÿ8PÿeAeÓ`·þûBÁç\¿êê4ÿµ_L]TæSÿÉ\ÿi¢Ðÿ
wý?¨èýU½¿^Gæáp}ÁüðBÖÿsójººéV<Ãÿùß ýxhMW6ÝY×
ƲAü¿Í¦úO³
ÿþ¦îM÷j-¼æ¡©f
-ñ³¾Õ
yh/ã[=þáw3?
-dýï¼ÿGÿ°ÿ·þª¦ÏOÕ¹Z¯ýiûXþeCÿgýu×øý³ ýË\ÿ:]÷Ó©ïÜêâóóþ©ÂþÄ/²þwÿ!òÿ, þË®ÿªÞLÿÁ<ÿÿÈ_4þûÿA½|R¸_ÿß,Dÿ_ã?TgÀþä<äÿõß8FÿOnþ¯dT\üïÓÍ|º9ÁÆwÁíÝáöæßþg ê¿ôér?ýþÿUõ²lèõ}÷ððýlÈú?vÕ«Yãþ¦ø¿£8Ë &gÝ|yüà%â]¦ð; îÿóßaú8ÿ-rü·¿Zc+áÿþ¿Aÿ¿\êþÒ¶M7Né¿b*Ç:ýÿ£ôý¹1íðWׯyBe*T¨ÿp°zü¦mNÍóáÁ{üà ³ë?ÿþøÿ·»Z]|ÖÏ&¯\k ÷ú?¢ÿ/èþ)ýM·Bóßã¯ÿ0RèÿÆBý¨ÿ¾z²Y~Íõ+ôÎãú?aüa¿þÎè£ÏàÖ4Ó¢äÿYÿñKæný¯xSÿjÿþì×ÿßð}0ãÎõÿªgøë?J"øX¿ýò¿e ýeµþN÷/yÝuyþ·þçù?¡ÿ+ETFI¦ch_&ëõ?ÝÿGz¸gýW¥8ÿÉçøO÷?¿þã?þú?´ñï«¿·¼ÿ÷ý¦ú_øÏC¢Â?úåBÓÿɼÓêg¸õ¿¬ÿãüðÿȦÿ¢y1íùÛKsÇrÀÿEý/R¨ÿ³âühhúÿæäßên:Á~ðÿøü,àþoÙÐôÿE¿õySæºÿve/ª{ú?/â¦àÿgA¥ $CÌÿ½èîÚ ?ëÖõ§þþ0ÆþûõÃÿ#»õ¿â üãûàÿ
-MÿÃ[»eýOÍë¿aàþþ¬«²2GLB¡é¿¾Lg3 ¶
-ëîøÏãüBP2ýþ¯þ/h㿵ÿk>ÿaþo,¤1ì_¡éÁÿÿ'¨ÿʦÿýý_ê?,Àÿ%þü_Xÿ³ø/þ·öÍõd
-õý
-1ÿ·¿ÿûì×ÿ\îÖÿNþ/ôâþ/ÙÐô¿±ÿëýìÿYøM3\húgðAÿ,Àÿ%þ#ÿW
-ÿ´ñßÚÿ5Ïÿ8ÿÇD¢Ô0¹Ðô¿»ÿ+Pÿa!öECÓ?Cÿ/ìÿXÿK6DýÛòcÕë§É]:uê_-ê?ã úç øzÌ¡éÁÿ ÿðʦþ8ÿÏB|À bþwÿ'úÿð`¿þÿF¸ÿO*wëÿçBÿ1üß<ñ#, ¡é¡ÿú²þ²Ù"ÿ¯ÏpëÿùèäÿeCÓÿÖþïùù8·Ð?*p`(úWþoÜÿÍmüúâþ'ÐÿS64ý3ôÿÄúø?dCÓ?ÿõ_àÿ
-MÿþO¬ÿY@ü
-Mÿý?QÿaÝ?dCÌÿíßÿûì×þr¹[ÿ{Ýÿý?0ʦÿýËú_ý?¿×ýÐ]
-½ÁD þúBÿ, ÿ§lVë¿©m®ôÿü_
Xÿ³ü¿lÖÇÿöRvæ/OëçU¸ÿ3HRôÿeÁ{ü;sÒÃ5÷ã\ø½ãÿTþ, ÿ#oý¯U]6yqérûÁg¸ó?óù?"ÔYPÙ4âÿ¾ÐãFð9ׯº:MÇíÇSù`AàÔ2×(ôÿ`á]ÿ*zUï¯×y8\_0?ü¤õÿܼ®nºÏpÇÿEþ7@ÿZÓMwÖua qlÿo3Áé §þÓláÿÿ¢©{Ó½Z¯yh꣧ãÃeü¬ouaÚæËøVøÝLåÀOYÿ;ïÿÑÿìÿeãÿ§ªéóSu®Ö«Á_ÿaáþ ÙãÿYÝ5þCÿ,@ÿ²!×ÿN×ýtê;·º¸çüç¼ÿ_ª°ÿçá ñ¬ÿãü?ÿ²¡ë¿ª7Ó0ÏÿÃÿÃÅòÿþÐCïçî×ÿ7ÑÿâøÕÙäc°?99çÿEý7Ñÿÿ+§"õéæ>Ý`ã»àöîp{óoÿ³ÁFPõßút͹á^ÿÍÏÿÅ*ÃúHY6ôúϾû?ø?xÀþO6dý»êÕ¬qSüßQeÐ?¿³n¾<~ÆEðñÖ¿.KSø wÇÿÅùï0Cýÿ
-9þÛÆ_1ÇÏpÇÿEÿß ÿ
_.uiÛ¦§ô_1c¥þCJßÓuý'úO 2eûÿ£þ³?«ÇhÚæÔ<¿~¼Ç?²4Áøsà?þßîþiuñY?¼rÜëÿp6þqû?y@ÿ?Ùøë¿hºÿýQþo,àú?ÙõßWO6Я¹þc
þÓyüORÔÿYPáca¿þÎè£ÏàÖ4Ó ÿÏCöÿ¢¹[ÿ+áÔ¿ZÄÿ ÷ÿñ`¿þÿA<¦qܹþ_õýGIÿïú/ËúÈjýî_òº>êòü1nýÿíù¯ñôÏÁ!N#éÚÉzýO÷ÿa%îYÿîAýw<ǺÿÑ×â?þ*Qÿg6þ}õ÷÷ÿþ£ÿÓTÿw ÿ$*ü¡_.4ýÌ«9~[ÿóõ¥Èÿ±ô¿lhú/ÓÙ¹½8w,ÜúfúO¢ ýYHa
-Mÿß<Àü[Ý
-S'ØáÿSÁÿËü¿²¡éÿ~ëó¦Ìu?þíÊ^T
-÷ô^Äÿýßy
P)& Éó/º»¶ ÈϺu=éÿ¥ÿ'PÿgÁ~ýðÿÈåný¯8 àÿ'ýÇèÿÌü¿²¡éxk·¬ÿýãþðZÿCügáϺ*+sÄ$ þëËùÉt6`Û ¹áÿñLÿqüÂ@2ý»ú¿®þß8ÿÚøoíÿÏÿãúû?Òö/ÉÐôÏàÿÂùPÿ
-Mÿ»û¿BÜÿÄü_²¡éÁÿ
õ?ÿ²¡ékÿ×\ÿIû_x@öW6Äüßþ¯kýýx°_?ü_r¹[ÿû¿&ýÇ!öÿ,Àÿ%þ7öý£ÿõþcÿÏÂozÐäBÓ?ÿúgþ/ÙPôqôÿJáÿâ6þ[û¿æçÿàÿç"Qê \húßÓÿu½ÿ+Cÿp÷lhúßÓÿ]û¡ÿðɨûC~¬zýt2¹K§Ný«Åùÿ0Büg!øzÌ¡éOÿgtõ¢ÿ7ðʦÿ=ûÿE×þð±0Hÿß½ÿ_õ?öë·÷ÿØänýoâÿ\è?Æý?<¨Ãc\húß³ÿ_ÿ'#èÿ'-òÿÊñRþúgùÙÐô¿µÿ{~ÿgþ/L¨,À
- ¡è_qôÿàÿæ6þý?áÿbý?eCÓ?CÿOäYÿC64ý3ôÿÄù/àÿ
-Mÿý?±þgñ_64ýïÞÿ3àÿbÝ?dCÌÿíßÿûì×þr¹[ÿ{õÿÄþôÿ
-Mÿ[û?õ¿û~¯û¡»6{@ 4ý3ôÿþY@ÿOÙ¬ÖSÛ\?éþù¿
-°þgùÙ¬ÿí¥ìÌ_ÖÏ «p¿þ¿A ÿ/Þãß®¹çÂï¿üÿHÅèÿÁò?²ñÖÿøZÕe.·¬x;ÿ3ÿã Äù?T6 &¡xë¿/ô¸|Îõ«®NÓñ_ûñÅÔEe>X8õÌõ&ê¿,¼ëÿAEï¯êýõ:2ëæ²þWÓÕM·âîø/â?ü<´¦+î¬ëÂ@ãÙ þßfÓNý§Ù<þ£ÿ7ES÷¦{µ^óÐÔG3NÇËøYßêÂ<´Íñÿð»Ë²þwÝÿGúðý¿l¼õÿT5}~ªÎÕz5øë\ ÀÿÁô/rü?믻Æèè_6äúßÐéºN}çÖP÷ÿ÷ÿKöÿ< ~Ñõ¿kü
ü?ÿ²¡ë¿ª7Ó0ÏÿÃÿÃÅòÿþÐCïçîåÿVáÿæ8þCu6ùìOÎCAÎùQÿãõnþ¯$£ÿeé§,øtsïÛ»ÃíÍ¿ýÏAÕ3èÓ5ä~{ý7¿ÿ9V)Ö,@ʲ¡×öÜÿÁÿÁö²!ëÿØU¯fûâÿâçÿYüuóåñ3.·þuYÂï ¸;þ/θÿÿ
-9þÛÆ_1ÇÏpÇÿÅýïÿ
_.uiÛ¦§ô_1cþãÒ÷çÆ´Ã_]ÿÉþ¨L©õVÿдͩy~#ü"xdîÿdÁü¿ÝýÓêâ³~6yåZ¸×ÿálüã4Aþ
1_4þú/n
æ¿Ç_ÿaõ?Hý˨ÿ¾z²Y~Íõ+ôÎãü?QúgÄâ¯ÿá¥3úè3¸õÍô¨ñ#èùÑÜÿÏpê_-â ÿ3öæ¿ÿÞÆS8î\ÿ¯z¿þ£ýy(ËúÌjýî_òº>êòü1nýÏ×ÿ*Âý<¨8NCéâÉzýO÷ÿa%îYÿUiú/ã?ÝÿèkñÿñÔÿY _ý½åý¿ÿèÿ]ïÿEþ
D
òË
¦ÿy5§ÕÏpëYÿϰÿgéÙÐô_4/¦³=s{)pîX¸õ¿¨ÿáþ_&Òdhúÿæäßên:Á~ðÿøü,àþoÙÐôÿE¿õySæºÿve/ª{ú?/â¦àÿgA¥ $CÌÿ½èîÚ ?ëÖõ§þþ0Æþøds·þW ðÿ
qaÿÏü¿²¡éxk·¬ÿ©yý7côÿcáϺ*+sÄ$ þëËùÉt6`Û ¹áÿñ<þGÈÿñ(, $CÑÀáÿRðq@ÿý_óù\ÿáþ?Òö/ÉÐôÏàÿÿÔeCÓ?ÿõàÿ
-Mÿþ/¬ÿY@ü
-Mÿ[û¿æúO² õý
-1ÿ·¿ÿûàÿÍÝúßËÿ
ý?ðɦÿý_?èÿ`ÿÏÂozÐäBÓ?ÿúgþ/ÙPôqø¿bø¿8 ÿÖþ¯yþ'Äù?&¥pÉ
¦ÿê?,àþ?ÙÐô¿¿ÿKaÿÇü_²!êßþ«^?LîÒ©Sÿþÿq!þ³|½
-æÐôÏàÿÿø?eCÓ?Cÿ?ÿg!>`1ÿ¿¿ÿëÊþOÉÜÿMüýÇðóqÝ
¦þèÿÉúÿÉfü¿r<Ãÿäÿ¡ÿ
-Mÿ[û¿çç?â(Àýß,¨,À
- ¡è_qø¿qÿ7´ñgèÿûX@ÿOÙÐôÏàÿÆúø?dCÓ?CÿOÔYÿ[64ý3ø?±þgñ_64ý3ôÿDýtÿ
-1ÿ·¿ÿûÐÿS6wë¯þØÿ³þ²¡ékÿç²þ`ÿÏÂïu?tÂfo0¦þÐ?èÿ)Õúojë'=Ã?ÿD
-ëÿÍúøß^ÊÎüåiý°
-÷óIþ¿,xgNz¸æ~¿wüó?JÐÿädãÿñµªË&/.]n?Xñwþg>ÿÇAú/*F P¼õßzÜ>çúUW§éø¯ýøbê¢2,úOæúO
þ,¼ëÿAEï¯êýõ:2ëæ²þWÓÕM·âîø¿ÈÿèÿÃCkº²éκ.4.
-âÿm&ø0àÔ-üßððP4uoºWká5M}4ãTp|¸õ.ÌCÛ|ßêñ¿)°øi ëçý?úðý¿l¼õÿT5}~ªÎÕz5øë?L#ÜÿÃô/rü?믻Æèè_6äúßÐéºN}çÖP÷ÿ÷ÿKöÿ< ~Ñõ¿süÿgñ_6týWõfúæùø¸8@þ¢ñßÿzèý\àÂýúÿf!úÿ²@ÿ¡:| ö'ç¡ çü¿¨ÿÆ1úòpó%Ùø¥«øÓÍ|º9ÁÆwÁíÝáöæßþg ê¿ôér?ýþÿUõ²lèõ}÷ððýlÈú?vÕ«Yãþ¦ø¿£8K &gÝ|yüà%â]¦ð; îÿóßaú8ÿ-rü·¿Zc+áÿþ¿Aÿ¿\êþÒ¶M7Né¿b*ÇJýSÚþ|cÚᯬÿÄÙ¨Mç?QÿÙµã?4msjßöîÿ4d*Ãøsà=þß®þiuñY?¼r.Üëÿp6þqý?HýÉÆ[ÿEÓÑü÷øë?Äùo&pýlhúï«'è×Üþáwþãÿú?²<*´ ·þÎè£×àÿ Dügñ_6÷êÍ3úÿ.ÿÿÿÿæÁ~ýï÷ÿ)ääqßúÝ3üõÅ)îÿaáÿô_%ô/µú/:Ý¿äu3|Ôäùÿ[ÿóú
-SäÿYPO*Ó1"¿TVëºþö+qÏú¯
-RÔ9ðÿéúÇÐ÷×ÀüU¡þÏiüûêo ñÿqþD
øË
¤ÿy5§õÏpëQÿBìÿYý_6$ýÍélËÇÜÞ »nýGóú_áü)
-¢!éÿx«»ajûÑ3üãªPÿçæÙôÿE¿õySæºÿreïªÛ?Sâ!ÿÏJ1Hÿ{Ñݵ@~ÖóNý/ý?*ÃþûõÃÿ#{õ¿æ ÿú?RøÿYÀö_6$ýoí¦õ¿
ÿÇ6þ9ø³®ÊÊ1
¤ÿúr~2Í Ø.@Îg¸ã<ÿ!ò<$
-@Éô°ø¿ø¿8 ÿæþ¯ùüªýYHcØ¿$CÒ?ÿKÁÿÉ꿲!éÃÿ
úðɤÿÖÿ, þˤÿÍý_þOiúÈþÊÿÛßÿ
ó<دþ/¹Ü«ÿÝü_èÿƶÿ²!ékÿ×ú?àþw~ÓÆ þ9ü_Ð?ðÉ ÿÁÿÙþÏðíiü7÷Íó?!Îÿ1(uL.$ýsôÿBý
Ú
-Iÿþ/ìÿXÿK64ýÛòcÕë§É2uê_Íõ+ÿç!øzÌ!éÃÿ ÿðʤþ8ÿÏB|À Zþ¡ÿÖÿ,دÿÝÿáþ?yÜ«ÿmüÿGûÿx¨^0$ýsôÿÃý, ÿl6Èÿ+×3ÜúÿAþúgùÙô¿¹ÿ{~þ##ÿbAen Aÿ¥ÿ'îÿf4þý?ÿaý?eCÒ?ÿë?àÿ
-IÿþoÔYÿ[6$ýsø?±þgñ_6$ýsôÿDýtÿ
--ÿÇàÿÄþûõ£ÿ§\îÕÿný?Ñÿ
lÿeCÒÿæþÏeý/Ãþ
ßë~è.
Mß`&Iÿý?¡ÐÿS6kõßÔ6×O{ÿúßÎ Ð?ÈÿËfuüo/egþòµ~NX
ûù?D¡ÿ/¾ãß®¹÷Âïÿù?
-°ÿãùÙøê|ê²ÉKÛÖ<ÃÿÏÿQ þËʦÀ, _ý÷
7Ϲ~ÕÕi:þk?¾º¨ÌG§þ¹þÓ8Bÿ?Þõÿ`oÜ^Õûëud×Ì?)Tý?7¯¦«nÍ3Üñÿ2ÜÿÊCkº²éκ.4.ûãÿm&ø8àÔÿ(ö¹ÿý¿y(º7Ý«õð¦>q*8>\ÆÏúVæ¡m¾oõøßÍXü4Põ¿÷þý?xÀþ_6¾úª>?UçÊCþú÷ÿ° ýËÿÏúë®ñ÷?ó ýËZÿ:]÷Ó©ïÜêâ®óóþiý?_4TýïÿcäÿY@ü
-YÿU½þyþþ.¿h¼÷ÿzOø¤p¿þ¿iþ¿,ÐÆ¨Î&#ýÉ}(È9ÿ/ê¿qþ<Üü_IFÉÿÔ§,øtsïÛ»ÃíÍ¿ýÏAÔ3èÓ5´âîõߢÿÇø#ôϤ,rýgçýü<`ÿ'ªþ]õjV¹¿Iþï8Dÿ/&gÝ|yüà%â«]¦ð< î¿þBBÿàü·l¨ñß6þj9®y;þÏûÿFYÿ¿\êþÒ¶M7Îé¿b.Ç:ý«Ôøçi¿²þê?Êúÿð°zü¦mNÍóáÁ{üà Kc?þãÿíòVõ³É+×"Àgýÿ8Eÿ?ÐÿO6þú/n
æ¿Ç_ÿa þǺÿʨÿ¾z²i~£û?ÒyüORÔÿXPáca¿þÎè£ÏàÖ4ÓdÈÿ± P ÍÝú_ñ§þÕ"þ1ú?³`¿þéþ¿8
-H w®ÿW=Ã_ÿQ¢þÏ»þ˲þ%²ZÿE§û¼nÛ<[ÿóüßAÿ¤Qþ/Ó1´/õú. $=ÃJܳþ«ìùoÔ÷Çsü§ ÃÏÿÞæÿõhãßW{ÜèÎÿ%óú_øÏC¢Â?úåBÓÿɼÓêg¸õ¿¬ÿ§Øÿ³ú¿lhú/ÓÙ¦¹½8w,Üú_Ôÿ¢ õRÔÿDCÓÿ7ð$ÿVwÃÔ
-ögøÇÿTeðÿ± ÿ¯lhúÿ¢ßú¼)sÝ»²UÃÇ
- ñ?àÿgA¥ $CÌÿ½èîÚ ?ëÖõ§þþ0ÂþûõÃÿ#»õ¿â ücôÿâþ_ÙÐô?¼µ[ÖÿÔ¼þ¸ÿ?몬ÌPhú¯/ç'ÓÙíäz;þÇõ?ò<$
-@ÉPôpø¿Bø¿8 ÿÖþ¯ùü?®ÿÐÿ
4ýK24ý3ø¿àÿdõ_ÙÐô¿»ÿ+ÌPÿaþ/ÙÐôÏàÿÂúÄÙÐô¿µÿk®ÿ$ÍPÿaÙ_Ùóûû¿°ÿgÁ~ýðÉånýïäÿBÿ'àÿ
-Mÿû¿~Ðÿ!Æþ
ßô 1È
¦ÿôÏü_²¡è?âð%ðq@ÿý_óüOóL$Jà Mÿþ/ÔXÀÝ?²¡é¡ÿö,Àÿ%¢þíù±êõÓÉä.:õ¯õ0Düg!øzÌ¡éÁÿ ÿðʦþ8ÿÏB|À bþÿ'Öÿ,دßú?#Üÿ'»õ¿ÿs¡ÿþoTø¨2è^,4ýïßÿ/FÿOÐÿO6[äÿãü?úÿòü¿lhúßÚÿ=?ÿYýs ² 7¢ÅáÿÆýß,ÐÆ¡ÿ'îbý?eCÓ?ÿë?àÿ
-Mÿý?QÿeþoÙÐôÏàÿÄúÄÙÐô¿{ÿÏ,@ýtÿ
-1ÿ·¿ÿûì×þr¹[ÿ{õÿÄþôÿ
-Mÿ[û?õ¿û~¯û¡»6{@ 4ý3ôÿþY@ÿOÙ¬ÖSÛ\?éþù¿
-°þgùÙ¬ÿí¥ìÌ_ÖÏ «p?ÿg$èÿË÷øwæ¤kîǹð{Ç?ÿ©ý?X@þG6Þú_«ºlòâÒåöÏpçæó< èM#I@(Þúï=nsýª«Ótü×~|1uQNý'sý§Iþ,¼ëÿAEï¯êýõ:2ëæ²þWÓÕM·âîø¿ÈÿèÿÃCkº²éκ.4.
-âÿm&ø0àÔÍã?ú3Q4uoºWká5M}4ãTp|¸õ.ÌCÛ|ßêñ¿)°øi ë×ý¡ÿØÿËÆ[ÿOUÓç§ê\W¿þÇ îÿaú
-9þõ×]ã?ôÏô/rýoètÝO§¾sk¨{ÎÎûÿ¥
-û¿hÈúß5þǶ$ ý3ø/ºþ«z3ýóü?ü?\ Ñøïÿ=ô~.ðIá~ý3
þ¿,ǨÎ&#ýÉy(È9ÿ/ê¿qþ<Üü_IF útónN°ñ]p{w¸½ù·ÿÙ`#¨úo}ºæÜÏp¯ÿæçÿbbýǤ,zýgÏýü\`ÿ'²þ]õjÖ¸¿)þï(NSèÉßY7_?ã"xxë_¥)ü»ãÿâüw¢þÃÎËÿmã¯Öãg¸ãÿ¢ÿo àÿbáKÝ_Ú¶éÆ)ýWLâX¡ÿ¶3½©ïøåwÇÿÿóÅYú@e òÿ<qÙËeeü(}¿nL>ú¯Êíÿúïþ¬ÿ¡iSóüFøEðÿ0ÈRÔÿYðÿowµºø¬M^¹ö îø¿¨ÿ¥1Öÿ, ÿ§lüõ_4Ý
-Í¿þÃ(@ÿo ÙõßWO6د¹þg
þù¿$Áù/TøFÄâ¯ÿá¥3úè3¸õ¿¸ÿ;ÈÐÿñæný¯xSÿ?¨ÿŨÿ³`¿þéþÏ0
-P w®ÿW=Ã_ÿQ¢þÇ»þ˲þ%²ZÿE§û¼nº¼[ÿßçÿ{þ3ÿc!Ê0ÉtíËd½þ§û?Iϰ÷¬ÿª$DýÏñî
-=
-üÇ_E1êÿ,ÐÆ¿¯þÞòþïEÿ·0ÿc!Qáýr¡éÿd^Íiõ3Üú_Öÿáÿå·Ë¦ÿ¢y1íùÛKÁsÇrÀÿEý/ÌPÿg!Åù?ÑÐôÿÍ<É¿ÕÝ0uþàþñ?Uò,Àÿ'þ¿è·>oÊ\÷ãß®ìåaÕpOÿ÷EüÏøÿYP)& Éó/º»¶ ÉϺu=éÿ¥ÿ'°ÿgÁ~ýðÿÈåný¯8 àÿã÷¿ð ÿ¯lhúÞÚ-ëËûÃýÿXø³®ÊÊ1
¦ÿúr~2Í Ø6`®g¸ãÿ¼ÿçþÿc!Q¨ J¢ÿ`Wÿ×Õÿðq@ÿý_ñlüG°ÿc!aÿMÿ{ú¿«ÿë?Pÿ
-Mÿ{ú¿«ÿç¿YÿK64ýïéÿ
-&ÿWõ?ÿ²¡ékÿ×\ÿIûßx@öW6Äüßþ¯àêÿÂþûõÃÿ%»õ¿¹ÿ+¸ú¿°ÿgþ/ÙÐô¿±ÿëý®õ¿û~ÓÆ þ÷ô]×ÿÈÿñ ÿl(ú÷½Î*Ü»ÿWÿ´ñßÚÿ5?ÿâüR8ÀäBÓ?Cÿ/ÿaéÙÐô¿{ÿ¯hücèø¿dCÔ¿ý!?V½~:Ü¥S§þÕâü"þ³|½
-æÐôÏÐÿý¿YÿS64ý3ôÿÿ
ø @2Äüÿþýÿ°þgÁ~ýÖÿáþ?ÜÿMüýǸÿ>ªºMÿýÿàÿbýÿd³Eþ_9AÊÿCÿ, ÿ/þ·öÏïÿÑÿ
¸D0ý+ÿ7îÿf6þ{öÿ|ßÿáþ'ÐÿS64ý3ø¿±þcþÙÐôÏpÿ3ê¿,Àÿ-þüXÿ³ø/þ÷ìÿ©®ý?QÿaÝ?dCÌÿíïÿÄþûõ£ÿ§\îÖÿ^÷?cÿÏúʦÿýËûÿbô`á÷ººKa³7BÓ?ÃýÏÈÿ±þ²Yÿ¦¶¹~Ò3üò6þQþ, ÿ/õñ¿½ùËÓú9aîçÿýYðÿÎôpÍý8~ïøç"£ÿÈÿÈÆ[ÿãkUM^\ºÜ~°âîüÏ|þ
ú/*F P¼õßzÜ>çúUW§éø¯ýøbê¢2,úOæúO ý?Xx×ÿÞ_Õûëud×Ì?)dý?7¯¦«nÅ3Üñÿ
-ÐÿÖteÓu]h\ ÄÿÛLða:À©ÿ4Çôÿf¢hêÞt¯ÖÂkúhÆ©àøp?ë[]¶ù2¾Õã~7S`9ðÓ@Öÿ®ûÿ(Cÿ°ÿ·þª¦ÏOÕ¹Z¯ý ø¿XþeCÿgýu×øý³ ýË\ÿ:]÷Ó©ïÜêâóóþ©ÂþÄ/²þwÿ±m ý3ø/ºþ«z3ýóü?ü?\ Ñøïÿ=ô~.ðIá~ý3
þ¿,ǨÎ&#ýÉy(È9ÿ/ê¿qþ<Üü_IFÙA}ºùÀO7'Øø.¸½;ÜÞüÛÿl°Tý7>]s@îg¸×óþ_±J°þcR
-½þ³çþþ.°ÿ
-YÿÇ®z5kÜßÿw§8ÿÏÂäï¬/q¼D¼õ¯ËÒ~ÀÝñqþ;LQÿaç¿eCÿ¶ñ
WkÌqÅ3ÜñÑÿס~¹Ôý¥mnÒÅT uú¾?7¦þêúOúÀ"Ô8X=þCÓ6§æùðà=þaÙû0þûã?þßîþiuñY?¼rÜëÿp6þãöû°ü¿þ¦[¡ùïñ×)ø¿Y@÷_ÙõßWO6Я¹þc
þÓyüO2äÿXÒÇ8à ý/ÑGÀÿh¦ÿDðÿ°¡ì'»õ¿âNý«EüRäÿYøzÿS8î\ÿ¯z¿þÇ÷¸ÿ
²,¡Á¬ÖÑéþ%¯á£.ÏãÖÿ|ý?þøÏ
-£2ü_¦c_$ëõ?ÝÿGz¸gýW¥)ê¿xÿtÿcèùkà?þã¨ÿ³@ÿ¾ú{ËûÿÑÿ)½Þÿü
-ÿ@äMÿ'ójN«áÖÿ¢þØÿ³ú¿lhú/ÓÙ¹½8w,Üú_Ôÿ"ôã!1H¦ÿoàIþî©ìÏðÿiÀÿÇîÿ
-Mÿ_ô[7e®ûñoWöò j¸§ÿó"þg
-þT @2Äüßî®- ò³n]Ïpêéÿ ìÿYÿG6wëÅ ÿøÇ1öÿ,Àÿ+þ·vËú×Ã0 ¡þ¬«²2GLB¡é¿¾Lg3 ¶
-ëîøÏãüBP2ýþ¯þ/h㿵ÿk>ÿãó?iûdhúßÝÿeð²ú¯lhúgð¡þÃü_²¡éÁÿ
õ?ÿ²¡ékÿ×\ÿÉtÿ'ô¿?ÈþÊÿÛÝÿ
ó<Àÿ%»õ¿ÿûàÿ
-Mÿû¿~Ðÿ!Áþ
ßô 1È
¦ÿôÏü_²¡è?bðÙþÏðímü·öÍó?!Îÿ1(uL.4ý3ôÿBýÜÿ'þü_Øÿ± ÿlú·?äǪ×O'»têÔÿ¢ÿ<þôÏAðõ6$BÓ?ÿþàÿ
-Mÿýÿpþ
þÑóÿû÷ÿÃú
Âý¹[ÿø?úáÿæ!JcìäBÓ?Cÿ?ôÿdýÿd³Eþ_9áÖÿòÿÐ?Èÿ˦ÿýßóóq¤pÿ7*p`(úWý?qÿ7´ñgèÿûX@ÿOÙÐôÏàÿÆúä~eCÓ?ÿõ_àÿ
-MÿþO¬ÿY@ü
-Mÿý?QÿaÝ?dCÌÿíïÿÄþôÿÍÝúß«ÿ'öÿ, ÿ§lhúßÚÿ¹¬ÿ%Øÿ³ð{ÝÝ¥°ÙL¡é¡ÿ'ôÏúÊfµþÚæúIÏðÏÿQõ?ÈÿËf}üo/egþò´~NX
ûù?$Cÿ_¼Ç¿3'=\s?Î
ß;þùH%èÿÁò?²ñÖÿøZÕe.·¬x;ÿ3ÿã BýM#I@(Þúï=nsýª«Ótü×~|1uQNý'sý§BÿÞõÿ ¢÷WõþzÃõóÃO
-YÿÏÍ«éê¦[ñwü_äôÿá¡5]Ùtg]Èñÿ6|pê?Íþoø?x(º7Ý«µð¦>q*8>\ÆÏúVæ¡m¾oõøßÍXü4õ¿óþý?xÀþ_6Þúª>?Uçj½üõ¦îÿaú
-9þõ×=ã?îæú
-¹þ7tºî§Sß¹5ÔÅ=ç?çýÿR
ý?_4dýïÿCäÿY@ü
-]ÿU½þyþþ.¿hü÷ÿz?ø¤p¿þ¿Yþ¿,ǨÎ&#ýÉy(È9ÿ/ê¿ãê?,Üü_IÆQxøtónN°ñ]p{w¸½ù·ÿÙ`#¨úo}ºæÜÏp¯ÿæçÿbaýǤ,zýgßýü<`ÿ'²þ]õjÖ¸¿)þï( ôÏÁäï¬/qT"Þú×ei
-¿àîø¿8ÿf¨ÿ°óß²!ÇÛø«5æ¸âîø¿èÿ;þúçàKÝ_Ú¶éÆ)ýWLâX§ÿ8 ôý¹1íðWײÿ*S*AýÕã?4msjß¿ÞãY¦0þøÿ·»Z]|ÖÏ&¯\k ÷ú?âü7b¾hüõ_4Ý
-Í¿þCÜÿήÿ
-Qÿ}õd³ ýë?Vè?Çÿ$Eÿo¢ô1Î0Å_ÿÃKgôÑgpë?é?Q¨ÿñ£ö/»õ¿âNý«Eüÿd!PîÿÌëÿUÏð×àüeYBÿYÿ¢ÓýK^7ÃG]?Æÿ¹ÿGE1Öÿ,¨0*#iìd²^ÿÓý¤gX{ÖUûXðÿéþÇÐó×ÀüÇPÿg6þ}õ÷÷ÿ.ú?
aú
-ÿ@äMÿ'ójN«áÖÿüüoeÈÿ±ÛeCÓѼÎö|Ìí¥À¹c9àÖÿ|ÿDèÿÊC
-hhúÿæäßên:Á~ðÿø*ÿã÷˦ÿ/úÏ2×ýø·+{yP5ÜÓÿyÿ³ ÷?³ RL !æÿ^twmuëzSÿËó¿¸ÿ øds·þW ðÿÿ/àÿguÙÐô?¼µ[Öÿ÷¿
1ü,üYWeeBÓ}9?Îf l ×3Üñqÿ;ú1(T %CÑ¿o3 «pÏû¢÷?°@ÿý_óù?±ÿã!aÿMÿþ/ø?Y@ýW64ý3ø¿Pÿaþ/ÙÐôÏàÿÂúÄÙÐô¿µÿk®ÿ$PÿaÙ_Ùóûû¿°ÿgþ/ÙÜÿÍý_éÕÿ
ý?ðɦÿý_?êÿý?¿éAcMÿþ/èø¿dCÑÄÑÿ+ÿÚøoíÿ÷ÿ
ÿD©`r¡éOÿ×õþ¯ýXÀý²¡éOÿWvõ¡ÿðɨûC~¬zýt2¹K§Ný«Åùÿ0Büg!øzÌ¡éOÿ§Õâþ?àÿ
-Mÿ{öÿÖÿîÿæ!>`1ÿ¿£ÿóºþ±þg!pÿdîÖÿ&þÏ
þcÜÿÇC>ÆØÈ
¦ÿ=ûÿeð2þ²Ù"ÿ¯ÏpëÿùèäÿeCÓÿÖþïd®ôaBen Eÿ£ÿgÿ7´ñgèÿ ÿèÿ)þú"ÿËr¿²¡é¡ÿ'α ÿ·lhúgèÿõ?ÿ²¡é¡ÿ'ü_, ûlù¿ýûbÿÏúÊænýïÕÿûÐÿS64ýoíÿ\ÖÿbìÿYø½îîRØì
-&ÐôÏÐÿúgý?e³ZÿMmsý¤gøçÿHaýÏòÿ²YÿÛKÙ¿<Vá~ý$Eÿ_¼Ç¿3'=\s?Î
ß;~ù;þJÐÿädãÿñµªË&/.]n?Xñwþg>ÿÇAó,¨lLBñÖ_èq#øëW]¦ã¿öã©Ê|° pê?ë?Mê¿,¼ëÿAEï¯êýõ:2ëæ²þWÓÕM·âîø/â?ü<´¦+î¬ëÂ@ãÙ þßfÓNý§Ù¢ÿ/úóP4uoºWká5M}4ãTp|¸õ.ÌCÛ|ßêñ¿)°øi ëçý?úðý¿l¼õÿT5}~ªÎÕz5øë\ ÀÿÁô/rü?ë¯ûÅÿ(ÿè_6äúßÐéºN}çÖP÷ÿ÷
ÿKöÿ< ~Ñõ¿küùÿeC×Uo¦ÿ`ÿÿä/ÿýÿ ÞÏ>)ÜËÿ²0ÿâøÕÙäc°?99çÿEý73ÔX¸ù¿,£L}ºùÀO7'Øø.¸½;ÜÞüÛÿl°Tý7>]s@îg¸×óûcbýǤ,zýgßýü<`ÿ'²þ]õjÖ¸¿)þï(Îpþ
ÉßY7_?ã"xxë_¥)ü»ãÿâüwû?xÀùoÙã¿müÕs\ñwü_Üÿn?þøåR÷¶mºqJÿS8Vè¿)Krë¯ wüWßôgé%!Öÿ,@ò²Y¡ÿ¾xûç"öy¯_Çø¿¶÷Å'ÿ?é?S
ü?XþËfåúß÷Êç0eø}ü*SvýÿÇþ¬ÿ¡iSóüFøEðÿ0È2ôdÁü¿Ýý×êâ³~6yåÊøÄÿ÷ýþ<Dÿ¢ñ×Ñt+4ÿ=þú#ôã!þECÔ_=Ù*@¿æú¯ú_äÿù¢ô1Î0Å_ÿÃKgôÑgpë^ÿOü<ĸ D4wëÅ3úÿAý?Aý
Äý¿¹sý¿êþúôá¡,Kè_0«õ_tºÉëføèqë¾þWQøÏ
-£2J2
-°LÖëºÿô+qÏú¯Jê¿xÿtÿsèùkà?þã¨ÿ³@ÿ¾úÛÃìÿþa#ÿÇB¢Â?ùåBÓÿɼÓêg¸õ¿¬ÿgØÿ³Bü¢¡é¿h^Lg{>çödPîX¸õ¿¨ÿEêÿ,¤1& ÉÐôÿÍ<É¿ÕÝ0uÿàþñ?
-øÿX@ù_64ýÑo}Þ¹îÇ¿]ÙË«áûñ?Sðÿ³ RL !æÿ^twmuëzSÿKÿOcÿÏü?²¹[ÿ+ øÇÿ8°ÿgþ_ÙÐô?¼µ[Öÿ÷¿1ú°ðg]9b
-Mÿõåüd:°m ]ÏpÇÿyÿß8BþD¡(þÿîb6þ[û¿æó¿5`þç aÿMÿþ/ø?Y@úG64ý3ø¿Pÿaþ/ÙÐô¿»ÿKeXÿ³ø/þ·öÍõdê?, û+bþoÿöÿ,Àÿ%»õ¿ÿûàÿ
-Mÿû¿~Ôÿû~ÓÆ þw÷
Èÿñ ÿl(ú8ü_ü_ÐÆkÿ×<ÿâüR8ÀäBÓ?ÿõpÿlhúgðaÿÇü_²!êßþ«^?LîÒ©Sÿþÿq!þ³|½
-æÐôÏÐÿþPþ
-Mÿýÿpþ
ø @2ÄüÿþþO¬ÿY"Üÿ'»õ¿ÿs¡ÿþo¢ôPÁÐôÏÐÿý?Y@ÿ?ÙlÿWg¸õÿü?ôÏòÿ²¡ékÿ÷üüG¸ÿ¸D0ý+ÿ7îÿf6þû÷ÿqÿèÿ)þüßXÿ±Ü¯lhúgð£þËüß²¡éÁÿõ?ÿ²¡é¡ÿ'ê?, ûlù¿ýýØÿ³þ²¹[ÿ{õÿÄþ?eCÓÿÖþÏeý/Áþ
ßë~è.
ÍÞ`"Mÿ÷?Cÿ, ÿ§lVë¿©m®ôÿü_)¬ÿYÀò_6ëã{);ó§õsÂ*ÜÏÿ$)úÿ²à=þ9éáûq.üÞñÏÿÓ?ú°ül¼õ?¾VuÙäÅ¥Ëí+áÎÿÌçÿ8QÿeAeÓ`·þûBÁç\¿êê4ÿµ_L]TæSÿÉ\ÿi¢Ðÿ
wý?¨èýU½¿^Gæáp}ÁüðBÖÿsójººéV<Ãÿùß ýxhMW6ÝY×
ƲAü¿Í¦úO³
ÿþ¦îM÷j-¼æ¡©f
-ñ³¾Õ
yh/ã[=þáw3?
-dýï¼ÿGÿ°ÿ·þª¦ÏOÕ¹Z¯ý ÜÿÃô/rü?ë¯ûÅÿ(ÃýÏ<@ÿ²!×ÿN×ýtê;·º¸çüç¼ÿ_ª°ÿçá ñ¬ÿ]ã<n ÿeC×Uo¦ÿ`ÿÿä/ÿýÿ ÞÏ>)ܯÿo¢ÿ/Äñª³ÉÇ`r
-rÎÿúo£ÿ'7ÿW
qô¿èÓÍ|º9ÁÆwÁíÝáöæßþg ê¿ôér?ýþÿUõ²lèõ}÷ððýlÈú?vÕ«Yãþ¦ø¿£8¡&gÝ|yüà%â]¦ð; îÿóßaú8ÿ-rü·¿Zc+áÿþ¿ÿ
_.uiÛ¦§ô_1c¥þJßÓmýG«L[ÔX=þCÓ6§æùðà=þaeÆÿñÿv÷O«ÏúÙäk
-à^ÿ³ñÓù"Ä|Ñøë¿hºÿýQõ?пlúï«'è×\ÿ±Bÿé<þ')òÿ,Déca¿þÎè£ÏàÖ4ÓÿøÿÑÿ
8ø%s·þW<éµÿú?ó¸ÿO2w®ÿW=Ã_ÿQ¡þÏBYп`Vë¿ètÿ×ÍðQçqë¾þWQøÏã4<f:øE²^ÿÓý¤gX{ÖU¡þËçøO÷?¿þã?þú?´ñï«¿·¼ÿ÷ûþO×ú_#ÿÇB¢Â?ùåBÓÿɼÓêg¸õ¿¬ÿÃÿÏnÿ
-MÿEób:Ûó1·çå[ÿú_ þÏBcMÿß<Àü[Ý
-S'ØáÿS
þÏ<àølhúÿ¢ßú¼)sÝ»²UÃ=ýñ?àÿgA¥ $CÌÿ½èîÚ ?ëÖõ§þþ÷?ò ÿlîÖÿ þñ?#ìÿYÿW64ýoíõ?5¯ÿaþ,üYWeeBÓ}9?Îf l ×3Üñ?^¬ÿÿã!Q¨ J¢ÿÁÿeûÀÿµ?´ñßÚÿ5ÿÃ÷ÿñưI¦ÿü, þ+þü_¨ÿ° ÿlhúgðaýÏâ¿lhúßÚÿ5×áþ'ý
-1ÿ·¿ÿûàÿÍÝúßËÿ
ý?ðɦÿý_?êÿý?¿éAcMÿþ/èø¿dCÑÄÑÿKÁÿÅmü·öÍó?!Îÿ1(uL.4ý3ø¿Pÿa÷ɦÿö,Àÿ%¢þíù±êõÓÉä.:õ¿èÿâ?Á×Û `Mÿ»û?CÜÿÇü²¡é¡ÿÎÿ³0Hÿßßÿõ?eÿ§dîÖÿ&þÏ
þcø¿yÃÇ8îÅBÓ?Cÿ?ôÿdýÿd³Eþ_9áÖÿòÿÐ?
Èÿ˦ÿýßóóqàþoTàÁPô¯8úâþohãÏÐÿ÷?±þ²¡éÁÿõðȦÿ7ê¿,Àÿ-þúbýÏâ¿lhúgèÿúèþ!bþoÿ'öÿ, ÿ§lîÖÿ^ý?±ÿgý?eCÓÿÖþÏeý/Æþ
ßë~è.
ÍÞ`"Mÿý?¡ÐÿS6«õßÔ6×Ozþ/Öÿ, ÿ/õñ¿½ùËÓú9aîçÿýYðÿÎôpÍý8~ïøç"£ÿÈÿÈÆ[ÿãkUM^\ºÜ~°âîüÏ|þÇÿ@ÿ¨lLBñÖ_èq#øëW]¦ã¿öã©Ê|° pê?ë?µ/Ð?ïúPÑû«z½ÌÃáúùá'
¬ÿçæÕtuÓx;þ/ò¿úÿðЮlº³®dø >L8õfþ¿ððP4uoºWká5M}4ãTp|¸õ.ÌCÛ|ßêñ¿)°øi ëçý?úðý¿l¼õÿT5}~ªÎÕz5øë\ àþ ÙãÿYÝ/þGîæú
-¹þ7tºî§Sß¹5ÔÅ=ç?çýÿR
ý?_4dýïÿã DþÄÙÐõ_Õé?çÿáÿáâ ùÆÿ?è¡÷sO
-÷ëÿ)ôÿe8þCu6ùìOÎCAÎùQÿcôÿäáæÿJ²ñK?Dn>°àÓÍ 6¾nï·7ÿö?lUÿÍ O×ûîõßüü_¬R¬ÿXeC¯ÿì»ÿÿìÿdCÖÿ±«^Í÷7ÅÿÅYýs0ù;ëæËãg\/oýë²4
ßpwü_ÿ3ÔXÀùoÙã¿müÕs\ñwü_ôÿ
-ü_,ür©ûKÛ6Ý8¥ÿ©@ëôï{ãã?vø+ë?qþ'PY¡þÃÂÚñ¶95Ïo{÷Æ?2Ûÿ
-ã¿?ÞãÿíêVõ³É+çÀ½þgã'¨ÿñÔl¼õ_4ÝÍ¿þÃ0Bþôÿ
-Mÿ}õd ýÛ?üÎÜâþß,
-S`¼õ?¼tF½f ÿøK è_6÷êÍ3úÿ.ÿÕeðÿ±`¿þÛý¸ D÷ÿ×= ÿ8Aý
ÿÓYп8Öê¿ètÿ×ÍðQçÿnýÏë?*LÿgAé$Ó1ª RYÿéú?Ú3¬Ä=ë¿*QÿåÀoü§ëCß_ÿñWaú?¤ñï«¿}ntÆÿEþ?T)ú?±¨ð¹ô2¯æ´þný/êÿü¿< ç'þæÅt¶åcnïÎ]Ë·þ£yý/qÿ#i @2$ýó Oòou7L`?züOêÿ< þ/þ¿è·>oÊ\÷ã_®ìÝAÕðqûgJüO#äÿYP)& ÉÐò/º»v ÈϺu>éÿEý?V)öÿ,دþ¹Ü«ÿ5 ü×ÿqÀÿÏÖÿ²!éxk7ÿ-ü?¡J¡þ¬«²2GÌB!鿾Lg3 ¶óîøÏãüª_2ý,þ/ÿ¤ñßÜÿ5ÿÇõú?²Æ°I¤ÿü, ÿ#þ9ü_¨ÿ° ÿlHúçðaýÏâ¿lHúßÜÿµèÿ¨ÿ°ì¯lhù?ÿöÿ,دþ/¹Ü«ÿÝü_èÿÆÖÿ²!ékÿ×ú?àþ7~ÓÆ þ9ü_Ð?ðÉ ÿÅÿÃÿÅiü7÷Íó?!Îÿ1(uL.$ýsø¿Pÿa!öECÒ?ÿ+Âþø¿dCÓ¿ý!?V½~:Ü)S§þÕ\ÿ±Âù¯·AÀ< þ9üð°ú¯lHúçèÿóÿ,ÄL ¡åÿüXÿ³`¿þwÿgûÿäq¯þ·ñ.üîÿã!xL zÁôÏÑÿ÷°þ²Ù ÿ¯\ÏpëÿùèäÿeCÒÿæþïùù8qþ¸D0ý+ÿ7îÿf4þý?ÿaý?eCÒ?ÿë?àÿ
-Iÿý?QÿeþoÙôÏáÿÄúÄÙôÏÑÿõÐýC6´üÿûì×þr¹Wÿ»õÿDÿ°þ
-Iÿû?õ¿û~¯û¡»6}@ $ýsôÿþY@ÿOÙ¬ÕSÛ\?íþëÿ PÿcëÙ¬ÿí¥ìÌ_¾ÖÏ «p?ÿgèÿËïøwæ¤kîǽð{ÇþìÿxÀü/_ý¯U]6yqérûÁg¸ó?óù?ÊbÔYPÙ4â«ÿ¾ÐãFð9ׯº:MÇíÇ
SùhAàÔ2×:¾
þ9x×ÿÞ_Õûëud×Ì?)Tý?7¯¦«nÍ3Üñÿ2ÜÿÊCkº²éκ.4.ûãÿm&ø8àÔ-üßèÿÍCÑÔ½é^×<4õÑSÁñá2~Ö·º0móe|«Ç?ün¦Àr৪ÿ½÷ÿèÿÁöÿ²ñÕÿSÕôù©:Wbð×$¸ÿè_6ÔøÖ_÷ÿÐ?пl¨õ¿¡Óu?úÎ! .î:ÿ9ïÿØÿópøECÕÿÞñ?FþÄÙõ_ÕÛé?çÿáÿáâ ùÆ{ÿ?è¡÷tO
-÷ëÿÆèÿËmüêlò1ØÜóÿ¢þÇèÿÉÃÍÿdaé§,øtsïÛ»ÃíÍ¿ýÏAÔ3èÓ5´âîõߢÿ
-°þcR
-¹þ³óþþ°ÿ
-UÿÇ®z5«Üß$ÿw¬Ðÿ
ÉßY7_?ã"xøê_¥)<û¯ÿ£P
Ð?8ÿ-jü·¿Zckáÿóþ¿QÃÿÅÂ/º¿´mÓsú¯Ä±Nÿ ©ïÏi¿ºþý'PY£ÿkÇhÚæÔ<¿Q~¼Ç?&ÿ/ƼÇÿÛÝ?.>ëgWÎ5ßúßdð²Ôl¼õ_4ÝÍ¿þÃq ýs@ÿ¢¡é¿¯l _uýçùküWð³<*¤ ãÿá¥3úè5øÇÿ$Àý< þËæ^ý¯ySÿÿÈÿOñüúçÀ~ýï÷ÿ
ÈÈã¾õÿºgøë?SÔÿYø?ýe ýcþN÷/yÝvyþ·þçõ¦Èÿ³ LÇüRYÿéþ?Ú3¬Ä=ë¿ÓùÔ÷Çoü§ûCß_ÿñ·§1þÆ¿¯þÞôþßEþ?Tü,$*üÁ_.$ýÌ«9[ÿúbÿÏnÿ
-IÿEób:Ûó1·ç®å[ÿѼþF8ÿËBcIÿß<Àü[Ý
-S'ØáÿS
ú?0ÿȤÿ/úÏ2×ýø+{wP5ÜÕÿyÿÓùT @2´üßî®- ò³nÏpêéÿQöÿ,دþ¹Ü«ÿ5 ü×ÿqû_yÿW6$ýoí¦õ¿
ÿ'TôÏÂuUVæY@($ý×óélÀ¶r>Ãÿãyüÿã!Q¨ J ÿÁÿÚþðíiü7÷ÍçÿP¥èÿÊBÃþ%þ9ü_ð²ú¯lHúçð¡þÃü_²!éÃÿ
õ?ÿ²!ésÿ×¢ÿS¡þò¿²¡åÿü_Øÿ³`¿~ø¿är¯þwó¡ÿðɤÿý_?êÿý?¿éAc
-Iÿþ/èø¿dCÐÄÒÿKÁÿÅiü7÷Íó?!Îÿ1(uL.$ýsø¿Pÿa!öECÒ?ÿû?àÿ
-MÿöüXõúédr§LúWsýÇ
-çÿy¾ÞóDHúgðFð° ÿ§lHúçèÿóÿ,ÄL ¡åÿüXÿ³`¿þwÿgûÿäq¯þ·ñ.üîÿã!xT2$ýsôÿÃý, ÿl6Èÿ+×3ÜúÿAþúgùÙô¿¹ÿ{~þ##ÿbAen Aÿ¥ÿ'îÿf4þý?ÿaý?eCÒ?ÿë?àÿ
-IÿþoÔYÿ[6$ýsôÿÄúÄÙôÏÑÿõÐýC6´üÿûì×þr¹Wÿ»õÿDÿàþ
-Iÿû?õ¿û~¯û¡»6}@ $ýsôÿþY@ÿOÙ¬ÕSÛ\?íþë»þ9@þ_6«ã{);ó¯õsÂ*ÜÏÿ$
-ýYðÿÎôpÍý¸~ïøÏÿQýÈÿÈÆWÿãkUM^\ºÜ~°æîüÏ|þ²õ_T6 f¡øê¿/ô¸|Îõ«®NÓñ_ûñÅÔEe>Z8õÌõ?þ¯Ñÿ
wý?¨èýU½¿^Gæáp}ÁüðBÕÿsójººéÖ<Ãÿçùß(Ãý¯<´¦+î¬ëÂ@ã¹?þßfÓNý§ÙÂÿþß<MÝîÕzxÍCSÍ8.ãg}«óÐ6_Æ·züÃïf
-,~¨úß{ÿþ<`ÿ/_ý?UMªså!ýIûXþeCÿgýu×øûyþeCÿ
-®ûéÔwn
-uq×ùÏyÿ¿4ÀþÄ/ªþ÷ÿ òÿ, þˬÿªÞNÿÁ<ÿÿÈ_4ÞûÿA½§|R¸_ÿß4Fÿ_hã?TgÀþä>äÿõß8FÿOnþ¯$£TEn>°àÓÍ 6¾nï·7ÿö?lQÿÍ O×Ðg¸×þJaýǤ,rýgçýü<`ÿ'ªþ]õjV¹¿Iþï8Dÿ/&gÝ|yüà%â«]¦ð< î¿þBAÿàü·l¨ñß6þj9®y;þÏûÿFYÿ¿\êþÒ¶M7Îé¿b.Ç:ý§¤¾?7¦¾OýGeÕ?ê?û³vü¦mNÍóåÁ{üà Ñÿïñÿv÷O«ÏúÙäs
-à¿þëú·þ¦[£ùïñ×¢ÿпlhúï«'èW]ÿA8ÿ'¨ÿó<*´ ·þÎè£×àÿ Büg!
øEs¯þ×<éÿåývJþ°_ÿûý1öò¸oý¿îþúbÿæáÿô_%ô/µú/:Ý¿äu3|ØåùcÜú¯ÿUûyã4TFìÊjýO÷ÿÑa%îYÿU*@ý¿ñî}
-üÇ_Eêÿ,Æ¿¯þÞôþßEþIÿ,$*ü¡_.$ýÌ«9[ÿúbÿÏnÿ
-IÿEób:Ûó1·ç®å[ÿѼþFðÿ³Æ $CÒÿ7ð$ÿVwÃÔ ö£gøÇÿT¡þÏÌ?²!éÿ~ëó¦Ìu?þåÊÞT
-wõ^Äÿ4ÿhhù¿Ý][ ägÝ:áÔÿÒÿ£2ìÿY°_?ü?r¹Wÿk ø¯ÿã(
ÿÙô?¼µÖÿ÷¿©úgáϺ*+sÄ, þëËùÉt6`Û 9áÿóþqüBP2ýþ¯0Ãý,Æsÿ×|þUbþç aÿIÿþ/ø?Y@ýW6$ýsø¿Pÿaþ/ÙôÏàÿ
-±þgñ_6$ýoîÿZôJ#ÔX@öW6´üÿûì×ÿ\îÕÿnþ/ôcþ/Ùô¿µÿëGý°ÿgá7=hLr!éÁÿ
üðÉ ÿ¥ÿWÿ¤ñßÜÿ5Ïÿ8ÿÇD¢Ô0¹ôÏáÿBý
Ú
-Iÿþ/ìÿXÿK64ýÛòcÕë§É2uê_Íõ+ÿç!øzÌ!é£ÿü,Àÿ)þúÿáþoâ& ÉÐòÿþO¬ÿY°_ÿûý¶ ò¸WÿÛø?çþ¯8ÊÿYH¶ !é£ÿîÿ`ýÿd³Aþ_¹AÊÿCÿ, ÿ/þ7÷/Öÿaó_,¨,À0Áô¯Xü߸ÿÒøsôÿÄýO, ÿ§lHúçðcýÇ¿²!éÃÿú/ðˤþXÿ³ø/þ9ú¢þúÈÿcðbÿÏýúÑÿS.÷ê·þèÿ¿²!ésÿç²þaÿÏÂïu?t¦o0¤þÐ?èÿ)µúojë§=Ãý?Î ¨ÿ±ü¿lVÇÿöRvæ/_ëçU¸ÿ3ÃüøgNz¸æ~Ü¿wüçÿ(Àþädã«ÿñµªË&/.]n?Xówþg>ÿG6\@ÿ¨lÌBñÕ_èq#øëW]¦ã¿öã©Ê|´ pê?ëü_£ÿïú°'®¦WõþzÃõóÃO
-UÿÏÍ«éê¦[ówüç£÷¿òЮlº³®äþø >N8õfÿ7úóP4uoºWëá5M}4ãTp|¸õ.ÌCÛ|ßêñ¿)°øi êïý?úðý¿l|õÿT5}~ªÎüõ& îÿaú
-5þõ×]ã?îæú
-µþ7tºî§Sß¹5ÔÅ]ç?çýÿÒ û¿h¨úß;þ'Èÿ³ø/²þ«z;ýóü?ü?\ Ñxïÿ=ô.ðIá~ýÓýY ÿPM>F ûûPsþ_Ôãý?y¸ù¿,Ò(þtónN°ñ]p{w¸½ù·ÿÙ`#úo}ºæV<ýþ[ôÿP
-ë? eÙë?;ïÿàÿàû?ÙPõìªW³ÊýMòÇ!ú±0ù;ëæËãg\/_ýë²4
çpÿõ¸ÿÿ
-5þÛÆ_1Ç5ÏpÇÿyÿß(áÿbáKÝ_Ú¶éÆ9ýWÌâX§ÿ(!5þygÚᯬÿ$Áø¿SRê?¬ÿ¡iSóüFøEðÿ0ȲãÏÿø»ü§ÕÅgýlòʵðYÿ_Ç?NáÿâÝ?eã¯ÿ¢éVhþ{üõF
-ùè_4Dý÷ÕMôÝÿÎãû¿yãÇs\üõ?¼tF}f ·þ£þ þÇÄ/»õ¿âNý«Eüÿdaüöÿ½¦qܹþ_õýG îÿåaüöËÿ%ô/Õú/:Ý¿äu3|ØæùCÜúçÿTcýÏÓ(É4îþÊzýO a%îYÿU)îÿaÁsü§ ÃÏÿÞæÿõhãßW{Üèÿßõz¯ÿ
ÿ<$*ü¡_.4ýÌ«9~[ÿËúý?ðÿȦÿ¢y1múÛ[sÇrÀÿEý/
-Pÿg!1H¦ÿoàIþî©ìÏðÿiÀÿÇîÿ
-Mÿ_ô[7e®ûñoWöò jø¸4!þg
-þ ÿ{Ñݵ@~ÖëNý/ý?aý?ü?¢¹[ÿ+ øÇÿ8°ÿgþ_ÙÐô?¼µ[ÖÿÔ¼þèÿÁÃuUVæI@(4ý×óélÀör=Ãÿãyüÿã!Q¨ J¢ÿÃÿ¥àÿâ6þ[û¿æóÿ¸þCÿGÒö/ÉÐôÏàÿÿÔeCÓ?ÿõàÿ
-Mÿþ/¬ÿY@ü
-Mÿ[û¿æúO² õý
-1ÿ·¿ÿûø¿Ds·þ÷òaÿÏü_²¡écÿ×ú?$Øÿ³ð4f ¹ÐôÏàÿþYÿK6ýGþ¯þ/h㿵ÿkÿ qþD©`r¡éÁÿ
ú´/þ÷÷)ìÿXÿK6DýÛòcÕë§É]:uê_-ê?aøÏBðõ6$BÓ?ÿþàÿ
-Mÿýÿpþ
ø @2ÄüÿþþO¬ÿYìý¶ R¹[ÿø?úáÿæ!
-aMÿýÿÐÿôÿÍùåx[ÿ?ÈÿCÿ, ÿ/þ·öÏÏÄQCÿ¨,À
- ¡è_qø¿qÿ7´ñgèÿûX@ÿOÙÐôÏàÿÆúø?dCÓ?CÿOÔYÿ[64ý3ø?±þgñ_64ý3ôÿDýtÿ
-1ÿ·¿ÿûôÿÍÝúß«ÿ'öÿ,Àü)þ·ö.ë öÿ,ü^÷Cw)lö@húgèÿ ý³þ²Yÿ¦¶¹~Ò3üóA¤°þgùÙ¬ÿí¥ìÌ_ÖÏ «ðõþÏÔê?Iø?9ðÿÎôpÍý8~ïøç" ÿÈÿÈÆ[ÿãkUM^\ºÜ~°âîüÏ|þý?YPÙ4âÿ¾ÐãFð9ׯº:MÇíÇSù`AàÔ2×(ÔYx×ÿÞ_Õûëud×Ì?)dý?7¯¦«nÅ3Üñÿ
-ÐÿÖteÓu]h\ ÄÿÛLða:À©ÿ4Çôÿ`¢hêÞt¯ÖÂkúhÆ©àøp?ë[]¶ù2¾Õã~7S`9ðÓ@ÖÿÎûÿ ÷±ý¿l¼õÿT5}~ªÎÕz5øë?L#ø?XþeCÿgýuøÝÿãþg ÙëC§ë~:õ[C@]ÜsþsÞÿ/U8ÿÁÃâ
-Yÿ;ÇÿùÿeC×Uo¦ÿ [êù¿hü÷ÿz?ø¤p/ÿ·Êlüÿ{ã?TgÀþä<äÿõß8ÎPÿaáæÿJ²0ÓøÓÍ|º9ÁÆwÁíÝáöæßþg ê¿ôér?ýþçú-¡ eÙÐë?ûîÿpÿØÿɬÿcW½5îoÿ;ÂúÉßY7_?ã"xxë_¥)ü»ãÿâüw¡þÃÎËÿmã¯Öãg¸ãºðð²ðË¥î/mÛtãþ+¦q¬Ô¿ïÿ`ÚáûÜÿ¨²ñGÔ8X=þCÓ6§æùðà=þa¥Æÿñÿv÷O«ÏúÙäk
-à^ÿÏûÿÅiý?èþ)ýM·Bóßã¯ÿ÷ÿ1þ²!꿯l _sýÇ
-ý/îÿIRäÿXãG¤ ã¯ÿá¥3úè3¸õ¿¸ÿ7Èàÿf!Â@4wëÅ3ú_Þÿg[BBÿدÿ¿÷qÀT ;×ÿ«á¯ÿ(AÿÆo¿üoYBÿBYÿ¢ÓýK^7ÃG]?Æÿïó±=ÿ¡ÿ&NÃ$Ó1´/õúîÿ#=ÃJܳþ«õ_<Ǻÿ1ôü5ðŨÿ³@ÿ¾ú{ËûýBôf"Qáýr¡éÿd^Íiõ3Üú¯ÿGù#ÿÇü?²¡é¿h^Lg{>æöRàܱpë?é?ÜÿÈBcMÿß<Àü[Ý
-S'ØáÿS
ó¿< ü/þ¿è·>oÊ\÷ãß®ìåAÕpOÿçEüÏÐÿb1ÿ÷¢»kü¬[×3ú_úÂõì×ÿ\îÖÿ ~ñÒÿøúç þ_ÙÐô?¼µ[ÖÿþqÿÃÿGügâϺ*+sÄ$ þëËùÉt6`Û ¹áÿûßÃþ?
- d(úvõ]ý¿ãtÿ´ñßÚÿ/ÖØÿñưI¦ÿýý_)Ö, ý#þü_ð² ÿlhúgðaýÏâ¿lhúßÚÿ5רÿ°ì¯lù¿ý_ñTÿAÿì×ÿ\îÖÿæþ¯øêÿÂþø¿dCÓÿÆþ¯ôx÷aÿÏÂozÐäBÓÿþ¯ëúù?àÿ
-EÿCÿ/Ûÿþ¯ý¡ÿÖþ¯ùù?øÿ¹H:À&þ÷ô]ïÿÊÐÿ
Ú
-Mÿ{ú¿«ÿý?XÿK6DýÛòcÕë§É]:uê_-Îÿâ?Á×Û `Mÿ{ú?«ÿý¿Y@ùW64ýïÙÿ/¹ú?áÿb!>`1ÿ¿ÿ?¬ÿYìý¶ R¹[ÿø?úqÿQð%нXhúß³ÿ_ÿ'#èÿ'-òÿÊñ·þÿþY@þ_64ýoíÿßÿ£ÿ*p`(úWý?ø¿9 ?CÿOø¿X@ÿOÙÐôÏÐÿù_àÿ
-Mÿý?qþø¿eCÓ?CÿO¬ÿY@ü
-Mÿý?áÿbÝ?dCÌÿíßÿûì×þr¹[ÿ{õÿÄþôÿ
-Mÿ[û?õ¿û~¯û¡»6{@ 4ý3ôÿþY@ÿOÙ¬ÖSÛ\?éþù¿ RXÿ³å¿lÖÇÿöRvæ/OëçU¸_ÿß IÑÿïñïÌI×Üsá÷_þǤbôÿ`ùÙxë|ê²ÉKÛV<ÃÿÏÿñ8@ÿ¨lLBñÖ_èq#øëW]¦ã¿öã©Ê|° pê?ë?MÔYx×ÿÞ_Õûëud®¥áÌ?)dý?7¯¦«nÅ3Üñ?^Äø?xhMW6ÝY×
ƲAü¿Í¦úO³yüGÿo&¦îM÷j-¼æ¡©f
-ñ³¾Õ
yh/ã[=þáw3?
-dýï¼ÿGÿ°ÿ·þª¦ÏOÕ¹Z¯ý ø?XþeCÿgýu¿øeðñ ýË\ÿ:]÷Ó©ïÜêâóóþ©ÂþÄ/²þwÿq ÿgñ_6týWõfúæùø¸8@þ¢ñßÿzèý\à½üß*S)üßǨÎ&#ýÉy(È9ÿ/ê¿q¡þÃÂÍÿda¬²øÓÍ|º9ÁÆwÁíÝáöæßþg ê¿ôér?ýþßÿ«ë? eÙÐë?ûîÿàÿàû?ÙõìªW³ÆýMñGqóÿ,LþκùòøÁKÄ[ÿº,Máw Üÿç¿CÜÿÁÎËÿmã¯Öãg¸ãÿâþw»$þøåR÷¶mºqJÿS8Öé?ô½òñL;üÕõð?Ê=ÿúÏþ¬ÿ¡iSóüFøEðÿ0Èlþã¿?þãÿíîVõ³É+×À½þgã§1öÿ,`ù/ýM·Bóßã¯ÿ0Âý?<Dпhúï«'è×\ÿ±Bÿé<þ' ò,¨ð1Ä ý/ÑGÀÿh¦ÿ$Èàÿa!Ä@4wëÅ3úWøàþì×ÿßq6¦qܹþ_õýGI@ÿ¼ë¿,Kè_"«õ_tºÉëfø¨ËóǸõ?Ïÿ©(Âú
CÇLÇоLÖëºÿô+qÏú¯JBÔ9ðÿéþÇÐó×ÀüU£þÏmüûêï-ïÿýGÿ§©þ"þó¨ð~¹Ðô2¯æ´úný/ëÿ)öÿ,àö_ÙÐô_4/¦³=s{)pîX¸õ¿¨ÿ
êÿ,¤1& ÉÐôÿÍ<É¿ÕÝ0uýàþñ?Uü, ü/þ¿è·>oÊ\÷ãß®ìåAÕpOÿçEüÏøÿYP)& Éó/º»¶ ÈϺu=éÿ¥ÿ'°ÿgÁ~ýðÿÈåný¯8 àÿã8ÄþøeCÓÿðÖnYÿSóú¯- @ÿüYWeeBÓ}9?Îf l ×3Üñ?^¬ÿÿã!Q¨ J¢ÿÃÿ¥àÿâ6þ[û¿æó¿m ù4ýK24ý3ø¿àÿdéÙÐôÏàÿBýø¿dCÓ?ÿëÿeCÓÿÖþ¯¹þ4CýdeCÌÿíïÿÂþûõÃÿ%»õ¿ÿûàÿ
-Mÿû¿~Ðÿ!Æþ
ßô 1È
¦ÿ
ôÏü_²¡è?âðÅðq@ÿý_óüOóL$Jà Mÿþ/ÔXÀÝ?²¡éwÿW`ÿÇü_²!êßþ«^?LîÒ©SÿjQÿ Cį·AÀ< þüð°ò¯lhúgèÿóÿ,ÄL !æÿ÷÷býÏýúíý¶ "¹[ÿø?úáÿæACÔ äBÓ?Cÿ?ôÿdýÿd³Eþ_9AÊÿCÿ, ÿ/þ·öÏÏÄaCÿ¨,À
- ¡è_qø¿qÿ7´ñgèÿûX@ÿOÙÐôÏàÿÆúø?dCÓ?CÿOÔYÿ[64ý3ø?±þgñ_64ý3ôÿDýtÿ
-1ÿ·¿ÿûì×þr¹[ÿ{õÿÄþôÿ
-Mÿ[û?õ¿û~¯û¡»6{@ 4ý3ôÿþY@ÿOÙ¬ÖSÛ\?éþù¿
-°þgËÙ¬ÿí¥ìÌ_ÖÏ «p?ÿg$èÿË÷øwæ¤kîǹð{Ç?ÿ©ý?X@þG6Þú_«ºlòâÒåöÏpçæó(ÔYPÙ4âÿ¾ÐãFð9ׯº:MÇíÇSù`AàÔ2×èÿÁ»þTôþªÞ_¯#óp¸¾`~øI!ëÿ¹y5]Ýt+áÿüoþ?<´¦+î¬ëÂ@ãÙ þßfÓNý§Ù<þ£ÿ7ES÷¦{µ^óÐÔG3NÇËøYßêÂ<´Íñÿð»Ë²þwÝÿGúðý¿l¼õÿT5}~ªÎÕz5øë\ àþ ÙãÿYÝ5þCÿ,@ÿ²!×ÿN×ýtê;·º¸çüç¼ÿ_ª°ÿçá ñ¬ÿ]ãl[Cÿ þË®ÿªÞLÿÁ<ÿÿÈ_4þûÿA½|R¸_ÿßL¡ÿ/Äñª³ÉÇ`r
-rÎÿúo£ÿ'7ÿW
ÑÿäÓÍ|º9ÁÆwÁíÝáöæßþg ê¿ôér?ýþÿUõ²lèõ=÷ðpýlÈú?vÕ«Yãþ¦ø¿£8M &gÝ|yüà%â]¦ð; îÿóßaú8ÿ-rü·¿Zc+áÿþ¿¶$ý3ðË¥î/mÛtãþ+¦q¬Ó¿ú¥ïÏiïSÿQ§ÔX=þCÓ6§æùðà=þae¨ÿ±à?þßîþiuñY?¼rÜëÿEþ?MÿYÀò_6þú/n
æ¿Ç_ÿa¤Ðÿè_6Dý÷ÕÍôk®ÿX¡ÿÅþ?Iqþ>æ ±øëxé>úÌ ný/îÿUú¿² þñKæný¯xSÿ?Èÿ'¨ÿ±`¿þÿÿ|@
-ÄqçúÕ3üõ%¸ÿwýe ýKdµþN÷/yÝuyþ·þçù?áþq&¡}¬×ÿtÿéVâõ_*Ô9ðÿéþÇÐó×ÀüÇPÿg6þ}õ÷÷ÿ.ú?
!â?
-ÿ@èMÿ'ójN«áÖÿ²þó<àö_ÙÐô_4/¦³=s{)pîX¸õ¿¨ÿáþ_&Òdhúÿæäßên:Á~ðÿøü,Àÿ'þ¿è·>oÊ\÷ãß®ìåAÕpOÿçEüÏpþb1ÿ÷¢»kü¬[×3ú_úÂûì×ÿ\îÖÿ þñ?#ìÿYÿW64ýoíõ¿åýoaþ_,üYWeeBÓ}9?Îf l ×3Üñqÿ{üBP2ýþ¯ þ/h㿵ÿk>ÿ[æÒö/ÉÐôÏàÿÿÔeCÓ?ÿõàÿ
-Mÿ»û¿Tõ?ÿ²¡ékÿ×\ÿI þò¿²!æÿö÷aÿÏýúáÿËÝúßËÿ
ý?ðɦÿý_?êÿý?¿éAcMÿ»û¿BäÿxÿK6ýGþ¯þ/h㿵ÿkÿ qþD©`r¡éÁÿ
ú¸ûG64ý3ø¿°ÿcþ/ÙõoÈU¯N&wéÔ©µ¨ÿâ?Á×Û `Mÿýÿàÿ`þOÙÐôÏÐÿçÿY $CÌÿïïÿÄúûõÛûÿ
-lDr·þ7ñ.ôÃÿÍ:<¨È
¦þèÿÉúÿÉfü¿r<ÿþY@þ_64ýoíÿÿ£ þ9PY@CÑ¿âðãþohã¿ÿÏ÷?±þ²¡éÁÿõðȦÿ7ê¿,Àÿ-þüXÿ³ø/þú¢þúÈÿÛßÿý?öëGÿO¹Üÿ½úbÿÏúʦÿýËú_ý?¿×ýÐ]
-½ÁD þîþY@ÿOÙ¬ÖSÛ\?éþù¿ RXÿ³ü¿lÖÇÿöRvæ/OëçU¸ÿ3HRôÿeÁ{ü;sÒÃ5÷ã\ø½ãÿ§ôÿ`ùÙxë|ê²ÉKÛV<ÃÿÏÿq¢þËʦÀ$ oý÷
7Ϲ~ÕÕi:þk?¾º¨Ì§þ¹þÓD¡ÿïúPÑû«z½ÌÃáúùá'
¬ÿçæÕtuÓx;þ/ò¿úÿðЮlº³®dø >L8õfÿ7ü<MÝîÕZxÍCSÍ8.ãg}«óÐ6_Æ·züÃïf
-,~Èúßyÿþ<`ÿ/oý?UMªsµ^
-þú ¸ÿè_6äøÖ_÷ÿQûyþeC®ÿ
-®ûéÔwn
-uqÏùÏyÿ¿TaÿÏÃâ
-Yÿ»ÆÿxÜ@ÿ þË®ÿªÞLÿÁ<ÿÿÈ_4þûÿA½|R¸_ÿß,Dÿ_ã?TgÀþä<äÿõß8FÿOnþ¯$£ÿ©ðÓÍ|º9ÁÆwÁíÝáöæßþg ê¿ôér?ýþÿUõ²lèõ}÷ððýlÈú?vÕ«Yãþ¦ø¿£8¡&gÝ|yüà%â]¦ð; îÿóßaú8ÿ-rü·¿Zc+áÿþ¿ÿ
_.uiÛ¦§ô_1cþ£Ò÷çÆ´Ã_]ÿÿw*Sã õVÿдͩy~#ü"xdYñçÀü¿ÝýÓêâ³~6yåZ¸×ÿálüã4Fþtÿ¿þ¦[¡ùïñ×Xÿ³ ý˨ÿ¾z²Y~Íõ+ôÎã"ÿÏB?F æ ±øëxé>úÌ nýG3ý'
-ýÿy° ÍÝú_ñ§þÕ"þèÿÌýöÿ{Lâ¸sý¿êþúõÆo¿üoYBÿBYÿ¢ÓýK^7ÃG]?ÆÿyþOE1Öÿ,8
-ÿéÚÉzýO÷ÿa%îYÿUIú/ã?ÝÿèkñÿñÔÿY _ý½åý¿ÿèÿ4ÕÿBÄþÐ/þOæÕV?Ãÿeýþþ
-MÿEób:Ûó1·çå[ÿú_ þÏBcMÿß<Àü[Ý
-S'ØáÿS
þÏ<àþoÙÐôÿE¿õySæºÿve/ª{ú?/âÀÿÏJ1Hÿ{Ñݵ@~ÖëNý/ý?!îä!ÿG4wëÅ ÿøÇöÿ,Àÿ+þ·vËú×Ã0Fÿ?þ¬«²2GLB¡é¿¾Lg3 ¶
-ëîø/ÖÿÈÿñ(, $CÑÀàÿ²ý?àÿÚÚøoíÿÏÿaûÿxHcØ¿$CÓ?ÿþOPÿ
-Mÿþ/ÔXÿK64ý3ø¿°þgñ_64ýoíÿë?ÉpÿÈþÊÿÛßÿ
ý?ü_¢¹[ÿ{ù¿°ÿgþ/ÙÐô¿±ÿëGý°ÿgá7=hÌ r¡éÁÿý³ ÿl(ú8ú)ø¿8 ÿÖþ¯yþ'Äù?&¥pÉ
¦ÿê?,DоhhúgðaÿÇü_²!êßþ«^?LîÒ©SÿjQÿ #į·AÀ< þw÷¸ÿø?eCÓ?Cÿ?ÿg!>`1ÿ¿¿ÿë{ÿ_-TîÖÿ&þÏ
þcø¿yÇ(îÅBÓ?Cÿ?ôÿdýÿd³Eþ_9áÖÿòÿÐ?Èÿ˦ÿýßóóq(è¸D0ý+þ¸ÿÚø3ôÿÄýO, ÿ§lhúgðcýÇü²¡éÁÿú/ð˦þXÿ³ø/þú¢þúÈÿÛßÿý?úænýïÕÿûÐÿS64ýoíÿ\ÖÿbìÿYø½îîRØì
-&ÐôÏÐÿúgý?e³ZÿMmsý¤gøçÿHaýÏòÿ²YÿÛKÙ¿<Vá~þÏ IÑÿïñïÌI×Üsá÷þ'R1ú°ül¼õ?¾VuÙäÅ¥Ëí+áÎÿÌçÿxüôÏʦÀ$ oý÷
7Ϲ~ÕÕi:þk?¾º¨Ì§þ¹þÓD¡ÿï
úPÑû«z½ÌÃáúùá'
¬ÿçæÕtuÓx;þ/ò¿úÿðЮlº³®dø >L8õfþ¿ððP4uoºWká5M}4ãTp|¸õ.ÌCÛ|ßêñ¿)°øi ëçý?úðý¿l¼õÿT5}~ªÎÕz5øë\ àþ ÙãÿYÝ/þGîæú
-¹þ7tºî§Sß¹5ÔÅ=ç?çýÿR
ý?_4dýïÿã DþÄÙÐõ_Õé?çÿáÿáâ ùÆÿ?è¡÷sO
-÷ëÿ)ôÿe8þCu6ùìOÎCAÎùQÿcôÿäáæÿJ²0VÿK?Ý|`Á§l|ÜÞnoþí6تþA®9 ÷3Üë¿ùù¿X¥Xÿ± )Ë^ÿÙwÿÿØÿɬÿcW½5îoÿ;³úç`òwÖÍÇϸ^"Þú×ei
-¿àîø¿8ÿf¨ÿ°óß²!ÇÛø«5æ¸âîø¿èÿ(ø¿XøåR÷¶mºqJÿS8Vê?£ôý¹1íðW×Òÿ*Saú«ÇhÚæÔ<¿~¼Ç?2Ûÿã¿?þãÿíîVõ³É+×À½þgã§ òÿ,Dù¢ñ×Ñt+4ÿ=þú#¬ÿy@ÿOÙõßWO6Я¹þc
þÓyüOÿç!JãsXüõ?¼tF}f ·þ£þ ÿ?Ä/»õ¿âNý«EüôfaÜ{¸ÿO.w®ÿW=Ã_ÿã{ÔÿY(ËúÌjýî_òº>êòü1nýÏ×ÿ*Âý<¨0*Ã$Ó1Ä/õúîÿ#=ÃJܳþ«Òõ_<Ǻÿ1ôü5ðÿñÔÿY _ý½åý¿ÿèÿâþ_FþÈ/þOæÕV?ÃÿEý?°ÿgöÙÐô_4/¦³=s{)pîX¸õ¿¨ÿE
-õÒdhúÿæäßên:Á~ðÿøü,Àÿ'þ¿è·>oÊ\÷ãß®ìåAÕpOÿçEüÏüÿ,¨dù¿Ý][ ägݺáÔÿÒÿ&Øÿ³ ÿlîÖÿ þñ?cìÿYÿW64ýoíõ?5¯ÿaþ,üYWeeBÓ}9?Îf l ×3Üñ?Çÿù?
- d(ú8ü_1ü_ÐÆkÿ×|þÇù4ýK24ýïîÿ2ø?Y@ýW64ý3ø¿Pÿaþ/ÙÐôÏàÿÂúÄÙÐô¿µÿk®ÿ$S¨ÿ°ì¯lù¿Ýý_8ÿÉü_²¹[ÿ{ù¿°ÿgþ/ÙÐô¿±ÿëýìÿYøM3\húgðAÿ,Àÿ%þ#ÿWÿ´ñßÚÿ5Ïÿ8ÿÇD¢Ô0¹ÐôÏÐÿõpÿlhúgðaÿÇü_²!êßþ«^?LîÒ©Sÿþÿq#þ³|½
-æÐôÏàÿÿø?eCÓ?Cÿ?ÿg!>`1ÿ¿ÿ?¬ÿY"Üÿ'»õ¿ÿs¡ÿþo¢ô1Æ@.4ý3ôÿCÿOÐÿO6[äÿãnýÿ ÿý³ü¿lhúßÚÿ=?ÿGîÿfAen EÿÃÿû¿Y ?CÿOÜÿÄúʦþXÿ±Ü¯lhúgð£þËüß²¡éÁÿõ?ÿ²¡é¡ÿ'ê?, ûlù¿ýûbÿÏúÊænýïÕÿûÐÿS64ýoíÿ\ÖÿìÿYø½îîRØì
-&ÐôÏÐÿúgý?e³ZÿMmsý¤gøçÿ(Äúäÿe³>þ·²3yZ?'¬ÂýüA¢ÿ/Þãß®¹çÂïÿüO¤ôÿ`ùÙxë|ê²ÉKÛV<ÃÿÏÿñ¸ þ9PÙ4âÿ¾ÐãFð9ׯº:MÇíÇSù`AàÔ2×(ôÿ`á]ÿ*zUï¯×y8\_0?ü¤õÿܼ®nºÏpÇÿEþ7@ÿZÓMwÖua qlÿo3Áé §þÓláÿÿ¢©{Ó½Z¯yh꣧ãÃeü¬ouaÚæËøVøÝLåÀOYÿ;ïÿÑÿìÿeãÿ§ªéóSu®Ö«Á_ÿaáþ ÙãÿYÝ5þCÿ,@ÿ²!×ÿN×ýtê;·º¸çüç¼ÿ_ª°ÿçá ñ¬ÿãü?ÿ²¡ë¿ª7Ó0ÏÿÃÿÃÅòÿþÐCïçî×ÿ7ÑÿâøÕÙäc°?99çÿEý7Ñÿÿ+Éì¡ËôÓÍ|º9ÁÆwÁíÝáöæßþg ê¿ôér?ýþÿÇ ýs )Ë^ÿÙwÿÿØÿɬÿcW½5îoÿ;JÆ?þüuóåñ3.·þuYÂï
¸;þ/Îê?,àü·lÈñß6þj9®x;þ/úÿS ôÏÁ/º¿´mÓSú¯
-ıNÿJÛoL;üÕõñsMõ_ÔögíøMÛç·ýû?¶ÿS6?ÞãÿíêVõ³É+çÀ½þgã')ú²Ôl¼õ_4ÝÍ¿þmpètÿ
-Mÿ}õd ýÛ?|Ï\ãó,
--ãÿá¥3úè5øÇÿQþÿ, ê'{õ¿æNýÿ#ÿoõe)ü?,دÿzÿ
-H ÷ÿ×= ÿñúçàÿô_%ô/µú/:Ý¿äu3|Ôäùÿ[ÿÿ·þ·P
êÿ,qþ/Ó1b¿LVëºþö+ñµõß«þ¥PÿgÁoü§ëCß_ÿñWíÿ
ñßÒø÷Õß>7:ãÿwùÿëø
-ñD
ôË
¤ÿy5§õÏpë¾þ#Ôÿy@ý_6$ýÍélËÇÜÞ »nýG3ý'aü?i @2$ýó Oòou7L`?züOú¿ñ ólHúÿ¢ßú¼)sݹ²wUÃÇí)ñ?EÿgT @2´üßî® ò³nÏpêÿ»úÿUÿ±Ê°ÿgÁ~ýðÿÈå^ý¯9 à¿þ£ý?XÿW6$ýoí¦õ?5¯ÿ
-ýxø³®ÊÊ1
¤ÿúr~2Í Ø.@Îg¸ã<ÿ!ò<$
-@Éô°ø¿ü_Æsÿ×|þ×8ÿÁBÃþ%þ9ü_ð²ú¯lHúçð¡þÃü_²!éÃÿ
õ?ÿ²!ésÿ×\ÿI¡þò¿²¡åÿü_Øÿ³`¿~ø¿är¯þwó¡ÿ;ðɤÿý_Ëþ!îäá7=hLr!éÃÿý³ ÿlúöô]û¿ªÐöÿkH㿹ÿkÞÿ7T)æ¥pÉ
¤ÿê?,DоhHúßÑÿõ~ÿOÿ'ðɦûC~¬zýt2¹S¦Ný«¹þc ÿÁ×Û `Iÿ;ú?¯úOÂúø?eCÒÿýÿÞ×ÿ)úóà "Zþ?ÿçmýbýÏýúßïÿ+°Ç½ú߯ÿÌõ%ÿ,¤
-[ ÁôÏÑÿ÷°þ²Ù ÿ¯\Ï åÿÑÿäÿeCÒÿæþïÅú\ @ÿ¨,À
- !è_±ôÿÄýß,Æ£ÿ'ò¿, ÿ§lHúçðãü?Hþʤþð± ÿ·lHúçèÿõ?ÿ²!é£ÿ'ò¿, ûlhù?þØÿ³`¿~ôÿ˽úßÿ'ü,àølHúßÜÿ¹¨ÿ
öÿ,ü^÷Cw)lú3@Húçèÿ ý³þ²Y«ÿ¦¶¹~Ú3ü×ÿãúÈÿËfuüo/egþòµ~NX
ûõÿ
-ì4 ÿ'¾ãß®¹÷Âïùÿ:þQû_x@þG6¾ú_«ºlòâÒåö5ÏpçæóÅ8ÿÇʦÀ, _ý÷
7Ϲ~ÕÕi:þk?¾º¨ÌG§þ¹þÓý¿yx×ÿÞ_Õûëud×Ì?)Tý?7¯¦«nÍ3Üñ?^Äÿúg¡5]Ùtg]Èýñÿ6|pê?ÍýÑÿ¢©{Ó½Z¯yh꣧ãÃeü¬ouaÚæËøVøÝLåÀOUÿ{ïÿÑÿìÿeã«ÿ§ªéóSu®<Äà¯ÿp|ýs ýËÿÏúë¾ñúgú
-µþ7tºî§Sß¹5ÔÅ]ç?çýÿÒ û¿h¨úß;þ£ÿÿ²!뿪·Ó0ÏÿÃÿÃÅò÷þÐCïéîåÿViÀÿÍmüêlò1ØÜóÿ¢þÇê?,Üü_IFi}ºùÀO7'Øø.¸½;ÜÞüÛÿl°Dý7>]s at +á^ÿÍÏÄ*ÀúHY6äúÏÎû?ø?xÀþO6Tý»êÕ¬rüßã úç`òwÖÍÇÏ8 *_ýë²4
çpÿõèÿÇT/jü·¿Zckáÿé²þÿ¿\êþÒ¶M7Îé¿b.Ç:ý«Ôøçi¿ºþ£þ¨L)
ú«ÇhÚæÔ<¿~¼Ç?²õ?üÇÿÛå?.>ëgW®Eßúßâüèÿ'ýM·Bóßã¯ÿ0
-Ðÿ
ú
-Qÿ}õdÓ ýF÷¤óø¤8ÿÁ
-CÌrñ×ÿðÒ}ôÜúfúOÆý"ôÏJ ~ÉÜÿÏpê_-âþÿ<دºÿAErçúÕ3üõ%!ü,¼ë¿,Kè_"«õ_tºÉëfø°Íó¸õ?Ïÿ©(Âú
4*Ãc¦ch_&ëõ?] Hz¸gýW%1ê¿xÿtd¸ëùßëü£þÏmüûêo» Ýù¿d^ÿÿyHTøB¿\hú?WsZý·þõÿûpû¯lhú/ÓÙ¦¹½8w,Üú_Ôÿ¢ õÒdhúÿæäßênZÁ~ðÿøªþ?àÿ
-Mÿ_ô[7e®ûñoWöò jø¸4!þgüÿ,¨dù¿Ý]{ ägݺáÔÿÒÿFØÿ³`¿~øär·þW ðÿqaÿÏü¿²¡éxk·¬ÿ©yý7côÿbáϺ*+sÄ$ þëËùÉt6`û ¹áÿñbýüBP2ýþ¯þ/h㿵ÿk>ÿaþï,¤1ì_¡éÁÿÿ'¨ÿʦÿÝý_aúðɦÿÖÿ, þ˦ÿý_sý'YúÈþÊÿÛßÿ
ý?öëÿK.wë'ÿú?ñ ÿlhúߨÿõþ1öÿ,ü¦@.4ý3ø¿ àÿ
-Eÿÿ+
ÿÚøoíÿçBÿc"Qê \húßßÿ¡þÃîþ
-Mÿý¿°ÿcþ/ÙõoÈU¯N&wéÔ©µ¨ÿâ?Á×Û `MÿþOø?XÿS64ý3ôÿÃùâ& Éóÿ»û?Ñÿûõ[ÿgûÿDr·þ7ñ.ôÃÿÍ
-UÝ
¦þèÿÉúÿÉfü¿r<ÿþY@þ_64ýoíÿÿÃ,
þ9PY@CÑ¿âðãþohãÏÐÿ÷?±þ²¡é¡ÿ'Ö,Àÿ!þüߨÿ² ÿ·lhúgðbýÏâ¿lhúgèÿúèþ!bþoÿþØÿ³`¿~ôÿËÝúßëþgìÿY@ÿOÙÐô¿µÿsYÿ±ÿgá÷ººKa³7BÓ?CÿOèôÿÍjý7µÍõáÿ"
õ?ÈÿËf}üo/egþò´~NX
ûù?$Aÿ_¼Ç¿3'=\s?Î
ß;þùHÅèÿÁò?²ñÖÿøZÕe.·¬x;ÿ3ÿã DýM#I@(Þúï=nsýª«Ótü×~|1uQNý'sý§Iþ,¼ëÿAEï¯êýõ:2ëæ²þWÓÕM·âîø¿ÈÿèÿÃCkº²éκ.4.
-âÿm&ø0àÔÍã?ú3Q4uoºWká5M}4ãTp|¸õ.ÌCÛ|ßêñ¿)°øi ë×ý¡ÿØÿËÆ[ÿOUÓç§ê\W¿þÇ îÿaú
-9þõ×]ã?ôÏô/rýoètÝO§¾sk¨{ÎÎûÿ¥
-ûpìK6dýïÿã@!ÿÏâ¿lèú¯êÍôÌóÿðÿpqüEã¿ÿôÐû¹À'
ûõÿÍúÿ²@ÿ¡:| ö'ç¡ çü¿¨ÿÆ1úòpó%YÂäÓÍ|º9ÁÆwÁíÝáöæßþg ê¿ôér?ýþÿUõ²lèõ=÷ðpýlÈú?vÕ«Yãþ¦ø¿£xÜ@ÿLþκùòøÁKÄ[ÿº,Máw Üÿç¿Ãõpþ[6äøoµÆW<Ãÿýÿ¿\êþÒ¶M7Né¿b*Ç:ýG)¥ïÏi¿ºþþ'P²õ_ÔögõøMÛç7Â/÷øA%üÇÿÛÝ?.>ëgW®5{ýÎÆ?Nôÿd!BÌ¿þ¦[¡ùïñ׿m ýsÔ¿lúï«'è×\ÿ±Bÿé<þ'êÿ,Déca¿þÎè£ÏàÖ4Ó¢Ðÿ(
ø%s·þW<éµÿAÿöðÝoã©@w®ÿW=Ã_ÿQÁÿÃBYп`Vë¿ètÿ×ÍðQçqë¾þWQøÏ
-£2T!~¬×ÿtÿéVâõ_âü'ã?Ýÿzþøÿøêÿ,ÐÆ¿¯þÞòþßôJ¯÷ÿ"ÿÇB¢Â?ùåBÓÿɼÓêg¸õ¿¬ÿgØÿ³ÛeCÓѼÎö|Ìí¥À¹c9àÖÿ¢þ)ÔÿYHcL ¡éÿx«»aêûÁ3üãðÿ±û¿eCÓÿýÖçMë~üÛ½<¨îéÿ¼ÿÿÿhù¿Ý][ ägݺáÔÿÒÿÆØÿ³ ÿlîÖÿ þñ?cìÿYÿW64ýoíõ?5¯ÿaû_Xø³®ÊÊ1
¦ÿúr~2Í Ø6@®g¸ã<ÿò<$
-@ÉPôpø¿"ø¿8 ÿÖþ¯ùü1ú¿±Æ°I¦ÿü, þ+þ÷÷¨ÿ° ÿlhúgðaýÏâ¿lhúßÚÿ5×)ÔX@öW6Äüßþþ/ìÿYÿK6wë'ÿú?ñ ÿlhúߨÿõþ öÿ,ü¦@.4ý3ø¿ àÿ
-Eÿÿ+
ÿÚøoíÿçBÿc"Qê \húßÝÿ¨ÿ°ûÿdCÓ?Cÿ/ìÿXÿK6DýÛòcÕë§É]:uêÑÿ? Ð?Á×Û `MÿþOø?XÿS64ý3ôÿÃùâ& Éóÿ»û?Ñÿ Âý¹[ÿø?úáÿæ!JcìäBÓ?Cÿ?ôÿdýÿd³Eþ_9áÖÿòÿÐ?Èÿ˦ÿýßóóqàþoTà`(úWþoÜÿÍmüúâþ'ÐÿS64ý3ôÿÄúä~eCÓ?ÿõ_àÿ
-MÿþO¬ÿY@ü
-Mÿý?QÿaÝ?dCÌÿíßÿûÐÿS6wë¯û±ÿgý?eCÓÿÖþÏeý/Áþ
ßë~è.
ÍÞ`"Mÿý?¡ÐÿS6«õßÔ6×Ozþ/B¬ÿY@þ_6ëã{);ó§õsÂ*ÜÏÿ$)úÿ²à=þ9éáûq.üÞñÏÿD*Aÿÿ·þÇת.¼¸t¹ý`Å3Üùùüê¿,¨lLBñÖ_èq#øëW]¦ã¿öã©Ê|° pê?ë?Mú°ð®ÿ½¿ª÷×ëÈ<®/~RÈún^MW7Ýg¸ãÿ"ÿ ÿéʦ;ëº0и@6ÿ·àÃtSÿi¶ðÃÿÁCÑÔ½é^
×<4õÑSÁñá2~Ö·º0móe|«Ç?ün¦Àr৬ÿ÷ÿèÿÁöÿ²ñÖÿSÕôù©:WëÕà¯ÿ0pÿпlÈñÿ¬¿îÿ¡ ÙëC§ë~:õ[C@]ÜsþsÞÿ/UØÿópøECÖÿÎñ?DþÄÙÐõ_Õé?çÿáÿáâ ùÆÿ?è¡÷sO
-÷ëÿ
èÿËqüêlò1Øóÿ¢þÇèÿÉÃÍÿñ§,øtsïÛ»ÃíÍ¿ýÏAÕ3èÓ5ä~{ý7?ÿ«ë? eÙÐë?ûîÿàÿàû?ÙõìªW³ÆýMñGqAÿLþκùòøÁKÄ[ÿº,Máw Üÿç¿Ãõpþ[6äøoµÆW<Ãÿýþ/~¹Ôý¥mnÒÅT ú·rójjߺÏi¿¶þ£Ûÿ'ÎPÿaÁsü;cO|ülü£ÏðÊÿNã¡ÿ3HýÈÆSÿö¨oÑ}NÿPô&ú¿²þ²Y¹ÿh+¿+^ë¿`'T¦ìýOXÿíÏêñ¶95Ïo_ïñ,M0þøÿ·»[]|ÖÏ&¯\9 ¯ø?âþwÐý]6þú/n
æ¿Ç_ÿa ÿ/Øÿ˨ÿ¾z²U ~Íõo+ôÎãÂÿÉB?F æ ±øëxé>úÌ nýG3ý'ü<DX æný¯xSÿjÿÜÿÌýúÿ¿¦qܹþ_õýGIÿ7ã·_þ·,¡¡¬ÖÑéþ%¯á£[>>ÆÿyþOEÖÿ,8
-U¦ch_&ëõ?ÝÿLz¸gýwºÿõßýñÿéþïÐó×ÀüU£þÏmüûêo« ñÿý?§ú_øÏC¢Â?úåBÓÿɼÓêg¸õ¿¬ÿ§Øÿ³ ÿlhú/ÓÙßù©ªm6ðÿ»pëQÿÔÿYHcL ¡éÿx«»aº àgøÇÿTeðÿ±ó?²¡éÿ~ëó¦Ìu?þíÊ^Y
-÷Üÿ±ÿY ÿ?
-ý_DCÌÿ½èîÚ*?ëÖõ§þþ0ÂþûõÃÿ#»õ¿â ücÜÿÁü¿²¡éxk·¬ÿ©yý7Ñÿ?몬ÌPhú¯/ç'ÓÙméz;þÇõ?ò<$
-@ÉPôïÛÈ*ÜÛÿÁÿÅmü·öÍçÿ0Ðÿ
4ýK24ý3ø¿àÿdõ_ÙÐô¿»ÿ+Äý?<Àÿ%þü_Xÿ³ø/þ·öÍõdê?, û+bþoÿöÿ,دþ/¹Üÿü_èÿÄü_²¡écÿ×ú?ÄØÿ³ð4f ¹ÐôÏàÿþYÿK6ýGþ¯þ/h㿵ÿkÿ qþD©`r¡éÿWú´/þúaÿÇü_²!êßþ«^?LîÒ©SÿjQÿ #į·AÀ< þüð° ÿ§lhúgèÿóÿ,ÄL !æÿw÷¢ÿ½ÿ¯À@*wëÿçBÿ1üß<DÁc@÷b¡é¡ÿú²þ²Ù"ÿ¯ÏpëÿùèäÿeCÓÿÖþïùù8ÌRè¸D0ý+ÿ7îÿf6þý?qÿèÿ)þúbýÇü²¡éÁÿú/ð˦ÿ'Öÿ, þ˦þ¨ÿ°î²!æÿöïÿý?öëGÿO¹Üÿ½îÆþôÿ
-Mÿ[û?õ¿û~¯û¡»6{@ 4ý3ôÿþY@ÿOÙ¬ÖSÛ\?éþù¿ RXÿ³ü¿lÖÇÿöRvæ/OëçU¸ÿ3HôÿeÁ{ü;sÒÃ5÷ã\ø½ãÿTþ, ÿ#oý¯U]6yqérûÁg¸ó?óù?BÔYPÙ4âÿ¾ÐãFð9ׯº:MÇíÇSù`AàÔ2×èÿÁ»þTôþªÞ_¯#óp¸¾`~øI!ëÿ¹y5]Ýt+áÿüoþ?<´¦+î¬ëÂ@ãÙ þßfÓNý§Ù<þ£ÿ7ES÷¦{µ^óÐÔG3NÇËøYßêÂ<´Íñÿð»Ë²þwÝÿGúðý¿l¼õÿT5}~ªÎÕz5øë\ àþ ÙãÿYÝ5þCÿ,@ÿ²!×ÿN×ýtê;·º¸çüç¼ÿ_ª°ÿçá ñ¬ÿ]ã(äÿY@ü
-]ÿU½þyþþ.¿hü÷ÿz?ø¤p¿þ¿Bÿ_ã?TgÀþä<äÿõß8FÿOnþ¯$cDn>°àÓÍ 6¾nï·7ÿö?lUÿÍ O×ûîõßüü_¬R¬ÿXeC¯ÿì¹ÿÿìÿdCÖÿ±«^Í÷7ÅÿÅã úg`òwÖÍ
Çϸ^"Þú×ei
-¿àîø¿8ÿ¦¨ÿ°óß²!ÇÛø«5æ¸âîø¿èÿ(ø¿XøåR÷¶mºqJÿS8Öé_¥¾?7¦þêúúO 2eõúÏþ¬ÿ¡iSóüFøEðÿ0ÈRôbÁü¿ÝýÓêâ³~6yåZ¸×ÿálüãýx@ÿ?Ùøë¿hºÿýú¿ðëÿdCÔ_=Ù,@¿æúúOçñ?I±ÿgA
a9@,þú^:£>3[ÿÑLÿIú?*
ø%s·þW<éµÿAú?öëÿ¯ûS8î\ÿ¯z¿þ£ç¿yx×YпDVë¿ètÿ×ÍðQçqëÿSîÿå!ÊHe:öe²^ÿÓý¤gX{ÖÕø?GýÏñî=
-üÇ_E1êÿ,ÐÆ¿¯þÞòþßôê!â?
-ÿ@èMÿ'ójN«áÖÿ²þaÿÏnÿ
-MÿEób:Ûó1·çå[ÿú_ þÏB
-hhúÿæäßên:Á~ðÿøªþ?àÿ
-Mÿ_ô[7e®ûñoWöò j¸§ÿó"þgüÿ,Àÿ#bþïEw× ùY·®g8õ¿ôÿ1öÿ,دþ¹Üÿ üãGØÿ³ø/þ·vËú×Ã0FÿOþ¬«²2GLB¡é¿¾Lg3 ¶
-ëîø/ÖÿÈÿñ(T %CÑÀáÿÂý,ÐÆkÿ×|þÃ(ÂüÏAÃþ%þ÷÷áþPÿ
-Mÿþ/ÔXÿK64ý3ø¿°þgñ_64ýoíÿë?ÉÔX@öW6Äüßîþ/ÿäÁ~ýðÉånýïåÿÂþø¿dCÓÿÆþ¯ô±ÿgá7=hÌ r¡éÁÿý³ ÿl(ú8ü_ü_ÐÆkÿ×<ÿâüR8ÀäBÓ?Cÿ/ÔXÀÝ?²¡éÁÿ
ýðɨûC~¬zýt2¹K§Ný«Eý'ÿY¾ÞóDhúgðÂÿÁü²¡é¡ÿÎÿ³0Hÿß¿ÿÖÿ,دßú?#Üÿ'»õ¿ÿs¡ÿþoTø¨2è^,4ý3ôÿCÿOÐÿO6[äÿã¤ü?ôÏòÿ²¡ékÿ÷üüGfôÏÊ EÿÃÿû¿Y ?CÿOÜÿÄúʦþXÿ± ÿlhúgð£þËüß²¡éÁÿõ?ÿ²¡é¡ÿ'ê?, ûlù¿ýûbÿÏýúÑÿS.wë¯þØÿ³þ²¡ékÿç²þcÿÏÂïu?tÂfo0¦þÐ?èÿ)Õúojë'=Ã?ÿD
-ëÿÍúøß^ÊÎüåiý°
-÷óIþ¿,xgNz¸æ~¿wüó?ÑÿädãÿñµªË&/.]n?Xñwþg>ÿÇAú/*F P¼õßzÜ>çúUW§éø¯ýøbê¢2,úOæúO ý?Xx×ÿÞ_Õûëud×Ì?)dý?7¯¦«nÅ3Üñÿ
-ÐÿÖteÓu]h\ ÄÿÛLða:À©ÿ4Çôÿf¢hêÞt¯ÖÂkúhÆ©àøp?ë[]¶ù2¾Õã~7S`9ðÓ@Öÿ®ûÿ(Cÿ°ÿ·þª¦ÏOÕ¹Z¯ýÛ ôÏô/rü?믻Æèè_6äúßÐéºN}çÖP÷ÿ÷ÿKöÿ< ~Ñõ¿küíPèÄÙÐõ_Õé?çÿáÿáâ ùÆÿ?è¡÷sO
-÷ëÿ)ôÿe8þCu6ùìOÎCAÎùQÿcôÿäáæÿJ²0:ÄÙ§,øtsïÛ»ÃíÍ¿ýÏAÕ3èÓ5ä~{ý7?ÿ«ë? eÙÐë?{îÿàÿàû?ÙõìªW³ÆýMñGq@ÿLþκùòøÁKÄ[ÿº,Máw Üÿç¿Ãõpþ[6äøoµÆW<Ãÿýí°Ð?¿\êþÒ¶M7Né¿b*Ç:ýÇ¥ïÏi¿ºþý'P
-Ô8X=þCÓ6§æùðà=þaÙþÿýñÿowÿ´ºø¬M^¹Ö îõ8ÿ8Mÿg!BÌ¿þ¦[¡ùïñ×aýÏúʨÿ¾z²Y~Íõ+ôÎãü?QúgÄâ¯ÿá¥3úè3¸õÍô¨ ýÿY±ÍÝú_ñ§þÕ"þ ú?³®÷ÿM`*ÇëÿUÏð× ÿ#eYBÿYÿ¢ÓýK^7ÃG]?Æÿùú_E¸ÿÇid:øE²^ÿÓý¤gX{ÖU¡þËçøO÷?¿þãoÀøs@ÿ¾ú{ËûÿÑÿ)Ãý¿$*ü_.4ýÌ«9~[ÿËúý?¸ýW64ýÍélÏÇÜ^
-;ný/êBý
4Æ þ¿y'ù·º¦N°<Ã?þ§a ÿðÿɦÿ/úÏ2×ýø·+{yP5ÜÓÿyÿ3ÿ?8ÿ+bþïEw× ùY·®g8õ¿ôÿ1öÿ,Àÿ#»õ¿â üãûàÿ
-MÿÃ[»eýOÍë¿a£ÿÖUY#&¡Ðô__ÎO¦³ ÛÈõwüçñ?BþD¡(þÿWÿ´ñßÚÿ5ÿÇõîÿc!aÿMÿþ/ø?Y@ýW64ýïïÿ
-Pÿaþ/ÙÐôÏàÿÂúÄÙÐô¿µÿk®ÿ$PÿaÙ_Ùóûû¿°ÿgþ/ÙÜÿü_èÿÄü_²¡écÿ×ú?$Øÿ³ð4f ¹ÐôÏàÿþYÿK6ýû^gîíÿJàÿâ6þ[û¿æùçÿH:À&þü_¨ÿ°ôlhúgèÿ
ýðɨûC~¬zýt2¹K§Ný/úÿÇã úç øzÌ¡éÁÿ ÿðʦþ8ÿÏB|À bþÿ'Öÿ,ü¹[ÿø?úáÿæ!ãºMÿû÷ÿKÐÿôÿÍùåx[ÿËü?úÿòü¿lhúßÚÿ=?ÿGîÿfAen EÿÃÿû¿Y ?CÿOÜÿÄúʦÿ7Ö,Àÿ!þú¢þËüß²¡éÁÿõ?ÿ²¡éÿþ
-õÐýC6ÄüßþþOìÿY@ÿOÙÜÿ½úbÿÏúʦÿýËú_ý?¿×ýÐ]
-½ÁD þúBÿ, ÿ§lVë¿©m®ôÿü_)¬ÿY@þ_6ëã{);ó§õsÂ*ÜÏÿ$)úÿ²à=þ9éáûq.üÞñÏÿD*Aÿÿ·þÇת.¼¸t¹ý`Å3Üùùüê¿,¨lLBñÖ_èq#øëW]¦ã¿öã©Ê|° pê?ë?Mú°ð®ÿ½¿ª÷×ëÈ<®/~RÈún^MW7Ýg¸ãÿ"ÿ ÿéʦ;ëº0и@6ÿ·àÃtSÿi¶ðÃÿÁCÑÔ½é^
×<4õÑSÁñá2~Ö·º0móe|«Ç?ün¦Àr৬ÿ÷ÿèÿÁöÿ²ñÖÿSÕôù©:WëÕà¯ÿ0pÿпlÈñÿ¬¿îÿ¡ ÙëC§ë~:õ[C@]ÜsþsÞÿ/UØÿópøECÖÿÎñ?DþÄÙÐõ_Õé?çÿáÿáâ ùÆÿ?è¡÷sO
-÷ëÿ
èÿËqüêlò1Øóÿ¢þÇèÿÉÃÍÿd¶éBúéæ>Ý`ã»àöîp{óoÿ³ÁFPõßút͹á^ÿÍÏÿÅã¯%ôϤ,zýgßýü<`ÿ'²þ]õjÖ¸¿)þï(ÎRèÉßY7_?ã"xxë_¥)ü»ãÿâüw¡þÃÎËÿmã¯Öãg¸ãÿ¢ÿoÂÿÅÂ/º¿´mÓSú¯
-ıNÿaFéûscÚᯮÿóÊíÿ
úÏþ¬ÿ¡iSóüFøEðÿ0È2ÔÿXðÿowÿ´ºø¬M^¹Ö îõ8ÿ8MÿY@÷OÙøë¿hºÿýBÿ_°ý
-Qÿ}õd³ ýë?Vè?Çÿ$ÅùÂø1J0Å_ÿÃKgôÑgpë?é?Qú¿²f¿dîÖÿg8õ¯ñ?HPÿcÁ~ýÿ
-®. ØäqçúÕ3üõ%ü,ß~ùß²þ
²ZÿE§û¼nº<[ÿóüb¬ÿY(¢2<f:öe²^ÿÓý¤gX{ÖU¢þËçøO÷?¿þã?þú?´ñï«¿·¼ÿ÷ý¦ú_øÏC¢Â?úåBÓÿɼÓêg¸õ¿¬ÿãü?ðÿȦÿ¢y1íùÛKsÇrÀÿEý/
-Pÿg!1H¦ÿoàIþî©ìÏðÿiÀÿÇîÿ
-Mÿ_ô[7e®ûñoWöò j¸§ÿó"þg
-þT @2Äüßî®- ò³n]Ïpêéÿ cìÿY°_?ü?r¹[ÿ+ øÇÿ8Æý<Àÿ+þ·vËú×Ã0Fÿ/þ¬«²2GLB¡é¿¾Lg3 ¶
-ëîøÏãüBP2ýþ/ÿ´ñßÚÿ5ÿÇõú¿³Æ°I¦ÿü, þ+þü_¨ÿ° ÿlhúgðaýÏâ¿lhúßÚÿ5רÿ°ì¯lù¿ýý_Øÿ³`¿~ø¿är·þ÷òaÿÏü_²¡écÿ×ú?$Øÿ³ð4f ¹ÐôÏàÿþYÿK6ýGþ¯þ/h㿵ÿkÿ qþD©`r¡éÁÿ
ú¸ÿK64ýïïÿRØÿ± ÿlú·?äǪ×O'»têÔ¿ZÔÂñ
àëm0H¦ÿ'ü,Àÿ)þúÿáü?ñdùÿýýXÿ³`¿þÿF¸ÿO*wëÿçBÿ1üß<ñcø?è^,4ý3ôÿCÿOÐÿO6[äÿãnýÿ ÿý³ü¿lhúßÚÿ=?ÿGãôÏÊÜ "þÿ÷³@þ¸ÿôÿ
-Mÿþo¬ÿXÿC64ý3ôÿDýø¿eCÓ?ÿëÿeCÓ?CÿOÔX@÷Ùóûû?±ÿgÁ~ýèÿ)»õ¿WÿOìÿY@ÿOÙÐô¿µÿsYÿK°ÿgá÷ººKa³7BÓ?CÿOèôÿÍjý7µÍõáÿ"
õ?ÈÿËf}üo/egþò´~NX
ûù?$Eÿ_¼Ç¿3'=\s?Î
ß;þùH%èÿÁò?²ñÖÿøZÕe.·¬x;ÿ3ÿã DýM#I@(Þúï=nsýª«Ótü×~|1uQNý'sý§BÿÞõÿ ¢÷WõþzkeøóÃO
-YÿÏÍ«éê¦[ñwü_äôÿá¡5]Ùtg]Èñÿ6|pê?Íþoø?x(º7Ý«µð¦>q*8>\ÆÏúVæ¡m¾oõøßÍXü4õ¿óþý?xÀþ_6Þúª>?Uçj½üõ¦îÿaú
-9þõ×]ã?ôÏô/rýoètÝO§¾sk¨{ÎÎûÿ¥
-û¿hÈúß9þÈÿ³ø/ºþ«z3ýóü?ü?\ Ñøïÿ=ô~.ðIá~ý³ýY ÿPM>F ûóPsþ_Ôãý?y¸ù¿lºìÓÍ|º9ÁÆwÁíÝáöæßþg ê¿ôér?ýþÿUõ²lèõ}÷ððýlÈú?vÕ«Yãþ¦ø¿£8K &gÝ|yüà%â]¦ð; îÿóßaú8ÿ-rü·¿Zc+áÿþ¿Aÿ¿\êþÒ¶M7Né¿b*Ç:ý+ß+ÿÁ´Ã_]ÿ?W
-Ðÿ
Õã?4msjß¿ÞãY`ü9ðÿowÿ´ºø¬M^¹Ö îõ8ÿ8
ÿ¤þdã¯ÿ¢éVhþ{üõê,$пhúï«'è×\ÿáyþcÿIüÁ£B`Áøëxé>úÌ nýG3ý'AüP¿lîÖÿg8õÿüpíÿû?X°_ÿ§A8À$;×ÿ«á¯ÿ( Ñÿ
ÿÓYп8Vë¿ètÿ×ÍðQçqëÿSú?ñ`K-I¦cÄ~¬×ÿtÿéVâõ_g¨ÿrà9þÓý¡ç¯ÿø«(FýÚø÷Õß[Þÿ»Èÿ!â?
-ÿ@èMÿ'ójN«áÖÿ¢þ¥Øÿ³ÛeCÓѼÎö|Ìí¥À¹c9àÖÿ¢þ¢ÿi @24ýó Oòou7L`?xüOÑÿ ÿeCÓÿýÖçMë~üÛ½<¨îéÿ¼ÿiÿ?*Å bþïEw× ùY·®g8õ¿ôÿöÿ,دþ¹Üÿ üãØÿ³ ÿ¯lhúÞÚ-ëj^ÿ
-ÃçXø³®ÊÊ1
¦ÿúr~2Í Ø6@®g¸ã¼Xÿ#ÿÇC¢PEÿÿËöÿÿkh㿵ÿk>ÿ ÿ+iûdhúgðÁÿÉÒ?²¡éÁÿ
úðɦÿÖÿ, þ˦ÿý_sý')îàÙ_Ùóûû¿°ÿgÁ~ýðÉånýïåÿÂþø¿dCÓÿÆþ¯õÀþ
ßô 1È
¦ÿôÏü_²¡è?âèÿ¥àÿâ6þ[û¿æùçÿH:À&þü_¨ÿ°Aû¢¡éÁÿ
ýðɨûC~¬zýt2¹K§Ný«Eýg\@ÿ_oy@"4ýïïÿÄý< ü+þúÿáü?ñdùÿýýXÿ³`¿þ÷ûÿ
-läq·þ7ñÎý_q"þ³>Â*þúÿ¡ÿ'èÿ'-òÿÊñRþúgùÙÐô¿µÿ{±þ3ýs ² 7¢ÅÑÿ÷³@þ¸ÿôÿ
-Mÿþo¬ÿX@òW64ý3ø¿QÿeþoÙÐôÏÐÿëÿeCÓ?CÿOÔX@÷Ùóûû?±ÿgÁ~ýèÿ)»õ¿WÿOìÿYûS64ýoíÿ\Öÿ"ìÿYø½îîRØì
-&ÐôÏÐÿúgý?e³ZÿMmsý¤gøçÿ(Àú,ÿe³>þ·²3yZ?'¬ÂýüA ÿ/Þãß®¹çÂïÿüO¤"ÿeùÙxë|ê²ÉKÛV<ÃÿÏÿ±M Aÿ¨lLBñÖ_èq#øëW]¦ã¿öã©Ê|° pê?ë?µ/Ð?ïúPÑû«z½ÌÃáúùá'
¬ÿçæÕtuÓx;þ/ò¿îå¡5]Ùtg]Èñÿ6|pê?Íæñý¿(º7Ý«µð¦>q*8>\ÆÏúVæ¡m¾oõøßÍXü4õ¿ëþ?ÊÐÿìÿeãÿ§ªéóSu®Ö«Á_ÿaªpÿпlÈñÿ¬¿îÿqÿ3пlÈõ¿¡Óu?úÎ! .î9ÿ9ïÿ*ìÿy8@ü¢!ë×øÛ ÿeC×Uo¦ÿ`ÿÿä/ÿýÿ ÞÏ>)ܯÿo ÿ/Äñª³ÉÇ`r
-rÎÿúo£ÿ'7ÿW
Q«O7Xðéæß·wÛû
-6ªÿfЧkÈý÷úo~þ/V Ö,@ʲ¡×öÜÿÁÿÁö²!ëÿØU¯fûâÿâ4þ9üuóåñ3.·þuYÂï ¸;þ/Î)ê?,àü·lÈñß6þj9®x;þ/úÿZKôÏÀ/º¿´mÓSú¯
-ıNÿaBéûscÚᯮÿDÿ T¦lýõýY=þCÓ6§æùðà=þaeÆÿñÿv÷O«ÏúÙäk
-à^ÿ³ñÓý?Y@÷OÙøë¿hºÿýQþo,`û/¢þûêÉfú5׬Ð:ÿIú?aü%Äâ¯ÿá¥3úè3¸õÍô(ôã!øEs·þW<éµÿAÿöëÿo^ÇS8î\ÿ¯z¿þ£$ÿ
ñÛ/ÿ[пPVë¿ètÿ×ÍðQçqëÿSQõ?ETI¦ch_&ëõ?ÝÿGz¸gýW%8ÿÉçøO÷?¿þã?þú?´ñï«¿·¼ÿ÷ý¦ú_øÏC¢Â?úåBÓÿɼÓêg¸õ¿¬ÿgØÿ³ ÿlhú/ÓÙ¹½8w,Üú_Ôÿ¢ õÒdhúÿæäßên:Á~ðÿøªþ?àÿ
-Mÿ_ô[7e®ûñoWöò j¸§ÿó"þgüÿ,¨dù¿Ý][ ägݺáÔÿÒÿ3þôÏýúáÿËÝú_q À?þÇqý?ðÿʦÿáݲþ§æõß0qÿÖUY#&¡Ðô__ÎO¦³ ÛÈõwüëäÿxH*¡è?`ðÙþðímü·öÍçÿ0Ðÿ
4ýK24ý3ø¿àÿdõ_ÙÐôÏàÿBýø¿dCÓ?ÿëÿeCÓÿÖþ¯¹þ,@ýdeCÌÿíïÿÂþûõÃÿ%»õ¿ÿûàÿ
-Mÿû¿~Ôÿû~ÓÆ þü_Ð?ðÉ¢ÿ£ÿÿÚøoíÿçBÿc"Qê \húgð¡þÃBí¦ÿö,Àÿ%¢þíù±êõÓÉä.:õ¯õ0Büg!øzÌ¡éwÿgûÿxÿS64ý3ôÿÃùâ& Éóÿûû?±þgÁ~ýÿpÿTîÖÿ&þÏ
þcø¿yãÇðнXhúgèÿþ, ÿl¶Èÿ+Ç3ÜúÿAþúgùÙÐô¿µÿ{~þ#ýs ² 7¢ÅÑÿ÷³@þ¸ÿôÿ
-Mÿþo¬ÿXÿC64ý3ø¿QÿeþoÙÐôÏÐÿëÿeCÓ?CÿOÔX@÷Ùóûû?±ÿgÁ~ýèÿ)»õ¿WÿOìÿY@ÿOÙÐô¿µÿsYÿ±ÿgá÷ººKa³7
BÓ?CÿOèôÿÍjý7µÍõáÿ"
õ?ÈÿËf}üo/egþò´~NX
ûù?$Eÿ_¼Ç¿3'=\s?Î
ß;þùHÅèÿÁò?²ñÖÿøZÕe.·¬x;ÿ3ÿãñ?Ð?*F P¼õßzÜ>çúUW§éø¯ýøbê¢2,úOæúO
þ,¼ëÿAEï¯êýõ:2ëæ²þWÓÕM·âîø¿ÈÿèÿÃCkº²éκ.4.
-âÿm&ø0àÔ-úÿÂÿÁCÑÔ½é^
×<4õÑSÁñá2~Ö·º0móe|«Ç?ün¦Àr৬ÿ÷ÿèÿÁöÿ²ñÖÿSÕôù©:WëÕà¯ÿqûXþeCÿgýu¿øe¸ÿè_6äúßÐéºN}çÖP÷ÿ÷ÿKöÿ< ~Ñõ¿küùÿeC×Uo¦ÿ`ÿÿä/ÿýÿ ÞÏ>)ܯÿo¦ÐÿâøÕÙäc°?99çÿEý7Ñÿÿ+ɬé&útónN°ñ]p{w¸½ù·ÿÙ`#¨úo}ºæÜÏp¯ÿæçÿbbýǤ,zýgßýü<`ÿ'²þ]õjÖ¸¿)þï(ÎBèÉßY7_?ã"xxë_¥)ü»ãÿâüw¡þÃÎËÿmã¯Öãg¸ãÿ¢ÿo àÿbáKÝ_Ú¶éÆ)ýWLâX§ÿÒöçÓeý'ÎÒÿ*bôÿaaíøMÛç·½û?Mãÿ1þûã=þß®þiuñY?¼r.Üëÿp6þqÁÿÉR²ñÖÑtk4ÿ=þúÃõ?"è_44ý÷ÕMôknÿð;ÿqÿèÿÄCð¨ÐX0Þú^:£^3üOàÿfñ_6÷êÍ3úÿ.ÿÕáþì×ÿß÷a@÷ÿ×= ÿ8AÿwþOÿeYBÿâX«ÿ¢ÓýK^7ÃGMÿ?¸õ?¯ÿ¨0Eþ¥QÊjýO×ÿÑa%îYÿUAú/~ã?]ÿúþø¿
-3ÔÿY _ýís 3þ/òÿ¡Jáÿc!Qáþr!éÿd^Íiý3Üú_Ôÿ#
ý?¸ýW6$ýÍélËÇÜÞ »nýGóúß8@ÿ¤1& ÉôÿÍ<É¿ÕÝ05ýèþñ?U¨ÿó ólHúÿ¢ßú¼)sݹ²wUÃÇí)ñ?EÿgT @2´üßî® ò³nÏpêQÿUý?öëÿG.÷êÍ ÿõ¥ðÿ³ ÿ¯lHúÞÚMëÿO¨Ðÿ?몬̳PHú¯/ç'ÓÙíä|;þÇóø"ÿÇC¢PAÿÿ+ÿÒøoîÿÏÿ¡JÑÿ
4ýK2$ýsø¿àÿdõ_ÙôÏàÿ
-Qÿaþ/ÙôÏáÿÂúÄÙô¿¹ÿkÑÿ)PÿaÙ_ÙÐòþ/ìÿY°_?ü_r¹Wÿ{ù¿ôcþ/Ùô¿µÿëýpÿ#¿éAc
-Iÿþ/èø¿dCп÷epVáÞþ¯þ/H㿹ÿkÿ qþD©`r!éÁÿ¢þÃò?²!é£ÿö,Àÿ%þíù±êõÓÉäN:õ¯æúÎÿó|½
-æôÏáÿÿø?eCÒ?Gÿ?ÿg!éK4´üÿþþOôÿáÁ~ýïþÏ÷ÿÉã^ýoãÿ\ø?"ÜÿÇCð@õ!é£ÿîÿ`ýÿd³Aþ_¹áÖÿòÿÐ?ÈÿˤÿÍýßóóqâü*p`úW,þoÜÿÍiü9ú"ÿÃúʤþXÿ± ÿlHúçð£þËüß²!éÃÿõ?ÿ²!é£ÿ'ê?, ûlhù?þØÿ³`¿~ôÿ˽úßÿ'ú¿°þ²!ésÿç²þaÿÏÂïu?t¦o0¤þÐ?èÿ)µúojë§=Ãý?Î ¨ÿ±ü¿lVÇÿöRvæ/_ëçUøzÿgfõüøgNz¸æ~Ü¿wüçÿ(Àþädã«ÿñµªË&/.]n?Xówþg>ÿGYþ,¨lÌBñÕ_èq#øëW]¦ã¿öã©Ê|´ pê?ë?#ÔYx×ÿÞ_Õûëud×Ì?)Tý?7¯¦«nÍ3Üñÿ2ÜÿÊCkº²éκ.4.ûãÿm&ø8àÔÍã?ú0Q4uoºWëá5M}4ãTp|¸õ.ÌCÛ|ßêñ¿)°øi êïýÿØÿËÆWÿOUÓç§ê\yÁ_ÿa ÿÏô/jü?ë¯;Åÿëþ÷?ó ýËZÿ:]÷Ó©ïÜêâ®óóþiû¿x8@ü¢¡êïø#ÿÏâ¿lÈú¯êíôdý'Èÿ³püEã½ÿôÐ{ºÀ'
{ù¿Ujã?üßûCÿ¡:| ö'÷¡ çü¿¨ÿƱBý
ÿ+ÉÂ(ÉO7ØøN}{ÜÞnoþí6Ø¢þA®9 Ïp¯ÿ¹þBþHY6äúÏÎû?ÜÿÂö²¡êÿØU¯fûÛ×ÿ=ù¿âõ&gÝ|yüîñÕ¿.KSx ÷[ÿOñ?§èÿ
-5þÛÆ_1Ç5ÏpÇÿtáÿáÿdáKÝ_Ú¶éÆ9ýWÌâX§ÿ8%5þygÚᯬÿ$jü\eJ¡þÃÂêñ¶95Ïo_ïñ,SüÇÿÛå?.>ëgW®EÏ
úÿ:þq£þÇÖÿ²ñ×Ñt+4ÿ=þú#
ü¸þO6Dý÷ÕMôÝÿÎãþ/<Déca¿þÎè£ÏàÖ4Óÿøÿáÿf!N!~ÉÜÿÏpê_-âþ¯<ÄÁÿÝÿ<î\ÿ¯z¿þ£$Bý
²,¡Á¬ÖÑéþ%¯áÃ6ÏâÖÿ|ý¯¢ñÇi¤2Cü"Y¯ÿé@Ò3¬Ä=ë¿ÊöAýw<Ǻ 2ÜñüïmþOPÿg6þ}õ·Ç]Îøÿ]ÿ§÷ú_#ÿÇB¢Â?ùåBÓÿɼÓêg¸õ¿¬ÿãþ7pû¯lhú/ÓÙ¦¹½8w,Üú_Ôÿ¢ õRDCÓÿ7ð$ÿVwÃÔ
-ögøÇÿ4àÿc÷˦ÿ/úÏ2×ýø·+{yP5|Ü ÿ³ þü?¢!æÿ^twíuëzSÿKÿOó¿<Àÿ#»õ¿â üãûàÿ
-MÿÃ[»eýOÍë¿á8@ÿüYWeeBÓ}9?Îf l ×3Üñ?Çÿù?
- d(úü_¶ÿü_ûCÿý_óù?#ôf!aÿMÿþ/ø?Y@ýW64ý3ø¿Pÿaþ/ÙÐô¿»ÿKeXÿ³ø/þ·öÍõdê?, û+bþoÿöÿ,Àÿ%»õ¿ÿûàÿ
-Mÿû¿~Ôÿû~ÓÆ þw÷
Èÿñ ÿl(ú8ú
ðq@ÿý_óüOóL$Jà Mÿþ/ÔXÀý²¡éÁÿ
ýðɨûC~¬zýt2¹K§Ný/úÿÇaøÏBðõ6$BÓ?Cÿ?ø?XÿS64ýïßÿ÷ó0Hÿßßÿõ?eÿ§dîÖÿ&þÏ
þcø¿yÃÇ8îÅBÓ?Cÿ?ôÿdýÿd³Eþ_9áÖÿòÿÐ?Èÿ˦ÿýßóóqàþoTà`(úWþoÜÿÍmüúâþ'ÐÿS64ý3ø¿±þcþÙÐôÏàÿFýø¿eCÓ?CÿO¬ÿY@ü
-Mÿý?QÿaÝ?dCÌÿíïÿÄþôÿÍÝúß«ÿ'öÿ, ÿ§lhúßÚÿ¹¬ÿÅØÿ³ð{ÝÝ¥°ÙL¡é¡ÿ'ôÏúÊfµþÚæúIÏðÏÿÂúäÿe³>þ·²3yZ?'¬ÂýüA¢ÿ/Þãß®¹çÂïÿüO¤ôÿ`ùÙxë|ê²ÉKÛV<ÃÿÏÿq¢þËʦÀ$ oý÷
7Ϲ~ÕÕi:þk?¾º¨Ì§þ¹þÓD¡ÿïúPÑû«z½ÌÃáúùá'
¬ÿçæÕtuÓx;þ/ò¿úÿðЮlº³®dø >L8õfþ¿ððP4uoºWká5M}4ãTp|¸õ.ÌCÛ|ßêñ¿)°øi ëçý?úðý¿l¼õÿT5}~ªÎÕz5øë\ àþ ÙãÿYÝ/þGîæú
-¹þ7tºî§Sß¹5ÔÅ=ç?çýÿR
ý?_4dýïÿã DþÄÙÐõ_Õé?çÿáÿáâ ùÆÿ?è¡÷sO
-÷ëÿ
èÿËqüêlò1Øóÿ¢þÇèÿÉÃÍÿdaɧ,øtsïÛ»ÃíÍ¿ýÏAÕ3èÓ5ä~{ý7?ÿ«ë? eÙÐë?ûîÿàÿàû?ÙõìªW³ÆýMñGqAÿLþκùòøÁKÄ[ÿº,Máw Üÿç¿Ãõpþ[6äøoµÆW<ÃÿýíGÐ?¿\êþÒ¶M7Né¿b*Ç:ýGÿ£ôý¹1íð×Öô?ÊT£þÃÁêñ¶95Ïo_ïñmÅãÏÿø»û§ÕÅgýlòʵp¯ÿÃÙøÇiøÏB/ýM·Bóßã¯ÿ0RèÿËô/¢þûêÉfú5׬Ð:ÿIó,Déca¿þÎè£ÏàÖ4Ó¢ú¿²ýâÌÝú_ñ§þÕ"þ)ê,Á÷ÿ æÎõÿªgøë|ÿeYBÿYÿ¢ÓýK^7ÃG]?ÆÿùúüñFexÌtñd½þ§ûÿHϰ÷«ÿ+õ_<Ǻÿ1ôü5ð¥¨ÿ³@ÿ¾ú{Ëû¿ïÿtÿ
¸ÿD
òË
¦ÿy5§ÕÏpëQÿqþÜþ+þæÅt¶çcn/ÎË·þõ?ÜÿËDcMÿß<Àü[Ý
-S'ØáÿÓ0ÿÜÿ-þ¿è·>oÊ\÷ãß®ìåAÕpOÿçEüÏpþ
ó¿¢!æÿ^twmuëzSÿKÿO`ÿÏü?²¹[ÿ+ øÇÿxúç þ_ÙÐô?¼µ[ÖÿÔ¼þ ú±ðg]9b
-Mÿõåüd:°m\ÏpÇÿxÿ#äÿxH*¡è?`ðÙþðímü·öÍçÿ0Ñÿ
4ýK24ý3ø¿àÿdõ_ÙÐôÏàÿBýø¿dCÓ?ÿëÿeCÓÿÖþ¯¹þL¡þò¿²!æÿö÷aÿÏü_²¹[ÿ{ù¿°ÿgþ/ÙÐô¿±ÿëGý°ÿgá7=hÌ r¡éÁÿý³ ÿl(ú8ú)ø¿8 ÿÖþ¯yþ'Äù?&¥pÉ
¦ÿê?,àþ/ÙÐôÏàÿÂþø¿dCÔ¿ý!?V½~:Ü¥S§þýÿã0Füg!øzÌ¡éÿ'îÿãþOÙÐôÏÐÿçÿY $CÌÿïïÿÄú
Âý¹[ÿø?úáÿæ!JcìäBÓ?Cÿ?ôÿdýÿd³Eþ_9áÖÿòÿÐ?Èÿ˦ÿýßóóq¤pÿ7*p`(úWý?qÿ7´ñgèÿûX@ÿOÙÐôÏàÿÆúä~eCÓ?ÿõ_àÿ
-Mÿý?±þgñ_64ý3ôÿDýtÿ
-1ÿ·¿ÿûÐÿS6wë¯þØÿ³þ²¡ékÿç²þ`ÿÏÂïu?tÂfo0¦þÐ?èÿ)Õúojë'=Ã?ÿD!Öÿ, ÿ/õñ¿½ùËÓú9aîçÿýYðÿÎôpÍý8~ïøç" ÿÈÿÈÆ[ÿãkUM^\ºÜ~°âîüÏ|þõ_T6 &¡xë¿/ô¸|Îõ«®NÓñ_ûñÅÔEe>X8õÌõ&!ú°ð®ÿ½¿ª÷×ëÈ<®/~RÈún^MW7Ýg¸ãÿ"ÿ ÿéʦ;ëº0и@6ÿ·àÃtSÿi¶ðÃÿÁCÑÔ½é^
×<4õÑSÁñá2~Ö·º0móe|«Ç?ün¦Àr৬ÿ÷ÿèÿÁöÿ²ñÖÿSÕôù©:WëÕà¯ÿ0pÿпlÈñÿ¬¿îÿqÿ3ÿ¯½÷ÝmY¶=Ïçz
-?@y.Õ=
-ì;5Óè{0w¦ùF¤©MD²IÊ.÷Ó²j×&ËÌ
-T¬ÎÙU]`Aé±2ú
-¹þ×·ºêÆSß¹5TÅ-ç?§ýÿR
ý?;_4dýoÿ#äÿY@ü
-]ÿeµþiþþ.v¿hü÷ÿ½î;?ø¨p¿þ¿Yþ¿,Ç¿/O&"ýÉy(È9ÿÏê¿Ãê?,\ý_IÆQ|¸úÀwêë»àúnw}ówÿ³ÁJPõ_÷úxɹá^ÿMÏÿÅ*ÃúHY6ôú϶û?ø?xÀþO6dýïÛòÙ,qSüßÃJ4þ9ýUýrÿÁKÄ[ÿúp0
ßpwüÿv¡Ð?8ÿ-rü·¿cöáÿ³þ¿Aÿ?«îÜ4u;Lé¿`*Ç2ýg¶?_wøë?qýG ²ÀÞÿúÏö,ÿ¾nêcýøºuÿ§qüà C?ÞãÿõêFõ£ÉKçÀ½þ'ã§XÿóÔl¼õ_ÔíÍ¿þÃ0Fþôÿ
-Mÿ]ù` ÝÛ?üμÅÿDaÿÏBp¯0Æ[ÿýSkôÞkðÿI!þ³Aü¢¹UÿKáÔÿ7ùÿ·øoKÐ?öë»ÿo\<n[ÿ/{¿þ£8
ÿ
éÿp8@ÿâXªÿ¢ÕÝS^Õý{Mÿ·þ§ëfðÿ±Æid:FìÉbý×ÿÑa%îYÿU
-÷ÿ°à7þãõ¡ï¯ÿø«(@ýÒøwå>7:ãÿ,ÿo#þs¨ð7~¹ô4Ïæ¸ünýÏêÿQý?¸ýW6$ýõimËÇÜÞ »nýGÓú_áþoÒdHúÿêåßè¶Á¾÷ÿø*ÔÿyùG6$ý¿è×.¯¹î¿\Ú»ÊþýöÏøÆðÿ³ RL ¡åÿt{é tã|Sÿsÿú1a¿~øär«þ ð_ÿÇQ
-ÿ?ðÿʤÿþµYµþ§¦õßPeÐ?¿Wå¡4{ÌB!é¿:Lk3 ¶óîøOãüBP2ý,þ¯ þ/H㿺ÿk:ÿ*Í0ÿsưI¤ÿü, þ+þ9ü_¨ÿ° ÿlHúgð
Xÿ³ø/þW÷Íú?¥ê?, û+ZþÁÿ
ý?öëÿK.·ê3ÿú¿± ÿlHú_Ûÿõ½þØÿ³ðI÷S\Húgð!ÿÇü_²!è?bñEðq@ÿÕý_ÓüOóL$Jíà Iÿþ/ÔX }ÑôÏáÿÂþø¿dCÓ¿ý!ß~8Ü)S§þÕTÿ±Âù/×AÀ< þ9úÿÁÿÁü²!é£ÿÎÿ³ï0HÿgðbýÏýúßîÿ+°Çú_Çÿ9õÅQøÏBz¯°Iÿýÿpÿèÿ'òÿÊõRþúgùÙô¿ºÿ{¶þ#ÿbAen AÿÅÿû¿Y ?CÿÏ÷?±þ²!éÃÿõHþʤÿ7ê¿,Àÿ-þ9üXÿ³ø/þ9ú¢þúÈÿcðbÿÏýúÑÿS.·ê³þèÿÂúʤÿÕý³ú_`ÿϯU×·ç¦o0¤û¡ÐÿS6Kõ_W6×O{ÿúPÿcùÙ,ÿÍùÐ?|#Vá~þÏ QèÿËïø·æ¨ûKîǽð{Ãþö< ÿ#_ý¯eu¨óâÜæö%Ïpç¦ó%¨ÿ² ²q0ÅWÿ]¡àc®uyÿÚϦ*JóÞÀ©ÿdªÿá¿Fÿ?Þô§¢·Wõöz»ÝåóÃ
-Uÿõ³i«º]òwüæ£÷¿òÐöP·']Èíñÿ:¼pê?Ífþoôÿ桨«Î´ÏÖÃkîêjo©`w>ë]»¦~Þêá¿)°øa êëý?úðý¿l|õÿPÖ]~,O¥üõ& îÿaú
-5þôMã?îæú
-µþ×·ºêÆSß¹5TÅMç?§ýÿÒ ûv¿h¨úß:þ'Èÿ³ø/²þËj=ýÓü?ü?\ì Ñxïÿ{Ýw.ðQá~ýÓýY _L>D ûûPsþÕãý?y¸ú¿,Ò$ýpõ®N°á]p}·»¾ù»ÿÙ`%ú¯{}¼ä<ýþõÿP
-ë? eÙë?ïÿàÿàû?ÙPõ¿oËg³ÈýMòÇ!ú±0ú;«úåþ3.¯þõá`
-Ïàþëÿ(qÿ38ÿ-jü·¿cöKáÿÓþ¿QÃÿÅÂÏçª;7MÝsú/ıLÿQDjüóƸÃ_XÿIá¿SR ê?,ÿ¾nêcýøJøEðÿ0È2ÔÿXðÿ¯ÿ4ºø¬M^º>ëÿËøÇ)â?èþ)ýu»@óßâ¯Û úç þECÔW>Ø4@·Òýé4þ'8ÿÁCßG æ ±øë¿jÞûÌ nýGý'*@þ
ÑܬÿÏpê_Íâó_<ØÍ×Çë8`*ÇëÿEÏð×ÀÿÇÃðí>пPë¿hu÷WuÿnçwqëÿSQõ?&NÃ}¦ch_&Ëõ?^ Hz¸gýW¥ê¿xÿxd¸áùßëüó¿<ÐÆ¿+ÿô¸Ðÿ¿éÿôVÿÿyHTøB¿\hú?gs\ü·þçõÿûàÿ
-MÿEýdZÛô1··çå[ÿ³ú_ þÏBcMÿ_=À£üÝöc+ØwáÿÓ÷¿òû¿eCÓÿ~íòúënøÛ¥½<¨ìßo MÿY ÿ?*Å bþïI· ùI7®g8õ?÷ÿ1öÿ,ðÿæfý/8 àÿã8ÂþøeCÓÿÚ¬YÿSÓúo8Ì Ð?¿Wå¡4{LB¡é¿:Lk3 ¶ëîøOãüBP2ýþ/Ûÿþ¯í¡ÿÚþ¯éüú¿³Æ°I¦ÿü, þ+þü_¨ÿ° ÿlhúßÜÿ¥2¬ÿY@ü
-Mÿkû¿¦úO² õý
-1ÿ·½ÿûø¿Ds³þ·òaÿÏü_²¡éeÿ×÷ú?`ÿÏÂ'ÝkÌ r¡ésÿWüðÉ¢ßËà¬Â½û
ðq@ÿµý_ÓüOóL$Jíà Mÿþ/ÔX@úG64ý3ø¿°ÿcþ/ÙõoÈ÷e§&wéÔ©5«ÿâ?Áë `Mÿýÿàÿ`þOÙÐô¿}ÿ?ÜÿÍC¼Ã bþ{ÿ'Öÿ,öþ¿[ ©Ü¬ÿUü3ýÇðó÷QÝ
¦þèÿÉúÿÉfü¿r<Ãÿïäÿ¡ÿ
-Mÿkû¿§ç?â(¡TàÁPô¯8ü߸ÿÚø3ôÿÄýO, ÿ§lhúgðcýÇü²¡éÁÿú/ð˦þXÿ³ø/þú¢þúÈÿ
ÛÞÿý?úæfýoÕÿûÐÿS64ý¯íÿ×ÿbìÿYøµêúö\Øì
-&ÐôÏÐÿúgý?e³Xÿuesý¤gøçÿHaýÏòÿ²Yÿó¡5xZ?G¬ÂýüA¢ÿ/Þãߣî/¹çÂï
-ÿüO¤ôÿ`ùÙxëx-«Cç6·,x;ÿ3ÿã Dý#I@(Þúï
-=lsý¬Ëãxü×~|6UQwNý'Sý§BÿÞô§¢·Wõöz»ÝåóÃ
-Yÿõ³i«º]ðwüåôÿá¡1í¡nOº*4.âÿu&x7àÔÍúÿÂÿÁCQWi
×ÜÕÕÞSÁþî<|Ö5º0wMý2¼ÕÃ~3S`9ðÃ@ÖÿÆûôÿàûÙxëÿ¡¬»üXÊåjð×ÿ° Àý?,@ÿ²!Çÿþ²]ü2ÜÿÌô/rý¯ouÕ§¾sk¨[ÎNûÿ¥
-ûv¿hÈúß4þÇAü?ÿ²¡ë¿¬VÓ0ÍÿÃÿÃÅòÿþ¿×}ççî×ÿ7Ñÿâø÷åÉäC°?99çÿYý7Ñÿ«ÿ+ÉÂ8WØðN}}\ßí®oþî6X ªþë^/9 ÷3Üë¿éù¿X¥Xÿ± )Ë^ÿÙvÿÿØÿɬÿ}[>%îoÿ;³úç`ôwVõËýg\/oýëÃÁ~ÀÝñvþ;ÌPÿaç¿eCÿ¶ñWcÌ~Á3ÜñÖÿ×~ý3ðó¹êÎMS·Ãþ¦q,Ó@iûóq¿°þgé*¢õ_7õ±~|ݺÿÓ8þa)ôbÁ{ü¿^ýÓèâ³~4yé\¸×ÿádüã$Cÿ'ú·þº]¢ùoñ×FØÿ³ ý˦ÿ®|°InÉí~ç?®ñ÷ñÜ+´ ·þû§Öè½×àÿÿ`ñ_6·êÉ3úÿ&ÿÑ¡þÏýú¯÷ÿa! ÛÖÿËAÐàü7ÿÒÿápþűTÿE«»§¼ªû÷<ÿnýOë?*LÿgAié» ©,ÖÿxýíVâõ_(Ô9ðÿñúÇÐ÷×ÀüU¡þÏiü»òO ñÿUó?,$*ü
-Á_.$ýͳ9.[ÿ³ú?îÿd·ÿʤÿ¢~2mùÛ;s×rÀÿhZÿÑÿ4Æ þ¿zGù7ºíÇF°ï=Ã?þ§
-õPó
-Iÿ/úµËëC®»á/öî ²¿ý3%þ§òÿ,¨dhù¿'Ý^: ä'Ý8áÔÿ¬þ«ûì×ÿ\nÕÿ þëÿ8JàÿgÙôß¿6«Öÿfþý?ø½*¥Ùc
-IÿÕùô`Z°]ÏpÇÿxÿCäÿxH*!èß»U¸·ÿ÷?°@ÿÕý_Óù?TIù4ýK2$ýsø¿àÿd9_ÙôÏáÿBýø¿dCÒ?ÿKaýÏâ¿lHú_Ýÿ5ëÿâþ_ý
--ÿÇàÿÂþûõÃÿ%[õ¿ÿýßXÿK6$ý¯íÿú^ÿìÿYø¤{)@.$ý3ø¿ÿãþ/Ùô±ø¿"ø¿8 ÿêþ¯iþ'Äù?&¥vpÉ
¤ÿê?,àúoÙôÏáÿÂþø¿dCÓ¿ý!ß~8Ü)S§þÕTÿ±Âù/×AÀ< þ9úÿÁÿÁ<²!é£ÿÎÿ³ï0HÿgðbýÏýúßüîÿÇú_Çÿ9óD¸ÿà>êCÒ?Gÿ?ÜÿÁúÿÉf
ü¿r=Ãÿïäÿ¡ÿ
-Iÿ«û¿§ç?â0Äù/TàÁô¯Xü߸ÿÒø3ôÿDþôÿ
-Iÿþo¬ÿXÿC6$ýsø¿QÿeþoÙôÏáÿÄúÄÙôÏÑÿõÐýC6´üÿûì×þr¹UÿõÿDÿ`û
-Iÿ«û?çõ¿û~º¾=6}@ $ýsÜÿý³þ²Y¬ÿæ|h;֯«p?ÿWèÿÉïø·æ¨ûËÞÏ=ñ¿á¿ÿ¬ÿxÀþO6¾ú^ËêPçŹÍíKáÞÿMçÿ(QÿaaØh[0ÅWÿ]¡eõëg]Çãö㳩Ҽ· pê?ê?#ôÿbáMÿw*z{Uo¯¹Û]^0?ü PõÿX?¶ªÛ%ÏpÇÿiþ'Êpÿ#iu{ÒUa qÜÿ¯3Áûé §þÓlæÿDÿ_ºêLûl=|æ®®öf
-öwçá³®Ñ
¹kêáþð˪þ·Þÿãü?ØÿËÆWÿeÝåÇòTzÁ_ÿaãþ ÙPãÿIÙ4þãþW ÙPë}««n<õ[C at UÜtþkÚÿ+
-°ÿçañªÿãü?ÿ²!뿬ÖÓ0ÍÿÃÿÃÅò÷þ¿×}çéî×ÿ3ÑÿÚø÷åÉäC°?¹O:çÿYý7Ñÿ«ÿ+ÉÂ( WXðáêÞ×w»ë¿û
-V¨ÿº×ÇKhÁ3Üë¿Ùù`ýǤ,rýgãýü<`ÿ'ªþ÷mùl¹¿IþïX¡ÿ£¿³ª_î?ã"høê_¦ð< î¿þB
ûßY@è
-5þÛÆ?1û%ÏpÇÿiÿÏ(àÿbáçsÕ¦n9ýÌâX ÿº²mþox;þOü_j?â?Á}AörYÿUFjüõÆá[XÿMeõ¯ú±°xüûº©õã+áÁ{üà K3?þãÿõòFõ£ÉK×&Àgÿÿ8áÿf=ÿeã¯ÿ¢nhþ[üõF¨ÿó@ÿ¢!ê¿+l°[éþtÿÜÿÃ
-ïÃsXüõß?µFï}f ·þ£þ Cþ
ìhnÖÿg8õ¯fñß¶
þ°_¿½ÿ/´o0ãÆõÿ¢gøë?J"ÔÿXxÓÿápþ%²XÿE«»§¼ªûwÛ¼¿[ÿÓüàÿá!QéÚÉrý a%îYÿUIú/ã?^ nxþÿ:ÿǨÿ³@ÿ®üÓÃèÎÿ%Óú_øÏC¢ÂßúåBÓÿÑ<ãâg¸õ?¯ÿÃÿËnÿ
-MÿEýdZÛô5·GrÇrÀÿYý/
-Pÿg!1H¦ÿ¯àQþnû±ô;Ïðÿ©Êàÿcþ_ÙÐôÿ¢_»¼>äºþvi/+û÷ÀâÀÿÏJ1Hÿ{Òí¥H~ÒëNýÏý?aý?öëÿG.7ëÁ ÿøo¡àÿ
-Mÿýk³fýOMë¿aû_xø½*¥Ùc
-MÿÕùô`Z°}À\ÏpÇÿx¶þGþD¡(þÿWÿ´ñ_Ûÿ5ÿÃ0BÿgÒö/ÉÐô¿½ÿ+
ÿÔeCÓ?ÿõàÿ
-Mÿþ/¬ÿY@ü
-Mÿkû¿¦úO² õý
-1ÿ·¹ÿç?y°_?ü_r¹Yÿ[ù¿°ÿgþ/ÙÐô¿²ÿë;ýbìÿYø¤{@.4ý3ø¿ àÿ
-EÿÿËöÿk{hã¿¶ÿkÿ qþD©`r¡é¡ÿê?,àîÙÐôÏàÿÂþø¿dCÔ¿ý!ß~8Ü¥S§þÕ¬þFÿ,_®y@"4ý3ø?áÿ`þOÙÐôÏÐÿçÿYw $CÌÿoßÿëì×oýîÿÉÍú_Åÿ9Óÿ7*¼T04ý3ôÿCÿOÐÿO6käÿã¤ü?ôÏòÿ²¡émÿ÷ôüG
-ý3 ² 7¢ÅÑÿ÷³@þ¸ÿôÿ
-Mÿþo¬ÿXÿC64ý3ø¿QÿeþoÙÐôÏàÿÄúÄÙÐôÏÐÿõÐýC6ÄüßöþOìÿY°_?úÊåfýoÕÿû`þ
-Mÿkû?çõ¿û~º¾=6{@ 4ý3ôÿþY@ÿOÙ,Ö]Ù\?éþù¿ RXÿ³ü¿lÇÿæ|hÍÖÏ«ðåþÏÐê?Iüxkº¿ä~¿7üò?vü#ãü/ÈÿÈÆ[ÿÃkYê¼8·¹ý`Á3Üùéüÿýs ²q0 Å[ÿ]¡àc®uyÿÚϦ*JóÎÀ©ÿdªÿ4Q¨ÿ²ð¦ÿ;½½ª·×ËÈÜí./~PÈú¬M[Õíg¸ã<ÿððÐöP·']È
-ñÿ:¼pê?ͦñý?(êª3í³µð»ºÚa*ØßϺF殩_·zøÃof
-,~Èúßxÿàþ/°ÿ·þʺËå©\®ý ø?XþeCÿ'ýeøoýQûyþeC®ÿõ®ºñÔwn
-UqËùÏiÿ¿Táü;_4dýoÿã@ÁÿÃâ¿lèú/«Õôd3ýÈÿ³°üEã¿ÿïußù¹ÀG
{ù¿Ufã?üßÛCÿ¾<| ö'ç¡ çü?«ÿÆqúWÿW
Ñ.Ý}¸úÀW'Øð.¸¾Û]ßüÝÿl°Tý×½>^r@îg¸×áTÿ*EþHY6ôú϶û?ÜÿÂö²!ëßÏfûâÿâõFgU¿ÜÆEðñÖ¿>Láw Üÿgç¿CÜÿÁÎËÿmã¯Æýg¸ã:ó+ø?Yøù\u禩ÛaJÿS8é?ÜQúþ\wøë?Ã<¡2¨ÿp°xüûº©õã+áÁ{üÃ`ôÿbü·Çü¿ÞýÓèâ³~4yéZ¸×ÿádüã4Áþtÿ¿þº] ùoñ×)ø¿XÀõ²!ê¿+l [rýÇý§Óø ÿÇCßG æ ±øë¿jÞûÌ nýGý'*ÿ
e?ÑܬÿÏpê_Íâ ÿÏýú?¾|aÇëÿEÏð×D)ôÏÁðí>пPë¿hu÷Wuÿ^ç÷qëÿSQõ?EtT¦ch_&Ëõ?ÞÿGz¸gýW¥ê¿xÿxÿcèùkà?þö?´ñïÊ?×¼ÿ÷ßú?ÅûÿYHTøB¿\hú?gs\ü·þçõÿûàÿ
-MÿEýdZÛó1·çå[ÿ³ú_ûxHa
-Mÿ_=À£üÝöc'ØwáÿÓ0ÿÜÿ-þ_ôk×\wÃß.íåAeKÿçYüÏüÿ,¨dù¿'Ý^Z ä'ݸáÔÿÜÿÆØÿ³`¿~øär³þ ðÿqû_yÿW64ý÷¯Íõ?5ÿaûXø½*¥Ùc
-MÿÕùô`Z°m\ÏpÇÿxÿ#äÿxH*¡è?àð
ðq@ÿµý_ÓùXÿáþÒö/ÉÐôÏàÿÿÔeCÓÿöþ¯ õàÿ
-Mÿþ/¬ÿY@ü
-Mÿkû¿¦úO² õý
-1ÿ·½ÿûì×ÿ\nÖÿFþ/ôâþ/ÙÐô¿²ÿë;ýìÿYø¤{@.4ý3ø¿ àÿ
-Eÿÿ+ÿÚø¯íÿæBÿc"Qj\húgð¡þÃBí¦þ_Øÿ± ÿlú·?äû²ÓG»têÔ¿Õ ôÏAðå:$BÓ?ÿþàÿ
-Mÿýÿpþ
þÑóÿÛû?±þgÁ~ý#Üÿ'õ¿ÿs¦ÿþoÂø>ü ºMÿÛ÷ÿKÐÿôÿÍùåx[ÿóü?úÿòü¿lhú_Ûÿ==ÿGÃGÐ?*p`(úWþoÜÿÍmüúâþ'ÐÿS64ý3ø¿±þcþÙÐôÏÐÿõ_àÿ
-MÿþO¬ÿY@ü
-MÿÛ÷ÿT¨ÿ°î²!æÿ¶÷bÿÏýúÑÿS.7ë«þØÿ³þ²¡émÿç¼þ`ÿϯU×·çÂfo0¦þÐ?èÿ)Åú¯+ë'=Ã?ÿD
-ëÿÍòøßùÃÓú9bîçÿýYðÿÖuÉý8~oøç" ÿÈÿÈÆ[ÿÃkYê¼8·¹ý`Á3Üùéüê¿,¨lLBñÖWèa#øëg]Çã¿ö㳩Ҽ³ pê?ê?Mú°ð¦ÿ;½½ª·×ËÈÜí./~PÈú¬M[Õíg¸ãÿ,ÿ ÿiu{ÒUa q¬ÿ¯3Á»é §þÓlæÿÿ¢®:Ó>[¯¹««½¦ýÝyø¬ktaîúex«?üf¦Àrà¬ÿ÷ÿèÿÁöÿ²ñÖÿCYwù±<ËÕà¯ÿ0pÿпlÈñÿ¤¿lÿ¡ Ùë}««n<õ[C at UÜrþsÚÿ/UØÿó°øECÖÿÆñ?DþÄÙÐõ_V«é?æÿáÿábùÆÿßë¾ós
-÷ëÿ
èÿËqüûòdò!Øóÿ¬þÇèÿÉÃÕÿda¬TðáêÞ©¯ïë»ÝõÍßýÏ+AÕÝëã%ä~{ý7=ÿ¿Ð?²lèõm÷ððýlÈúß·å³Yâþ¦ø¿£8K¡FgU¿ÜÆAPxë_¦ð; îÿ³óßaú8ÿ-rü·¿cöáÿ³þ¿Aÿ?«îÜ4u;Lé¿`*Ç2ýÇ¥ïÏq¿´þ£ÏU¦)õ_7õ±~|%ü"xdYñçÀü¿ÞýÓèâ³~4yéZ¸×ÿádüã4Aþ
1_4þú/êvæ¿Å_ÿa¤°þg!þECÔW>Ø,@·äúúO§ñ?Iÿg!JïãsXüõß?µFï}f ·þ£þÿEÿ ~ÙܬÿÏpê_ÍâþÏ<XÿÏÇë8`*ÇëÿEÏð×D¨ÿ³p8 Á,ÖÑêî)¯êþ½.ÏïãÖÿtý¯¢ñÇid:øE²\ÿãý¤gX{ÖUªPÿåÀsüÇûCÏ_ÿñ~@ýÚøwåkÞÿûmÿ§Ký/ÿc!Qáoür¡éÿhÍqñ3Üú×ÿáÿç·ÿʦÿ¢~2íùÛKsÇrÀÿYý/
-Pÿg!1H¦ÿ¯àQþnû±ì;ÏðÿiþÏ<àþoÙÐôÿ¢_»¼>äºþvi/*û[ú?Ïâ¦àÿgA¥ $CÌÿ=éöÒ ?éÆõ§þçþ÷?ò ÿlnÖÿ þñ?#ìÿYÿW64ý÷¯Íõ?5ÿaþ,ü^Òì1
¦ÿê|z0Í Ø6@®g¸ã<ÿò<$
-@ÉPôpø¿ø¿8 ÿÚþ¯éüo
- ÿ9HcØ¿$CÓ?ÿþOPÿ
-Mÿþ/ÔXÿK64ýoîÿRÖÿ, þ˦ÿµý_Sý'îâÙ_ÙóÛû¿°ÿgþ/Ùܬÿü_Øÿ³ ÿlhú_Ùÿõ½þØÿ³ðI÷3\húßÜÿ"ÿÇü_²¡è?âðEðq@ÿµý_ÓüOóL$Jíà Mÿþ/ÔXÀý²¡éÁÿ
ýðɨûC¾/;ýp4¹K§NýÏúÿÇaøÏBðå:$BÓ?Cÿ?ø?XÿS64ý3ôÿÃùâ& ÉóÿÛû?±þgáPÀÿ)õ¿ÿs¦ÿþoâðPÁÐôÏÐÿý?Y@ÿ?Ù¬ÿWg¸õÿü?ôÏòÿ²¡émÿ÷ôüG¸ÿ¸D0ý+ÿ7îÿf6þÛ÷ÿqÿèÿ)þüßXÿ± ÿlhúgð£þËüß²¡éÁÿõ?ÿ²¡é¡ÿ'ê?, ûlù¿íýØÿ³þ²¹Yÿ[õÿÄþ?eCÓÿÚþÏyý/Áþ
_«®oÏ
ÍÞ`"Mÿ÷?Cÿ, ÿ§lë¿®l®ôÿü_)¬ÿY@þ_6Ëãs>´æOëçU¸ÿ3HRôÿeÁ{ü[sÔý%÷ã\ø½áÿ¦ôÿ`ùÙxëx-«Cç6·,x;ÿ3ÿã Dý#I@(Þúï
-=lsý¬Ëãxü×~|6UQwNý'Sý§BÿÞô§¢·Wõöz»ÝåóÃ
-Yÿõ³i«º]ðwüåôÿá¡1í¡nOº*4.âÿu&x7àÔÍüßððPÔUgÚgká5wuµ7ÃT°¿;u.Ì]S¿oõðßÌXü0õ¿ñþý?xÀþ_6Þú(ë.?§r¹üõ?, pÿпlÈñÿ¤¿lÿ£÷?ó ýË\ÿë[]uã©ïܪâóÓþ©ÂþÄ/²þ7ÿñ°þ9@ü
-]ÿeµþiþþ.v¿hü÷ÿ½î;?ø¨p¿þ¿Yþ¿,Ç¿/O&"ýÉy(È9ÿÏê¿qþ<\ý_IÆI}¸úÀW'Øð.¸¾Û]ßüÝÿl°Tý×½>^r@îg¸×Óó±J±þcR
-½þ³íþþ°ÿ
-Yÿû¶|6KÜßÿwg1ôÏÁèï¬êûϸ^"Þú×)ü»ãÿìüw¡þÃÎËÿmã¯Æýg¸ãÿ¬ÿo àÿbáçsÕ¦n)ýLâX¦ÿ0¦ôý¹2îðÖµÀ þáGÔ8X<þ}ÝÔÇúñðà=þa¥Æÿñÿz÷O£ÏúÑä¥k
-à^ÿñÓþOÐýS6þú/êvæ¿Å_ÿaûx@ê_6DýwåÍtK®ÿX ÿtÿÇþÐÿöñ}`¿þû§Öè½ÏàÖ4Ñàü'!îÿÍÍú_ð§þÕ,þ¸ÿûõÞ¾
-ÄqãúÑ3üõ%ú¿³0|ûô/Åú/ZÝ=åUÝ¿×åù}ÜúæÿTaýÏBBéÚÉrý÷ÿa%îYÿUIú/ã?Þÿzþø¿bÔÿY Wþ¹æý¿ßöºÔÿBÄþÐ/þæÙ?Ãÿyý?ÃþødCÓQ?Öö|Ìí¥À¹c9àÖÿ¬þáü/)ꢡéÿ«x£Û~ìûÎ3üãª2øÿXÀýß²¡éÿE¿vy}Èu7üíÒ^Tö·ôÅÿ,ÿb1ÿ÷¤ÛKü¤×3úûÂûì×ÿ\nÖÿ þñ?ÞBÿÀÿ+þû×fÍúÖÃ÷?óð{UJ³Ç$ þ«óéÁ´6`Û ¹áÿñlýüBP2ýþ¯þ/hã¿¶ÿk:ÿaþ¯,¤1ì_¡é{ÿW
-ÿ'¨ÿʦÿê?,Àÿ%þü_Xÿ³ø/þ×öMõdê?, û+bþosÿÎò`¿~ø¿är³þ·òaÿÏü_²¡éeÿ×wú?ÄØÿ³ðI÷3\húgðAÿ,Àÿ%þ#ÿíÿÿ×öÐÆmÿ×4ÿâüR;8ÀäBÓ?Cÿ/ÔX }ÑÐôÏàÿÂþø¿dCÔ¿ý!ß~8Ü¥S§þÕ¬þFÿ,_®y@"4ý3ø?áÿ`þOÙÐôÏÐÿçÿYw $CÌÿoßÿëì×ÿ1ÂýR¹Yÿ«ø?gúáÿæ!ïà {±ÐôÏÐÿý?Y@ÿ?Ù¬ÿWg¸õÿü?ôÏòÿ²¡émÿ÷ôüG
-ý3 ² 7¢ÅÑÿ÷³@þ¸ÿôÿ
-Mÿþo¬ÿXÿC64ý3ø¿QÿeþoÙÐôÏàÿÄúÄÙÐôÏÐÿõÐýC6ÄüßöþOìÿY°_?úÊåfýoÕÿûÐÿS64ý¯íÿ×ÿbìÿYøµêúö\Øì
-&ÐôÏÐÿúgý?e³Xÿuesý¤gøçÿHaýÏòÿ²Yÿó¡5xZ?G¬ÂýüA¢ÿ/Þãߣî/¹çÂï
-ÿüO¤bôÿ`ùÙxëx-«Cç6·,x;ÿ3ÿãa
-þ9PÙ8âÿ®ÐÃFð1×Ϻ<ÇíÇgS¥ygAàÔ2ÕèÿÁÂþïTôöªÞ^/#s·»¼`~øA!ëÿ±~6mU·áÿ³üoþ?<4¦=ÔíIW
ƲBü¿Îï¦úO³iüGÿo&ºêLûl-¼æ®®öf
-öwçá³®Ñ
¹kêáþð˲þ7Þÿ£ÿØÿËÆ[ÿeÝåÇòT.W¿þ îÿaú
-9þôíâáþg Ùë}««n<õ[C at UÜrþsÚÿ/UØÿó°øECÖÿ¦ñ?òÿ, þË®ÿ²ZMÿÁ4ÿÿ;È_4þûÿ^÷|T¸_ÿßL¡ÿ/ÄñïËÉ`r
-rÎÿ³úo£ÿ'WÿWÙ «>\}`Á«lx\ßí®oþî6X ªþë^/9 ÷3Üë¿éù¿X¥Xÿ± )Ë^ÿÙvÿÿØÿɬÿ}[>%îoÿ;3ýs0ú;«úåþ3.·þõá`
-¿àîø?;ÿ¦¨ÿ°óß²!ÇÛø«1f¿àîø?ëÿkÐ??«îÜ4u;Lé¿`*Çý7u×GZï/;þÿËÿgé*ËBôÿc!¸3È^.Ëâ¿
-(}¿®¾ÅõßÀê_Ùû?PÿÝÅãß×M}¬_ ¿ÞãÿyñçÀü¿ÞýÕèâ³~4yéÚ¸ã8ÿ8Åý¿< õ/ýu»@óßâ¯ÿ0ÌÐÿ¤ÿdCÔ¿MÕc·äúÏó_cüOÿb!¸Wh.ý÷OÑ{Àÿh¢ÿ$@ý
-hnÖÿg8õÿoõ¿1þ¸ÿûõ!
-P 7®ÿ=Ã_ÿQÂÿÇ¿ô8 q,ÖÑêî)¯êþ½.ïïãÖÿ4ÿ§¢ël©Ee:FìÉrý÷a%îYÿïBýw{<Ǽÿ5ôü5ðE¨ÿ³@ÿ®üsÍû¿gù[ Düç Qáoýr¡éÿhÍqñ3ÜúÕÿ£ûpû·lhú/ê'ÓÚ¯¹½<w,ÜúÕÿÂý?XHa
-Mÿ_=À£üÝöc'èwáÿSÂÿÇÌ?²¡éÿE¿vy}Èu7üíÒ^Vö·ôÅÿ4ÿb1ÿ÷¤ÛKü¤×3úûÂûì×ÿ\nÖÿ þñ?ÑÿøeCÓÿÚ¬YÿSÓúoûø½*¥Ùc
-MÿÕùô`Z°mÀ\ÏpÇÿx¶þGþD¡(þ}Y
{û¿ø¿8 ÿÚþ¯éü?þ,¤1ì_¡é{ÿWÿ'¨ÿʦÿê?,Àÿ%þü_Xÿ³ø/þ×öMõ¤ê?, û+bþosÿÎò`¿~ø¿är³þ·òaÿÏü_²¡éeÿ×wú?DØÿ³ðI÷3\húgðAÿ,Àÿ%þ#ÿíÿÿ×öÐÆmÿ×4ÿâüR;8ÀäBÓ?Cÿ/ÔX }ÑÐôÏàÿÂþø¿dCÔ¿ý!ß~8Ü¥S§þÕ¬þ3ì /×AÀ< þüð° ÿ§lhúgèÿóÿ,Ä;L !æÿ·ïÿõ?öë»ÿ¯À@7ëÿçÔÿÇ!â?é½Â@04ý3ôÿCÿOÐÿO6käÿã¤ü?ôÏòÿ²¡émÿ÷lýfôÏÊÜ "þGÿOÜÿÍmüúâþ'ÐÿS64ý3ø¿±þcÉ_ÙÐôÏàÿFýø¿eCÓ?ÿëÿeCÓ?CÿOÔX@÷ÙóÛû?±ÿgÁ~ýèÿ)õ¿UÿOìÿY@ÿOÙÐô¿¶ÿs^ÿ°ÿgáתëÛsa³7BÓ?CÿOèôÿÍbý×Íõáÿ¢ ëÿÍòøßùÃÓú9bîçÿýYðÿÖuÉý8~oøç"áü/ÈÿÈÆ[ÿÃkYê¼8·¹ý`Á3ÜùéüÛ#Ð?*G P¼õßzØ>æúYÇñø¯ýølª¢4ï,úO¦úOãýÿXxÓÿÞ^ÕÛëedîvÌ?(dý?ÖϦêvÁ3Üñÿ
-pÿ+iu{ÒUa q¬ÿ¯3Á»é §þÓlÿÑÿ¢®:Ó>[¯¹««½¦ýÝyø¬ktaîúex«?üf¦Àrà¬ÿM÷ÿQþ<`ÿ/oý?uËS¹\
-þúS
ûXþeCÿ'ýeËøûyþeC®ÿõ®ºñÔwn
-UqËùÏiÿ¿TaÿÏÃâ
-YÿÆÿ8ÿgñ_6týÕjú¦ùø¸ØAþ¢ñßÿ÷ºïü\à£Âýúÿfúÿ²@ÿ¾<| ö'ç¡ çü?«ÿÆ1úòpõ%YeaðáêÞ©¯ïë»ÝõÍßýÏ+AÕÝëã%ä~{ý7=ÿ«ë? eÙÐë?[îÿàÿà
û?Ùõ¿oËg³ÄýMñGqª FgU¿ÜÆEðñÖ¿>Láw Üÿgç¿Ãõpþ[6äøo5Æì<ÃÿgýmK0èÏUwnº¦ô_0cþCJÛ¯;ü
õ8Kÿ#PY£ÿKÇ¿¯úX?¾nÝÿiÿ0Ȭÿã¿=ÞãÿõêFõ£ÉKçÀ½þ'ã'¸ÿ,ÿeãÿ¢nhþ[üõê, û¯lhúïÊèÜþáwþãÿáÿæ!¸Wh,oý÷OÑ{¯À?þ'AøÏâ¿lnÕÿg8õÿMþÿ¢ÿ(Ëpÿöëÿø6¸
-\·ÿ= ÿ8Aÿwþ¥ÿÃá ýc©þVwOyU÷ï5yþÜúÖT"ÿÏÒ?e:F@*õ?^ÿG{¸gýWê¿øÿxý£·ÄüU¡þÏiü»òO ñÿú¿ñ¨ð7¹ô4Ïæ¸ünýÏêÿÂþäÿeCÒQ?Ö¶|ÌíÀ¹k9àÖ4ÿ
Îÿ²"é/þ¿zGù7ºíÇF°ï=Ã?þ§
-õ`þ
-Iÿ/úµËëC®»á/öî ²¿ý3%þ§òÿ,¨dhù¿'Ý^: ä'Ý8áÔÿ¬þ«ûì×ÿ\nÕÿ þëÿ8Bÿÿ
-Iÿýk³jýoæÿ U
-ý³ð{UJ³Ç, þ«óéÁ´6`» 9áÿñ4þÈÿñ(¬ $CÐÀâÿ
-áÿâ4þ«û¿¦óÿ°þCÿWÒö/ÉôÏáÿÿÔeCÒ?ÿ+Dýø¿dCÒ?ÿëÿeCÒÿêþ¯Yÿ§4DýdeCËÿ1ø¿°ÿgÁ~ýðÉåVýoæÿBÿ7ÿeCÒÿÚþ¯ïôȰÿgáî5¦ ¹ôÏáÿþYÿK6ýG,þ¯þ/H㿺ÿkÿ qþD©`r!éÃÿ
ú´/þ9úaÿÇü_²¡éßþïËN?Mî©SÿjªÿXáü?Áë `IÿþOø?XÿS6$ýsôÿÃùâ& ÉÐòÿþO¬ÿY°_ÿÿ3Âýò¸Uÿëø?gþ÷ÿñÜ'P½`HúgèÿáþÐÿO6+äÿënýÏóÿ)ôÏòÿ²!éuÿ÷ôüG8ÿŰÐÂ
- !è_±ø¿qÿ7¤ñçèÿüèÿ)þ9üßXÿ± ÿlHúçèÿú/ðˤÿ'Öÿ, þˤþê?, ûlhù?ÿ'öÿ,دý?år«þ7ëÿþ/, þˤÿÕýóú_ý?¿V]ß¾ÁL þ9úBÿ, ÿ§lê¿®l®öÿõF¨ÿ±ü¿lÇÿæ|h;ÖÏ«p?ÿgèÿËïø·æ¨ûKîǽð{ÃþìÿxÀêO6¾ú^ËêPçŹÍíKáÎÿLçÿ(KPÿeAeã`¯þ»BÁÇ\?ëò8ÿµMUæ½SÿÉTÿi¡ÿoú¿SÑÛ«z{½ÌÝîòùá
ªÿÇúÙ´UÝ.y;þOó¿Qû_yhL{¨Û®
-äöø ÞO8õf3ÿ7úóPÔUgÚgëá5wuµ7ÃT°¿;u.Ì]S¿oõðßÌXü0Põ¿õþý?xÀþ_6¾ú(ë.?§ÒCþú÷ÿ° ýËÿOú˶ñúgú
-µþ×·ºêÆSß¹5TÅMç?§ýÿÒ ûv¿h¨úß:þÇÈÿ³ø/²þËj=ýÓü?ü?\ì Ñxïÿ{Ýw.ðQá~ýÓýY _L>D ûûPsþÕãý?y¸ú¿,`÷áê>\`ûàúnw}ówÿ³ÁJõ_÷úxÉ-x{ý7ëÿ1üòAÿ@ʲ!×6ÞÿÁÿÁö²¡êßÏfûäÿú±0ú;«úåþ3.¯þõá`
-Ïàþëÿ(TôÏÎËÿmã¯Æýg¸ãÿ´ÿoÅð±ðó¹êÎMS·Ãþæq,Ó¹?RëqïSÿQY:l PÿaÀcüsÛªÿzà/oëeÏp¯ÿ¦þ¿(ÿaádª3¦}¹ôïúq¯ÿf÷?&¸ÿ]4enHèÿóíÍÑ:~ÏpÇÿéý¶ ôÏAAøYÿè»?¿ý_2ÌÃþO
-KìÿX<þ}ÝÔÇúñðà=þa¥)Æÿñÿzùk£ÏúÑ«GÇ3Üñ?âüèÿ.ýu»@óßâ¯ÿaùý? ô/¢þ»òÁ»îL§ñ?IÑÿÞæ ±øë¿jÞûÌ >ù¿þaýs ñËæfý/xSÿjÿýX°_ÿÇ À1¡Ü¸þ_ôýG ê<¼éÿp8@ÿY¬ÿ¢ÕÝS^Õý»×ü¼[ÿÓü"¬ÿYØÅid:öe²\ÿãð¤gX{ÖUû_Yðÿ²Ú/áý®óú?´ñïÊ?=îwçÿiý/Düç!Qáoýr¡éÿhÍqñ3Üú×ÿ3ìÿYÀùoÙÐô_ÔO¦µMÿócYÙlà_.ÜúÕÿ¢ õÒdhúÿêåß趯yçþñ?Uü,Àÿ+þ_ôk×\wÃß.íå±eÿþ@øðÿ³ RL !æÿt{étãzSÿsÿOcÿÏýúáÿËÍú_p À?þÇqý?ðÿʦÿþµY³þ§¦õß0DÿG~¯ÊCiöBÓu>=Öf lX×3Üñ?ÿÿã!Q¨ J¢ÿÃÿ
þ¯,ÐÆmÿ×tþÃýÿYHcØ¿$CÓÿöþ¯þOPÿ
-Mÿþ/ÔXÿK64ý3ø¿°þgñ_64ý¯íÿê?ÉÔX@öW6Äüßæþ/ÿäÁ~ýðÉåfýoåÿÂþø¿dCÓÿÊþ¯ïô±ÿgáî5f ¹ÐôÏàÿþYÿK6ýû^gîíÿÊàÿâ6þkû¿¦ùçÿHÚÁ&þú¡þÃÒ?²¡éÁÿ
ýðɨûC¾/;ýp4¹K§Ný«Yý'ÿY¾\óDhúgðÂÿÁü²¡é¡ÿÎÿ³ï0Hÿß¾ÿÖÿ,دßÞÿW` õ¿ÿs¦ÿþoÔîPÁÐôÏÐÿý?Y@ÿ?Ù¬ÿWg
òÿÐ?Èÿ˦ÿµýßÓóqeÐ?*p`(úWþoÜÿÍmüúâþ'ÐÿS64ý3ôÿÄúø?dCÓ?ÿõ_àÿ
-MÿþO¬ÿY@ü
-Mÿý?QÿaÝ?dCÌÿmßÿûì×þr¹Yÿ[õÿÄþ?eCÓÿÚþÏyý/Æþ
_«®oÏ
ÍÞ`"Mÿý?¡ÐÿS6õ_W6×Ozþ/Öÿ, ÿ/åñ¿9Zó§õsÄ*ÜÏÿ$ úÿ²à=þ9êþûq.üÞðÏÿD*Fÿÿ·þײ:ÔyqnsûÁg¸ó?Óù?BÔYPÙ8âÿ®ÐÃFð1×Ϻ<ÇíÇgS¥ygAàÔ2ÕèÿÁÂþïTôöªÞ^/#sw)ßa~øA!ëÿ±~6mU·áÿ³üoþ?<4¦=ÔíIW
ƲBü¿Îï¦úO³iüGÿo&ºêLûl-¼æ®®öf
-öwçá³®Ñ
¹kêáþð˲þ7ÝÿGúðý¿l¼õÿPÖ]~,Oår5øëß. ÙãÿIÙ4þCÿ,@ÿ²!×ÿúVWÝxê;·ª¸åüç´ÿ_ª°ÿçañ¬ÿMãlBÿ þË®ÿ²ZMÿÁ4ÿÿ8ø-ÿý¯ûÎÏ>*ܯÿo¦Ðÿâø÷åÉäC°?99çÿYý7Ñÿ«ÿ+É ®>°àÃÕ 6¼®ïv×7÷?¬Uÿu¯ûîõßôü_¬R¬ÿXeC¯ÿl¹ÿÿìÿdCÖÿ¾-Í÷7ÅÿÅY ýs0ú;«úåþ3.·þõá`
-¿àîø?;ÿ¦¨ÿ°óß²!ÇÛø«1f¿àîø?ëÿk¯
þøù\u禩ÛaJÿS8ê?¥ôý¹2îð}ê?*S¨ÿð°xüûº©õã+áÁ{üÃ ËÆÿñÿz÷O£ÏúÑä¥k
-à^ÿÏòÿiüèþ)ýu»@óßâ¯ÿ0RÈÿ± ý˨ÿ®|°YnÉõô?Ûÿ')ú?²Æ÷Q9@,þúïZ£÷>3[ÿ³ûîÿå!L!~ÉܬÿÏpêÿ;ùÿþ?ì×ÿ1/ã©@7®ÿ=Ã_ÿQ¡þÇÂðí>пPë¿hu÷Wuÿ^ç÷qëÿSQõ?EtÊtíËd¹þÇûÿHϰ÷¬ÿª4@ýÏñï=
-üÇøõhãß®yÿï¬ÿS"þó¨ð7~¹Ðô4Ïæ¸ønýÏëÿèÿÈêÿ²¡é¿¨Lk{>æöRàܱpëVÿÔÿYHcL ¡éÿ«x£Û~ìûÎ3üãðÿ±û¿eCÓÿ~íòúënøÛ¥½<¨ìoéÿ<ÿY ÿ?
-þÑóOº½´ ÈOºq=éÿ¹ÿ'±ÿgÁ~ýðÿÈåfý/8 àÿã8ÂþøeCÓÿÚ¬Yÿßÿ6Ì Ð?¿Wå¡4{LB¡é¿:Lk3 ¶
-ëîø?»ÿ=BþD¡(þÿíÿÿ×öÐÆmÿ×tþÃýYHcØ¿$CÓ?ÿþOPÿ
-Mÿþ/ÔXÿK64ýoîÿRÖÿ, þ˦ÿµý_Sý'YúÈþÊÿÛÞÿ
ý?öëÿK.7ë+ÿöÿ,Àÿ%þWö}¯ÿöÿ,|Ò½Æ þ7÷
Èÿñ ÿl(ú8ú
ðq@ÿµý_ÓüOóL$Jíà Mÿþ/ÔXÀõß²¡éÁÿ
ýðɨûC¾/;ýp4¹K§Ný«Yý'ÿY¾\óDhúgèÿÿðʦÿíûÿáþoâ& ÉóÿÛû?±þgÁ~ý#Üÿ'õ¿ÿs¦ÿþoÂø>ü ºMÿýÿÐÿôÿÍùåx[ÿßÉÿCÿ, ÿ/þ×öOÏÄQBÿ¨,À 0ÁPô¯8ü߸ÿÚø3ôÿÄýO, ÿ§lhúgðcýÇü²¡éÁÿú/ð˦þXÿ³ø/þú¢þúÈÿÛÞÿý?öëGÿO¹Ü¬ÿúbÿÏúʦÿµýóú_ý?¿V]ß½ÁD þúBÿ, ÿ§lë¿®l®ôÿü_)¬ÿY@þ_6Ëãs>´æOëçUørÿglõ¤üxkº¿ä~¿7üó?JÐÿädãÿᵬu^ÛÜ~°àîüÏtþý?YPÙ8âÿ®ÐÃFð1×Ϻ<ÇíÇgS¥ygAàÔ2Õ(ÔYxÓÿÞ^ÕÛëedîvÌ?(dý?ÖϦêvÁ3Üñÿ
-ÐÿÆ´º=éª0и@Vÿ×àÝtSÿi6ÿèÿÁDQWi
×ÜÕÕÞSÁþî<|Ö5º0wMý2¼ÕÃ~3S`9ðÃ@ÖÿÆûÿ ÷±ý¿l¼õÿPÖ]~,Oår5øëX ÀÿÁô/rü?é/ÛÄÿ±þáþg Ùë}««n<õ[C at UÜrþsÚÿ/U8ÿÁÃâ
-YÿÆÿ8ÿgñ_6týÕjú²¹þÿgaùÆÿßë¾ós
-÷ò«ÌÆø¿·8þ}y2ùìOÎCAÎùVÿãõ®þ¯$n|¸úÀW'Øð.¸¾Û]ßüÝÿl°Tý×½>^r@îg¸×áTÿ*EþHY6ôú϶û?ÜÿÂö²!ëßÏfûÛ×ÿmãg¨ÿ°0ú;«úåþ3.·þõá`
-¿àîø?;ÿf¨ÿ°óß²!ÇÛø«1f¿àîøÎüß
-þO~>WݹiêvÒÁT eúW;Jß+ãqý'üAüJ%¨ÿp°xüûº©õã+áÁ{üà ËPÿcÁü¿ÞýÓèâ³~4yéZ¸×ÿádüãýy@ÿ?Ùøë¿¨ÛÿýBÿ7ú
-Qÿ]ù`³ Ýë?è?Æÿ$
ÿÞæ ±øë¿jÞûÌ nýGý'*@þ
²hnÖÿg8õ¯fñ?HàÿaÁ~ýÿo ÄT ×ÿá¯ÿ(àÿgáMÿÃúÈbýîòªîßëòü>nýOó*BÿWvqªLÇоLë¼ÿô+qÏú¯JÔ9ðÿñþÇÐó×ÀüPÿg6þ]ùç÷ÿþ[ÿ§ðrÿ/â?
-CèMÿGóláÖÿ¼þóÿ<àö_ÙÐô_ÔO¦µ=s{)pîX¸õ?«ÿEêÿ,¤1& ÉÐôÿÕ<Ê¿Ñm?v}çþñ?
-øÿXÿW64ý¿è×.¯¹î¿]ÚËÊþþϳøðÿ³ pþW4Äüßn/- òn\Ïpêîÿ cìÿY°_?ü?r¹Yÿ øÇÿ8Æý<Àÿ+þû×fÍúÖÃaþ9ø½*¥Ùc
-MÿÕùô`Z°m\ÏpÇÿxÿ#äÿxH*¡è?`ðÙþðmmü×öMçÿ0Ðÿ
4ýK24ý3ø¿àÿdõ_ÙÐôÏàÿBýø¿dCÓÿæþ/aýÏâ¿lhú_Ûÿ5Õ¨ÿ°ì¯lù¿íý_Øÿ³`¿~ø¿är³þ·òaÿÏü_²¡éeÿ×÷ú?`ÿÏÂ'ÝkÌ r¡ésÿWüðÉ¢ÿ£ÿWÿ´ñ_Ûÿ5Íÿ8ÿÇD¢Ô0¹ÐôÏàÿBýÜý#þü_Øÿ± ÿlú·?äû²ÓG»têÔ¿ÕÂñ
àËu0H¦þð° ÿ§lhúß¾ÿîÿæ!ÿC4ÄüÿöþO¬ÿY°_¿½ÿ¯À@$7ëÿçLÿ1üß<¨Ý}\húgèÿþ, ÿlÖÈÿ+Ç3HùèäÿeCÓÿÚþïéù8^ TàÁPô¯8ü߸ÿÚø3ôÿÄýO, ÿ§lhúgðcýÇü²¡éÁÿú/ð˦þXÿ³ø/þú¢þúÈÿÛÞÿý?öëGÿO¹Ü¬ÿúbÿÏúʦÿµýóú_ý?¿V]ß½ÁD þúBÿ, ÿ§lë¿®l®ôÿü_)¬ÿY@þ_6Ëãs>´æOëçU¸ÿ3HRôÿeÁ{ü[sÔý%÷ã\ø½áÿTþ, ÿ#oý¯eu¨óâÜæöÏpç¦ó¨ÿ² ²q0 Å[ÿ]¡àc®uyÿÚϦ*JóÎÀ©ÿdªÿ4QèÿÁÂþïTôöªÞ^/#s·»¼`~øA!ëÿ±~6mU·áÿ³üoþ?<4¦=ÔíIW
ƲBü¿Îï¦úO³Yÿ_ø?x(êª3í³µð»ºÚa*ØßϺF殩_·zøÃof
-,~Èúßxÿþ<`ÿ/oý?uËS¹\
-þú ¸ÿè_6äøÒ_¶ÿQûyþeC®ÿõ®ºñÔwn
-UqËùÏiÿ¿TaÿÏÃâ
-YÿÆÿ8ÿgñ_6týÕjú¦ùø¸ØAþ¢ñßÿ÷ºïü\à£Âýúÿf!úÿ²@ÿ¾<| ö'ç¡ çü?«ÿÆ1úòpõ%Yí~
->\}`Ã;õõ]p}·»¾ù»ÿÙ`%¨ú¯{}¼äÜÏp¯ÿ¦çÿbbýǤ,zýgÛýü<`ÿ'²þ÷mùl¸¿)þï(Î"èÑßYÕ/÷qT"Þú×)ü»ãÿìüw¡þÃÎËÿmã¯Æýg¸ãÿ¬ÿ¯ýúgàçsÕ¦n)ýLâX¦ÿ0 ôý¹2îð}ê?*SAúÇ¿¯úX?¾~¼Ç?2ôâÁü¿ÞýÓèâ³~4yéZ¸×ÿ³ü£ÿèÿ'ýu»@óßâ¯ÿ0
-°ÿgÝeCÔW>Ø,@·äúúíÿûTxFÄâ¯ÿþ©5zï3¸õ?»ÿ7ÿµÑܬÿÏpêÿ;ùÿõì×ÿÑÀ³`*ÇëÿEÏð×8ÿÍÂþô/Åú/ZÝ=åUÝ¿×åù}ÜúæÿTaýÏÂ.NÃ2Cû2Y®ÿñþ?Ò3¬Ä=ë¿*Q¨ÿrà9þãý¡ç¯ÿø«(FýÚøwåkÞÿ;ëÿÿ<$*ü
-¡_.4ýͳ9.~[ÿóúý?¨ÿ˦ÿ¢~2íùÛKsÇrÀÿYý/DÿWÒdhúÿêåßè¶;Á¾óÿø*ÿãþ_ÙÐôÿ¢_»¼>äºþvi/*û[ú?ÏâÀÿÏJ1Hÿ{Òí¥@~ÒëNýÏý?¸ÿ ûõÃÿ#õ¿à ücÜÿÄü¿²¡é¿mÖ¬ÿÍï#ôÿdá÷ª<fI@(4ýWçÓimÀ¶r=Ãÿg÷¿£ÿBP2ýû6²
-÷öáþhã¿¶ÿk:ÿdÿ9HcØ¿$CÓ?ÿþOPÿ
-Mÿþ/ÔXÿK64ýoïÿJ±þgñ_64ý¯íÿê?I3ÔX@öW6Äüßöþ/ìÿY°_?ü_r¹Yÿ[ù¿°ÿgþ/ÙÐô¿²ÿë{ý°ÿgáî5f ¹Ðô¿½ÿù?àÿ
-Eÿÿ+ÿÚø¯íÿæBÿc"Qj\húgð¡þÃîþ
-Mÿþ/ìÿXÿK6DýÛò}Ùé£É]:uê_Íê?aøÏBðå:$BÓ?Cÿ?ø?XÿS64ý3ôÿÃùâ& ÉóÿÛû?±þgÁ~ýöþ¿[ ܬÿUü3ýÇðó v÷!j r¡é¡ÿú²þ²Y#ÿ¯Ï åÿ¡ÿ
-Mÿkû¿§ç?â0 TàÁPô¯8ü߸ÿÚøoßÿ3ÂýO, ÿ§lhúgðcýÇü²¡éÁÿú/ð˦ÿ'Öÿ, þ˦þ¨ÿ°î²!æÿ¶÷bÿÏýúÑÿS.7ë«þØÿ³þ²¡émÿç¼þcÿϯU×·çÂfo0¦û¡ÐÿS6õ_W6×Ozþ/¬ÿY@þ_6Ëãs>´æOëçU¸ÿ3HôÿeÁ{ü[sÔý%÷ã\ø½áÿTþ, ÿ#oý¯eu¨óâÜæöÏpç¦ólKBÐ?*G P¼õßzØ>æúYÇñø¯ýølª¢4ï,úO¦úOíôÏÀþïTôöªÞ^/#s·»¼`~øA!ëÿ±~6mU·áÿ³üoþ?<4¦=ÔíIW
ƲBü¿Îï¦úO³iüGÿo&ºêLûl-¼æ®®öf
-öwçá³®Ñ
¹kêáþð˲þ7ÝÿGúðý¿l¼õÿPÖ]~,Oår5øëß þ9þeCÿ'ýeËøûyþeC®ÿõ®ºñÔwn
-UqËùÏiÿ¿TaÿÏÃâ
-YÿÆÿ8PÈÿ³ø/ºþËj5ýÓü?ü?\ì Ñøïÿ{Ýw~.ðQá~ý3
þ¿,Ç¿/O&"ýÉy(È9ÿÏê¿qþ<\ý_IF?EÑ«,øpu
-ïë»ÝõÍßýÏ+AÕÝëã%ä~{ý7=ÿ«ë? eÙÐë?[îÿàÿàû?Ùõ¿oËg³ÄýMñGqCÿþΪ~¹ÿà%â}8Âï ¸;þÏÎ)ê?,àü·lÈñß6þjÙ/x;þÏúÿÚ-ôÏÀÏçª;7MÝSú/
-ıLÿ?QÚþ|eÜá/®ÿ«,Ðÿ
¥ãß×M}¬_·ïÿØþOÿ1þÛã=þ_¯þitñY?¼t.Üëÿp2þqÂÿÉÿ²ñÖQ·K4ÿ-þú@ý
ú
-Mÿ]ù` ÝÛ?|Ï\â?ú?ñÜ+´ ·þû§Öè½×àÿø¿ø âÍú_ò§þÿ-ÿ\ü?¸ÿûõ¼ÌÁ° ä¶õÿ²gô'èÿοô8 q,ÕÑêî)¯êþ½&Ï[ÿÓõ¿
-ÔÿYã4Üg:FìÉbý×ÿÑa%îYÿ
-²õ_üƼþ1ôý5ð¦¨ÿ³@ÿ®üÓç&@güåÿC
øÏC¢ÂßúåBÒÿÑ<ãòg¸õ?«ÿG
-ûpû¯lHú/ê'ÓÚ¹½8w-Üú¦õ¿aþ9HcL !éÿ«x£Û~lûÞ3üãªPÿçæÙôÿ¢_»¼>äºþriï*û÷Û?SâþÏ<¨dhù¿'Ý^: ä'Ý8áÔÿ¬þ«ûì×ÿ\nÕÿ þëÿ8Jàÿgþ_Ùôß¿6«ÖÿÔ´þ*ôÿáá÷ª<fY@($ýWçÓimÀvr>Ãÿãiüÿã!Q¨ J ÿÅÿÀÿÅiüW÷MçÿP%èÿÊBÃþ%þü_èÿÈ꿲!éÃÿ
úðɤÿÖÿ, þˤÿÕý_³þOiúÈþÊÿÛÞÿ
ó<دþ/¹ÜªÿÍü_èÿÆü_²!émÿ×wú?àþG>é^c
-Iÿþ/èø¿dCÐÄáÿ²ýáÿÚÒø¯îÿæBÿc"Qj\Húçèÿ
ú¸ÿK6$ýsø¿°ÿcþ/ÙÐôoÈ÷e§&wÊÔ©5Õ¬pþàËu0H¤ÿ'ü,Àÿ)þ9úÿáü?ñdhùþXÿ³`¿þ·ûÿ
-läq«þ×ñNý_q þ³Þ+lCÒ?Gÿ?ÜÿÁúÿÉf
ü¿r=ÿþY@þ_6$ý¯îÿÿÃç¿XPY@Cпbéÿû¿Y ?GÿOÜÿÄúʤÿ7Ö, ù+þ9üߨÿ² ÿ·lHúçðbýÏâ¿lHúçèÿúèþ!ZþÁÿý?öëGÿO¹ÜªÿÍú¢ÿèÿ)þW÷Îë)öÿ,üZu}{.lú3@Húçèÿ ý³þ²Yªÿº²¹~Ú3ü×ÿA¡þÇòÿ²Yÿó¡5øZ?G¬Âýü}ÿßñoÍQ÷Ü{á÷ÿüØÿñül|õ?¼Õ¡ÎsÛ<ÃÿÎÿQ£þËÊÆÀ, _ýw
6¹~Öåq<þk?>ª(Í{§þ©þÓ8Dÿ?Þô§¢·Wõöz»ÝåóÃ
-Uÿõ³i«º]òwüæ£÷¿òÐöP·']Èíñÿ:¼pê?Ífþoôÿ桨«Î´ÏÖÃkîêjo©`w>ë]»¦~Þêá¿)°øa êëý?úðý¿l|õÿPÖ]~,O¥üõ&1îÿaú
-5þôMã?îæú
-µþ×·ºêÆSß¹5TÅMç?§ýÿÒ ûv¿h¨úß:þGÈÿ³ø/²þËj=ýÓü?ü?\ì Ñxïÿ{Ýw.ðQá~ýÓýY _L>D ûûPsþÕãý?y¸ú¿,Òv®>°àÃÕ 6¼®ïv×7÷?¬Qÿu¯Ðg¸×³þ*ÀúHY6äúÏÆû?ø?xÀþO6TýïÛòÙ,rüß±Bÿ/FgU¿ÜÆEðñÕ¿>Láy Üý
îfç¿eCÿ¶ñWcÌ~É3ÜñÚÿ7Ê"ø¿Xøù\u禩ÛaNÿs8é?IÞwøë?ç2¥Pÿaañø÷uSëÇWÂ/÷øA
üÇÿëå?.>ëG®Eßúß&Èÿ±î²ñ×Q·4ÿ-þú#äÿxÀõ²!ê¿+l [éþtÿù?Âø>J0Å_ÿýSkôÞgpë?è?Qαa õ¿àNý«YüøÿX¾ýøãu0ãÆõÿ¢gøë?JPÿãaøöè_(õ_´º{Ê«º·Íó»¸õ?Íÿ©(Æú§ÊtíËd¹þÇ Iϰ÷¬ÿªT¡þËçø@ÿ½Ìÿ êÿ,ÐÆ¿+ÿô¸ÐÿÿÿÓXÿÿyHTøB¿\hú?gs\ü·þçõÿûàÿ
-MÿEýdZÛô1··çå[ÿ³ú_ó?<¤¨ÿ¦ÿ¯àQþnû±ì;ÏðÿiÀÿÇîÿ
-Mÿ/úµËëC®»áoöò ²¿4!þgèÿÅJ1Hÿ{Òí¥@~ÒëNýÏý?!îá!ÿG47ëÁ ÿøÇöÿ,Àÿ+þû×fÍúÖÃ0N ~¯ÊCiöBÓu>=Öf l ×3Üñ?Æÿù?
- d(ú8ü_ü_ÐÆmÿ×tþ·Ìÿ¤1ì_¡éÁÿÿ'¨ÿʦÿê?,Àÿ%þ7÷©ëÿeCÓÿÚþ¯©þ,@ýdeCÌÿmïÿÂþ
þ/Ñܬÿü_Øÿ³ ÿlhú_Ùÿõ½þØÿ³ðI÷3\húßÜÿ"ÿÇü_²¡è?âðEðq@ÿµý_ÓüOóL$Jíà Mÿþ/ÔX }ÑÐôÏàÿÂþø¿dCÔ¿ý!ß~8Ü¥S§þÕ¬þFÿ,_®y@"4ý3ôÿÿø?eCÓ?Cÿ?ÿg!Þa1ÿ¿½ÿë{ÿ_-TnÖÿ*þÏþcø¿yû(îÅBÓ?Cÿ?ôÿdýÿd³Fþ_9áÖÿwòÿÐ?Èÿ˦ÿµýßÓóqDÐ?*p`(úWþoÜÿÍmü·ïÿãþ'ÐÿS64ý3ø¿±þcþÙÐôÏàÿFýø¿eCÓ?ÿëÿeCÓ?CÿOÔX@÷ÙóÛû?±ÿg!@ÿOÑܬÿúbÿÏúʦÿµýóú_ý?¿V]ß½ÁD þîþY@ÿOÙ,Ö]Ù\?éþù¿ RXÿ³ü¿lÇÿæ|hÍÖÏ«p?ÿg¤èÿË÷ø·æ¨ûKîǹð{Ã?ÿ3LÿèÿÁò?²ñÖÿðZV:/Îmn?Xðwþg:ÿÇAú/*G P¼õßzØ>æúYÇñø¯ýølª¢4ï,úO¦úO
þ,¼éÿNEo¯êíõ22w»Ëæ²þëgÓVu»àîø?ËÿèÿÃCcÚCÝtUh\ +ÄÿëLðn:À©ÿ4ù¿áÿࡨ«Î´ÏÖÂkîêjo©`w>ë]»¦~Þêá¿)°øa ëãý?úðý¿l¼õÿPÖ]~,Oår5øëX àþ ÙãÿIÙ.þGîæú
-¹þ×·ºêÆSß¹5TÅ-ç?§ýÿR
ý?;_4dýoÿãa ýsø/ºþËj5ýÓü?ü?\ì Ñøïÿ{Ýw~.ðQá~ý³ýY _L>D ûóPsþÕãý?y¸ú¿Ì6] ?\}`Á«lx\ßí®oþî6X ªþë^/9 ÷3Üë¿éù¿X¥Xÿ± )Ë^ÿÙvÿÿØÿɬÿ}[>%îoÿ;³úç`ôwVõËýg\/oý
ëÃÁ~ÀÝñvþ;ÌPÿaç¿eCÿ¶ñWcÌ~Á3ÜñÖÿ7Pð±ðó¹êÎMS·Ãþ¦qLõ_uçYÞq2îðÖÔðùð>Qÿáàûã¿?+þøf Æ÷ǿܯõ+à7þÊj×ÿÿíùËñ/ÊnXëµ¥^~ßã÷þOMÆ?KÑÿ,ùdóúoÚz.úüÙ´Ýû×»9që?ý÷øüÿ<ü/ó|ÐrùKýÚ¯öºü¼[ÿñdýÙ%ôÏÀ?ÿëÔ/Eñ¿Ò'Zç÷Ný«éþ?Sø?Xøô¿þùü_ÿõOÌBùKý½>öÞ[ÿÑDÿi¡þÃ
-ÿJþÛ°áú SDÜú¿}àÔNã¿
-ÿcá>Õ¦*¿Üý¿¦xªêcýXîîôûÿ
-ÓþZÿµn÷·®þ)ëÿ4
ÿ¬ÿe³@ÿæÏ{ýH};ÿ§¦ñ?áÿfÂÍýßXý#ÔÿTÇÐ?¨ÿÉæ¯óÿöpÐí.0«p?ÿW:öÿÿk{ÿþlÎÍ
-Ïð[ÿþ¯0ÂüϦ~Ùü¥þÏæÙT·ÿÖ»ôÎü©RèÿÁÂýßþù?~ýçÿó¿Cþçê-üm:Øf?jÿç§ÿùÏÿOݧÿxØÿ«jôî¹úç}úGS½eþÑ<·Ã¢2üG{ùöë´oP\þ èÃhxßþSÐßÈ"ÿÇù\.9ç÷Îø'Óý_ÂÿÅBìvqü)¸CßúO¥îÿûî§ÿ¼ÿÏ$øÏL%ÿ]Åÿ'üÀ,:ÿ±¹ÿ{²þÇôÏ ´-%þӿ꿳úOàü×E=æ,ÿýk³©ÿûÛþ?ü_ ÿÇBAùYTÿ½Ñ êÖÿìüWÀÿÅÎÉfþoìþ@9ÿú¾ê$Ív8ÿ!Eëÿ ü_û?xêeóú?Õ{},õÂ6¿ïâÒÿ°Ýú¿â ç?Y@Ù_6ë7e üöÿþo¨ÿóý¿lù¶îÿ8ßÿ§!ê,`ÿ ÿfÔr p5
\ No newline at end of file
Deleted: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/48amd64-4d2n6c.tar.gz.output
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/48amd64-4d2n6c.tar.gz.output 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/48amd64-4d2n6c.tar.gz.output 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,222 +0,0 @@
-Machine (phys=0 total=100661148KB AMD DRACHMA)
- Socket #0 (phys=0 total=25163676KB)
- NUMANode #0 (phys=0 local=8386460KB total=8386460KB)
- L3Cache #0 (5118KB)
- L2Cache #0 (512KB)
- L1Cache #0 (64KB)
- Core #0 (phys=0)
- PU #0 (phys=0)
- L2Cache #1 (512KB)
- L1Cache #1 (64KB)
- Core #1 (phys=1)
- PU #1 (phys=1)
- L2Cache #2 (512KB)
- L1Cache #2 (64KB)
- Core #2 (phys=2)
- PU #2 (phys=2)
- L2Cache #3 (512KB)
- L1Cache #3 (64KB)
- Core #3 (phys=3)
- PU #3 (phys=3)
- L2Cache #4 (512KB)
- L1Cache #4 (64KB)
- Core #4 (phys=4)
- PU #4 (phys=4)
- L2Cache #5 (512KB)
- L1Cache #5 (64KB)
- Core #5 (phys=5)
- PU #5 (phys=5)
- NUMANode #1 (phys=1 local=16777216KB total=16777216KB)
- L3Cache #1 (5118KB)
- L2Cache #6 (512KB)
- L1Cache #6 (64KB)
- Core #6 (phys=0)
- PU #6 (phys=6)
- L2Cache #7 (512KB)
- L1Cache #7 (64KB)
- Core #7 (phys=1)
- PU #7 (phys=7)
- L2Cache #8 (512KB)
- L1Cache #8 (64KB)
- Core #8 (phys=2)
- PU #8 (phys=8)
- L2Cache #9 (512KB)
- L1Cache #9 (64KB)
- Core #9 (phys=3)
- PU #9 (phys=9)
- L2Cache #10 (512KB)
- L1Cache #10 (64KB)
- Core #10 (phys=4)
- PU #10 (phys=10)
- L2Cache #11 (512KB)
- L1Cache #11 (64KB)
- Core #11 (phys=5)
- PU #11 (phys=11)
- Socket #1 (phys=1 total=25165824KB)
- NUMANode #2 (phys=2 local=8388608KB total=8388608KB)
- L3Cache #2 (5118KB)
- L2Cache #12 (512KB)
- L1Cache #12 (64KB)
- Core #12 (phys=0)
- PU #12 (phys=12)
- L2Cache #13 (512KB)
- L1Cache #13 (64KB)
- Core #13 (phys=1)
- PU #13 (phys=13)
- L2Cache #14 (512KB)
- L1Cache #14 (64KB)
- Core #14 (phys=2)
- PU #14 (phys=14)
- L2Cache #15 (512KB)
- L1Cache #15 (64KB)
- Core #15 (phys=3)
- PU #15 (phys=15)
- L2Cache #16 (512KB)
- L1Cache #16 (64KB)
- Core #16 (phys=4)
- PU #16 (phys=16)
- L2Cache #17 (512KB)
- L1Cache #17 (64KB)
- Core #17 (phys=5)
- PU #17 (phys=17)
- NUMANode #3 (phys=3 local=16777216KB total=16777216KB)
- L3Cache #3 (5118KB)
- L2Cache #18 (512KB)
- L1Cache #18 (64KB)
- Core #18 (phys=0)
- PU #18 (phys=18)
- L2Cache #19 (512KB)
- L1Cache #19 (64KB)
- Core #19 (phys=1)
- PU #19 (phys=19)
- L2Cache #20 (512KB)
- L1Cache #20 (64KB)
- Core #20 (phys=2)
- PU #20 (phys=20)
- L2Cache #21 (512KB)
- L1Cache #21 (64KB)
- Core #21 (phys=3)
- PU #21 (phys=21)
- L2Cache #22 (512KB)
- L1Cache #22 (64KB)
- Core #22 (phys=4)
- PU #22 (phys=22)
- L2Cache #23 (512KB)
- L1Cache #23 (64KB)
- Core #23 (phys=5)
- PU #23 (phys=23)
- Socket #2 (phys=2 total=25165824KB)
- NUMANode #4 (phys=4 local=8388608KB total=8388608KB)
- L3Cache #4 (5118KB)
- L2Cache #24 (512KB)
- L1Cache #24 (64KB)
- Core #24 (phys=0)
- PU #24 (phys=24)
- L2Cache #25 (512KB)
- L1Cache #25 (64KB)
- Core #25 (phys=1)
- PU #25 (phys=25)
- L2Cache #26 (512KB)
- L1Cache #26 (64KB)
- Core #26 (phys=2)
- PU #26 (phys=26)
- L2Cache #27 (512KB)
- L1Cache #27 (64KB)
- Core #27 (phys=3)
- PU #27 (phys=27)
- L2Cache #28 (512KB)
- L1Cache #28 (64KB)
- Core #28 (phys=4)
- PU #28 (phys=28)
- L2Cache #29 (512KB)
- L1Cache #29 (64KB)
- Core #29 (phys=5)
- PU #29 (phys=29)
- NUMANode #5 (phys=5 local=16777216KB total=16777216KB)
- L3Cache #5 (5118KB)
- L2Cache #30 (512KB)
- L1Cache #30 (64KB)
- Core #30 (phys=0)
- PU #30 (phys=30)
- L2Cache #31 (512KB)
- L1Cache #31 (64KB)
- Core #31 (phys=1)
- PU #31 (phys=31)
- L2Cache #32 (512KB)
- L1Cache #32 (64KB)
- Core #32 (phys=2)
- PU #32 (phys=32)
- L2Cache #33 (512KB)
- L1Cache #33 (64KB)
- Core #33 (phys=3)
- PU #33 (phys=33)
- L2Cache #34 (512KB)
- L1Cache #34 (64KB)
- Core #34 (phys=4)
- PU #34 (phys=34)
- L2Cache #35 (512KB)
- L1Cache #35 (64KB)
- Core #35 (phys=5)
- PU #35 (phys=35)
- Socket #3 (phys=3 total=25165824KB)
- NUMANode #6 (phys=6 local=8388608KB total=8388608KB)
- L3Cache #6 (5118KB)
- L2Cache #36 (512KB)
- L1Cache #36 (64KB)
- Core #36 (phys=0)
- PU #36 (phys=36)
- L2Cache #37 (512KB)
- L1Cache #37 (64KB)
- Core #37 (phys=1)
- PU #37 (phys=37)
- L2Cache #38 (512KB)
- L1Cache #38 (64KB)
- Core #38 (phys=2)
- PU #38 (phys=38)
- L2Cache #39 (512KB)
- L1Cache #39 (64KB)
- Core #39 (phys=3)
- PU #39 (phys=39)
- L2Cache #40 (512KB)
- L1Cache #40 (64KB)
- Core #40 (phys=4)
- PU #40 (phys=40)
- L2Cache #41 (512KB)
- L1Cache #41 (64KB)
- Core #41 (phys=5)
- PU #41 (phys=41)
- NUMANode #7 (phys=7 local=16777216KB total=16777216KB)
- L3Cache #7 (5118KB)
- L2Cache #42 (512KB)
- L1Cache #42 (64KB)
- Core #42 (phys=0)
- PU #42 (phys=42)
- L2Cache #43 (512KB)
- L1Cache #43 (64KB)
- Core #43 (phys=1)
- PU #43 (phys=43)
- L2Cache #44 (512KB)
- L1Cache #44 (64KB)
- Core #44 (phys=2)
- PU #44 (phys=44)
- L2Cache #45 (512KB)
- L1Cache #45 (64KB)
- Core #45 (phys=3)
- PU #45 (phys=45)
- L2Cache #46 (512KB)
- L1Cache #46 (64KB)
- Core #46 (phys=4)
- PU #46 (phys=46)
- L2Cache #47 (512KB)
- L1Cache #47 (64KB)
- Core #47 (phys=5)
- PU #47 (phys=47)
-depth 0: 1 Machine (type #1)
- depth 1: 4 Sockets (type #3)
- depth 2: 8 NUMANodes (type #2)
- depth 3: 8 Caches (type #4)
- depth 4: 48 Caches (type #4)
- depth 5: 48 Caches (type #4)
- depth 6: 48 Cores (type #5)
- depth 7: 48 PUs (type #6)
-Topology not from this system
Copied: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/4ia64-4s.output (from rev 7493, mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/4ia64-4s.tar.gz.output)
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/4ia64-4s.output (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/4ia64-4s.output 2010-11-24 09:21:55 UTC (rev 7494)
@@ -0,0 +1,33 @@
+Machine (phys=0 Backend=Linux)
+ Socket #0
+ L3Cache #0 (4096KB line=128)
+ L2Cache #0 (256KB line=128)
+ L1Cache #0 (16KB line=64)
+ Core #0 (phys=0)
+ PU #0 (phys=0)
+ Socket #1
+ L3Cache #1 (4096KB line=128)
+ L2Cache #1 (256KB line=128)
+ L1Cache #1 (16KB line=64)
+ Core #1 (phys=0)
+ PU #1 (phys=1)
+ Socket #2
+ L3Cache #2 (4096KB line=128)
+ L2Cache #2 (256KB line=128)
+ L1Cache #2 (16KB line=64)
+ Core #2 (phys=0)
+ PU #2 (phys=2)
+ Socket #3
+ L3Cache #3 (4096KB line=128)
+ L2Cache #3 (256KB line=128)
+ L1Cache #3 (16KB line=64)
+ Core #3 (phys=0)
+ PU #3 (phys=3)
+depth 0: 1 Machine (type #1)
+ depth 1: 4 Sockets (type #3)
+ depth 2: 4 Caches (type #4)
+ depth 3: 4 Caches (type #4)
+ depth 4: 4 Caches (type #4)
+ depth 5: 4 Cores (type #5)
+ depth 6: 4 PUs (type #6)
+Topology not from this system
Added: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/4ia64-4s.tar.bz2
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/4ia64-4s.tar.bz2 (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/4ia64-4s.tar.bz2 2010-11-24 09:21:55 UTC (rev 7494)
@@ -0,0 +1,12 @@
+BZh91AY&SY[Vô¢ !¥ÿð(Î?ÿøõo^ÿïßð jø`_ö[ÆÚ ãC@ѦF4ÈL
+ 4È 56AIµQ1 b@
+?T"§þª¤ &É OISÔi@ 4 Ð
+FhÓ 10@ 4Ó 0&@TCLQõ=@
+4ÐÐÑ z&4SÙüI$}!òÈzÃçüà Áîô¿ÏsJ=ïÏèÁ=R é!PNNI'rH¨9$nÝê¹" ØîJ%Ì\cÀ$,ÂDÉ,îÌR&ôÁÄSbh¸w$fwf§²$Áª!@v`áÈ&p
,+F%"äIkR9Zôc ª¢Âª¨Ì"2!¦(½ªH«BÒ(¢M ´ ´ª)KKJ¢ÒªJJ ¢ÐªJ5*
]dhP$3Zi«ERMÔE¢ÀhdÊQ=äY|Z^V/ieå´LÉ$lD7BÌI"Jª-%(UE T))üw&©²}ÔþgióÀï¥Ï$ImHBBí!r ¸;]hg
^AxhQ?¿kÖ¢Þ
+ÉÌf>I#òr!ãêí±ÖmãNtÚ¬ªµ^¹fH{ð&D0`9ç{[ïkUïW¿à3Æ3kklýé:ªäÝÙwwwrK.ÀÓJ Bffd®Ê"²"ªDUH©ZBHÅÊ9)vÝÍ WÈ4c$ÁM2ÌÌÊ!R(¢"ª"¥J@îîäU[¡VâI,2Û
ÎfÃUz¹OµÜä$s3ad£nôY#^ë_Upós¿ÎÅD(²QJ%¢FS¢Ôܵ$$:É$Zÿ~AEø'"uÞ÷0|3áðCkÞ/2O|)yrì½yYªÊ¢SJººª®wo]j£Ã%?ͱû²¤=èKIGq$GµLëqÙÂ{yMg¢TH¶V\!zWÚŨI+Z jEU®Ú÷,¶}°¾êcýGÆ!Ð<Æú*!DTPýc|äãêUÞ$QoÆaÒ¶k±ii¼Z,¢¥*©3G¦Å¢DTûulYjå¼FfüÊ$FHϸ¨Ý%$çy£5h±$*eärÍS.%ö½²ÅMôu$²h
¡U%KMéÀïð:4TB¨¡³S%:ïÊ,c-ÃqtåÈFiUóÁι^ñΤK*ªDب¢ÆU":OG=21yMÍ«¬·17Òn¢¢EE
+éËvû¤â8±KË¢%ª* Ê2Tb8¯JeRcLíji °qL¥HªIt
+ËHÙ³v«Öe±3Ú e
eKdI#qÞD0a+A¡³ú¸øl·2ý 2S!LÿMoà%çü²§ª¢YEÐQ¦òÍÍcUæ©ê¨`ÑtE)¼
3sXà%çyªzª
4]Jo!LÜÖ8 yÅ^jª!Îhµ¬9C±âvYiá.Ë;3¹A;£)IU¡$íÄËR¡hDv±¸FÆX½ïZÈË9¨¯¿Y=uU4²¥MfÍ+½\ÜyfÖÓµÔUU(®ý¤.Ã^òÅ54,+ª«iR´UãÕ/{UÕ,Îòé$ñ
+YT¢fkãN&CL´g¬¶Ï{YTõüTøå-O߯ýÅ:Ú!qkò-õWûû>_^#3°5¼)»Ü¦N/÷ïß¼búÜs|_8s#:ð
þn½ÁcPÔÔ=gþ$Þ_ëùÈÐ=¯ìvo>¿FƱ[àúìI#´;Cý§ þá¿Û´ù$³êÐUJ!p¨7
vÿ:r&
+aBHÈ!^Àï¤R©G>ÄePBÛ³ÙeV]ñd±lp
+2˼<|rÔ2GxpÁA¤(8ÂHâáL½GÞêxrëëxaFH®I½7!ǹcÆwÏI$ÃAÌ(ðBHÔ{ÿÂI#¸!AÙCÑÒ{íîrÞÐäyУ ;¡çíîÝnî$ÖûÝ"Hö¦AHi{ìI##_vß÷ÚûÍÒkêeÃÓYÁãåÝà¨#:$dG=Ò8ö¿Êtq=?c®Ôyen "E$x Àò1| õĶÚ$ÕáG"IwèóÔ$$Z$`îöÉ$saC@ßÒ+hI"ú #hIÉF}%$/ΤÐ,Gx48`èÌ:bDvãÅAo°G²HyCsBX4p:¾Er
+H5a$l,"IÿÅÜN$Õ½(
\ No newline at end of file
Deleted: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/4ia64-4s.tar.gz
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/4ia64-4s.tar.gz 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/4ia64-4s.tar.gz 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,14 +0,0 @@
- Ö9K í_oÛFÅóOá°ÙÎußZEÝ4Ab$²(PTºÚO¿ä$úãÚ¼³³ÝóC[;kʼ:äðòÌß¹ã×{3P°ûj`ö¶Þï¿>òÊZg\0Æ[÷ÊXu¾§/lÖ}ÙÝܼºµ³E³|f»º[#Þÿ¹þ«®}ÆÕßf!3Æ
-ßë
-¬?/õ_oF×ßcõÏ
-Çú#8©ÿ´þÔTõ7ÿÈëïXOÖø¾¯¾ÙÇ@^ÿyÃú#x®þÕjóM>cëï
-ÎCýsë-ëà¥úÿºÿöC ª¿Ûé¿nX£êß·«vÑζÉù?
nòõ «?ïêr:Y7wá=»ûC½®¿sgõÏÝõß$ýÍQ^ÿÏ%øËãWÿúýþWóíº©ÊÅdUV÷å¬4ÓûxQÿ&;Ó¿»ñõ7×LÿUÛÔü1/ëÿüú?ÜPÿå¯ýGÿQãï¨ÿëfþ«²×ñ]@qÿ×øü þÍrZÿ+¦,ïÿYçÙÿ ¯ÿºùw-ÛÇËãÿp>þ·ãõùßyÉ×\ÿeßwÍݦ¯G«áEýÛñ¶;ÿSÿéù½kúúDzºçI@%rý÷ÛÕ·¾þÛóñßpýÔ?ËæcSO©~¥Èõ¿¨?ÕÑ>búÿ9¯ÿ¯¹þ«v^wõ²ÚN¹ì¼ØxYÿþLÿÁõÀºïxP\ÿÛõ¤ý8)×ë¶jʾùÔôÛg÷!¿þ@ýc úuÑÿ]=/LÊÕ}Èÿ{ñù?>ÿ×\ÿËÍÃ]ÝíF 뺥ùøßÛúàBNÅ+Fªòpþ?yýSø?ÎÏÿÃ÷,íªë?
ÿãÜÿeÏ!ìýïç]»Íy"Ð\ÿ üOù?yýð¶ìKê^/rýüôCàôoÝÈõÂÿqÿlAÿ|T#×?ÈÿÁû¿n"úÿÿûÿèÿÐ\ÿ)üùo6Ï©ÿëFªÿåÿ`þyýSø?òËç?ìÿ@ðæÅÈõÊÿ`ÿó?t#×?(ÿ÷ÿ¡¹þAþ^ÿ!dT¾jäúäì¥þ0ÿC7rý§ð\ø¿r®ÿÁrú¯j"úÿüú¿!Ðÿ¡¹þSø?Îçy[dÔ?g<o #Õ¿Eù?2ú?ÈëÉÿÈØÿÀüÝÈõÀÿaì¥ÿý¿näúOáÿ¸¼þ{^ÿ!¼[®ûnSõM»ä©@!rýüìÿ@`þnäúåÐÿóÿt#×?(ÿþo¿n"úÿÿïÿ!Ðÿ¡¹þAùÌÿÀñ¿nFè?&òã±þïlpnxÝ;Ký FÕ¿oWí¢m#?cëÿõüoòõ «?ïêr:Y7wá=òñVðù?óñ?Í ºé5ß
®ª\LVeu_ÎêI3±ñðÿá
- ªF¦ÿªíFjþyÿ¸ þ!Ê_5úþ£ÆÿÞQÿ8þ×Í(ýúÿÑûõÿl±ëÿ³ÿ@PÿýóÇüç«B^ÿóÿXÿþ_.p fäúgþó5ÁügÝÈõÏüçkùϺëùÏ×£òU#×?ó¯ æ?ëF®Èü¿úÇ@õë&¢ÿÏüç+Ïÿu#×ùçãoêÂ0Ô¢â#Õ¿aþóU!¯?ó¯ æ?ëF®ÿþsÿWy>ÿ
°÷¼wíf6ç@rý'ð<áÿdþ3·e_R÷zëùÏ×§ëF®æ?_ÌÓ\ÿ̾&(ÝDôÿÿ|EÐÿ¡¹þÿ|Mpü¯©þc £üÌ ¯
-ÿG~éÿ`ÿ7·t(F®Pþû?ÿ¡¹þAù¼ÿÀüÝÈõòðú!£òU#×?(ÿëÿ@`þnäúOáÿ¸ðå\ÿåô_ÕDôÿ1þú¿!Ðÿ¡¹þSø?Îçy[xê3WTÿåÿðô ×ÿÁþæèF®ÿþc/ýìÿ@ øu#×
-ÿÇåõßóúáÝrÝwªoÚ%O
-ëäÿ`ÿó?t#×?(ÿþ/ÿ§¹þAùôC üuÑÿÇø?xÿþÝÈõÉÿ(ÿãÝÐåã±þïlpnx}P¿áú/FÕ¿oWí¢m#?cëÿõüoòõ «?ïêr:Y7wá=òñVpþ7óñ?××
Lÿ«ùvÝTåb²*«ûrVOé}Dÿ×ÿÀð U#ÓÕv#5¼ÿ?ÜPÿå¯ýGÿQãï¨ÿëfþýÿè}ú¶ØõLàü/úïÿ8®ÿ}UÈëbþßåú|þÁN Ô\ÿ ügæ¿@`þ³näúå?sþæ?ëF®®ÿ}M°ß§¹þ!ùÏÿùϺëë_T¿n"úÿ\ÿûàóÝÈõbþßùøóÿP¸À 4#Õ¿Iîÿÿ£ÿ¼þügÇû?ÌÖ\ÿ)üçþ¯,ó|þaïÿx?ïÚÍlÎ>äúOàÿ8ñ®ÿ
-ämÙÔ½^äúOíÿÿ×ÀéߺëÿLÿæ¿éF®ÿ÷ÿ(ÝDôÿ!þöÿ1Ðÿ¡¹þ1ùÏy þpü¯©þ3®ÿ}UÈëÂÿ_Îÿeÿ7·t(F®Pþû?ÿ¡¹þAù¼ÿÀüÝÈõÏõ¿¯ÊW\ÿ üú?!0ÿC7rý§ð\ø¿r®ÿÁrú¯j"úÿ\ÿû ÿC7rý§ðÏÿô¶àüÎxÞ (FªÿÅÀ£üÌÿ ¯?(ÿýÌÿÐ\ÿ üÆ^ú?Øÿ@ñëF®ÿþËë?ó?0¼[®ûnSõM»ä©@!rýüìÿ@`þnäúåÐÿóÿt#×?(ÿþo¿n"úÿüÞÿC ÿC7rýò?ÿãÝÐÌ/'õxgsÃë¶ØÝÐÿ`TýûvÕ.ÚÙ6ò0¶þ_óM¾[ÿõO¬þý¼«ËédÝÜ
-j6öpÈÆÿ»úgÿa8ÿóy.dú_Í·ë¦*UYݳzÒLGìC6þßéßú0¼¡àU#ÓÕv#5¬ÿXÿó?1Ê_5úþ£ÆÿÞQÿ8þ×Í(ýúÿÑûõÿl±ëÿÀþAý÷ÏjýoÖ¼þ)æÿ=±þ'ó ¸À ë?uþs8Ìÿcþ;æ?ëF®ÿÔùÏ×úÿ!0ÿY7rýÖÿæõý¾ºë?uþs8Ìÿ£ÿóu#×
êùá0ÿú@õë&¢ÿxþ_8ä?óù?>ÿ×\ÿ)æÿÿ½-¨.pÍHõ30Êÿaéÿ@ ¯êüçÃóÇû?ÌÖ\ÿ)üçþ/®ÿbïÿx?ïÚÍlÎ>äúOàÿxÊÿÉë?·e_R÷zëäÿ ÿû½ºë?uþó£ÿþ/ÌÓ\ÿ ÿïÿ!PþºèÿCüìÿc ÿC7rý§Î>è?çú8þ×TÿÊÿáéÿ@ ¯
-ÿG~ùüýÞÜÒ¢¹þAùìÿ@`þnäúåðþó?t#×?ÈÿÁë?ÊW\ÿ ü®ÿùºë?
ÿãÂÿsýÓUÑÿÇäÐÿ
-þÝÈõÂÿq>ÿËÛÂQÿñ¼PTÿåÿàúßäõå°ÿùºë?ÿÃØKÿû?(~ÝÈõÂÿqyýÏxýðn¹î»MÕ7í§
Èõò°ÿý^ÝÈõÊÿ ÿçÿéF®Pþýß(ÝDôÿ1ù¼ÿ@ÿnäúå0ÿÇÿºyNÿËvZGØ=.ëÿðÎgWÆæn7ÿþô¼XÿÝbý9blý¿ÿm
-ÖÀÈúà ½}ýA?_ÿÌæYÈí×cà ÷×oøþ¬ÿú¾r8P}Ô>^ÿí{8óÿþ»ÂNæMcoMø.{½ÿóC³^ßÃ÷Û®nfËáͲ¯»E]~ª÷ÿC(lñzÑVåb²û|þm?îöc8´ü¿güù?ÞGÌù§ÿÓ3²þõC³üØÆíã
ó¿ÝùOÏÿ&ìÿAxýëþL}óKýð¾íËÅ÷7{¬1··ÎÜÜÿx´ÁO]]?¾~s¬ó·ùéÖõôËþ¶ðÎmðCÕ7¾þ7ÜwG¼[§ìúÀÇüÜÌæÇïr9Ûàä]oðöçÍaçÍ·M×oO~þM¸uGìµîÊêþÏÞäOÍ¢þg9«×¸áÊiÍ_ÊÕêè@ïñø'ü°lÇ?áÆºüäPï^|_Þ-¶(òãðëO¿M>,þ°Í÷O½ÉÛͲ:=§ü¶(ï_nßOÔÏÙá×qsùêÑáæÎøë¿ÞGÔý_Îë?õ6ÃaNQûx¹ÿþüÏî"ayýÀS®nÆÿãÕuþ<ÿ#_ÿf'xñüáÿ¾0ÿÂç|ö|äõB¹zþs¯2 ¨
\ No newline at end of file
Deleted: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/4ia64-4s.tar.gz.output
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/4ia64-4s.tar.gz.output 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/4ia64-4s.tar.gz.output 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,33 +0,0 @@
-Machine (phys=0)
- Socket #0
- L3Cache #0 (4096KB)
- L2Cache #0 (256KB)
- L1Cache #0 (16KB)
- Core #0 (phys=0)
- PU #0 (phys=0)
- Socket #1
- L3Cache #1 (4096KB)
- L2Cache #1 (256KB)
- L1Cache #1 (16KB)
- Core #1 (phys=0)
- PU #1 (phys=1)
- Socket #2
- L3Cache #2 (4096KB)
- L2Cache #2 (256KB)
- L1Cache #2 (16KB)
- Core #2 (phys=0)
- PU #2 (phys=2)
- Socket #3
- L3Cache #3 (4096KB)
- L2Cache #3 (256KB)
- L1Cache #3 (16KB)
- Core #3 (phys=0)
- PU #3 (phys=3)
-depth 0: 1 Machine (type #1)
- depth 1: 4 Sockets (type #3)
- depth 2: 4 Caches (type #4)
- depth 3: 4 Caches (type #4)
- depth 4: 4 Caches (type #4)
- depth 5: 4 Cores (type #5)
- depth 6: 4 PUs (type #6)
-Topology not from this system
Copied: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/4ppc-4c.output (from rev 7493, mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/4ppc-4c.tar.gz.output)
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/4ppc-4c.output (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/4ppc-4c.output 2010-11-24 09:21:55 UTC (rev 7494)
@@ -0,0 +1,8 @@
+Machine (phys=0 Backend=Linux)
+ PU #0 (phys=0)
+ PU #1 (phys=1)
+ PU #2 (phys=2)
+ PU #3 (phys=3)
+depth 0: 1 Machine (type #1)
+ depth 1: 4 PUs (type #6)
+Topology not from this system
Added: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/4ppc-4c.tar.bz2
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/4ppc-4c.tar.bz2 (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/4ppc-4c.tar.bz2 2010-11-24 09:21:55 UTC (rev 7494)
@@ -0,0 +1,9 @@
+BZh91AY&SY,v$ ±ÿå° @çÿôzfÜ@ÿïßp P>Ñ` R¦¨ýSÐCM4i#F¡P&¢ 2 Ì`&F F&& biÌ`&F F&& biT¡ A2G¨i¡£#mC(x§Á<½¿Æþyú.Tïæ¬ê2u¢ô4°¡
+kÇÎvò,j¦Wtëäl« D(BB^Å[bªâµcÏ&*-}c$/QBD©
+"J¤r7øÕë)HÓGÔ}ëõáb´má/»Ä¶Ä6¡¥
+ýYôèãêÌTÃâ ²Fk|ñxØ>EŰ®À¦ÊÖ+¨[¦D!f¢uOA5ñ
+Á gpCÁÁ@SMVÿ-OJTÀºZèºKÓмÃQÑÅdIh(Ebì¼F"¨A¨Ó£F\³io¶[¿5óY
+û¤-ÄÝèß*X¶1×Eæ1CmF¨ª'Huév*·ÈgN³uæì|ÁÿyàäH'%;K" ÚK˨xc
zDd[6Lº¢¨L.<w]§YäZÈ}É˹ºJ©wUMlGXÃ7PC?
Ù(U33Óª'nùÅEî·Ü8ý3ÖÊ,}°Ô¿x½hD4[!XÏS¦¦vÚè&áQ@Ñ£wÑaxúvÛÖ Ì /]|ªËxQç®îÂ7Ât-Û:#NØXF¥¦[2¡ü$:¾ïyâu¥tVEêMÖ§z<¼½E2ï3UԪ˰¼"¾¨xkÒªN²¢DUAÖò«ÔC6S<ë/:o·1¨Z¦ÆKÕ¿:ÝíH#{DgÐ j8÷}}¦Ëôö³áý9`dbr¾~?õ*¯×ìð§³>Í>]¤¥x÷R%£ý¤b;{â´¥)JP²·óE¢\^[v÷D§´ùÐÈb93!Á
+_»Ñ7æs¡åíÏ¿##VFxãòB¦½w VhÓÆ%¼¸
+ÑF4¡n÷HæÑS¥
+ÓWM#tGµ&èÞFô,ïIBgfÔËö0ÜËÉØU<ÌP:øôjÛGiºIFÓt:²IÙBzOJ$ÿÅÜN$&
\ No newline at end of file
Deleted: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/4ppc-4c.tar.gz
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/4ppc-4c.tar.gz 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/4ppc-4c.tar.gz 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,9 +0,0 @@
- 4Ö9K íQoÛFÇýZ{Ü6#ïÈã]ß¶¼t}"±µT¨#,ûôãÙ
-Щ#+¶bü!°eÙ&Oþ<R¡õzñ¿ÍN(Â\Q¶¯hûü¢Ï ~Ìaæøzä®ë¯6ÎÍ®oÚUÝìù\µé¦XдÐ7ý×ödA0LA
ôìÅô'ú/Öwuów{lEà¸ÓûEýÅó3ýµ
-àÌÁ±òÿsýîU×µwÌ5 ÞéÁååy¸¸|ï®V}}_-\w·^·¾ZΫvñµ|ÈS3Þ
-xñéßù¦º¯»ºmô<C÷Ëú~ã´üu>ÿÞNåÈOå(ÒQ_ßV×W]UÞ§I¿6¿½Z|©ªX;ÿô×¥ûó÷)}øýçèÿ$ÿ5úÄØkùùyþëa°ü
-[ç#°`d9;ì ;fá Á; ì£ó$ ¸@¥Pîló)³$cù&¨U%9 CNj7ZtLÚè%ÉcJ;¨$BÄàÐçLÕ@¢l
-DòÙ©!pcÎÉ%`]æÎw>{ý#u9Ú×]$
-i"© ýeÔ+¤@,A
-$/裴3Ô ®IÆ)Åb@Ü£^y@#z]Êj núóÞc=¡
§ÿ§wrÎ>§ùuÉb5BÇòQuz2dM¿=Õ}ÞÜ5MÝÜhܽ¾.e£ZªèÿÿÝCw²`Xÿ1 øÈTú?Bëÿ'á{ýºiH=× °é?/é¯Ç}u{¼08@ÿDTLÿ)Ø£¿nÇAúèþ.ÑÎÊÎÊhúOÁ+ú¶èÍApøý4ý'aþ}»nWíÍÃØ@88ÿ=D±û0Dÿõ®^\>×ËQ>À´gþ×Ñçiþ{»¼ÍÿSN1T?
-{ò¿iÕQÀý_ «ÿðþåÞ#ú¿ [é?Ãô/·WÇûØê_æú½úÍúrg5þO'ÀógÇ»ÎbúÓ?÷1JoúOÁ`ýq¼Qúé?Ãô_Öú+5j×ç¿ð|þ6ÿMä¿ÆÏÂàúÿdSÿY¬þaaaaaaaaaìã?æuêL P
\ No newline at end of file
Deleted: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/4ppc-4c.tar.gz.output
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/4ppc-4c.tar.gz.output 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/4ppc-4c.tar.gz.output 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,8 +0,0 @@
-Machine (phys=0)
- PU #0 (phys=0)
- PU #1 (phys=1)
- PU #2 (phys=2)
- PU #3 (phys=3)
-depth 0: 1 Machine (type #1)
- depth 1: 4 PUs (type #6)
-Topology not from this system
Copied: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/4qs22-2s2t.output (from rev 7493, mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/4qs22-2s2t.tar.gz.output)
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/4qs22-2s2t.output (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/4qs22-2s2t.output 2010-11-24 09:21:55 UTC (rev 7494)
@@ -0,0 +1,11 @@
+Machine (phys=0 total=16777216KB Backend=Linux)
+ NUMANode #0 (phys=0 local=8388608KB total=8388608KB)
+ PU #0 (phys=0)
+ PU #1 (phys=1)
+ NUMANode #1 (phys=1 local=8388608KB total=8388608KB)
+ PU #2 (phys=2)
+ PU #3 (phys=3)
+depth 0: 1 Machine (type #1)
+ depth 1: 2 NUMANodes (type #2)
+ depth 2: 4 PUs (type #6)
+Topology not from this system
Added: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/4qs22-2s2t.tar.bz2
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/4qs22-2s2t.tar.bz2 (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/4qs22-2s2t.tar.bz2 2010-11-24 09:21:55 UTC (rev 7494)
@@ -0,0 +1,18 @@
+BZh91AY&SYãxÝ
+§ÿð @çÿó?çÿïÿð @ ¨` <oµciE£@Û( øæFFCÐÈi£@#&@0`M52§¨M©  4h M#C!¦ ÂI©d§zÑM3ÀCÔÓ ´Ld 4ÐQ ÐF
+11
+44Ð
+MÑO
+yCÔò ô m ='ùþ{ùñ
+C÷ó
Eã
+®£ÕªëZÖµTò^qÐ̤ ,°AÏ~¢ÈÂ$ÜBC)ÚO9í¶ûQÍÒCCEÓ/-4Óabdyà¦,²Ã830*¡ÅPRbF"Y,loñ|±´Yozç|ÚQ%IT # P° ,¸7yBÛ%¨täC.òiíûw<x»µ~ ×6ôÄVIý!)%$º|ùï`öÒsçï²øogßáÏýê79ÄÓ'^ß³gzÞG]Õ¿·ºD®=0îæ«´
wªAÞÛm§;ãu
+y qÓ}zòçÚqÐ5~а*
UxêDTED{á¦Óc
+J
kµ¬,Uê÷n5WB׫RÞפ¤ºpÞ À(6¶O^0³ma
³ïòôÛNÝ¡0 Z4ÒÚaVVfwww¤C$Ëîîîîîïkh^÷¾«Z×Ï5$¡Ô$Ã¥(RD_[V>g¯£ç0Ë=ÝÚxÈü^®|¼ºÿu~¶¼QMZÑ@vöUQQU·DÜ3(RDß~Ë)ë~ÜݧÏ÷ÌÛ# J}Z½3ùz=GѨì=IåTAÆ ñoå1§>Õ¢`¢)3*µXR+Pý!À,³( :̸K,«Å!ðíñjաפÇ}à ղV0Öy4BÏU Y&{ËÇnÈ ©áh¾¾')YgÒ<$ïgÕµï4êA fñ.v¹kÙlæù×z¶k»åd´""ųÉû!ͯÓ:NóIZWujW0&9_£@Î Ö¨_V0ÅÄJtz3ÄoGg/AeÛ ÎêoÇ8ñ lÈ"°¶G: mǺº¦ù P²¦kIE¸Yn¥ÅË5±,ªëznÒfi- FÁmWUmÎ"%ÀNHÂébUEº.0N?kiØqøJè¨ %|CHV½3Õ(ÜkLưôdZ´fû7¿ö¾Iò@ù¾v4À¦+JÐøÓåúq½ï}±;ºº§¥xV×Ö·'QN°CºÕ<Õî)¯ØÕk¯sj² FoO&ʱ[îFHk87t|>̪_`1
+ç´i1 %þ8â&XÐeË8Ѽ
+²Èë«,&h¹1}°`ZWl×Aª4ØËXÍ aaó^6¹/aÕÊ~ïVV¶L»6âcR¬S
+gªMëVà¡ËÁ[G§i®Ë:ÈwüIï¨ÈÞ
paAV6¥MÕKüƧ/éÇ&ñük>±3I$¿÷"¿Cî±KXOWü+ù:ù
+GØ¥5µk
+yºáEâBØØ·DFKómòóLÙ±WrlÞÓVAáú¤àØ}e2ª=ÍÇ<mѼÿSÀ¿róêvæe8fYÝ<rñ÷-7qvTã-8áY9röàp5
'ÚQÛIPÈÒÐ1ÈÔ)¡"É2%°)f¡O!ÓT&[wÛBÅ">Í#Zd©S9gØq¬TõkG^¼äO]$¤ÛÃHÿT®ù$Î¥ ¬kI°Ë÷ð;ZVÒr¤NicAW ¶ÄÜmÐáÄÀîIsÎv§¿¶ å´æãMû<Sqÿ%ºJmF\dÓÍ$»£¡vwq9ΪÎ1ã)àÐÆæX¤S©¬:ɱ÷&S½k®O^ ©½èV~ÔÙ(bNë¶â=acß2Jc´sE"h°";BÒm3ÀæÇ²yÓGtwÚuP*qÂw0ãHñ$cà{¢ãaª ôlÆéAéYöÌì:äo.\å;:\ê9ªüÀQ$ÝTaI7³îãä¢
+v5MYæPĺñß*Î Íi$õÉ$Ï:¢
+=1²pIDBÓ¬édn`j£ïtâs-¤ç"'O`®)EO^;LAò-::I$MIììÀ¤È
+eI´ÕBÈ ]ÉáBCà?t
\ No newline at end of file
Deleted: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/4qs22-2s2t.tar.gz
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/4qs22-2s2t.tar.gz 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/4qs22-2s2t.tar.gz 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,10 +0,0 @@
- 4 "J í]ßsÛ6ökõWàñ:öðdÞì´n2g2ur}ÔÐ,s,*I9çüõHJJ¶ 2öºí÷ KÜ%ÄÇ] »¢,ÿn8ÿ
7¼ý÷ÑSZDÚüÕQçïGqF§TË#Ê×ô¨'ëUÓ¦5!GYºWeiÚ{ôúäÿ§ßø_ÖUö$7Ápþ%çùÀ.ÿv4ý
-ÁÚñzÿRþsüÓÇîÈ]8pþ³åDEp® BpÂ#ÇKD©$""¦ÐÕ¦NYmÂc(""{ié"#B+AXÂ4¶RM¤kYI$ÕFF]KÊN¬P-%¬.ØFOØA4Qöqí9uÁiÛc±}ÑÎt^¶µU$dí[KÛ\´yaì5IEZ5q÷»iÓXm£õçfZ¯Ê2/çm?_,ªìÚÌlÃÏMÕ`×ÿí0çåeõ¨6züQ¡vý_3þTõO/7Nö}óÊ,䤮ÒÙEZÎÈïå</Í.ÚüÆd¤Y-UÝÙ$sÎáι_7t½þ<©ÍMÞäUi%2þ-ojbI§DX'ß,{³üyÌ
-8³.à]¤q«JeÚ"m/«ºØv`R¤Ùµ»îÐë?ß7'g/h_$ûãÇx»ñ¿0xü·óó^ü§ã?ÎLñ¡jÓÅKâÀ´Ô]/ëÖÆl)Éq'9Y]^ºÙJ¬LR¯Ïye£}Å$Ûsþ)]îJÉúãÌ<ï¸äMvd1Á××ùüÊë¶×xÝö$o«O÷\©Üs¥®×wÛq»íü×ímç0ukÕykrv½×ÚqYïÓ¹ù2¦vÊô
t¹ì·ÛMßéEÇLÄó8kéCz±øÚ]oÎywz>ýXÚ;Þ
-¿»¶sRʬ{5[É«ª(òömn_8æB$ÜØ)jz|îD®ÛíÊÝJþS¤;km.V¶ÏÂ.ü¹'ûØ|¹,»ÀW¾äÕÕª¼ÞÅÝ·æu57ëz|Pï°GøÏæfÖ9¼tóÏ]»¿×CöÜnølðâsÛ<MpXþGg
ùìð?³kJ»T}Üû`8ÿJ±ùÀ=üÛ÷)é6ÿ¨È?æßnUáÁ¿ÿA?ÿ.û}7ÁàøÏ©rû?äÿéÈV§ÍÕ´¬Zӷѳÿ¿aýüEV¦c8ÿL
-üC` ÿl¬Qücþü/Wu=ÚÆþ)Æò_d|´üs%ÿéX#øWã?Býÿê¶É³t1ÍgÃmôóÏ÷ÖÿT!ÿ`[ú@
-ÿåh£æþ@þ¢6eU}6ÓY¤·lôó/wø.]üÑô ÇÿÑéqñ÷ÿ ç_¶1ÿ âBÖÿ$Öÿ È?`ýObýüÖÿ$Öÿ 1Øúò@þáëÿA(ÿàõ?ÿA0 þÃÖÿ0þ ÔÿáêëÀìïa#|þ®ÿ¡ÿ ÀúÄú °þwØÿÀõ?Üÿ àú~ÿýü7îG;¦n°¬>zÚ¤7y9R¾ÿRãüýAñ_<Ãó¿øü?ùþã?ùþë? À?lý×ÿ ä¾þñ¡ü×ÿñùÿ°õÿ õðç#äó?ðù¶þ¯ñÿ? øç1þ ëÿðø\ÿÇý?Âù®ÿcüAÿüêøûÏ ä¾þùò_ÿÃïÿ` ÿ°õ?¬ÿ øúÆò^ÿÃýÄØúÆú?xýëÿ àý=hÏÿÀÏÿbþüÃ×ÿ0þ ëðø\ÿÃý?Âù®ÿaüÁÃüÕÌ|ÿ?]ó=ìÿ¿FÃúøw/ßõÐùçt½þCþÁüÏr;PefFØèÿz÷÷ß~ÿ;ÃE°ÿÛe`.GÙèõ¹ûû_cý_(xqï|BäGF°ÿÖý«¹ýûühoþÇýÓ«¼%ëXÉús7
-¡÷Umòyi?æekê
IoÌú8&ÊÕÝ
-âÎ2Tí©7Gd,1tüÓìÿ
)òò²c£Çÿçïù¿Àü&ï«RrfU.^5bÇÆäúÄS8ÙÊI$
ÞUøØÙ(3í)gm~óµB$KhÇÄ2í¨0ME,=
×ùüÊïåtGÁïåÂÛêÓÃi¾Ìßòº½í´O´ôMüUç¹H³ëû:y/Ìûtnbwê,].½tÁ¸ßÉã²*ý¶Ë4¿Nø!½X|Óª3ïNϧK{ë[wuò¤ZÙÍ~÷:;
-çô¢#<²VóÍeN½§ûRo¸q#
-ÀøÏÀóæÿ Ì?pþáóß à0»`ÿÎÿá÷¿AÐÿË0:üÀöèüÖÿ@ð-ÿÇÔñüt'ÿÇhwò:J0tüÓìÿÐù?ÿA°Éǰ¾üÛÍÿÅLrêeØ^þK¼ÌÛËÿÙxcY÷vóDQ¥©§Ðÿc}ù?Öÿc»ù¿ýËÜÏÿ1¦ü«èÉÿ±½üvìä^þÇZú#¹ÿS2}
ýüì^fOþõåÿØ~þ'w¸x ÿÇ0ÿ@ @ þY È
\ No newline at end of file
Deleted: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/4qs22-2s2t.tar.gz.output
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/4qs22-2s2t.tar.gz.output 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/4qs22-2s2t.tar.gz.output 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,11 +0,0 @@
-Machine (phys=0 total=16777216KB)
- NUMANode #0 (phys=0 local=8388608KB total=8388608KB)
- PU #0 (phys=0)
- PU #1 (phys=1)
- NUMANode #1 (phys=1 local=8388608KB total=8388608KB)
- PU #2 (phys=2)
- PU #3 (phys=3)
-depth 0: 1 Machine (type #1)
- depth 1: 2 NUMANodes (type #2)
- depth 2: 4 PUs (type #6)
-Topology not from this system
Copied: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/64fake-4n2s2ca2c2t.output (from rev 7493, mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/64fake-4n2s2ca2c2t.tar.gz.output)
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/64fake-4n2s2ca2c2t.output (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/64fake-4n2s2ca2c2t.output 2010-11-24 09:21:55 UTC (rev 7494)
@@ -0,0 +1,174 @@
+Machine (phys=0 total=4194304KB Backend=Linux)
+ NUMANode #0 (phys=0 local=1048576KB total=1048576KB)
+ Socket #0 (phys=0)
+ L3Cache #0 (8192KB line=64)
+ L2Cache #0 (256KB line=64)
+ L1Cache #0 (32KB line=64)
+ Core #0 (phys=0)
+ PU #0 (phys=0)
+ PU #1 (phys=4)
+ L1Cache #1 (32KB line=64)
+ Core #1 (phys=1)
+ PU #2 (phys=2)
+ PU #3 (phys=6)
+ L2Cache #1 (256KB line=64)
+ L1Cache #2 (32KB line=64)
+ Core #2 (phys=0)
+ PU #4 (phys=1)
+ PU #5 (phys=5)
+ L1Cache #3 (32KB line=64)
+ Core #3 (phys=1)
+ PU #6 (phys=3)
+ PU #7 (phys=7)
+ Socket #1 (phys=1)
+ L3Cache #1 (8192KB line=64)
+ L2Cache #2 (256KB line=64)
+ L1Cache #4 (32KB line=64)
+ Core #4 (phys=0)
+ PU #8 (phys=8)
+ PU #9 (phys=12)
+ L1Cache #5 (32KB line=64)
+ Core #5 (phys=1)
+ PU #10 (phys=10)
+ PU #11 (phys=14)
+ L2Cache #3 (256KB line=64)
+ L1Cache #6 (32KB line=64)
+ Core #6 (phys=0)
+ PU #12 (phys=9)
+ PU #13 (phys=13)
+ L1Cache #7 (32KB line=64)
+ Core #7 (phys=1)
+ PU #14 (phys=11)
+ PU #15 (phys=15)
+ NUMANode #1 (phys=1 local=1048576KB total=1048576KB)
+ Socket #2 (phys=2)
+ L3Cache #2 (8192KB line=64)
+ L2Cache #4 (256KB line=64)
+ L1Cache #8 (32KB line=64)
+ Core #8 (phys=0)
+ PU #16 (phys=16)
+ PU #17 (phys=20)
+ L1Cache #9 (32KB line=64)
+ Core #9 (phys=1)
+ PU #18 (phys=18)
+ PU #19 (phys=22)
+ L2Cache #5 (256KB line=64)
+ L1Cache #10 (32KB line=64)
+ Core #10 (phys=0)
+ PU #20 (phys=17)
+ PU #21 (phys=21)
+ L1Cache #11 (32KB line=64)
+ Core #11 (phys=1)
+ PU #22 (phys=19)
+ PU #23 (phys=23)
+ Socket #3 (phys=3)
+ L3Cache #3 (8192KB line=64)
+ L2Cache #6 (256KB line=64)
+ L1Cache #12 (32KB line=64)
+ Core #12 (phys=0)
+ PU #24 (phys=24)
+ PU #25 (phys=28)
+ L1Cache #13 (32KB line=64)
+ Core #13 (phys=1)
+ PU #26 (phys=26)
+ PU #27 (phys=30)
+ L2Cache #7 (256KB line=64)
+ L1Cache #14 (32KB line=64)
+ Core #14 (phys=0)
+ PU #28 (phys=25)
+ PU #29 (phys=29)
+ L1Cache #15 (32KB line=64)
+ Core #15 (phys=1)
+ PU #30 (phys=27)
+ PU #31 (phys=31)
+ NUMANode #2 (phys=2 local=1048576KB total=1048576KB)
+ Socket #4 (phys=4)
+ L3Cache #4 (8192KB line=64)
+ L2Cache #8 (256KB line=64)
+ L1Cache #16 (32KB line=64)
+ Core #16 (phys=0)
+ PU #32 (phys=32)
+ PU #33 (phys=36)
+ L1Cache #17 (32KB line=64)
+ Core #17 (phys=1)
+ PU #34 (phys=34)
+ PU #35 (phys=38)
+ L2Cache #9 (256KB line=64)
+ L1Cache #18 (32KB line=64)
+ Core #18 (phys=0)
+ PU #36 (phys=33)
+ PU #37 (phys=37)
+ L1Cache #19 (32KB line=64)
+ Core #19 (phys=1)
+ PU #38 (phys=35)
+ PU #39 (phys=39)
+ Socket #5 (phys=5)
+ L3Cache #5 (8192KB line=64)
+ L2Cache #10 (256KB line=64)
+ L1Cache #20 (32KB line=64)
+ Core #20 (phys=0)
+ PU #40 (phys=40)
+ PU #41 (phys=44)
+ L1Cache #21 (32KB line=64)
+ Core #21 (phys=1)
+ PU #42 (phys=42)
+ PU #43 (phys=46)
+ L2Cache #11 (256KB line=64)
+ L1Cache #22 (32KB line=64)
+ Core #22 (phys=0)
+ PU #44 (phys=41)
+ PU #45 (phys=45)
+ L1Cache #23 (32KB line=64)
+ Core #23 (phys=1)
+ PU #46 (phys=43)
+ PU #47 (phys=47)
+ NUMANode #3 (phys=3 local=1048576KB total=1048576KB)
+ Socket #6 (phys=6)
+ L3Cache #6 (8192KB line=64)
+ L2Cache #12 (256KB line=64)
+ L1Cache #24 (32KB line=64)
+ Core #24 (phys=0)
+ PU #48 (phys=48)
+ PU #49 (phys=52)
+ L1Cache #25 (32KB line=64)
+ Core #25 (phys=1)
+ PU #50 (phys=50)
+ PU #51 (phys=54)
+ L2Cache #13 (256KB line=64)
+ L1Cache #26 (32KB line=64)
+ Core #26 (phys=0)
+ PU #52 (phys=49)
+ PU #53 (phys=53)
+ L1Cache #27 (32KB line=64)
+ Core #27 (phys=1)
+ PU #54 (phys=51)
+ PU #55 (phys=55)
+ Socket #7 (phys=7)
+ L3Cache #7 (8192KB line=64)
+ L2Cache #14 (256KB line=64)
+ L1Cache #28 (32KB line=64)
+ Core #28 (phys=0)
+ PU #56 (phys=56)
+ PU #57 (phys=60)
+ L1Cache #29 (32KB line=64)
+ Core #29 (phys=1)
+ PU #58 (phys=58)
+ PU #59 (phys=62)
+ L2Cache #15 (256KB line=64)
+ L1Cache #30 (32KB line=64)
+ Core #30 (phys=0)
+ PU #60 (phys=57)
+ PU #61 (phys=61)
+ L1Cache #31 (32KB line=64)
+ Core #31 (phys=1)
+ PU #62 (phys=59)
+ PU #63 (phys=63)
+depth 0: 1 Machine (type #1)
+ depth 1: 4 NUMANodes (type #2)
+ depth 2: 8 Sockets (type #3)
+ depth 3: 8 Caches (type #4)
+ depth 4: 16 Caches (type #4)
+ depth 5: 32 Caches (type #4)
+ depth 6: 32 Cores (type #5)
+ depth 7: 64 PUs (type #6)
+Topology not from this system
Added: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/64fake-4n2s2ca2c2t.tar.bz2
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/64fake-4n2s2ca2c2t.tar.bz2 (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/64fake-4n2s2ca2c2t.tar.bz2 2010-11-24 09:21:55 UTC (rev 7494)
@@ -0,0 +1,75 @@
+BZh91AY&SYo'ôM¿ÿ
×çyìþÿð5kF ÿïßð "ø`O± I@ " 7´ fe }k >ø 8: ÀÜV=éñÝr ^>µÚª'¡¸õ«UO°}Þ>]ॠàØHÀ@`fR¸ l
+-ÀæIUL
+
+ >#4õ)þªªAþª L010 À ¦éUF
=@ ©ø&¥UQêbÓ HÈhi¦&h¤JM2i¡¦!´4@ 2 MÕ* 2
+R#QB4Ñf£G©é¡åÕ i£ÔiµP
+ýÿ¬ö¸ö
+_Ì¥û
+Z&)a1KúE-§*b`è¸Á1TüQý&'Hv
+«ô¤VTCØôDªa
+_UB@/
"úóHáðøÓ¨ü/ý
þÅdSÙ©$Im;NÐØl6
+ʪª£a°Øl6
+ÃeUUQ°Øl6
+Ãa²ªª¨Øl6
+Ãa°ÙUUTl6
+Ãa°ØlI$»NÓ´}ϧt«smSé«+Ú@»xskg!Ôä56ÎÈh9lïRre/ºi¦hñ»e¤ìyJ4¨íÂaó%NãÙ'Åcé&`÷u·wnÝÒŰîf ÄõíÝ4
+ áèÊÞìùÛá¸ZâîÃ
GgvÜ{¸W$Ü j½óµÝÝÛ·»D4gaÚ@¸Y×Åa6*¢åPÝK1 CiCi[LjÚcVÓ*ÆJ±¬jÚc[mÛh©V2Uc%XÉV2U[LjÚc%XÒH%¶ÑR¬d«*ÆJ±«i[Ld«*ÆJ±¤I$*ÆJ±«i[Ld«*ÆJ±¬d«IA+i[Ld«*ÆJ±¬d«*Ʀ5¶ÑdD«*ÆJ±³Øvm1«iÆñfÝÛmÞ÷wwww½ÝÝÝÝïwwww{ÝÝÝÝÞ÷vª ww½ÝÝÝÝïwwww{ÝÝÝÝÞ÷wwwwÛdpî³çÛM8L&m®â3{k»1Åç®ìÖíÓ³[o®ìÚMK«£¨»»½îîîîï{»»»»Þîîîî÷»»»¶ûlîÝÛdvûnØ,²Ë,8,Ûnض۶Gí¶íØq˶D$AabIaaFaa$aa$aabIa6Ã{m¶ûm¶Û}®í¦i¦5¶Ûo¶Ûm·Ûd8sCzÞ·wwww½ÝÝÝÝïwwww{ÝÝÝÝÞ÷vÛmöÙ%[c
+vÓºÞuôJëÕ׫¯W^®½]zºõuêëÒI$W^®½]zºõuêëÕ׫¯W^I$ºõuêëÕ׫¯W^®½]zºôI$׫¯W^®½]zºõuêëÕפI$®½]zºõuêëÕ׫¯W^®½$I%uêëÕ×ݳ¯W^ÚÞÙɼæi¦i¦o9Îi¦i¦Îsi¦i¦óá¦i¦i¼ç8i¦i¦o9Îi¹]»»½îîîÛ}¶Ûm¾Ûm¶ßm¶Ûo¶É!Ûm»½îîîîï{»»»»Þîîîî÷»»»»½îíUfÜ3©ÖMÝÞ÷wwww½ÝÝÝÝïwwww{ݶÛo¶É!Ûm¶ûm¶Û}¶Ûm¾Ûm¶ßm¶Ûo¶É*ªÒfi¦i¦$¦i¦i&i¦i¦bIi¦i¦fi¦i¦$¦Ûm$WZË"jË'á÷Àí>Ï"o?Dd|Ý=,viCyòÇgÊo=D1bQÇ4z>AÄñJÄ'©8Å Å*{aZ¥cËÇ:=8¸jãqäL¦¢f<¸ÜHã)TÌj¦âGhèÃ
3<e9q¬LÇ.5©XòãqäL¦¢f1£ÑKg3¸ÜZâ©Ëf¢f<¸
ÜbãYÌB'Ë\V<¸Öj&cÐÍ.;:±\ûW ðøôô
£M"U8TÚ'}ë óÀá´ãm#ßÒ© àµr4YÎÜס|xéÚaÙÅrÒÚ[Kh¢
+Î%*¥FÕS0¨Ú«QËKm«Q2ÒÚ[Km¹
--¥´¶(\¥´¶ÓÄrÒÚbLG)m£laF#ÄUE
+
+ÈUÁ´¬,B¤°B2$@"¨FªAUAĪ«"0UH¡V at U$FÒ¥)U£QJ5ªP¢VQ33#A¬²0²°²0²L,,¬,L²3gdÈrJ¶lTií¶Û$d´I%HÂeRkot*¼\X&÷ÚgNÓk}éäEƾJ¨¤7¹"ªªªªª¢"öÜæóPãvKæÐ-;1ÏR$[\GÔ÷
+¢'TbÔRb(n\í/i좯P¬õ¦¥EuYöγC¨WÒdF)$A0HD0H" $bF FEd@*AT(¢°ETQET(¢0H¢ ¢H*0@ÉQD`",DEH ¨¢"""$QDDPEd@*A©UÁUU"ªª¤@UU`ÀUT
+¬dÀPEd@"ÀDDP""""EXÆ13ÄÌ)¢ûîZÆaÛJÖ¶Ûm¶Ûm¶©T"!-B`ÉA,¤e#
+F%%%%
%%
+K(XRÊ,ú áUUUUF,DÁ$H"F `Ä @ 2}*í¶Ûm¶ÛUe%A2ÒP¥%
)),,))(RRYaIJËAI l⪪ªÄÁHÁ"D$A#"
+D
+ UUUTbÄAHÁ"D$`A± ¢I$UUUUUUUUUUUUUUUUUUUUUUUUUUUUUU`Ö6Z`(Å ÎÒUG¥X¤ª²®d¤J´! Ê)S1"¿Ì}ÞÏ_~³Ñÿ
+k<ä^Ïk6/¼ü'ÎW}O³ç+$û=À}Êà^\Þ³Ô½{ϸÆý`yÏvµkZÖI$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$KòÄQÂÌQÂÌQZnbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb}ù'àOÂÁ`°X,Á`°X,Á`°X,Á`°X,Á`°X,Á`°X,Á`°X,Á`°X,ü~oRöþ©vîÓ©vë18Â!
+(dBQ È& !Q@"¸E!5kpBjYÔ4Â)
+ªQdBQÈ&¢ M@"D!E)PBªR¡
T$²!
+(IdBQÈ(¢®HQRK"¢D!EPBZé
UµÒ
+ªa"PÃD(¢ME!(B!EPBª¯Àá
ît!rîçHâ.4Â)
+ªiRUW¤(ª®HQQT"ª£ÊHU]ÎÄ.]ÁB)
+ª¹Â)
+*iRTÓ¤*ª®HQU\"¢¢¨E!UG"ª»#\»¹Ò8
Ë0Bª0BªPBªªá
UÂ)
+**RTrRTñÖ5ÖºïN±Þ5Þ»ïé>$$J§ìDªh@{ÿ@ÃIÏ>Þ÷î=çÕ|~zÏ/µ[kùÆÚôÛ^kÓmzm¯à| ¢ÏRdz%S@{Ô½Ê^Ê[RÚm6Oá°5¾»Ö¸kZÖº·½ï°]UÚÕ]uW»U½ïzÕÕq_WØýß»áuñý¿]zõÏU^®ïÔzÌÌÏ@ ÐèI.î«øª«Æ©»¶IÌÌ@ @I.î«øª«Æ©»¶IÌÌ@ @I.î«øª«Æ©»¶IÌÌ@ @I.î«øª«Æ©»¶IÌÌ@ @I.î«øª«Æ©»¶IÌÌ@ @I.î«øª«Æ©»¶IÌÌ@ @I.î«øª«Æ«¦ï®7.-ÀàKp%¸]\å]WñUWSwl9 ]ÝWñUWSwl9 ]ÝWñUWSwl9 ]ÝWñUW4ÓM*¼j»dfcî긯ª¼j»dÌÌÄ @ @$î긯ª¼j»dÌÌÄ @ @$î긯ª¼j»dÌÌÄ @ @$î긯ª¼j»dÌÌÄ @ @$î긯ª¼j»dÌÌÄ @ @$î긯ª¼i¦iW§¦¸ÝÓ%xæ]¹nU3u\WÅU^5MݲHæfb Iwu\WÅU^5MݲHæfb Iwu\WÅU^5MݲHæfb Iwu\WÅUUT8UvI!è Iwu\WÅU^5MݲHæfb Iwu\WÅU^5MݲHæfb Iwu\WÅU^5MݲHæfb Iwu\WÅU^5MݲHæfb Iwu\WÅU^5MݲHæfb Iwu\WÅUóÀªª¯yçyç9⪪ª®*Å@ UÎeSwlnffh I%ÝÕq_UxÕ7vÉ# I%ÝÕq_UxÕ7vÉ# I%ÝÕq_UxÕ7vÉ# I%ÝÕq_UxÕ7vÉ# I%ÝÕq_UxÕ7vÉ# I%ÝÕq_UxÕ7vÉ# I%ÝÕq_UxÕ7vÉ# I%ÝÕq_UyÆ]ó˹#yXå9©
T˹w}WUUxÕtÝõÆåÓ3%¸Ü n·««ªâ¾*ªñªníG33 K»ªâ¾*ªñªníG33 K»ªâ¾*ªñªníG33 K»ªâ¾*ªðUTUUUTUUUUUUUUUUUV*ªª*õô¢ªª¢ªªªªªªªªªªªªªÅUQUEQsUUUW1UUUUÏ ÂSâSç>!*@
+ÔUTUUUTUUUUUUUUUUUV*ªª*³X1 $H"D Á#f*ªªª®ªªªªffzBi!4HM$&ÂCf"¨ª¢ª¨ªª¢ªªªªªªªªªªª±UTUQT\ÄUTUUUTUUUUUUUUUUUV*ªª*ªªªª¹ªªª«ð 9ÄUTUUUTUUUUUUUUUUUV*ªª*ÉÆ"`F $H#0bŪªª«*ªªª
iKj[RÚm6LÖ33¨ªª*ª¨ªªªªªªªªªªª¬UUTU ªªªª¸C~tH|¾úë¾ûºë®=zõë×¥UUUUUUUUUU[ªUU箾rÙÎI $åu\WÅUU\ÌÅ]ÕÝÝ]ÝÝÕU]ÝÕÌÌÝÝU\ÅUãTÝÛ$ff $wUÅ|UUUUUUUUUUUUUUUº¥U|ë¾úïλï®ëª^[M¦ÓtÌc,°Ã&LI$H"FAD\$&1UUUUpý @&}&vÊZQE$¡kD¶ª^â·>¹×2¢sOCìA¶4²Ú>;ÝÒqmî÷g¶ïu÷Ðw}oXø3-ÌÌ
¶´(ÄJre*«x\¶{Ý´/&å%ÛÀyJªÛxX¾ædÔç'̶qÃ,;Íîõæ@'Cà g9Í÷½¾ÈN"#`Ep ÛÏwセ cÌ&°:£Ápè^£333õÌÌÌìüý==¥UUUUUUT UTÞªµnUUUUUUU 9Îsç<àO>|ùóçÏ9Îsç9Îsç9Îsç9ÎxëÂgYxÊLÖ¡kÙ¢ £ËÏÙ¬ø¿µÎõ¬õwgé#¤xT"ÄHð©#¤zm¯Mµé¶
¾O¸K ðÕ$xT
Hð©#¤xTõðæÂ¤p©#¤xT
+ß®>þªÒ%SKK/¥?,LRÄÄÀ¥ú ú
+_ ¥Ù;)v©vNÊ_©?Ré'é)a0¥á<)zÔ¥á<$~¢I)t)bbIÒÓj^óÞ~ øü#ðU/ôz§ªK"d²&,Qޮܶ5ØÄðKÁÍÐÖ«ÂíV¥-8)x¢d²&K"d²'}7Ó ^þ¥)úö¿Û_Êm¯Mµé©#¤xT
+áR<*G
Hð©=6צÚü'Â$H"$H`b_ÛJUO^tº_J§Pé3KÕ6N©E4X,}¤Òi8I±hÍ:ܺ&Cóö»XaíÊò¿'¼åV÷çA ã@~ì-/A÷ á<Pê°2×o;
+f @¾ÐÙH:ëÁ¹(téÓÇBºÊ3S£«Ü©a¦ë«BðH̹Ë7ÞLÇÏa&ï)HPË&²`a@ÁP00°0QXR(¢°2aHdQE&b(¬0(¢8szÙÄÛXCf' ±EÝ)8<AAbåäáÈ&¨((d ÌTracTÀ0a
+X(RDCdÃ,8¼²ÆÎÎ@Ðp XÈ Rè-é:eC]µBRo ]9¨ C¦Vä¶ëZ:å9I÷â¥Ìi t2t 3Cæï;e-(£R6V¢§-Zx·¢jqËÜé<eJhXRËnÛÆoºî[ª÷ÀöÝçnàvôém½7×¹èf\¥0Ø^XRТSr[ÉrÓÇ»h_ZÒkÌ%å*¶ã¡îÙÔËÌfb&\qÊwÝßz½vûZH 5âóá½½dòÔà êô_{Kû~zøôóîýç9Îsç9Îsç ªªªªªnªÜªªªª¨ 9Îsç9Îsç9Ï yÀ3 |ùóçÏ
+뮺뮷®¯ÙósÊ®¸'¯æTA°
++,>±Sý@ }Êà^¼Ç0ËFelâ`d\ö?G0übå
+doüeëTáæ¯Rò_BúÀìî]7©äÖ~°FA?vãZ}w8,ÙPX ±CLüÐ üI!Ùð.jhyyÝnbe+ZÑd 6}kõÜê1ÉÙPPPPX¦RüªmUßZx®À&õª9l³Ø;çÐ0OäJ¦yz5zêYÑìM((((;÷ÞßHnÓóyNE(((5_À vJwæË+'@{¬IXIÀÀËHÅX ³ ;$À;7¢ó·&&)Ým©¦¡ÄkµSä®ü÷½Eùe-(Ö°µj¡Ë<>íy»C0£oÐôXÒ4l( ËAs->»îæØßÊ
9¡ÄÑÜ !÷|æÊsIËBÒÂÛÛ
+Z70À¹nÎöÒ£ëbÛC)m%ÊQÌp7iì¸ÌÂÂÝrr&EÎg'gG9LËíéÍïw?p ! ýÀ Ð=
>KäÕÞý=½}¾<ç9Îsç9Îs
+ªªªªªª·*ªªª ç9Îsç9Îsç9Ï yÀ3 |ùóçÏ 7®ºë®ºÏkÜïÎë®ùÞc1f7ʧ§§ÉÁðÜO!I¤$´ ;ó6eE{m§¤Þ: =î'dg,¨Ï9ô_QzU>Eྥô/fÏ81KÞ{ú½.½û·½zÕ4'E,gYH9®g3%Ö¬Ûo<U1Jxa*OxóåK¼;Õ=$8«,ªÓ5`ÊAä
+´ 7ÇÅUÄçº müRS©S<fiEzoT±®öÊ]ÇÀ!òðøªª¢rJrÙ}%4w±Ó1n&,²mË"8ª} yõ¡ÕîÊA{å ´tv
+
+ñe- ±~¯3£mâqå¦*c/äçIù=I̤¥°¢
¶ÙRfݼWyo:OpróoqzÚRÚïËÒfÙ,¡iAam
Ú;Ì9h åèw¶ÂúÑlÊ¥´-sjæì~/yü_Ý !0妷Íëö3®ºÛ3¼}.ϧØúÁ×¼ß=ì{?p UUUUUUUUUUUU7ª[UUUUUUUUU@ ç]t ñ >÷½ï{»»»»»»»»»»»½ï{ß ø>*ªª¨§ÈCÂzݤ"È|d$N¡ÓêBå0öp>**ªªª/ÎX &+ÁÚ;o;Â@ôýBP»Éåb¨ªªª®'ÆX®Òó¯¤ÙÆE ÏÌ ßSÊÅXª*ª«ØÁ úqUó|C5ÞÌV*ÅXª*®rYÄ%UÝÀ Y+NÉ!Î ì¨*ÅX«Ka
+ú9¾B < è*ZÈ1ã%ÒÞV*NFHÏ{ë>I!à ¤> «JOB 0~Bø$®°¥*ã*j:RAÍÑfÛú\T±q¨®óçÎQæ±\¢~NLÒfRu&z±Ú[IºÍåö%ý^ó/I½¥-¦ÌNúð}âo½rhÆ[(ZPX[OÌSÉÊLØ{¶
õ¬m§»¼U9l5.ÞïX{ÞéÞök^òÂç0+ÌÄ$$:_w]î*ªªªª¨ª*¨ªª*ª¨ªªªªªªªªªªª¬UUTUNcÎ`ªªª*¦R¢¬UUUEDUUmªªªªªªª¢¨¢¨ª)ï£3#(¬²aLÊt¾ .ÀáN5ã~¾îûï° 7 Ó` wwwwwwwwwwwìPU?Ø"$&FݯHd r©ÙyUʼJÇyjÃɸ7¥Âñ®,ebeÞyÏ5O¯:
+jÕZó)ÊÆSnxªhnñVYdÖªjxåS®î1oÈ ÒßÌÜËÊÉZ&Ê%S º°
+`¾²ôªx
+ýeä½²íUÞ)ÀkØ$¿~UÈp`ØiÏÇÜ3´
+³LTÇ JRJ`eÙS¿ÙrÃM-f=¼U8ºÕS³*Dª2%SéH®ùèû¿B- }¸ÅƦfc¯/ç,Ì£è_¸aÚú(fZ¶ØsæfgIíÕ|Ë {´¥¼1]ï-óÆF2ÙBÒ¦ÞqT¶Ã&xÒ>°¶Ó*ªÙhóKaînîñ
+¶¶)Yg@ûæþÔuîÌ-÷c·v]¸öêùþ äãfgÎnk}@ z
+6 Ç:3ÃA«&VQ*ßÎê~
+ù ½Wß,B
äÇ0 ÍS~ pE!@mQ^¡²
Ã'>ý$
C`ÑôÀUN°²æÅsh|0.frùæc¿5M]Áç5ªÌ³&f Ö£CÎYy»Îæó¦üU9l )$èÍîXQÉÚBÚÿ *á±ñ=Öy͵êÉÕëwéTÊ{bN u§<2cS}7Ê£DA@F´*R tZe1_ÔÛ,bǿ۵SèÞi§ÁE[aô5UDc/8}<Û^ævªñÇ ö{ÂR[IRz´X[e¶Çɶqå
Âê>áÄ;z{ÌÍÈRУ¶P´·{¹¦ª©m÷ Íñ<RkmªªÜ¶Ä^p;`R÷&§¯·®ÃzXZw%ï w®JpÉîzïvfõæffsffftægÎZ¸ô
+è4Ø ;ï¾¹èÎ0Ƨ3ÖåSƼCßvÁNºÔozn±¶õDjÅ-³F 5ø !XßHvL"Y@£ ° ¬2$G^xnÇkzåSÔëyzW((3Þ·ÒHw²9Fô pmM z#°Ü^·êàxÌ;Råê Ú)æ~>Oýÿû÷øËNsøùÇZnÿÎopç7KßÎ^Ù$ÐHiBß'/1;t½âöÈ ñ&CJù9yÛ¥ï¶A4$ÒP·ÉËÌNÝ/x½²<I¡!&Ò
¾N^bvé{ÅíAâM 4-òró·KÞ/lhHI¤4¡oº^ñ{dxBBM!¥|¼ÄíÒ÷Û Äi
+([äåæ'n¼^Ù$ÐHiBß'/1;t½âöÈ ñ&CJù9y
Û¥ï¶A4$$ÒP·ÉËÌNÝ/x½²<I¡!&Ò
¾N^bvé{ÅíAâM 4-òró·KÞ/lhHI¤4¡oº^ñ{dxBBM!¥|¼ÄíÒ÷Û Äi
+([äåæ'n¼^Ù$ÐHiBß'/1;t½âöÈ ñ&CJù9yÛ¥ï¶A4$$ÒP·ÉËÌNÝ/x½²<I¡!&Ò
¾N^bvé{ÅíAâM 4-òró·KÞ/lhHI¤4¡oº^ñ{dxBBM!¥|¼ÄíÒ÷Û Äi
+([äåæ'n¼^Ù$ÐHiBß'/1;t½âöÈ ñ&CJù9yÛ¥ï¶A4$$ÒP·ÉËÌNÝ/x½²<I¡!&Ò
¾N^bvé{ÅíAâM 4-òró·KÞ/lhHI¤4¡oº^ñ{dxBBM!¥|¼ÄíÒ÷Û Äi
+([äåæ'n¼^Ù$ÐHiBß'/1;t½âöÈ ñ&CJù9yÛ¥ï¶A4$$ÒP·ÉËÌNÝ/x½²<I¡!&Ò
¾N^bvé{ÅíAâM 4-òró·KÞ/lhHI¤4¡oº^ñ{dxBBM!¥|¼ÄíÒ÷Û Äi
+([äåæ'n¼^Ù$ÐHiBß'/1;t½âöÈ ñ&CJù9yÛ¥ï¶A4$$ÒP·ÉËÌNÝ/x½²<I¡!&Ò
¾N^bvé{ÅíAâM 4-òró·KÞ/lhHI¤4¡oº^ñ{dxBBM!¥|¼ÄíÒ÷Û Äi
+([äåæ'n¼^Ù$ÐHiBß'/1;t½âöÈ ñ&CJù9yÛ¥ï¶A4$$ÒP·ÉËÌNÝ/x½²<I¡!&Ò
¾N^bvé{ÅíAâM 4-òró·KÞ/lhHI¤4¡oº^ñ{dxBBM!¥|¼ÄíÒ÷Û Äi
+([äåæ'n¼^Ù$ÐHiBß'/1;t½âöÈ ñ&CJù9yÛ¥ï¶A4$$ÒP·ÉËÌNÝ/x½²<I¡!&Ò
¾N^bvé{ÅíAâM 4-òró·KÞ/lhHI¤4¡oº^ñ{dxBBM!¥
|¼ÄíÒ÷Û CùËI$üo¾ü_ÁñøÍælù2(ÞQ|°RBË8``P°¤!¦,êöeÃI¤
¤°)$H
B6ht¶(ð:(ïM(3:(¢ÒB¤æ ò{ÓKJ(¢Ëoq*[b¼ÆEÊÖãEE¶îhXRÆ'8RVe¨/Â}ÒÒ-Ð>áµßIifBí
-
+1Ëbrªª[Ç-oìRjGxg)UU¯r DþFaÁ>sîîï_o}w¾CW#|ç7Ù:æºëÎS;¼ÌÌÎ9ÍÇ|ü{p `Ø rfcíuSL¬¦
+À=!Y JÉÆ\7
+É@ÒÂ_¼N
ç]N¦Ù½Í-6ÆæÖÛ¶¶·³skNÀÃks¬9eÑÒè²ÂË,¥:3&fÉK,¶S#a$4äFw²ÿL8CÇá&4ËJÅ;I<j©fYbY¾»]æUgt55¨£V+Z·ìQBG¹¦!$Q1Ó²ÃbEa£,3pp곬sÉ8²[-§@ÛN&m¶ÇP2© e9ÉÌÈ%vq!RHÝúâó%
+hÊf-I¡o*VÍÕÕh®j4«%±øÌÌÌêÌÌÌÎ\ä´ãu Ði° øGi{±}«µî÷{¼û½Ý÷ß}÷ß` z
+6 îîîîîîîîîüðþ üÂØ ä? :ØÀ} `
+ôGyóügæ ÿ°ðç ú ý`Ø h ìTüçü@¿:%Sî¸}ÇÄìôÐÄí=èOcO¨¤J§ÿ@@>ÐûÿàÜàèDªlÞDª~ DÐB_0"~Ðp½ }À~ úNâªv ¼àÂ)aKa10húÑ*HÀÁz¸äȰ ?x×TU?È|Î?x¸ø*hJ§¸Ðñ |TyÌù*?(>ð~P~Pü¡ÙÓ{ùúÏÈ~BäJ§É©Ð
+> ¤ û ûÀ è
+üa*ÀâÈ%Sø i=@ 0ÈøÇ¨J§ä ÂÐíDª{À@ ú ¢U4ô8lèäTÀ?%S` ÷ î/ö3âýCëØðDª|ÀHØö|ÀûÈó | P
+.Ñ*
+þ6 þ£¤J- z> ?*%S¯XPX¤V
UVòRT÷{À`L ÐÌÔè â%SESêN z"U<ñ7ªt ` tì` låEÀ?q£ÜúÑ*½©ä% OÈ ï д%SÞój¨ªy ]Hü]ÉáBA¼xÐ
\ No newline at end of file
Deleted: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/64fake-4n2s2ca2c2t.tar.gz
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/64fake-4n2s2ca2c2t.tar.gz 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/64fake-4n2s2ca2c2t.tar.gz 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,202 +0,0 @@
- 0Ï9K íýÑn˲®íëóëà̬Ê,ê\aÁ°áû(5)¶h¶¶-?½«ºº8©î-²ª"#ÆïÃZs
-èþYüQÚ¯ý÷ûíÏôv}Ú¥ãÿé¿Õ&t9ÿ]§ÿ?¶íéßgþ[)¤BÿbÓ¤î¿ýW®þ¿ä¯çcø¯ÿúo_ö?¾ñ÷îÏÿl)×õþý\÷w`YýcciÛ®õoc©¿©ÿÝýÿxÜÝWú=X^ÿ®éÂðÇ\B¦þ¼SÿáÏÇûÿ.ü5X£ÿÿ~Pj©¿Ëê¿{ú%øX£ÿÒucý»ç¿ Ëë?ü˦ßõ/MÖÿJ¡þ&¬ÿqÿ´ÿ±ø½æaÅó?wí ÿr¨¿ëüv¸ïïn¿ßÚÃßÌXà2Õû^ÿ.êK
-ÿí¿Åà¼þs þJÇ?üoÿGÿ/K6ëÿéÛïçÇ]ÿãö©ß}ïîoïþöïê?üGÿÃAÿ¥
-ú· ¡w×lÖÿnxKó¯Y¯ÿ6dÖXï}#ÓÿÝÿºý;lüý*ý[ðjÿÿõ+ûw¬Õÿ®ß}»_y
-¸ìü'ïü]vþþc9ÿ7a[ýÞÝÿÓÒ_5ç¿Ã?Cý¹ÿ7ATÿçÇÿßýÏܾ¹ÿϧú·Mþ®kXÿ-H¹üßXòý"ÒÿËà ûÛ§þp|<>î¯4ô¾þÓ
þù'ôoADü®éÿøû©ÊúÃôßt§ó¿Ð¢þß?¿>ÞßñpHÿ?îÿÇý÷?cýú߯Äù ÜÿùF¤ÿÝþÛýáþçî÷ôð·ã÷õß\îÿCÃý¿ ¥åàÙùß·þpw;ü7Ãàùø·Ïx_ÿí
þKì¸ÿ7!üÃÀ3"ýÿúßÏ·û¯·ýóó~÷ØÿÇãñ÷õgl8ÿk[ôoÂ
-êwMõÿ¿÷OýQáËü?]éÂxþWþ_æüBÎãx¸B¤ÿ¿þûûøx¾?þ]öÿû?räÐ3ýÿWÓNþ/ü&ê_ÍÿÕ^Üÿ6]Wxþ[Ð$ì_é_ÃÿuÒ×5èßü_¾é¿ÿëµÿ{ö¡>õÇG_Dú×ðMúcþú×õß7"ýkø¿¦ýhéÿ2ÿodç
-þ¯þKìèÿ0ÿoDú×ðMëÿø×Ñ¿ø¿|Ský¯åÿîËøJþ
-K@þ«ODú¯æÿº|ÿ/¡¡ÿÓÞÿ}#Уÿuö1ÿÇQý«ù¿ÊuþÏnâG`é_3ÿ÷?¸ÿõHÿù_óúOÿ äùF¤Íü/ü&4(ß5"ý+æÿa翾ÿ)æáÿ6!|èx 8F¤ÿjþ¯«õ¿mÉÿ0!äïZë5ÿW<û¿ð0ù>é¿ÿërþW
-ú7a¼ÿGò~è?êä
ÉÿñY ª¿fþ÷¿&ÿåþ5ó¿Ð¿ ø¿|#Ò5ÿ×åúßÿnÄçÏÇÃ¯ÝøØæIàþ5ó¿¸ÿ1õß7"ýkæqþkþ/ßÈÎÿó¿èÿ4ü/ßô¯ÿ
þM@ý¾©µþ×Ëÿüþæÿåþ5æ?Îù_ÿ Y¥ÿ²Ôñõ'£Âú¿Tý2®ÿø¿ôYYÿãþiÿcÿð{Õ/Âòú\ºÑÿÚBýMØZÿã·Ã}wûüøeøÒÞþbïÿçúçÌü?^íÿ§m»WlÕÿõï©ß}ïîoïþúïê?üGÿÃqÿßÿbïû¾ÙªÿÝþð¦æ_³^ÿMWxÿ7ü'ßô¿h÷¿nÿßLûÿñÿp±ÿÿúç+Vê:þ_ùËÎBI¡Sÿw,cþ3ç?úlªÿéú'-þ5Xsþ;ü3îÿÂxþCýõÔaûïü¦øÿMH¹Ð ìþ¶ÿnÿ0¬èßú|#ÑÿÂößuóÎùù/&0ÿÁ7ý/lÿÝ2ÿþ?#óDÿÛ7ä?.sÿoý¿¾ÿ-kÿÝ4ÿüèÿõDÿÛ·ÿ5ý@÷o*ÿoµÿ.÷ÿ¤ámý?ë¿
-s Îþy¸B¢ÿ
í¿öÿ¹ãþÏ9ôÌvýÿWÓNþ/ü&Hê_Ïÿu=ÿ!ÿdó|#Ñ¿ÿkÊ+ýÿË7ýWó½öÏþ/ôo§þØóðDÿ*þ¯óüLþ£ ¬ÿ¾è_Åÿ5å?v
þ/ðùFtþ§áÿ:ÏôÿË7ý«ø¿¦ó¿¦ ðù¦Òú_Çÿõrÿ»Äþß¹ä¿úD¢ÿzþ¯Ë÷ÿÜeú?Màýß7Ûõß(åý_-þ/$õ¯çÿ*×ù_<ÿM¸q9F¢Õü/ÞÿLàþ×7ý«äÍë?ù&ÿåþUó¿
ðÀüßHô¯ÿEÿ¿ ÿúFtþ§ÿñ>t< #Ñ=ÿ×åúß5
übAþ©´þ×óųÿÿ§ s ÿçþëù¿.çå.£Æû$ïíúJù_aòü_Hê¯ÿÅý¯ äùF¢Õü/ôoþ/ßHô_Ïÿu½þ'ôoÂçÏÇÃ¯ÝøÜæIàþUó¿¸ÿ1õß7ý«æqþkþ/ßÎÿ4ó¿èÿ4ü/ßHô¯ÿ
þM@ý¾©´þWÌÿüþæÿåþUæ?Îù_ÿ Y¥ÿöf±çë5£Âú¿TýR
-þ/ÖÖÿ¸ÚÿØ?ü^ó°¼þ¥¤ñ?O)·øÿLØ\ÿã·Ã}wûüøeøÖÞüfïÿçúçÿÏ¡ñÕþ?v®Ø¬ÿóßS¿ûÞ?Üß>Þýí3ÞÕxÑ~çÿ-çÿ6ÐþéÍúßíoiþ5ëõßæÿÚÀzïþìþWíÿsÛöÿMÀÿcÂØòÍþß/kõ?] ¬ûeç?¡¤ÐÅ©ÿ;v)rþcÁ¶ú.ÒÒ_5ç¿9úcäü×Qý6 nøVå?´ã¯ë¿)#ÒÿÂà÷õ5ÿ¡kðÿ@ÿoDú_Ø ü®þ_Ï8÷ÿEúÿL`þoDú_Ø ¼~ýocÃü'óHÿß×ÿUþóð÷Ñ¿ôÿúFvþ·¬ø}ý_Ïè¸ÿ7þ_ßô¿°xÃù_Ëü7èþñMõÿàQáû»á_ãú?n п!ä< ÿODú_Ø ¼aÿ¸ÿ³!GN =#ÐPñ5íÉÿ
ÿÏQý«ù¿.óÚÿÛæ?øF¤
-ÿ×ÿÖµèßü_¾é¿ÿëµÿ{ö¡>õÇG_Dú×ðMú
-ù/&°þûF¤
-ÿ×´ÿþ/ðùFvþ§àÿæ?¤@ÿ ø¿|#Ò¿ÿkZÿ[æ¿ÙÿË7µÖÿJþ¯óýo[BÑ¿ä¿úF¤ÿjþ¯«ù¡¥ÿÓÞÿ}#УâÿgÿWÂÿe¨þÕü_å:ÿç¿ 7ñ#0Çô¯ÿÕòþg÷¿¾é_#ÿk^ÿéÿ3ü/ßô¯ÿ
ÿÓå»F¤Íü/ò?Làü×7²ó?Åü/üß& Çô_Íÿuµþ·-ù&Dº¦Öú_ÍÿÏþ/ü&0ÿÏ7"ýWó]Îÿ*¡Eÿ&÷ÿHÞ/ýGü¯8ÍìðY ª¿fþ÷¿&ÿåþ5ó¿Ð¿ ø¿|#Ò5ÿ×õúÑ¿ >¿vãc'CDú×ÌÿâþÇÖßô¯ÿÅù¯ ø¿|#;ÿSÌÿ¢ÿÓò¿|#Ò¿fþú7õû¦Öú_/ÿ+Nóñ@þoDú×ÿ8çqþoBL$zfþÅ_0*|©ÿ«IeÐ(%àÿ²`mýû§ýýÃï5¿Ëë?½ÿ)ó_¨¿>ëüv¸ïïn¿ßÚÃßÌòýÿ\ÿ\¸ÿ·a. ûlÖÿ÷ï©ß}ïîoïþöïê?¼è??ÆýËû¿
-ÿùf³þwûÃ[Ízý·þoXï}#
ÓÿÝÿªýnÛñý?§ý¿ S¾~eÿïµúÎÿ×}ƲóPRèâÔÿ»qþ7ç?úl«ÿéþ'©ôÿ¦0õÿrþk¨þÕú/ó®ÃÿcBÊ
`Çô¯8ÿ¡Áÿoý?¾é_cþÃÿAþ» ÌðHÿóç&þæþç?4Üÿ@ÿ¯odçzó
-÷ÿ&Ðÿëþ5úÏóÈÿ±îßÔZÿ«ôÿ¦áM 9ùºùÏ&Lè{ü?>é_£ÿ÷<ÿû?räÐ3ýùíäÿÂÿg¨þjó®cþ¯ ÌðHÿóôoþ/ßô_ËÿõÚÿ=û¿Ð¿ úcÏ#À/"ýkÎàü×Ößô¯8ÿ¡¥ÿËü_¾ÿ©Íý&àÿòHÿóZôoþ/ßÔZÿëÍh§ùìÿMÿË'"ýWó]¾ÿÐÐÿiïÿ¾èñ0Qáý_ñìÿjñY ª5ÿW¹ÎÿâùoÂMüÌ1"ýkæñþg÷¿¾é_#ÿk^ÿÉÿ0ü/ßô¯ÿ
ÿÓå»F¤Íü/ò?Làü×7²ó?½ü/ò?l: é¿ÿëjýo[ò?Lù{¦Öú_ÍÿÏþ/ü&L`þWDú¯æÿºÿUBþMïÿ¼_ú:ù_qòEü_ê¯ÿÅý¯ äùF¤Íü/ôoþ/ßô_Íÿu¹þ·£%ýðùçóñðk7>¶y8D¤Íü/îL`ý÷Hÿù_ÿÿË7²ó?Åü/ú?M ÿË7"ýkæ¡P¿ojÿõò¿âäÿÂÿmÂ\ ü_>é_cþãÿÅù¿ 1 êUú7K-_0*|©ÿ«IãüçP
-óMX[ÿãþiÿcÿð{Í/Âòú|ú{)åú°¹þÇoûþîöùñËð=¼ùÍ,ßÿÏõÏ%qÿgÂ\Æ-ûwlÖÿ÷ï©ß}ïîoïþöïê?üGÿÃqÿßFôo;٬ÿÝþðæ_³^ÿmÈä?ÿÇ72ý/Ùý¯Ûÿ·iìÿÌ©ÿd«ýÿׯìÿݱVÿÓùÿºÏXvþJ
-]ú¿ãðÎ,ØVÿÓýORéÿ==ÿáÿ£þê_ÿ÷2ÿ¡é:ò_MH¹Ð ìþ5ç?àÿ3÷ßô¯1ÿþ_Sÿàþ5ç?pþg÷¾é_qþùÏ6ÐÿëÙùâüîÿM ÿ×7"ýkôÿÎóп tÿø¦Öú_¥ÿ7
ñèôÿtïÿ&Ì%ø'Ç?ð<p
Hÿý¿óüîÿLÈ@Ïôtæ?´ÿÿ ¢ú«Í;yþ[Àüßô¯8ÿ¡Eÿ&àÿòHÿµü_¯ýßçõ?¢>õÇG_Dú×ÿ@þ» ¬ÿ¾é_sþý_&àÿòìüOqþý&àÿòHÿóп ø¿|Ský¯7ÿ¡æ?°ÿ7a.ù¯>é¿ÿëòý¿ÿ§ ¼ÿûF ÿFÅÿÏþ¯ÿ¢úWóëü/ÿ&ÜÄ8À#Ò¿fþï&pÿëþ5ò¿¦üá?Cÿÿåþó¿ü&4(ß5"ýkæÿa翾ÿ)æáÿ6!|èx 8F¤ÿjþ¯«õüëèßX¿gjÿÕü_ñìÿÂÿiÂ\æÿùD¤ÿjþ¯Ëù_%4èßñþÉûE ÿ¨ÿÅüGKDõ×Ìÿâþ×ò¿|#Ò¿fþú7ÿoDú¯æÿº^ÿ#ú7áóÏçãá×n|ló$pHÿù_ÜÿÀúïþ5ó¿8ÿ5ÿodçù_ô@þoDú×ÌÿBÿ& ~ßÔZÿëåMþ@ÿ s ÈÿòHÿóÏù_ÜÿÙ Y¥ÿ´Ôñõ'£Âú¿Týܵø¿,XYÿãþiÿcÿð{Õ/Âòú\Æÿ>¥Sþ3õ×gkýß÷ýÝíóãáK{xûY¾ÿësâþÏWûÿiÆnÀ[õÿbý{êwßûûÛÇ»¿~Æ»úÿÑÿðcÜÿ7÷xß÷ÍVýïö75ÿõúoôoþßô¿h÷¿nÿßtcÿwNÌÿµábÿÿõ+ÏW¬Ôÿtü¿ò3ÿB§þïXùÿ&lªÿéúgùaðóßáqÿDý-Ôaûïü¦#ÿÅ
-Àèaûïù
ùß6ðþïþ¶ÿ®ÿpòÿ4]Äÿkó|#ÑÿÂöß-óBËù ¿ùF¢ÿ
í¿òK¹ÿ7þ_ßÎÿµÿnÿ¸ÿ7þ_ßHô¿°ýwËù_Ñ¿ tÿø¦ÒúÿVûïrÿOþØý?¹cý·a.ÁÙÿ3ÏW
Hô¿°ýwÃþ?wÜÿÙ#'Ù®ÿ ãÿjÚÿÿ
-ú×ó]æ?4ùÏ60ÿÁ7ý«ø¿¦ü·Ñ¿ ø¿|#Ñ5ÿ×kÿ÷yýOèßOý±çàþUü_çù/Ìÿ¶õß7ý«ø¿¦üÇ.Óÿeþ/ßÎÿ4ü_çùþðùF¢ÿ×tþ×dôoþ/ßTZÿëø¿^îsÙÿ0üWHô_ÏÿuùþÇ¿þ
-àýß7Ûõß(åMþ¯&àÿ²@Rÿzþ¯rÿEþ§
-7ñ#0ÇHô¯ÿÅû ÜÿúF¢ü¯yý'ÿÃò¿|#Ñ¿jþþOïþUó¿èÿ7ó_ßÎÿ4ó¿ð>t< #Ñ=ÿ×åúß5übAþ©´þ×óųÿÿ§ s ÿçþëù¿.çå®Eÿ&÷ÿHÞ/Ûõò¿ÂÿÕâÿ²@RÕü/îM ÿË7ý«æ¡ðùF¢ÿzþ¯ëõ?¡>ÿ|>~íÆç6OHô¯ÿÅý ¬ÿ¾è_5ÿó_ðùFtþ§ÿEÿ§
-äùF¢Íü¯þM@ý¾©´þWÌÿüþæÿåþUæ?Îù_ÿ Y§ÿå3_3*|©ÿ«IãüçP2þ/ÖÖÿ¸ÚÿØ?ü^ó°¼þ%weôÿ§1ú°¹þÇoûþîöùñËð=¼ùÍ,ßÿÏõÏÿ
-¯öÿ1`7àÍú1ÿ=õ»ïýÃýíãÝß>ã]ýÿèø1ÿ·ý@óo6ë·?¼¥ù׬×ZÎÿL@ÿ¾éÉîÝþ¿M§óÿÄý
-¯öÿ_¿²ÿwÇZýO ë>cÙùO()tqêÿÝ8ÿó}¶Õÿtþ¬9ÿͧçsÊÿ¢þúê¿°øt÷*ÿ¡é
-ùï&¤\h vHÿß×ÿÕü.Ñÿcý?¾éað»ú=ÿáÜÿÛÑÿcó|#ÒÿÂàõëç&pþïþ6 ¿¯ÿ«üçÐpÿoý¿¾ÿ-k ~_ÿ×ó
-÷ÿ&Ðÿëþ6 o8ÿkôoÝ?¾©µþ¿Õ <*|iÿowêÿ)ã+ú7`.Á?!ä<þç+Dú_Ø ¼aÿ¸ÿ³!GN =#ÐÿâfàQáËç?´ÿÿ ¢úWó]ç?wÌÿ6ù¾é_Ãÿ5å¿u
-ú7ÿoDú¯åÿzíÿ>ç¿ôo§þØóðHÿþ¯Iÿqÿþõaý÷Hÿþ¯iÿú¿LÀÿåÙùÿë<ÿ¡Ðÿaþ/ßô¯áÿÖÿ¶Aÿ&àÿòMõ¿ÿkºÿÍ]Çþß¹ä¿úD¤ÿjþ¯«ù¡¡ÿÓÞÿ}#УâÿÿkÿÿKQý«ù¿ÊUþWÇóßøcDú×ÌÿâýÏî}#Ò¿Fþ×¼þÿaù_¾é_3ÿÿ§
-ÊwHÿù_ôÿÀù¯odçù_ø¿M: é¿ÿëjýþþ-ù{¦Öú_ÍÿÏþ/ü&Ì%`þODú¯æÿºÿU- ú·`¼ÿGò~è?êä1ÿÑQý5ó¿¸ÿ5ü/ßô¯ÿ
þMÀÿåþ«ù¿.×ÿv|$ >ÿ|>~íÆÇ6Oô¯ÿÅý ¬ÿ¾é_3ÿó_ðùFvþ§ÿEÿ§
-äùF¤Åü¯ýú}Ský¯ÿ&ÿý&Ì% ÿË'"ýkÌó¿8ÿ7!&@=³Jÿeqä×
-_êÿjNóC)
-þ/ÖÖÿ¸ÚÿØ?ü^ó°¼þCÙOû¿ÇùoÔ_Íõ?~;Ü÷w·Ï_oíáÍofùþ®.ónn^öÿì\±Yÿ/Þ¿§~÷½¸¿}¼ûÛg¼«ÿð¢ÿ<ü÷ÿm$ÿź¿}³Yÿ»ýá-Í¿f½þÛyÿ7ü'ßÈô¿d÷¿jÿsÏÿrêðÿ05}³ÿ÷ÊZýOçÿë>cÙùO()tqêÿÃ8ÿ±`[ýO÷?I¥ÿ7Mý¿ó_Dõ¯Öÿ{ÿÐt¬ÿ6¤\h vHÿóòM ÿÇ7"ýkÌûÿbó|#Ò¿æüîÿM üÍ7"ý+Îh¹ÿ7þ_ßÈÎÿôæ?ÿgý¿¾é_£ÿ÷<ÿ¡Eÿ&ÐýãZë¥þß.ætêÿÿÐ÷S ðÿøD¤þßóüîÿlÈ@Ïôtæ?´ÿÿ ¢ú«ÍhÇ_ ÿ0ÿÁ7"ý+Î ÿÍü_¾é¿ÿëµÿû¼þGôo§þØóðHÿóòM`ý÷HÿóZú¿LÀÿåÙùâüú?LÀÿåþ5ç? ðù¦Öú_oþC;ù¿Øÿ@þ«oDú¯æÿº|ÿ/Ì4÷ßô¿xĨðÅþ¯xöuø¿,Õ¿ÿ«\çñü7á&~Äæþ5ó¿xÿ3û_ßô¯ÿ5åÿÿú·ü/ßô¯ÿÕàÿ4ù¾é_3ÿü8ÿõìüO1ÿÿ· á =#Ò5ÿ×Õú?þuôo@,Èß3µÖÿjþ¯xöáÿ4ù¾é¿ÿërþW
-ú7a¼ÿGò~è?êäÅÉÿÕâÿ²@TÍü/îM ÿË7"ýkæ¡ðùF¤ÿjþ¯ëõ?¢>ÿ|>~íÆÇ6Oô¯ÿÅý ¬ÿ¾é_3ÿó_ðùFvþ§ÿEÿ§ äùF¤Íü/ôoê÷Mõ¿^þWü_ø¿M ÿË7"ýkÌ<çqÿgCL$zfþóRÇ×
-_êÿjRôrGþ +ëÜ?íì~¯úEX^ÿK7úSêoÁÖú¿îû»ÛçÇ/Ãöðö³|ÿ?×?¯¬ÿÌ%øg®»WlÕÿõï©ß}ïîoïþúïê?üGÿÃqÿß$òßLà}ß7[õ¿ÛÞÔükÖë¿é
-÷ÿ&°ÞûF¤ÿE»ÿuûÿ¦û¿sÿp±ÿÿúç+Vê:þ_ùËÎBI¡Sÿw^ 8ÿ±`SýO×?iñ¯ÁóßáqÿÆüoꯤþÛ7ä?4ý?6¤\h vDÿÛ·Ì(ügèÿñDÿÛ×Í8ù.ÿló|#ÑÿÂöß-óBËù ÿûF¢ÿ
í¿òËx\þ
- ÿ×7¢ó¿eí¿æ?ÿlý¿¾èaûïó¿&£èþñM¥õÿößåþ4ü±M£ÿ§£ÿ×¹gÿOßó<p
DÿÛ7ìÿsÇý
-9rèíú:þ¯¦ü_øÿLÔ¿ÿë2ÿ¡é"ù¯&0ÿÁ7ý«ø¿¦ü·Ñ¿ ø¿|#Ñ5ÿ×kÿ÷ìÿBÿ&|êù8F¢ÿ×yþù¯6°þûF¢ÿ×ÿØú¿LÀÿåÑùÿë<ÿ!Òÿaþ/ßHô¯âÿÎÿþMÀÿåJëÿ×Ëýoîûæÿêþëù¿.ßÿsñÀû¿o¶ë¿QÊÿ:û¿Èÿ7ARÿzþ¯rÿÅóßøc$úWÍÿâýÏî}#Ñ¿Jþ×¼þÿaù_¾è_5ÿÿ§
-ÊwDÿªù_äÀù¯oDçù_ø¿M: è¿ÿërýïBþ ± ÏTZÿëù¿âÙÿ
ÿÓ¹ÌÿóDÿõü_ó¿rÑ¿ ãý?÷ËvýG¥ü¯Óýßð
-ÿËIýUó¿¸ÿ5ü/ßHô¯ÿ
þMÀÿåþëù¿®×ÿþMøüóùxøµÛ< "Ñ¿fþùï6°þûF¢Õü/ÎMÀÿåÑùfþý&ÿåþUó¿Ð¿ ¨ß7Öÿù_ÿ#ÒÿaÂ\ò¿|"Ñ¿ÊüÇ9ÿób"Ô3«ôß´=_¯¾ÔÿÕ¤2è?1ÿÿ>këÜ?íì~¯ùEX^ÿ¡ì¡êòxÿKýõÙ\ÿã·Ã}wûüøeøÖÞüfïÿçúçÂüwÎû¯ö¹ì\±Yÿ/æ¿§~÷½¸¿}¼ûÛg¼«ÿð¢ÿ<üÏÿ[ú¿màüÏ7õ¿ÛÞÒükÖëÿø|#ÓÿÝÿªýnÛñý?§ó?¦|ýÊþß'kõ?] ¬ûeç?¡¤ÐÅ©ÿ;v±åüÇmõ?] ¥¥¿kÎs:õÿÿ/õ·@Tÿ
-ÀÓ Óü¦ë8ÿ3!åB°cDú_Ø ü¾þ¯æ?t
-þxÿ÷HÿßÕÿëùçþ¿@þ» ÌðHÿׯÿm¤ÿßü¾¾éaðûú¿Ê
-÷ÿ&ÐÿëÙùß²à÷õ=ÿ¡ãþßú}#ÒÿÂà
-çmþM ûÇ7µÖÿ·G
/òÿ¤áM §þ¿Âû¿ çû×ÿÇ'"ý/l Þ°ÿÜÿÙ#'è?¨ø¿vòáÿ3ATÿjþ¯ëüçüÿàþ5ü_Sþ[× ðùF¤ÿZþ¯×þïÙÿ
þMøÔ{~é_Ãÿ5é?6ý[Àúïþ5ü_Óþ?´ôÿË7²ó?ÿ×yþCGÿ ø¿|#Ò¿ÿkZÿÇ¿þ
-ÀÿåZëÿ×Ëýo ä¿ÚpÞÿêþ«ù¿®æ?ÿ§ ¼ÿûF ÿFÅÿÏþ/òÿMÕ¿ÿ«\çñü7á&~Äæþ5ó¿xÿ3û_ßô¯ÿ5¯ÿä@þoDú×ÌÿÂÿiBò]#Ò¿bþù6pþëÙùbþþoÂcDú¯æÿºZÿÛübAþ©µþWóųÿÿ§ Sÿçþ«ù¿.çÐ Æû$ïþ£NþWü_ ÿ¢úkæqÿkù_¾é_3ÿýÿË7"ýWó]®ÿí°aDÿ|þù|<üÚmé_3ÿûXÿ}#Ò¿fþç¿&àÿòìüO1ÿþOÈÿòHÿù_èßÔïZë½ü¯8ù¿ð
pÞÿåþ5æ?Îù_ÿ Y¥ÿ\Z¾þ`TøRÿWÊ ÿP
-ù_&¬ÿqÿ´ÿ±ø½æayýKiwÁa?ü&l®ÿñÛ᾿»}~ü2|ko~3Ë÷ÿsýsôãTöÿ>Ù¬ÿïßS¿ûÞ?Üß>Þýí3ÞÕxÑ~ûÿ6ÿfÝß¾Ù¬ÿÝþðæ_³^ÿmÈÜÿÀzïþìþWíÿsãù_NôÿØðõ+ûϬÕÿtþ¿î3ÿB§þïØ¥ÀùÛêºÿI*ý¿)0ÿÁQý«õÿ^æ?ÐÿkEÊ
`Çô¯9ÿügèÿñHÿóÎý¿ÜÿÙÀüßô¯8ÿ¡Áÿkáo¾é_sþ÷ÿ&ÐÿëÙùâüîÿM ÿ×7"ýkôÿÎóп tÿø¦Öú_©ÿ·~Ný¿ÜÿóTü?>é_£ÿwÿÀý 9rèþÎüöäÿÂÿg¨þjóÚñç¿ÌðHÿóÿiþ/ßô_ËÿõÚÿ=û¿Ð¿ úcÏ#À/"ýkÎ ÿÕÖßô¯9ÿûðùFvþ§6ÿ!ú?LÀÿåþç?dôoþ/ßÔZÿëÍhñBþ«oDú¯æÿº|ÿ/¡¥ÿÓÞÿ}#УâÿgÿWÄÿe¨þÕü_å²ÿù_FÜÄ8À#Ò¿fþï&pÿëþ5ò¿æõüÈÿòHÿù_ø?MhP¾kDú×Ìÿ"ÿÃÎ}#;ÿSÌÿÂÿmBøÀ@Ïô_Íÿuµþ·-ù&Äü=Ský¯æÿÿüÿçþ«ù¿.çТÆû$ïþ£NþWæ?ü_ê¯ÿÅý¯ äùF¤Íü/ôoþ/ßô_Íÿu½þGôoÂçÏÇÃ¯ÝøØæIàþ5ó¿¸ÿ1õß7"ý+æÿaþ/ßÈÎÿó¿èÿ4ü/ßô¯ÿ
þM@ý¾©µþ×ËÿSþþoÈÿòHÿóçü/ÎÿMPϬÓÿÍRË×
-_êÿjRôJéðY°¶þÇýÓþÇþá÷_åõ/¥£ÿ7妡þl®ÿñÛ᾿»}~ü2|ko~3Ë÷ÿsýs¼ÿжìÿ=³Yÿ/Þ¿§~÷½¸¿}¼ûÛg¼«ÿð¢ÿ<ü÷ÿmäýߺ¿}³Yÿ»ýá-Í¿f½þÛñÿÿÇ72ý/Ùý¯ÚÿçÆó¿Üpÿoýß¾Y«ÿéüÝg,;ÿ %
.Nýß± ÿ°þ§û¤ÒÿÂÔÿËù¯ ¢úWëÿ½Ì`þ)#Ò¿âüò_làýß7"ýkÌûÉ7ù¾é_sþþ?óHÿó¸ÿ7þ_ßÈÎÿç?pÿoý¿¾é_£ÿù¦ÐýãZëþß4<'ÿ¿ë8ÿ3!ç©ø|"Ò¿Fÿ/óLÉ@Ïôtæ?´'ÿþ?Dõ×ÿÀü_ÿàþ5ç? ðùF¤ÿZþ¯×þïÙÿ
þMøÔ{~é_sþCþ-`ý÷Hÿóèÿ2ÿodçó¸ÿ5ÿoDú×ÿþMÀÿåZë½ùíÉÿAþ«
-ä¿úF¤ÿjþ¯Ë÷æ?XÁû¿oúoTü_ñìÿ"ÿßQý«ù¿ÊuþÏnâG`é_3ÿ÷?¸ÿõHÿù_óúOþ äùF¤Íü/ü&4(ß5"ýkæÿa翾ÿ)æáÿ6!|` gDú¯æÿºZÿÛLþ ± ÏÔZÿ«ù¿âÙÿ
ÿÓæÿùF¤ÿjþ¯Ëù_%´èßñþÉûE ÿ¨ÿ'ÿWÀÿe¨þù_Üÿ@þoDú×ÌÿBÿ&àÿòHÿÕü_×ëDÿ&|þù|<üÚmé_1ÿüwXÿ}#Ò¿fþç¿&àÿòìüO1ÿþOÈÿòHÿù_èßÔïZë½ü¯xòüß&ÿåþ5æ?Îù_ÿ Y¥ÿvñÈÇ?¾ÔÿÕ¤2è?\ðY°¶þÇýÓþÇþá÷_åõ/%6i¨Ê©¥þl®ÿñÛ᾿»}~ü2|ko~3Ë÷ÿåüR^ Xÿ-8Õ"²ÿ÷Êfý¿xÿúÝ÷þáþöñîoñ®þÃþóðcÜÿ·Ìÿµ!£w×lÖÿnxKó¯Y¯ÿ÷#Xï}#ÓÿÝÿªýn˨ÿ
-çÿ&_ÿØÎþß'kõ?ÿ¯ûeç?ax÷ïâÔÿ»qþç?úl«ÿéþ'©ôÿ¦pêÿ
-ÿ ªµþßËü¦ë8ÿ3!åB°cDúWÿØÿ@ÿoDú×ÿ0ç0ÿÅæ?øF¤Åùþ?óHÿóÿbý¿¾ÿéÍ(Üÿ@ÿ¯oDú×èÿ=Ïhп tÿø¦Öú_©ÿ·eÔî:ôoÂéö5ãÿñHÿý¿çùÜÿÙ#'èq3ð¨ðåóÚÿÿ
-¢ú«Íhºü'ÿàþç?4èßü_¾é¿ÿëµÿ{ö¡>õÇG_DúWÿ
-ú·õß7"ý+Î`þ
-ø¿|#;ÿSÿ;ú?LÀÿåþç?´èßü_¾©µþ×ÿÐNóØÿpªù¯né¿ÿëòý¿þOxÿ÷@ÿÿ+ý_ ÿ¢úWóëü/ÿ&ÜÄ8À#Ò¿bþWÃû ÜÿúF¤ü¯yý'ÿÃò¿|#Ò¿fþþOïþ5ó¿èÿ7ó_ßÈÎÿó¿ð>t< #Ò5ÿ×Õúß6äò÷Lõ¿ÿ+ý_ø?M¿~æÿùE¤ÿjþ¯Ëù_%4èßñþÉûE ÿ¨ÿ§ùþ/Dõ×Ìÿâþ×ò¿|#Ò¿fþú7ÿoDú¯æÿº\ÿÛqKþ
-øüóùxøµÛ< "Ò¿fþ÷?&°þûF¤Íü/ÎMÀÿåÙùbþý&ÿåþ5ó¿Ð¿ ¨ß7µÖÿzù_qÿÿÛS-ÈÿrHÿóçü/ÎÿMPϬÒ^<òñF
/õ5©ú%ãÿ2amýû§ýýÃï5¿Ëë_JÊÍPÿ4n©¿ëüv¸ïïn¿ßÚÃßÌòýÿ\ÿ\÷&;³±ìÿ}²Yÿ/Þ¿§~÷½¸¿}¼ûÛg¼«ÿð¢ÿ<ü÷ÿm ÿÁÚ?}³Yÿ»ýá-Í¿f½þÛÐrþgþßÈô¿d÷¿jÿÛnìÿÎþ¦îoöÿ^Y«ÿéüÝg,;ÿ %
.Nýß±#ÿßmõ?Ýÿ$þßèÿ5DTÿjý¿ùMÇüOR.4 ;F¤æ?üëáýß7"ýkÌûñÿÀüßôÏü=¿ùF¤æ?üë¡ÿ×7²ó?æ?üÛ¡ÿ×7"ýkôÿÎóп tÿø¦Öú_¥ÿ7
-Ï8õÿîÿL!ç±ø|"Ò¿Fÿï<ÿû?räÐ3ý/n¾|þC{òáÿ³ATæ?üëaþoDúgþÿü_¾é¿ÿëµÿù¦|ê= ¿ôÏü=¬ÿ¾éùÿzðùFvþÇü;ø¿|#Ò?óþõàÿòMõ¿ÞüöäÿìÿM ÿÕ7"ýWó]¾ÿÐÐÿiïÿ¾è¿Qñųÿ«Áÿe¨þÕü_å:ÿç¿ 7ñ#0Çô¯ÿÅû ÜÿúF¤ü¯yý'ÿÃò¿|#Ò¿fþþOïþ5ó¿Èÿ0ó_ßÈÎÿó¿ð>t< #Ò5ÿ×Õúß¶ä êZë5ÿW<û¿ðÀ
ü?ßô_Íÿu9ÿ«ý0Þÿ#y¿ôuò¿âäÿ
-ø¿,Õ_3ÿû_ÈÿòHÿù_èßü_¾é¿ÿërýoÇWBôoÀçÏÇÃ¯ÝøØæIàþó¿È·õß7"ýkæqþkþ/ßÈÎÿó¿èÿ4ü/ßô¯ÿ
þM@ý¾©µþ×Ëÿæ?vø¿M ÿË7"ýkÌó¿8ÿ7!&@=³Nÿy©åëF
/õ5©ú¥´ø¿,X[ÿãþiÿcÿð{Í/Âòúºáï¥[æ°¹þÇoûþîöùñËð=¼ùÍ,ßÿÏõÏ%qÿgB77ìÿý²Yÿ/Þ¿§~÷½¸¿}¼ûÛg¼«ÿð¢ÿ<ü÷ÿmäþÏÚ?}³Yÿ»ýá-Í¿f½þÛ9ÿ7ü'ßÈô¿d÷¿êü?§nìÿþEþ ôûfþ§óÿu±ìü'ïü]ú¿c;Î,ØVÿÓýORéÿMaêÿåü×Qý«õÿ^æ?4]Gþ£ )#Ò¿æüîÿM ÿÇ7"ýkÌûñÿÀüßô¯8ÿþ_óHÿóèÿµþ_ßÈÎÿôæ?Ðÿký¿¾é_£ÿwÿþM ûÇ7µÖÿJý¿]lÒ4ÿýBß%Àÿãþ5úçùÜÿ#'è?èÌh'ÿþ?DõWÿÐç¿ÌðHÿóZôoþ/ßô_ËÿõÚÿ}^ÿ#ú7áSìyøE¤ÍùôÀúïþ5ç?Ðÿeþ/ßÈÎÿç?Ðÿaþ/ßô¯9ÿýÿË7µÖÿzóÚÉÿÅþßò_}#Ò5ÿ×åû -ý&ðþïþÿWü_cþ;þ/}Dõ¯æÿ*ýÿã¯ÏnâG`é_3ÿ÷?¸ÿõHÿù_óúOþ äùF¤Íü/ü&0ÿÃ7"ýkæÑÿo翾ÿ)æáÿ6!|èx 8F¤ÿjþ¯«õ¿mÉÿ0!2 Ô5µÖÿjþ¯xöáÿ4ù¾é¿ÿërþW
-ú7a¼ÿGò~è?êäÅ)ÿ+ãÿ²@TÍü/îM ÿË7"ýkæ¡ðùF¤ÿjþ¯ëõ?¢>ÿ|>~íÆÇ6Oô¯ÿÅý ¬ÿ¾é_3ÿó_ðùFvþ§ÿèÿ´ü/ßô¯ÿÑ¿ ¨ß7µÖÿzù_qòáÿ6ü/ßô¯1ÿqÎÿâüßH õÌ:ýwK-_0*|©ÿ«IeÐ(¥àÿ²`mýû§ýýÃï5¿Ëë_J¿Rn¨¿ ëüv¸ïïn
¿ßÚÃßÌòýÿ\ÿ\"ûRJÀþß'õÿâý{êwßûûÛÇ»¿}Æ»ú/úÏÃqÿߢèþöÍfýïö·4ÿõúoCÆÿcë½odú_²û_µÿÏ9ç¹áþß©ûý¿WÖê:ÿ_÷ËÎBI¡SÿwìRäüÇmõ?Ýÿ$þߦþ_ÎÿLÕ¿Zÿïeþó¬H¹Ð ìþ5ç?àÿ7þßô¯1ÿaîÿ%ÿÝæ?øF¤ÍùøÿL üÍ7"ýkÎàþßú}#;ÿSÿÀý¿ ôÿúF¤þ_æ?B÷ojÿUúÓð8õÿä®cþ³ }? ÿODú×èÿeþ)9rèþÎüöäÿÂÿg¨þóÿkó|#Ò¿æüôoþ/ßô_ËÿõÚÿ=û¿Ð¿ úcÏ#À/"ýkÎàü×Ößô¯8ÿügðùFvþ§8ÿþðùF¤Íùèßü_¾©µþ×ÿÐüý¿ ä¿úF¤ÿjþ¯Ë÷æ?XÁû¿oúoTü_ñìÿJø¿,Õ¿ÿ«\çñü7á&~Äæþó¿ZÞÿLàþ×7"ýkäÍë?ù&ÿåþ5ó¿ðÐ |×ô¯ÿEþ ÿúFvþ§ÿ
ÿÛð é¿ÿëjýo[ò?Lù{¦Öú_ÍÿÏþ/ü&0ÿÏ7"ýWó]Îÿ*¡Eÿ&÷ÿHÞ/ýGü¯8ÍìðY ª¿fþ÷¿&ÿåþ5ó¿Ð¿ ø¿|#Ò5ÿ×õúÑ¿ >¿vãc'CDú×ÌÿâþÇÖßô¯ÿÅù¯ ø¿|#;ÿSÌÿ¢ÿÓò¿|#Ò¿fþú7õû¦Öú_/ÿ+üÿ· äùF¤ùsþçÿ&ÄD¨gVé?Ý,µ|ýÁ¨ð¥þ¯æ4ÿ9Òâÿ²`mýû§ýýÃï5¿Ëë_Êxð;ìsCþ ëüv¸ïïn¿ßÚÃßÌòýÿ\ÿ\Èÿµa.Á?1²ÿwÈfý¿xÿúÝ÷þáþöñîoñ®þÃþssÒi#ç&ÿâÍúßíoiþ5ëõßLþ 4ùF¦ÿ%»ÿUûÿÜ6͸ÿOç&¼ìÿçFp®X«ÿéüÝg,;ÿ %
.Nýß±£ÿÓmõ?Ýÿ$þߦþ_ÎMÕ¿ZÿïeþCÓÿfCÊ
`Çô¯8ÿ¡!ÿÕú|#Ò¿Æü9ÿþ?ÿàþ5ç?pÿoçÿ¾
é_sþ÷ÿ&ÐÿëÙùâüîÿM ÿ×7"ýkôÿÎóп tÿø¦Öú_©ÿ·1Mý¿¼ÿ0à§?ð<p
Hÿý¿çùÜÿÙ#'è?èÌhÿ`¨þóÈ4ù¾é_sþú7ÿoDú¯åÿzíÿç? >õÇG_Dú×ÿ@ÿ§ ¬ÿ¾é_qþCKÿ ø¿|#;ÿSÿ;ú?LÀÿåþç?´èßü_¾©µþ×ÿÐ2ÿÁ¹ä¿úD¤ÿjþ¯Ë÷ÿZü&ðþïþÿWü_)àÿ²@Tÿjþ¯rÙÿðÿÛp?â sHÿù_¼ÿÀý¯oDú×Èÿ×ò?L ÿË7"ýkæáÿ4ù?¾é_3ÿü8ÿõìüO1ÿÿ· áCÇÀ1"ýWó]ÿmKþ ± ÏÔZÿ«ù¿âÙÿ
ÿÓ¹ÌÿóHÿÕü_ó¿Jhп ãý?÷@ÿQ'ÿ+Nù_ÿ¢úkæqÿkù_¾é_3ÿýÿË7"ýWó]¯ÿýðùçóñðk7>¶y8D¤Íü/îL`ý÷Hÿù_ÿÿË7²ó?µü¯Dÿ§
-äùF¤Åü¯þM@ý¾©µþ×Ëÿÿÿ· s ÈÿòHÿóçü/ÎÿMPϬÓZjùúQáKý_M*þCÉÿkëÜ?íì~¯ùEX^ÿ»n|þ§<>ÿ©¿>ëüv¸ïïn¿ßÚÃßÌòýÿ\ÿ\ïÿ&¼ìÿÇ-ûwlÖÿ÷ï©ß}ïîoïþöïê?üGÿÃqÿßòþo;٬ÿÝþðæ_³^ÿüñÿ@þodú_²û_·ÿoÓØÿSáüÏWûÿ©ç+Öê:ÿ_÷ËÎÂðÎßÅ©ÿ;vãüoÎôÙVÿÓýÏâÃà5ç¿ùôüobàü×Qý«õÿ^æ?4]Çù )#Ò¿âüÿßú|#Ò¿Æü9ÿüwÿàþç?$ÎÿLàþÏ7"ý+Îh¸ÿ7þ_ßÈÎÿôæ?îÿM ÿ×7"ýkôÿç?ÿcÝ?¾©µþWéÿMÃ@<ùºÌügæüBÎãx¸B¤þßóüîÿlÈ@Ïôtæ?´Óüü&ê¯6ÿ¡é:æÿÀüßô¯8ÿ¡Aÿ&àÿòHÿµü_¯ýß³ÿýð©?ö<ü"Ò¿âüÄù¯ ¬ÿ¾é_sþý_&àÿòìüOmþCì
èÿ0ÿoDúWÿТðù¦Öú_oþC;Í`ÿoÂ\ò_}"Ò5ÿ×åû
-ý&ðþïþÿW<û¿Èÿ7ATÿjþ¯rÿÅóßøcDúWÌÿjxÿ3û_ßô¯ÿ5¯ÿä@þoDú×ÌÿÂÿió?|#Ò¿fþù&pþëÙùbþþoÂcDú¯æÿºZÿÛübAþ©µþWóųÿÿ§ s ÿçþ«ù¿.çÐ Æû$ïþ£Nþó-Õ_3ÿû_ÈÿòHÿù_èßü_¾é¿ÿërýoÇ-ú7àóÏçãá×n|ló$pHÿù_ÜÿÀúïþ5ó¿8ÿ5ÿodçù_ô@þoDú×ÌÿBÿ& ~ßÔZÿëåMó;ú?LK@þODú×ÿ8çqþoBL$zfþ'~ýɨð¥þ¯&Aÿ!ë?þ/}VÖÿ¸ÚÿØ?ü^õ°¼þ%ñï¥Ôæú[°µþÇoûþîöùñËð¥=¼ýÅ,ßÿÏõÏüO^íÿGnØ
-øb«þ_¬Oýî{ÿpûx÷×ÏxWÿá?ú~ûÿüxß÷ÍVýïö75ÿõúoºÂû¿ ø|#Òÿ¢ÝÿºýÓýß9Eü?&\ìÿ¿~åyàúÿW~ƲóPRèâÔÿËÿÌù>êºþI
-Öÿÿû¿Ð4ÔßIý¶ÿnÈhºÿß
-Àèaûïù¥%ÿÑÞÿ}#ÑÿÂößuóÎùù/&0ÿÁ7ý/lÿÝ2ÿþ?#óDÿÛ7ä?.sÿoý¿¾ÿ-kÿÝ4ÿüèÿõDÿÛ·ÿ5ýß×7Öÿ·ÚWõÿ&ú#÷&Ì%8ûúç+$ú_Øþ»aÿ;îÿlÈ@Ïl×Ðñ5íäÿÂÿg¤þõü_×ó"ý&0ÿÁ7ý«ø¿¦ü·Ñ¿ ø¿|#Ñ5ÿ×kÿ÷ìÿBÿ&|êù8F¢ÿ×yþKKþ£ ¬ÿ¾è_Åÿ5å?vûðùFtþ§áÿ:ÏôÿË7ý«ø¿¦ó¿¦ ðù¦Òú_Íÿ5Ýÿâÿ²b.ù¯>è¿ÿëòý?wþOxÿ÷Ívý/1*|yþ×ÙÿñY ©=ÿW¹Êÿ"ÿÓøc$úWÍÿâýÏî}#Ñ¿Jþ×¼þÿaù_¾è_5ÿÿ§
-ÊwDÿª
ù_äÀù¯oDçù_ø¿M: è¿ÿërýïLþ ± ÏTZÿëù¿âäÿ"ÿß¹ÌÿóDÿõü_ó¿òø×пãý?÷ËvýG¥ü¯ÓýßðÀÿe¤þªù_Üÿ@þo$úWÍÿBÿ&àÿòDÿõü_×ëBÿ&|þù|<üÚÏmè_5ÿûXÿ}#Ñ¿fþù6àÿòèüO3ÿþOÈÿòDÿªù_èßÔïJëÅü¯Éÿéÿ0a.ù_>è_eþãÿÅù¿ 1¡xϬÒì{¾^3*|©ÿ«IeÐ(%áÿ²`mýû§ýýÃï5¿Ëë_êò°P6×ÿøípßßÝ>?~¾µ7¿åûÿ¹þ¹Dú?MxµÿOiü»WlÖÿùï©ß}ïîoïþöïê?üGÿÃñü¿eþ
-4øf³þwûÃ[Ízý·üoXï}#ÓÿÝÿºýNçÿ©àÿ3áÕþÿëWöÿîX«ÿé`Ýg,;ÿ %
.Nýß±ô°þ§ ´ô×`Íùo>=ÿ9ÿ5ATÿ
-À§¾UùM×qÿoBÊ
`Çô¿°ø}ý_ÍèîÿM ÿÇ7"ý/l ~Wÿ¯ç?ûÿȵù¾éaðúõ¿ó?¸ÿóHÿß×ÿUþsh¹ÿ7þ_ßÈÎÿ5 ¿¯ÿëù÷ÿ&Ðÿëþ6 o8ÿk[ôoÝ?¾©µþ¿Õ <*|ÿ'
±õÿÔÿ×1ÿѹÿÐ÷ãx¸B¤ÿ
-Àöÿû?räÐ3ýÿWÓNþ/ü&ê_ÍÿuÿÜu<ÿ-`þoDú×ðMùo]þMÀÿåþkù¿^û¿gÿú7áSìyøE¤
-ÿפÿØpþkë¿oDú×ðMûÿáï£ðùFvþ§àÿ:Ïèèÿ0ÿoDú×ðMëÛ¢ðù¦Öú_Åÿõrÿ[Æ-ú7`.ù¯>é¿ÿëjþchèÿ4÷ßôߨø¿âÙÿUðY ª5ÿW¹ÎÿâùoÂMüÌ1"ýkæñþg÷¿¾é_#ÿkÊÿ·èß ò¿|#Ò¿fþþOïþ5ó¿Èÿ0ó_ßÈÎÿó¿ð>t< #Ò5ÿ×Õúß¶äò÷Lõ¿ÿ+ý_ø?MKÀü?ô_Íÿu9ÿ«ý0Þÿ#y¿ôuò¿ÿh¨þjù_ÜÿZAþoDúWÌÿb
þ
-ø¿|#Ò5ÿ×õúÑ¿ >¿vãc'CDú×ÌÿâþÇÖßô¯ÿÅù¯ ø¿|#;ÿSÌÿ¢ÿÓò¿|#Ò¿fþú7õû¦Öú_/ÿkòú?LK@þODú×ÿxÎÿâþÏH õÌ*ý7ÝRË×
-_êÿjRôJiñY°¶þÇýÓþÇþá÷_åõ/eü9ìDòxÿCýõÙ\ÿã·Ã}wûüøeøÖÞüfïÿçúçá߬ÿÌøg®»WlÖÿ÷ï©ß}ïîoïþöïê?¼è??Æýéÿ6ó?ßlÖÿnxKó¯Y¯ÿ6dü?&ÐüåþìþWíÿóxñ7ìÿúl
-ðõ+û¬Õÿtþ¿î3ÿB§þïØÅó¶ÕÿtÿTúÓ¹ÿó_Dõ¯Öÿ{ÿÀü+R.4 ;F¤ÍùøÿM ÿÇ7"ýkÌó?È7ù¾é_qþCÃù ÿûF¤ÍùÜÿ@ÿ¯odçó¸ÿ7þ_ßô¯ÑÿËüSèþñMõ¿JÿoÞÚñü/sÿgÄT¾Çÿãþ5úÿ`J zF ÿ 3ÿ¡ü_øÿLÕ_sþý&0ÿÁ7"ýkÎ@ÿ&àÿòHÿµü_¯ýßóüôo§þØóðHÿóZôoë¿oDú×ÿÀý ø¿|#;ÿSÿ@ÿ ø¿|#Ò¿æüôoþ/ßÔZÿëÍh§ùìÿMÿË'"ýWó]¾ÿ3ÿÁ
-Þÿ}#Уâÿÿ+ü_ê_ÍÿU.ûÿù6ÜÄ8À#Ò¿fþï&pÿëþ5ò¿æõüÈÿòHÿù_ø?MhP¾kDú×Ìÿ"ÿÃÎ}#;ÿSÌÿÂÿmBøÐñ pHÿÕü_WëÛÿaB,Èß3µÖÿjþ¯xöáÿ4a* óÿ¼"Ò5ÿ×åü¯ôoÂxÿäý"ÐÔÉÿSþWÆÿe¨þù_Üÿ@þoDú×ÌÿBÿ&àÿòHÿÕü_×ëDÿ&|þù|<üÚmé_3ÿûXÿ}#Ò¿fþç¿&àÿòìüO-ÿ+Ñÿiù_¾é_1ÿ+£P¿ojÿõò¿âäÿÂÿmÂ\ ü_>é_cþãÿÅù¿ 1 êuúÏK-_0*|©ÿ«IeÐ(%áÿ²`mýû§ýýÃï5¿Ëë_Jãó?åú°¹þÇoûþîöùñËð=¼ùÍ,ßÿÏõÏÿYÿ-
-psÃþß'õÿâý{êwßûûÛÇ»¿}Æ»ú/úÏÃqÿߢ8ÿóÍfýïö·4ÿõúoC&ÿÉü?¾éÉîÕþ?·íøþSGþ« SèÿöÊZýOçÿë>cÙùO()tqêÿý6l«ÿéþ'©ôÿ¦0õÿrþg¨þÕú/óü7R.4 ;F¤Íùä¿Àû¿oDú×ÿ0çÐÿgó|#Ò¿âüÄù ¿ùF¤ÍùÜÿ@ÿ¯odçó¸ÿ7þ_ßô¯Ñÿ;Ï@ÿ&ÐýãZë¥þß.4
þ_C¦ô=þô¯Ñÿ;ÏàþÏ9ô@ÿAgþCËüCDõWÿÐtù&0ÿÁ7"ý+Î`þ
-ø¿|#Ò-ÿ×kÿ÷ìÿBÿ&|ê= ¿ô¯9ÿü7Xÿ}#Ò¿æüîLÀÿåÙùÚüáï¡ðùF¤Åù-ú7ÿojÿõæ?´ø¿
-@þ«WDú¯æÿº|ÿ/£
-ýÀû¿oúoTü_ñìÿ*ø¿,Õ¿ÿ«\çñü7á&~Äæþ5ó¿xÿ3û_ßô¯ÿ5åÿæÛ@þoDú×ÌÿÂÿiBò]#Ò¿fþù&pþëÙùbþþoÂcDú¯æÿºZÿÛübAþ©µþWóųÿÿ§ Sÿçþ«ù¿.çÐ Æû$ïþ£NþWü_
-þ/DõWËÿâþ×
-ò¿|#Ò¿bþó_lÀÿåþ«ù¿®×ÿþMøüóùxøµÛ< "Ò¿fþ÷?&°þûF¤Íü/ÎMÀÿåÙùbþý&ÿåþ5ó¿Ð¿ ¨ß7µÖÿzù_qòáÿ6a* ù_^é_cþã9ÿû?b"Ô3«ô[¾þ`TøRÿWÆùÏ¡dæ?°¶þÇýÓþÇþá÷_åõ/¹+ãó?åñùOýõÙ\ÿã·Ã}wûüøeøÖÞüfïÿçúçyÿ7a.Á?cØÿ»c³þ_¼Oýî{ÿpûx÷·ÏxWÿá?ú~ûÿ6pÿo;٬ÿÝþðæ_³^ÿ-ó¿@ÿ¾éÉîÝþ¿McÿgN
ü'^íÿ¿~eÿïµúÎÿ×}ƲóPRèâÔÿ»Èù ÛêºÿI*ý¿§çç¿&ê_ÿ÷2ÿ¡Yÿ
-H¹Ð ìþç?$ÎÿM ÿÇ7"ýkÌ ÿÃæ?øF¤ÍùÿÀù¿oDúWÿ@ÿ¿
-ôÿúFvþ§7ÿ¡pÿoý¿¾é_£ÿ÷<ÿù¯6ÐýãZëþß4¼ <ú:ü?6Ì%ø'¾ÿÀóÀ"ýkôÿç?pÿgC zF ÿ 3ÿ¡æ?àÿ3ATµùMÇüOÿàþç?4èßü_¾é¿ÿëµÿ{ö¡>õÇG_DúWÿÈ7õß7"ý+Îhèÿ2ÿodçóèÿ0ÿoDú×ÿþMÀÿåZë½ùíÉÿÕ±ÿ7a.ù¯>é¿ÿëòý¿ÿ§ ¼ÿûF ÿFÅÿÏþ¯ÿËQý«ù¿ÊUþWÇóßøcDú×ÌÿâýÏî}#Ò¿Fþ×¼þÿaù_¾é_3ÿÿ§
-ÊwHÿù_äÀù¯odçù_ø¿M: é¿ÿëjýoò?Lù{¦Öú_Íÿuºÿ-üæ0ÿÏ'"ýWó]Îÿ*¡Aÿ&÷ÿHÞ/ýGü/æ?Z"ª¿fþ÷¿&ÿåþ5ó¿Ð¿ ø¿|#Ò5ÿ×åúßGÂèßÏ?_»ñ±ÍÀ!"ýkæqÿcë¿oDúWÌÿ"ÿÃü_¾ÿ)æÑÿiù_¾é_3ÿýú}Ský¯ÿ¦ü/ú?LK@þODú×ÿ8çqþoBL$zfþc»Ôòõ£Âú¿Tý;ü_¬ÿqÿ´ÿ±ø½æayý²ò_ÓKý
-Ø\ÿã·
Ã}wûüøeøÖÞüfïÿçúçÉ0áÕþܤ±ÿwÆfý¿xÿúÝ÷þáþöñîoñ®þÃô?ü÷ÿm ÿÛîÿ}³Yÿ»ýá-Í¿f½þÛÐâÿ1ü'ßÈô¿d÷¿nÿßñý?§Bþ« ìÿÇp®X«ÿéüÝg,;ÿ %
.Nýß±ßÿ9ÿÑg[ýO÷?IgþC7Í ÿ×Qý«õÿ^æ?0ÿÁ
-Àé_qþù/6pþçþ5æ?Ìý¿ÜÿÀüßô¯9ÿÿ ¿ùF¤ÍùÜÿ@ÿ¯odçó¸ÿ7þ_ßô¯ÑÿËüSèþñMõ¿Jÿo
-£õ÷Ôÿÿǹ'ÿOÎø!Ò¿Fÿ/óLÉ@Ïôtæ?´ÿÿ ¢úkÎ ÿÅæ?øF¤Íùèßü_¾é¿ÿëµÿ{ö¡>õÇG_Dú×ÿÀù¯ ¬ÿ¾é_sþý_&àÿòìüOqþý&àÿòHÿóп ø¿|Ský¯7ÿ¡=ù?ûæÿêþ«ù¿.ßÿÿ`ïÿ¾è¿ÑÉÿ:û¿ü_ê_ÍÿU®ó¿xþp?â sHÿù_¼ÿÀý¯oDú×Èÿ×ò?L ÿË7"ýkæáÿ4ù¾é_3ÿü8ÿõìüO1ÿÿ· áCÇÀ1"ýWó]ÿmKþ ± ÏÔZÿ«ù¿âÙÿ
ÿÓ¹ÌÿóHÿÕü_ó¿Jhп ãý?÷@ÿQ'ÿëtÿCÿËQý5ó¿¸ÿ5ü/ßô¯ÿ
þMÀÿåþ«ù¿.×ÿv|%Dÿ|þù|<üÚmé_1ÿüwXÿ}#Ò¿fþç¿&àÿòìüO1ÿþOÈÿòHÿù_èßÔïZë½ü¯pÿØÑÿaÂ\ò¿|"Ò¿ÆüÇ9ÿób"Ô3ëôÿq©åëF
/õ5©ú¥´ø¿,X[ÿãþiÿcÿð{Í/ÂòúÜ8Ô?åqþõ×gsýß÷ýÝíóãá[{xóY¾ÿëK¤ÿÓWûÿñì\±Yÿ/Þ¿§~÷½¸¿}¼ûÛg¼«ÿðý?Æý¹ÿ3æßlÖÿnxKó¯Y¯ÿ6dÎÿMÀÿãþìþ×íÿÛt:ÿOþ?^íÿÇîoöÿÎX«ÿéüÝg,;ÿ %
.Nýß±ô°þ§û¤Òÿ¦þßÈù¯ ¢úWëÿ½Ìh¸ÿ7"åB°cDú×ÿÀý¿ ¼ÿûF¤ùsÿ/÷&0ÿÁ7"ý+Î ÿ×îÿ|#Ò¿âüúm ÿ×7²ó?½ùôÿÚ@ÿ¯oDú×èÿç? èþñMõ¿Vÿo7üù4ÿó?æüBßàyà
-þ5úçùÜÿ#'è?èÌh'ÿþ?DõWÿÐç¿ÌðHÿóZôoþ/ßô_ËÿõÚÿ}^ÿ#ú7áSìyøE¤Íù-ú·õß7"ýkÎ ÿËü_¾ÿ)Îàþ×ü_¾é_sþú7ÿojÿõæ?´ÿý¿ s ÈõHÿÕü_ïÿ%´ôÀû¿oúoTü_qò¥ÿËQý«ù¿Êeÿÿø+ÁóßøcDú×ÌÿâýÏî}#Ò¿Fþ×¼þÿaù_¾é_3ÿÿ§
-ÊwHÿù_äÀù¯odçù_ø¿M: é¿ÿëjýo[ò?Lù{¦Öú_Íÿ[ò¿KÀü?ô_Íÿu9ÿ«ý0Þÿ#y¿ôuò¿ÿh¨þù_Üÿ@þoDú×ÌÿBÿ&àÿòHÿÕü_×ëDÿ&|þù|<üÚmé_3ÿûXÿ}#Ò¿fþç¿&àÿòìüO-ÿ+Ñÿiù_¾é_1ÿ+£P¿ojÿõò¿&ÿG ÿùäùD¤ùsþçÿ&ÄD¨gV鿹YjùúQáKý_M*þC)ÿkëÜ?íì~¯ùEX^ÿRbCýSûÿ©¿>ëüv¸ïïn¿ßÚÃßÌòýÿ\ÿ\èÿ°á¼ÿjÿkÁnÀõÿâý{êwßûûÛÇ»¿}Æ»ú/úÏÃqÿßFÞÿMàüÏ7õ¿ÛÞÒükÖë¿
-üÈòLÿKvÿ«öÿ¹mÇ÷ÿÜòßL
-ðõ+û¬Õÿtþ¿î3ÿB§þïØÿoöúîJÿo:÷ÿrþk¨þÕú/óù6¤\h vHÿÌø×CÿoDú×ÿ0÷ÿâÿ5ù¾éùÿzóHÿÌø×Cÿ¯odçÌø·Cÿ¯oDú×èÿç? èþñMõ¿JÿoÞr3ú:ÖÎ÷¯ÿODú×èÿç?pÿgB zF ÿ 3ÿ¡=ù¿ðÿÙ ª?óþõ0ÿÁ7"ý3ÿá_þ/ßô_ËÿõÚÿÍüS>õÇG_DúgþÿÖßôÏü=ø¿|#;ÿcþÿü_¾éùÿzðù¦Öú_oþC;Í`ÿoÂyÿEþ«SDú¯æÿº|ÿ/¡¥ÿÓÞÿ}#Уâÿgÿùÿ&ê_ÍÿU.ûÿù6ÜÄ8À#Ò¿fþï&pÿëþ5ò¿æõüÈÿòHÿù_ø?M`þoDú×Ìÿ¢ÿßÎ}#;ÿSÌÿÂÿmBøÐñ pHÿÕü_Wëÿ8ýò÷Lõ¿ÿ+Nþ/òÿm
-Àü?¯ô_Íÿu9ÿ«ý0Þÿ#y¿ôuò¿â4ÿ±àÿ²@TÍü/îM ÿË7"ýkæ¡ðùF¤ÿjþ¯ëõ?¢>ÿ|>~íÆÇ6Oô¯ÿÅý ¬ÿ¾é_1ÿüðùFvþ§ÿEÿ§ äùF¤Íü/ôoê÷Mõ¿^þWò¿ðpÞÿåþ5æ?Îù_ÿ Y¥ÿZ¾þ`TøRÿWÊ ÿPJÂÿeÁÚú÷Oûûßk~׿õþ^Jc,õ7`sýß÷ýÝíóãá[{xóY¾ÿëó¿lhÛ©ìÿ}²Yÿ/Þ¿§~÷½¸¿}¼ûÛg¼«ÿð¢ÿ<ü÷ÿ-ý_6ÐýíÍúßíoiþ5ëõßÎÿm ÿÉ72ý/Ùý¯ÚÿçÆó¿:òLøúý¿gÖê:ÿ_÷ËÎBI¡SÿwìbæüÇmõ?Ýÿ,>^sþSú9ÿ5ATÿjý¿ùMÇúoCÊ
`Çô¯9ÿûèÿñHÿóæüü&0ÿÁ7"ý+ÎHôÿ@øoDú×ÿÀý¿ ôÿúFvþ§8ÿûèÿõHÿý¿óüôoÝ?¾©µþWéÿMÃsâtþ¹ÿ3"ç©ø|"Ò¿Fÿïyþ÷6äÈ gú:óÚÉÿ
ÿÏQýÕæ?4]×ñü·ù¾é_qþCþMÀÿåþkù¿^û¿gÿú7áSìyøE¤Íùä¿Àúïþç?´ÜÿÿË7²ó?µùÃßCÿàÿòHÿóZôoþ/ßÔZÿëÍh§ùìÿM ÿÕ7"ýWó]¾ÿÀüWxÿ÷@ÿÿ+ý_ÿ¢úWóëü/ÿ&ÜÄ8À#Ò¿fþï&pÿëþ5ò¿¦üqKþ
- ÿË7"ýkæáÿ4ù¾é_3ÿü8ÿõìüO1ÿÿ· á =#Ò5ÿ×Õúß¶äò÷Lõ¿ÿ+ý_ø?M`þoDú¯æÿºÿUBþMïÿ¼_ú:ù_qò5ø¿,Õ_-ÿû_+ÈÿòHÿù_̱ÿoDú¯æÿº^ÿ#ú7áóÏçãá×n|ló$pHÿù_ÜÿÀúïþ5ó¿8ÿ5ÿodçù_ô@þoDú×ÌÿBÿ& ~ßÔZÿëåÅÉÿ
ÿÛò¿|#Ò¿ÆüÇsþ÷6ÄD¨gÖéñÈÇ?¾ÔÿÕ¤2è?ðY°
¶þÇýÓþÇþá÷_åõ/¥ÃßKiÜR6×ÿøípßßÝ>?~¾µ7¿åûÿ¹þ¹0ÿËÙÿ{f³þ_¼Oýî{ÿpûx÷·ÏxWÿáEÿyø1îÿÛÀù tûf³þwûÃ[Ízý·¡eý7æ/ßÈô¿d÷¿jÿsÏÿr"ÿÅú¿}³VÿÓùÿºÏXvþJ
-]ú¿cGÿ§
-ÛêºÿI*ý¿)Lý¿ÿ ªµþßËü¦cý·!åB°cDú×ÿ@þ« ôÿøF¤ùsþý&0ÿÁ7"ýkÎ`þ ÿûF¤ÅùÌÿµþ_ßÈÎÿôæ?îÿM ÿ×7"ýkôÿç?4èߺ|Ský¯ÔÿÛÅ6Oý¿ÿóTü?>é_£ÿwÿÀý 9rèþ7
-_>ÿ¡eþ!¢ú«ÍhºüGÿàþç?0ÿËü_¾é¿ÿëµÿ{ö¡>õÇG_Dú×ÿ@þ ¬ÿ¾é_sþý_&àÿòìüOqþ÷¿&àÿòHÿóп ø¿|Ský¯7ÿ¡eþ!ä¿úF¤ÿjþ¯Ë÷ÿú?Màýß7ý7*þ¯xöµø¿,Õ¿ÿ«\çñü7á&~Äæþ5ó¿xÿ3û_ßô¯ÿ5¯ÿä@þoDú×ÌÿÂÿiBò]#Ò¿fþù&pþëÙù^þWÿÛð é¿ÿëjýo[ò?Lù{¦Öú_Íÿ[ò¿aþoDú¯æÿºÿUBþMïÿ¼_ú:ù_qòEü_ê¯ÿÅý¯ äùF¤Íü/ôoþ/ßô_Íÿu¹þ·£%ýðùçóñðk7>¶y8D¤Íü/îL`ý÷Hÿù_ÿÿË7²ó?Åü/ú?M ÿË7"ýkæ¡P¿ojÿõò¿âäÿÂÿmù_¾é_cþãÿÅù¿ 1 êUúOíRË×
-_êÿjRôJ ø¿,X[ÿãþiÿcÿð{Í/ÂòúecýSNõ·`sýß÷ýÝíóãá[{xóY¾ÿëó¿lKðÏü"ÀnÀõÿâý{êwßûûÛÇ»¿}Æ»ú/úÏÃqÿßâÿ±üßlÖÿnxKó¯Y¯ÿ6´ä¿ÀzïþìþWíÿsÛ4ãþ?ÿbÃËþnçyàµúÎÿ×}ƲóPRèâÔÿ»ØpþcÁ¶úîJÿo
-Sÿ/ç¿&ê_ÿ÷2ÿ¡é:òßMH¹Ð ìþ5ç?Ðÿcý?¾é_cþÃÜÿKÿ ÌðHÿóðÿ@øoDú×ÿÀý¿ ôÿúFvþ§7ÿ¡pÿoý¿¾é_£ÿ÷<ÿùO6ÐýãZëþ߮˧þ¿Èù s þÉyúÏWô¯Ñÿ;ÏàþÏ9ô@ÿAgþC;ù¿ðÿ ª¿æüú?M`þoDú×ÿþMÀÿåþkù¿^û¿gÿú7áSìyøE¤ÍùôÀúïþ5ç?Ðÿeþ/ßÈÎÿç?pÿkþ/ßô¯9ÿýÿË7µÖÿzóÚiþûæÿêþ«ù¿.ßÿKhèÿ4÷ßôߨø¿âÙÿÕâÿ²@Tÿjþ¯rÿÅóßøcDú×ÌÿâýÏî}#Ò¿Fþ×¼þÿaù_¾é_3ÿÿ§ ÌÿñHÿù_äÀù¯odçzù_Ìÿ±!|èx 8F¤ÿjþ¯«õ¿mÉÿ0!äïZë5ÿW<û¿ð0ù>é¿ÿërþW
-ú7a¼ÿGò~è?êä1ÿÑQý5ó¿¸ÿ5ü/ßô¯ÿ
þMÀÿåþ«ù¿.×ÿv´£>ÿ|>~íÆÇ6Oô¯ÿÅý ¬ÿ¾é_3ÿó_ðùFvþ§ÿEÿ§ äùF¤Íü/ôoê÷Mõ¿^þ×xÿ»þæÿåþ5æ?Îù_ÿ Y¥ÿ¦,µ|ýÁ¨ð¥þ¯&Aÿ¡æ?°¶þÇýÓþÇþá÷_åõ/eø÷Pÿ_êoÀæú¿îû»ÛçÇ/÷öðæ7³|ÿ?×?Àû¿ Sbüg®»WlÖÿ÷ï©ß}ïîoïþöïê?¼è??Æý¹ÿ7ó?ßlÖÿnxKó¯Y¯ÿ6dòM ùË72ý/Ùý¯Úÿç¶ßÿsâüß© _¿²ÿ÷ÉZýOçÿë>cÙùO()tqêÿÃ8ÿ±`[ýO÷?I¥ÿ7û9ÿ5ATÿjý¿ùM×ÿjBÊ
`Çô¯9ÿóèÿñHÿóèÿ5
ù¾é_sþç&pþïþç?ÿlý¿¾ÿ)Îàþßú}#Ò¿Fÿï<ÿý@÷ojÿúOÿÓüöÿ&ï_3þô¯Ñÿ;ÏàþÏ9ô@ÿAgþC;ù¿ðÿ ª¿Úüvüàùo ó|#Ò¿âüýÿË7"ý×
ò½ö×ÿþMøÔ{~é_sþùï&°þûF¤ÍùôÿË7²ó?ÅùôÿË7"ýkÎ@ÿ&àÿòMõ¿Þüvò±ÿ7a* ù¯^é¿ÿëòý¿þOxÿ÷@ÿÿ+ý_þ/Dõ¯æÿ*×ù_<ÿM¸q9F¤Íü/ÞÿLàþ×7"ýkäMù?ôÿAþoDúWÌÿjðÐ |×ô¯ÿEþ ÿúFvþ§ÿ
ÿÛð¡ãàþ«ù¿®Öÿñ¯£bAþ©µþWóųÿÿ§ Sÿçþ«ù¿.çÐ Æû$ïþ£NþWü_-þ/Dõ×Ìÿâþ×ò¿|#Ò¿fþú7ÿoDú¯æÿº^ÿ#ú7áóÏçãá×n|ló$pHÿù_ÜÿÀúïþ5ó¿8ÿ5ÿodçù_ô@þoDú×ÌÿBÿ& ~ßÔZÿëåç?âÿ6á| KþSDú×ÿxÎÿâþÏH õÌ:ý\jùúQáKý_M*þC)Ì4amýû§ýýÃï5¿Ëë_J<Õ?åü76×ÿøípßßÝ>?~¾µ7¿åûÿ¹þ¹DòL
-psÃþß'õÿâý{êwßûûÛÇ»¿}Æ»ú/úÏÃqÿßFîÿMàüÏ7õ¿ÛÞÒükÖë¿
-õßò|#ÓÿÝÿªýÿûÿ&ÿdÂT ú¿½²VÿÓùÿºÏXvþJ
-]ú¿c"ç?l«ÿéþ'©ôÿ¦0õÿrþk¨þÕú/óÚñWõß
-Àé_sþþ?èÿñHÿóèÿ5
ù¾é_sþç&þæþ5ç?pÿoý¿¾ÿ)Îàþßú}#Ò¿Fÿï<ÿý@÷ojÿú»Ñø7öÿqþgÃT¾Çÿãþ5úçùÜÿ#'è?èÌhOþ/ü6ê¯9ÿüÿàþ5ç? ðùF¤ÿZþ¯×þïÙÿ
þMøÔ{~é_sþùï&°þûF¤Åùþ/ðùFvþ§6ÿ!1ÿÕü_¾é_qþCFÿ&àÿòMõ¿Þüvò±ÿ7a* ù¯^é¿ÿëòý¿þOxÿ÷@ÿÿ+ý_ ÿ¢úWóëü/ÿ&ÜÄ8À#Ò¿bþWËû ÜÿúF¤ü¯yý'ÿÃò¿|#Ò¿fþþOÿáþ5ó¿Èÿ0ó_ßÈÎÿó¿ð>t< #Ò5ÿ×Õúß¶äò÷Lõ¿ÿ+¶ä2ù^é¿ÿërþW -ú7a¼ÿGò~è?êäÅiþcÿËQý5ó¿¸ÿ5ü/ßô¯ÿ
þMÀÿåþ«ù¿®×ÿþMøüóùxøµÛ< "Ò¿fþ÷?&°þûF¤Íü/ÎMÀÿåÙùbþý&ÿåþ5ó¿Ð¿ ¨ß7µÖÿzù_ñäÿø¿M
-@þWDú×ÿ8çqþoBL$zfþ;¾þdTøRÿWÊ ÿ»ÿ+ëÜ?íì~¯úEX^ÿRbnú§q¹ þlÿñÛ᾿»}~ü2|io1Ë÷ÿsýsN¼ÿ0à¹ì\±Uÿ/Ö¿§~÷½¸¿}¼ûëg¼«ÿð¢ÿ<ü÷ÿMâþÏÞ÷}³Uÿ»ýáMÍ¿f½þ®°þþ}#Òÿ¢Ýÿªýnº±ÿ;§ÿÏýÿׯ<\±RÿÓñÿÊÏXvþÊ ú8õÇ
-ç?lªÿéú'-þ5Xsþ;ü3îÿB©¿ú/lÿÝÿÐtüGR.4 ;F¢ÿ
í¿[æ?îÿm ÿÇ7ý/lÿ]7ÿáäÿiôoó|#ÑÿÂöß-óý¿6pßïþ¶ÿnÈ.ý¿6ÐÿëÑùß²ößMóèÿµþ_ßHô¿°ýwËù_Cÿ¯
-tÿø¦ÒúÿVûïrÿOþؤÑÿSÿdÃ\³ÿ§ïy¸B¢ÿ
í¿öÿü_#räÐ3Ûõtü_M{òáÿ³ARÿzþ¯Ëü¦ç¿ÌðDÿ*þ¯)ÿdôoþ/ßHô_ÍÿõÚÿ}^ÿú7áSäÈÇ1ý«ø¿Îó_Úý[ÀúïþUü_Sþãx\þ
-ÀÿåÑùÿkÒ$ÿÙü_¾è_Åÿ5ÿ5ýÿË7Öÿ:þ¯ûßÜEöÿ&Ì% ÿÕ'ý×ó]¾ÿ箥ÿÓÞÿ}³]ÿRþ×ÙÿÕáÿ²@Rÿzþ¯rÿÅóßøc$úWÍÿâýÏî}#Ñ¿Jþ×yýä@þo$ú×ÌÿjñÐ |×Hô¯ÿEþ ÿúFtþ§ÿ
ÿÛð¡ãàþëù¿.×ÿ®Éäò÷L¥õ¿ÿ+ý_ø?MKÀü?Hô_Ïÿu9ÿ+w-ú7a¼ÿGò~Ù®ÿ¨ÿ&ÿWÿËIýUó¿¸ÿ5ü/ßHô¯ÿ
þMÀÿåþëù¿®×ÿþMøüóùxøµÛ< "Ñ¿jþ÷?&°þûF¢Õü/ÎMÀÿåÑùfþý&ÿåþUó¿Ð¿ ¨ß7Öÿù_ÿ#ÒÿaÂ\ò¿|"Ñ¿ÊüÇsþ÷6ÄD¨gVé?ů×
-_êÿjRôJIø¿,X[ÿãþiÿcÿð{Í/ÂòúNõO¹¡þ&l®ÿñÛ᾿»}~ü2|ko~3Ë÷ÿsýsaþ§
-/ûÿ¶þÀnÀõÿbþ{êwßûûÛÇ»¿}Æ»ú/úÏÃñü¿Eÿ6ÿâÍúßíoiþ5ëõßÞÿmÀÿãþìþWíÿsÛ4ãþ?uÿð²ÿÿúý¿CÖêº X÷ËÎBI¡Sÿw<ÍÿáüGmõ?] ¥¥¿kÎs:õÿÆÈù ¢ú/l >ÝðÊhºÿ¿ )#ÒÿÂà÷õ5ÿ¡kÈ4÷ßô¿°ø]ý¿ÿpîÿÌ1ù¾éaðúõ¿þ?ðûúF¤ÿ
-Àïëÿ*ÿù/FÐÿëÙùß²à÷õ=ÿ¡ãþßú}#ÒÿÂà
-çmþM ûÇ7µÖÿ·G
/òÿ¤áM Mý¿
óæüóô®éaðýàþÏ9ô@ÿAÅÿÕ´ÿÿ ¢úWó]ç?wä?Àüßô¯áÿòߺýÿË7"ý×ò½öÏþ/ôo§þØóðHÿþ¯Iÿ±¡ÿÓÖßô¯áÿöÿÌ1ÿodç
-þ¯óüþðùF¤
-ÿ×´þ·-ú7ÿojÿUü_/÷¿eÜ æÿêþ«ù¿®æ?þOxÿ÷@ÿÿ+ý_ÿ¢úWóëü/ÿ&ÜÄ8À#Ò¿fþï&pÿëþ5ò¿¦üqKþ
- ÿË7"ýkæáÿ4ù?¾é_3ÿü8ÿõìüO1ÿÿ· áCÇÀ1"ýWó]ÿmKþ ± ÏÔZÿ«ù¿âÙÿ
ÿÓ¹ÌÿóHÿÕü_ó¿Jhп ãý?÷@ÿQ'ÿ+Nþ¯ÿ¢ú«åqÿkù_¾é_1ÿù/6àÿòHÿÕü_×ëDÿ&|þù|<üÚmé_3ÿûXÿ}#Ò¿fþç¿&àÿòìüO1ÿþOÈÿòHÿù_èßÔïZë½ü¯8ù¿ð0ü/ô¯1ÿñÿÅý
-1 êUúo[¾þ`TøRÿWÊ ÿP2ù_&¬ÿqÿ´ÿ±ø½æayýK6CýSnõ·`sýß÷ýÝíóãá[{xóY¾ÿë³þ[ð²ÿ¿¹aÿïÍúñþ=õ»ïýÃýíãÝß>ã]ýýçáǸÿoÉÿ¶üßlÖÿnxKó¯Y¯ÿû#пodú_²û_µÿÏmÓûÿTØÿð²ÿ§ÿÛ%kõ?ÿ¯ûeç?¡¤ÐÅ©ÿ;v1rþcÁ¶úîJÿo:åÿÇÀù¯ ¢úWëÿ½Ìhºû?R.4 ;F¤Åùä?Û@ÿoDú×ÿ0çÿló|#Ò¿æüü¿&þæþç?0ÿÍú}#;ÿÓÿP¸ÿ7þ_ßô¯Ñÿ{ÿ@þ³
-tÿø¦Öú_©ÿ·éäÿé:öÿ&Ì%ø§ï§?ð<p
Hÿý¿çùÜÿÙ#'è?èÌh§ùøÿLÕ_mþCÓuä¿Àüßô¯8ÿügðùF¤ÿZþ¯×þïÙÿ
þMøÔ{~é_qþC¢ÿÓÖßô¯9ÿþ/ðùFvþ§8ÿþðùF¤Íùèßü_¾©µþ×ÿÐNóØÿ0üWô_Íÿuùþ_BCÿ§ ¼ÿûF ÿFÅÿÏþ¯ÿËQý«ù¿ÊuþÏnâG`é_1ÿ«áýÏî}#Ò¿Fþ×¼þÓÿgù_¾é_3ÿÿ§ ÌÿðHÿù_äÀù¯odçù_ø¿M: é¿ÿëjýoò?Lù{
¦Öú_ÍÿÏþ/ü&Ì%`þODú¯æÿºÿUBþMïÿ¼_ú:ù_qÿØáÿ²@TÍü/îM ÿË7"ýkæ¡ðùF¤ÿjþ¯Ëõ¿·èßÏ?_»ñ±ÍÀ!"ýkæqÿcë¿oDú×Ìÿâü×ü_¾ÿ)æÑÿiù_¾é_3ÿýú}Ský¯ÿ§ùø¿MK@þODú×ÿ8çqþoBL$zfþÛÅ_0*|©ÿ«IeÐ(
ù&¬ÿqÿ´ÿ±ø½æayýKIqø{)Û@êoÀæú¿îû»ÛçÇ/÷öðæ7³|ÿ?×?Àý ã×?nýÿkÁnÀõÿâý{êwßûûÛÇ»¿}Æ»ú/úÏÃqÿߢ2zwÍfýïö·4ÿõúoC&ÿÑü?¾éÉîÕþ?·åtþ¸ÿ·aüúÇÖoöÿ>Y«ÿéüÝg,;ÿ %
.Nýß±-ç?l«ÿéþ'©ôÿ¦0ÍàüÏQý«õÿ^æ?4]Gþ« )#Ò¿æüöÿ&ðþïþ5æ?Ðÿk
-ó|#Ò¿æüòßM üÍ7"ýkÎàþßú}#;ÿÓÿÐqÿoý¿¾é_£ÿ÷<ÿ¡Eÿ&ÐýãZë¥þß.©ÿÿ¯
-ã×ß÷ø¼"Ò¿Fÿï<ÿû?räÐ3ýùíäÿÂÿg¨þóÈ1ù¾é_sþú7ÿoDú¯åÿzíÿý_èßOý±çàþç?0ÿÓÖßô¯9ÿþ/ðùFvþ§8ÿþðùF¤Íùèßü_¾©µþ×ÿÐNþ/öÿ&_?ù¯~é¿ÿëòý¿þOxÿ÷@ÿA
-_ìÿgÿWÆÿe¨þÕü_å:ÿç¿ 7ñ#0Çô¯ÿÅû ÜÿúF¤ü¯yý§ÿÏò¿|#Ò¿fþþOïþó¿Èÿ°ó_ßÈÎÿó¿ð>t< #Ò5ÿ×Õúß¶äò÷Lõ¿ÿ+ý_ø?M¿~æÿùE¤ÿjþ¯Ëù_%4èßñþÉûE ÿ¨ÿ'ÿWÂÿe¨þù_Üÿ@þoDú×ÌÿBÿ&àÿòHÿÕü_ëKþ»>¿vãc'CDú×ÌÿâþÇÖßô¯ÿÅù¯ ø¿|#;ÿSÌÿ¢ÿÓò¿|#Ò¿fþú7õû¦Öú_/ÿ+Nþ/üß&_?ù_~é_cþãÿÅù¿ 1 êuú_êøúQáKý_M*þCçÿáÿÒgeýû§ýýÃïU¿Ëë_r)ÃßK©ÍÔßõ?~;Ü÷w·Ï_/íáí/fùþ®Îø¿mKpÞÿGî}±Uÿ/Ö¿§~÷½¸¿}¼ûëg¼«ÿðý?Æýп ¼ïûf«þwûÃÍzý7]áüß¿|#Òÿ¢ÝÿºýÓýß9Eü&\ìÿ¿~åyàúÿW~ƲóPRèâÔÿË8ÿó}6Õÿtýÿ¬9ÿþ÷§þꯤþÛ7ä?4]$ÿÑ
-Àèaûïù¥åþßÎû}#ÑÿÂößuóÎù ÿ ÌðDÿÛ·Ìä¿ÚÀù¿o$ú_Øþ»!ÿ¹tûèÿõèüoYûï¦ùûèÿõDÿÛ·ÿ5ý@÷o*ÿoµÿ®êÿ-ÍÉÿÓ%æ?0àìÿÉç+$ú_Øþ»aÿ;îÿlÈ@Ïl×ÐñÖÿ&àÿ³ARÿzþ¯ëùý ÌðDÿ*þ¯)ÿmXпø¿|#Ñ5ÿ×kÿ÷ìÿBÿ&|ê= ¿Hô¯âÿ:Ïiú·õß7ý«ø¿¦üÇ®Ðÿeþ/ßÎÿ4ü_çùþðùF¢ÿ×tþ×ôoþ/ßTZÿ«ù¿òìÿbÿoÂ\ò_}"Ñ=ÿ×åûî2ý&ðþïíúoò¿Îþ¯ÿËIýëù¿ÊuþÏnâG`è_3ÿ+óþgï{¾è_%ÿk^ÿÉÿ0ü/ßHô¯ÿ
ÿÓå»F¢Õü/ò?Làü×7¢ó?Íü/üß& ÇHô_Ïÿu¹þwM&ÿÃX¿g*ÿõü_ñìÿÂÿiÂ\æÿù
D¢ÿzþ¯Ëù_¹ËèßñþÉûe»þ£Rþ×éþ/¤ÿËIýUó¿¸ÿ5ü/ßHô¯ÿ
þMÀÿåþëù¿®×ÿþMøüóùxøµÛ< "Ñ¿jþ÷?&°þûF¢Õü/ÎMÀÿåÑùfþý&ÿåþUó¿Ð¿ ¨ß7Öÿù_ÿ#ÒÿaÂ\ò¿|"Ñ¿ÊüÇ9ÿób"Ô3«ôÓbÏ×kF
/õ5©úeìÿÄÿ¥ÏÚú÷Oûûßk~׿äîTÿú[°¹þÇoûþîöùñËð=¼ùÍ,ßÿÏõÏ
üþØÿÇ»WlÖÿùï©ß}ïîoïþöïê?üGÿÃñü¿
-ä¿Àû¾o6ë·?¼¥ù׬×ZÞÿM ùË72ý/Ùý¯Ûÿ·á´ÿO
óþØÿýÊþßkõ?] ¬ûeç?¡¤ÐÅ©ÿ;v1pþcÁ¶ú.¯9ÿþû?ÿú[ ªÿÂàÓ
-ߪü¦+øÿMH¹Ð ìþ6 ¿¯ÿ«ùã5 ú7ó?ßô¿°ø]ý¿ÿpîÿÌ1ù¾éaðúõ¿ä?ÚÀù¿oDú_Ø ü¾þ¯òCÃý¿ ôÿúFvþ·¬ø}ý_Ï(Üÿ@ÿ¯oDú_Ø ¼áü¯mп tÿø¦ÖúÿVð¨ð¥ý¿¥;ÿã#ý0àäÿÉÿ3Dú_Ø ¼aÿ¸ÿ³!GN =#ÐPñ5íäÿÂÿg¨þÕü_×ùÏû?ÿàþ5ü_Sþ[× ðùF¤ÿZþ¯×þïÙÿ
þMøÔ{~é_Ãÿ5é?&ú?M`ý÷Hÿþ¯iÿú¿LÀÿåÙùÿë<ÿ¡£ÿÃü_¾é_Ãÿ5ÿmþMÀÿåZë-ÿ×tÿ»ý¿ s ÈõHÿÕü_WóCCÿ§ ¼ÿûF ÿF'ÿëìÿø¿,Õ¿ÿ«\åu<ÿM¸q9F¤Íü/ÞÿLàþ×7"ýkäÍë?ù&ÿåþ5ó¿ðÐ |×ô¯ÿEþ ÿúFvþ§ÿ
ÿÛð¡ãàþ«ù¿®Öÿ¶!ÿÃX¿gjÿÕü_§ûßÈÿ·a.óÿ|"Ò5ÿ×åü¯ôoÂxÿäý"ÐÔÉÿ:ÝÿÅáÿË Qý5ó¿¸ÿ5ü/ßô¯ÿ
þMÀÿåþ«ù¿.×ÿv<Fÿ|þù|<üÚmé_3ÿûXÿ}#Ò¿bþù6àÿòìüO1ÿ
þOÈÿòHÿù_èßÔïZë½ü¯0åÑÿaÂ\ò¿|"Ò¿ÆüÇ9ÿób"Ô3«ôº¥¯?¾ÔÿÕ¤2è?Òàÿ²`mýû§ýýÃï5¿Ëë_Jh¿ÒKý
-Ø\ÿã·Ã}wûüøeøÖÞüfïÿçúçÉ0áeÿs3ýÝ+6ëÿÅû÷Ôï¾÷÷·wûwõ^ôãþ¿ÿ@þo6ë·?¼¥ù׬×2ë¿ ø|#ÓÿÝÿªýnfÜÿ'úlxÙÿ½ßìÿݱVÿÓùÿºÏXvþJ
-]ú¿ãðÎ,ØVÿÓýORéÿMSÿoäü×Qý«õÿ^æ?4]Gþ )#Ò¿âüò_màýß7"ýkÌûéÿ3ù¾é_sþóL üÍ7"ý+Î ÿÇú}#;ÿÓÿÐqÿoý¿¾é_£ÿ÷<ÿ¡Eÿ&ÐýãZë¥þß.©ÿü?æüÓ÷Óx¸B¤þßyþ÷&äÈ gú:óÚÉÿ
ÿÏQýÕæ?´ù_60ÿÁ7"ý+Î ÿÕü_¾é¿ÿëµÿû¼þGôo§þØóðHÿóȳõß7"ýkÎ ÿËü_¾ÿ)Î ÿÃü_¾é_sþú7ÿojÿõæ?´ÿý¿ s ÈõHÿÕü_ïÿ%4ôÀû¿oúoTü_ñìÿêðY ª5ÿW¹ÎÿâùoÂMüÌ1"ýkæñþg÷¿¾é_#ÿkÊÿþ3ôoù_¾é_1ÿ«Áÿió|#Ò¿fþù&pþëÙùbþþoÂcDú¯æÿºZÿÇ¿þ
-ù{¦Öú_ÍÿÏþ/ü&Ì%`þODú¯æÿºÿUBþMïÿ¼_ú:ù_qòµø¿,Õ_3ÿû_ÈÿòHÿù_èßü_¾é¿ÿëzýèßÏ?_»ñ±ÍÀ!"ýkæqÿcë¿oDú×Ìÿâü×ü_¾ÿ)æÑÿiù_¾é_3ÿýú}Ský¯ÿÿhÈ\ò¿|"Ò¿ÆüÇsþ÷6ÄD¨gÖé?/µ|ýÁ¨ð¥þ¯&Aÿ¡ÿ˵õ?îö?ö¿×ü",¯)!û¿þ?6×ÿøípßßÝ>?~¾µ7¿åûÿ¹þyø7ë¿/ûÿØÿ;d³þ_¼Oýî{ÿpûx÷·ÏxWÿáEÿyø1îÿÛÀù ä¿øf³þwûÃ[Ízý·!ÿdë½odú_²û_µÿÏmÓûÿÔqþgÂËþþo¬Õÿtþ¿î3ÿB§þïØÑÿiöúîJÿo
-Sÿ/ç¿&ê_ÿ÷2ÿ¡éȳ!åB°cDú×ÿÀù¿ ôÿøF¤ùsþý&0ÿÁ7"ý+ÎHÌ2ð7ßô¯8ÿù¿6ÐÿëÙùâüîÿM ÿ×7"ýkôÿÎóп tÿø¦Öú_¥ÿ7
-o1þ®ÿcÂ\ú~úÏWô¯Ñÿ;ÏàþÏ9ô@ÿAgþCËüCDõWÿÐtû?ÿàþç?0ÿËü_¾é¿ÿëµÿ{ö¡>õÇG_Dú×ÿ@ÿ§ ¬ÿ¾é_sþý_&àÿòìüOqþý&àÿòHÿóп ø¿|Ský¯7ÿ¡eþ!s ÈõHÿÕü_ïÿ%4ôÀû¿oúoTü_ñìÿÊø¿,Õ¿ÿ«\çñü7á&~Äæþ5ó¿xÿ3û_ßô¯ÿ5¯ÿä@þoDú×ÌÿÂÿió|#Ò¿bþù6pþëÙùbþþoÂcDú¯æÿºZÿÛübAþ©µþWóųÿÿ§ s ÿçþ«ù¿.çÐ Æû$ïþ£Nþó-Õ_3ÿû_ÈÿòHÿù_èßü_¾é¿ÿërýo
-#ú·àóÏçãá×n|ló$pHÿù_ÜÿÀúïþ5ó¿8ÿ5ÿodçù_ô@þoDú×ÌÿBÿ& ~ßÔZÿëåMþ@ÿ s ÈÿòHÿóçü/ÎÿMPϬÒ[Z¾þ`TøRÿWÊ ÿP
-óMX[ÿãþiÿcÿð{Í/Âòú8Ô?åñþúë³¹þÇoûþîöùñËð=¼ùÍ,ßÿÏõÏ%²ÿ7aÚ
-ûÿ¹ì\±Yÿ/Þ¿§~÷½¸¿}¼ûÛg¼«ÿð¢ÿ<ü÷ÿmäþßÞ]³Yÿ»ýá-Í¿f½þÛÉ4ü'ßÈô¿d÷¿jÿÛrÚÿ'îÿm¿þ±õý¿OÖê:ÿ_÷ËÎBI¡SÿwìbÇùÛêºÿI*ý¿éÜÿËù¯ ¢úWëÿ½ÌhºüWR.4 ;F¤ÍùìÿM ÿÇ7"ýkÌ ÿ׿?øF¤Åù
-÷ÿ&þæþ5ç?pÿoý¿¾ÿ)Îàþßú}#Ò¿Fÿï<ÿý@÷ojÿUúÓð&ÐåÑÿCþ¯§Û×ÿÇ+"ýkôÿÎó¸ÿ3!GN =#ÐÐÿÐNþ/ü&ê¯6ÿ¡þÏÿàþç?´èßü_¾é¿ÿëµÿû¼þGôo§þØóðHÿóÈ7õß7"ýkÎ ÿËü_¾ÿ)Îàþ×ü_¾é_sþú7ÿojÿõæ?´Óüöÿ&LÏfü_^é¿ÿëòý¿þOxÿ÷@ÿÿ+Nþ¯ðY ª5ÿW¹ìÿÌÿ²á&~Äæþ5ó¿xÿ3û_ßô¯ÿ5¯ÿä@þoDú×ÌÿÂÿió?|#Ò¿fþù&pþëÙùbþþoÂcDú¯æÿºZÿÛübAþ©µþWóųÿÿ§ ã×Ïü?¿ô_Íÿu9ÿ«ý0Þÿ#y¿ôuò¿âÿñY ª¿fþ÷¿&ÿåþ5ó¿Ð¿ ø¿|#Ò5ÿ×õúÑ¿ >¿vãc'CDú×ÌÿâþÇÖßô¯ÿÅù¯ ø¿|#;ÿSËÿJôÚ@þoDúWÌÿÊèßÔïZë½ü¯8ù¿ð0=ñyE¤ùsþçÿ&ÄD¨gVé?.üúQáKý_M*þCÉÿkëÜ?íì~¯ùEX^ÿ»Óþ/åü76×ÿøípßßÝ>?~¾µ7¿åûÿ¹þ¹ÿkÃ\¦:°ÿwÆfý¿xÿúÝ÷þáþöñîoñ®þÃô?ü÷ÿ-ïÿ6pÿïÍúßíoiþ5ëõ?Èÿ 4ùF¦ÿ%»ÿuûÿ6ïÿ9öÿ&ü±ÿÁy¸bþ§óÿu±ìü'º8õÇnÿÍù>ÛêºÿI:
óº©ÿ·¥þê_ÿ÷2ÿ¡é:ü?&¤\h vHÿóþ8ÿóHÿóæüòßM`þoDúWÿðÿÀù¿oDúWÿÐpÿoý¿¾ÿéÍ(Üÿ@ÿ¯oDú×èÿ=Ï ÿǺ|Ský¯ÒÿÂý1úºÂþß¹'ÿOßãÿqHÿý¿çùÜÿÙ#'è?èÌh'ÿþ?DõWÿÐtóM`þoDúWÿÐ ðùF¤ÿZþ¯×þïÙÿ
þMøÔ{~é_qþC¢ÿÓÖßô¯9ÿþ/ðùFvþ§6ÿ!vôÿË7"ý+ÎhÑ¿ ø¿|Ský¯7ÿ¡æ?°ÿ7a.ù¯>é¿ÿëòý¿þOxÿ÷@ÿA
-_ÿuö%ü_ê_ÍÿU®ó¿xþp?â sHÿù_
-ï&pÿëþ5ò¿æõþ?ÈÿòHÿù_ø?MhP¾kDú×Ìÿ"ÿÃÎ}#;ÿSÌÿÂÿmBøÐñ pHÿÕü_WëÛÿaB,Èß3µÖÿjþ¯xöáÿ4a.óÿ|"Ò5ÿ×åü¯ôoÂxÿäý"ÐÔÉÿ:ÝÿÅPðY ª¿fþ÷¿&ÿåþ5ó¿Ð¿ ø¿|#Ò5ÿ×åúß[ôoÀçÏÇÃ¯ÝøØæIàþ5ó¿¸ÿ1õß7"ýkæqþkþ/ßÈÎÿó¿èÿ4ü/ßô¯ÿ
þM@ý¾©µþ×Ëÿ
-§ùý&Ì% ÿË'"ýkÌó¿8ÿ7!&@=³Jÿm^jùúQáKý_M*þC)
-þ/ÖÖÿ¸ÚÿØ?ü^ó°¼þ¥¤4ü½áÇøü§þúl®ÿñÛ᾿»}~ü2|ko~3Ë÷ÿsýs¼ÿ0oûÿkÁnÀõÿâý{êwßûûÛÇ»¿}Æ»ú/úÏÃqÿßFîÿLÈèÝ5õ¿ÛÞÒükÖë¿
-õß¿|#ÓÿÝÿªýn˨ÿèÿ±aüúǶoöÿ>Y«ÿéüÝg,;ÿ %
.Nýßqøç?l«ÿéþ'©ôÿ¦©ÿ7rþk¨þÕú/óîÿH¹Ð ìþ5ç?°ÿ7þßô¯1ÿaîÿ%ÿÕæ?øF¤ÍùôÿÀù¿oDúWÿ@ÿ¯
-ôÿúFvþ§7ÿþ_èÿõHÿý¿çùôÿÚ@÷ojÿUúÓð&PÊÔÿËù ã×ß÷ø¼"Ò¿Fÿï<ÿû?räÐ3ýùíäÿÂÿg¨þjóÚñWç¿ÌðHÿóZôoþ/ßô_ËÿõÚÿ}^ÿ#ú7áSìyøE¤ÅùMþ-`ý÷Hÿóèÿ2ÿodçó¸ÿ5ÿoDú×ÿþMÀÿåZë½ùíÉÿØÿ0}ýø¿¼"Ò5ÿ×åû
-ý&ðþïþÿW<û¿:ü_ê_ÍÿU®ó¿xþp?â sHÿù_¼ÿÀý¯oDú×Èÿòÿý[@þoDúWÌÿjðÐ |×ô¯ÿEþ ÿúFvþ§ÿ
ÿÛð¡ãàþ«ù¿®Öÿñ¯£bAþ©µþWóųÿÿ§ ã×Ïü?¿ô_Íÿu9ÿ«ý0Þÿ#y¿ôuò¿âäÿjñY ª¿fþ÷¿&ÿåþ5ó¿Ð¿ ø¿|#Ò5ÿ×õúÑ¿ >¿vãc'CDú×ÌÿâþÇÖßô¯ÿÅù¯ ø¿|#;ÿSÌÿ¢ÿÓò¿|#Ò¿fþú7õû¦Öú_/ÿ+Nþ/üß&L_?þ/¯ô¯1ÿñÿÅý
-1 êuúïZ¾þ`TøRÿWÆùÏ¡ÿ˵õ?îö?ö¿×ü",¯)©þ^J¹!ÿÍÍõ?~;Ü÷w·Ï_oíáÍofùþ®.ü'Ưÿæý¿W6ëÿÅû÷Ôï¾÷÷·wûwõ^ôãþ¿¼ÿÑ»k6ë·?¼¥ù׬×2þÈòLÿ
Kvÿ«öÿ¹-£þsbþ
-ã×Oÿ·_Öê:ÿ_÷ËÎBI¡SÿwìRàüÇmõ?Ýÿ$þߦþ_ÎMÕ¿Zÿïeþó¬H¹Ð ìþ5ç?°ÿ7þßô¯1ÿaîÿ%ÿÝæ?øF¤ÍùøÿL üÍ7"ýkÎàþßú}#;ÿSÿÀý¿ ôÿúF¤þ_æ?B÷ojÿUúÓð!å®pÿgÂøõ÷=þ¯ô¯ÑÿËüSräÐ3ýùíÉÿ
ÿÏQý5ç?0ÿ׿?øF¤Íùèßü_¾é¿ÿëµÿ{ö¡>õÇG_Dú×ÿ@þ ¬ÿ¾é_sþ÷?&àÿòìüOmþC
-ôÿË7"ý+ÎÈèßü_¾©µþ×ÿÐNóØÿ0~ýä¿úE¤ÿjþ¯Ë÷æ?XÁû¿oúoTü_ñìÿø¿,Õ¿ÿ«\öÿç¿7ñ#0Çô¯ÿÅû ÜÿúF¤ü¯yý'ÿÃò¿|#Ò¿fþþOÿáþ5ó¿Èÿ0ó_ßÈÎÿó¿ð>t< #Ò5ÿ×Õúß¶äò÷Lõ¿ÿ+Nþ/òÿm¿~æÿùE¤ÿjþ¯Ëù_%´èßñþÉûE ÿ¨ÿ§ùÿ¢úkæqÿkù_¾é_3ÿýÿË7"ýWó]¯ÿýðùçóñðk7>¶y8D¤Íü/îL`ý÷Hÿù_äØÿË7²ó?Åü/ú?M ÿË7"ýkæ¡P¿ojÿõò¿âÿ
ÿÛñë'ÿË/"ýkÌó¿8ÿ7!&@=³Jÿy±åëF
/õ5©ú¥0ÿѵõ?îö?ö¿×ü",¯))Ïÿü&l®ÿñÛ᾿»}~ü2|ko~3Ë÷ÿsýsô0íþÙÿ{e³þ_¼Oýî{ÿpûx÷·ÏxWÿáEÿyø1îÿÛÀý¿ ´úf³þwûÃ[Ízý·Ìÿ2ÿodú_²û_µÿÏm7öçDþ
-S÷7û¯¬Õÿtþ¿î3ÿB§þïØþÎôÙVÿÓýORéÿMaêÿåü×Qý«õÿ^æ?4]Gþ« )#Ò¿æüü&ðþïþ5æ?ÿa
-ó|#Ò¿âüÄý¿ ¿ùF¤ÅùôÿÛ@ÿ¯odçzó
-÷ÿ&Ðÿëþ5úÏóÿjÝ?¾©µþWêÿíbý¹ÃÿcC}? ÿODú×èÿ=ÏàþÏ9ô@ÿAgþC;ù¿ðÿ ª¿ÚüýÌðHÿóôoþ/ßô_ËÿõÚÿ=û¿Ð¿ úcÏ#À/"ýkÎ ÿÝÖßô¯8ÿ¡¥ÿËü_¾ÿ©Íý&àÿòHÿóȶÿojÿõæ?´Óüöÿ&ÿêþ«ù¿.ßÿKhèÿ4÷ßôߨø¿âÙÿÕâÿ²@Tÿjþ¯rÿÅóßøcDú×ÌÿâýÏî}#Ò¿Fþ×¼þÿaù_¾é_3ÿÿ§
-ÊwHÿù_äÀù¯odçzù_þoÂcDú¯æÿºZÿÛü"@]Ský¯æÿgÿþOÿçþ«ù¿.çÐ Æû$ïþ£NþWü_ÿ¢úkæqÿkù_¾é_3ÿýÿË7"ýWó]®ÿíh Gÿ|þù|<üÚmé_3ÿûXÿ}#Ò¿fþç¿&àÿòìüO1ÿþOÈÿòHÿù_èßÔïZë½ü¯8ù¿ð@þoDú×ÿ8çqþoBL$zfþÓRË×
-_êÿjRôJÁÿeÂÚú÷Oûûßk~׿TÆý_Êcþõ×gsýß÷ýÝíóãá[{xóY¾ÿëKdÿoÂPÈþß/õÿâý{êwßûûÛÇ»¿}Æ»ú/úÏÃqÿßòL ýÓ7õ¿ÛÞÒükÖë¿
-õß¿|#ÓÿÝÿªýn»±ÿ;'úl ÿÛ7kõ?ÿ¯ûeç?¡¤ÐÅ©ÿ;väÿÛ°þ§ûÅÁkÎs
-ôÿ"ªµþßËü¦cþ§
-)#Ò?óþõÐÿãþ5æ?Ìý¿øM`þoDúgþÿÎÿ}#Ò?óþõÐÿëÙùóþíÐÿëþ5úçùèߺ|Ský¯ÔÿÛÅÔÐÿkH9%Àÿãþ5úçùÜÿ#'è?èÌh'ÿþ?Dõgþÿæ?øF¤æ?üëÁÿåþkù¿^û¿ÿ`ʧþØóðHÿÌø×Ãúïþÿð¯ÿodçÌø·ÿË7"ý3ÿá_þ/ßÔZÿëÍh'ÿûÈõHÿÕü_ïÿ%4ôÀû¿oúoTü_ñìÿÊø¿,Õ¿ÿ«\çñü7á&~Äæþ5ó¿xÿ3û_ßô¯ÿ5¯ÿä@þoDú×ÌÿÂÿiBò]#Ò¿bþù6pþëÙùbþþoÂcDú¯æÿºZÿÛü"@]Ský¯æÿgÿþOÿçþ«ù¿.çÐ Æû$ïþ£NþWü_ ÿ¢úkæqÿkù_¾é_3ÿýÿË7"ýWó]®ÿí°aDÿ|þù|<üÚmé_3ÿûXÿ}#Ò¿fþç¿&àÿòìüO1ÿþOÈÿòHÿù_èßÔïZë½ü¯8ù¿ð@þoDú×ÿ8çqþoBL$zfþO|üQáKý_M*þCîð°²þÇýÓþÇþá÷ª_åõ/yòÿ¦vÿ@ýõÙZÿã·Ã}wûüøeøÒÞþbïÿçúçØÿ0à¼ÿÜúb«þ_¬Oýî{ÿpûx÷×ÏxWÿá?ú~ûÿ&ÿ`ïû¾ÙªÿÝþð¦æ_³^ÿMWXÿM@ÿ¾éÑîÝþ¿éÆþïÿkÃÅþÿëW®X©ÿéøåg,;ÿ %
.Nïÿ±$òÿMØTÿÓõOZük°æüwøgÜÿ
&P$õ_Øþ»!ÿ¡éȱ!åB°c$ú_Øþ»eþCaþ·
-÷ûF¢ÿ
í¿ëæ?ó?"þ_ÿàþ¶ÿnÿÎÿL üÍ7ý/lÿÝÿ\Æ¿þ
- ÿ×7¢ó¿eí¿æ?Ðÿcý¿¾èaûïó¿Ñþ
- ûÇ7Öÿ·ÚWõÿGÿOyÿ7a.ÁÙÿ3ÏWHô¿°ýwÃþ?wÜÿÙ#'Ù®ÿåÍÀ£ÂÏhOþ/ü6Hê_Ïÿu=ÿügÿàþUü_Sþ[iÑ
¿ ø¿|#Ñ5ÿ×kÿ÷ìÿBÿ&|ê= ¿Hô¯âÿ:Ïaþ·
-¬ÿ¾è_Åÿ5å?vþ/ðùFtþ§áÿ:ÏôÿË7ý«ø¿¦ó¿&£ðù¦Òú_Íÿ5Ýÿæ.²ÿ7a.ù¯>è¿ÿëòý?w-þOxÿ÷Ívý7Jù_gÿWÁÿe¤þõü_å:ÿç¿ 7ñ#0ÇHô¯ÿÅû ¼ïùF¢ü¯óúÉÿ0ü/ßHô¯ÿ
ÿÓå»F¢Õü/ò?Làü×7¢ó?Íü/üß& ÇHô_Ïÿu¹þwM&ÿÃX¿g*ÿõü_ñìÿÂÿiÂ\æÿùD¢ÿzþ¯Ëù_¹kÑ¿ ãý?÷ËvýG¥ü¯0ù¿þ/$õ×Ìÿâþ×ò¿|#Ñ¿fþó_lÀÿåþëù¿®×ÿþMøüóùxøµÛ< "Ñ¿jþ÷?&°þûF¢Õü/ÎMÀÿåÑùfþý&ÿåþUó¿Ð¿ ¨ß7Öÿù_ÿ#ÒÿaÂ\ò¿|"Ñ¿ÊüÇsþ÷6ÄD¨gVé¿I=_¯¾ÔÿÕ¤2è?Üáÿ²`mýû§ýýÃï5¿Ëë_Jè¡þ)7ú[°¹þÇoûþîöùñËð=¼ùÍ,ßÿÏõÏ
ù6ÌÛþæZ°pÅfý¿ÿúÝ÷þáþöñîoñ®þÃþóðc<ÿoÿaç¾Ù¬ÿÝþðæ_³^ÿm ÿÛÖ{ßÈô¿d÷¿jÿÛv|ÿÏ©ÃÿgÂT¯_Ùÿûdþ§u±ìü'º8õÇ.Òÿi¶ú.¯9ÿÍéÔÿç¿&ê¿°øt÷*ÿ¡é:îÿMH¹Ð ìþ6 ¿¯ÿ«ù]Ãý¿ ø}|#ÒÿÂàwõÿzþùÿüWÿàþ6 ¯_ÿÛ8ÿ3ð7ßô¿°ø}ý_å?ûèÿõìüoYðûú¿ÿP¸ÿ7þ_ßô¿°xÃù_Û èþñMõÿàQáû»pêÿ)ã0ú7à|ÿñÿøD¤ÿ
-Àöÿû?räÐ3ýÿWÓü_øÿlÕ¿ÿë:ÿ¹kyþ[Àüßô¯áÿòߺýÿË7"ý×ò½öÏþ/ôo§þØóðHÿþ¯Iÿ1ÿbë¿oDú×ðMûÿÐÒÿeþ/ßÈÎÿü_çùý&àÿòHÿþ¯iýo[ôoþ/ßÔZÿ+ù¿Î÷¿eøèß© ä¿zE¤ÿjþ¯«ù¡¡
ÿÓÞÿ}#УâÿgÿWÿËQý«ù¿ÊuþÏnâG`é_3ÿ÷?¸ÿõHÿù_óúOþ äùF¤Íü/ü&4(ß5"ýkæÿa翾ÿ)æáÿ6!|èx 8F¤ÿjþ¯«õ¿mÉÿ0!äïZë5ÿW<û¿ð0ù^é¿ÿërþW
-ú7a¼ÿGò~è?êäÅÉÿðY ª¿fþ÷¿&ÿåþ5ó¿Ð¿ ø¿|#Ò5ÿ×åú߯èßÏ?_»ñ±ÍÀ!"ý+æÿnë¿oDú×Ìÿâü×ü_¾ÿ)æÑÿiù_¾é_3ÿýú}Ský¯ÿ5Þÿæ®ÃÿmÂù ü/§ô¯1ÿqÎÿâüßH õÌ*ý·Z¾þ`TøRÿWsÿÊØÿ
ÿKµõ?îö?ö¿×ü",¯)iüïSÊcÿ/õ×gsýß÷ýÝíóãá[{xóY¾ÿëK$ÿÁñËKÀþß'õÿâý{êwßûûÛÇ»¿}Æ»ú/úÏÃqÿßFöÿ&ÐþéÍúßíoiþ5ëõßLþ ¬÷¾éÉîÕþ?·ÝØÿæÿÚ0ö~³ÿ÷ËZýOçÿë>cÙùO()tqêÿÝðHàüÇmõ?Ýÿ$þߦþ_ÎMÕ¿ZÿïeþCËü/#R.4 ;F¤Åùä¿Ù@ÿoDú×ÿpîÿôÿÀüßô¯8ÿù6þæþç?´Üÿ@ÿ¯odçzó:îÿM ÿ×7"ýkôÿÎóп tÿø¦Öú_¥ÿ7
-ÏP¦þ_öÿ&Ð÷c ðÿøD¤þßóüîÿlÈ@Ïôtæ?´'ÿþ?DõWÿÐüß60ÿÁ7"ý+ÎhÑ¿ ø¿|#Ò-ÿ×kÿ÷ìÿBÿ&|ê= ¿ô¯9ÿüGXÿ}#Ò¿âüLÿ ø¿|#;ÿSÿý&àÿòHÿó2ú7ÿojÿõæ?´'ÿGdÿoù¯¾é¿ÿëòý¿æ?ÙÀû¿oúoTü_ñìÿjðY ª5ÿW¹ÎÿâùoÂMüÌ1"ýkæñþg÷¿¾é_#ÿk^ÿéÿ3ü/ßô¯ÿ
ÿÓå»F¤Íü/ò?Làü×7²ó?Åü/üß& Çô_Íÿuµþ·ü"@]Ský¯æÿgÿþOÿçþ«ù¿.çТÆû$ïþ£NþWü_ÿ¢úkæqÿk
ù_¾é_3ÿýÿË7"ýWó]¯ÿýðùçóñðk7>¶y8D¤Åü/òßm`ý÷Hÿù_ÿÿË7²ó?Åü/ú?M ÿË7"ýkæ¡P¿ojÿõò¿âÉÿð@þoDú×ÿ8çqþoBL$zfþËbË×
-_êÿjÒ8ÿ9ñY°¶þÇýÓþÇþá÷_åõ/CýGÿoÊïõ7`sýß÷ýÝíóãá[{xóY¾ÿëó?mvÿìÿ½²Yÿ/Þ¿§~÷½¸¿}¼ûÛg¼«ÿð¢ÿ<ü÷ÿ-ïÿ6ÐýíÍúßíoiþ5ëõßú¿m ùË72ý/Ùý¯ÚÿçÆó¿:îÿLº¿Ùÿ{eþ§óÿu±ìü'º8õÇnÿÍù>ÛêºÿI*ý¿§ó&FÎMÕ¿ZÿïeþCÓ±þÛr¡Ø1"ý+Îhðÿ@ÿoDú×ÿ0çpÿgó|#Ò¿âüÿÏÎÿ}#Ò¿âüûèÿõìüOqþ÷ÿ&Ðÿëþ5úÏóÈÿ±îßÔZÿ«ôÿ¦á9ÑäÑÿÓuÌ6¡ï§àÿñHÿý¿çùÜÿÙ#'è?èÌh'ÿþ?DõWÿÐtóM`þoDúWÿÐ ðùF¤ÿZþ¯×þïÙÿ
þMøÔ{~é_qþCÃù¯ ¬ÿ¾é_qþCKÿ ø¿|#;ÿSÿ;ú?LÀÿåþç?´èßü_¾©µþ×ÿÐNóØÿ@þ«oDú¯æÿº|ÿ/¡¡ÿÓÞÿ}#УâÿgÿWÆÿe¨þÕü_å:ÿç¿ 7ñ#0Çô¯ÿÅû ÜÿúF¤ü¯yý'ÿÃò¿|#Ò¿fþþOïþó¿Èÿ°ó_ßÈÎÿó¿ð>0Ð3"ýWó]ÿmKþ ± ÏÔZÿ«ù¿âÙÿ
ÿÓæÿùF¤ÿjþ¯Ëù_%4èßñþÉûE ÿ¨ÿ'ÿWÂÿe¨þù_Üÿ@þoDú×ÌÿBÿ&àÿòHÿÕü_ë;lÑ¿>¿vãc'CDú×ÌÿâþÇÖßô¯ÿÅù¯ ø¿|#;ÿSÌÿ¢ÿÓò¿|#Ò¿fþú7õû¦Öú_/ÿ+Nþ/üß&ÿåþ5æ?Îù_ÿ Y¥ÿÜ.µ|ýÁ¨ð¥þ¯&Aÿ¡ÿkëÜ?íì~¯ùEX^ÿRR7îÿRnÈ3asýß÷ýÝíóãá[{xóY¾ÿëK$ÿÉqgÆþß/õÿâý{êwßûûÛÇ»¿}Æ»ú/úû§÷ÿ6òþoí¾Ù¬ÿÝþðæ_³^ÿmÈøL ÿÉ72ý/Ùý¯:ÿÏ©öÿ©cÿoBS8û¬Õÿtþ¿î3ÿB§þï8üó¶ÕÿtÿT
úSú9ÿ5ATÿjý¿ṵ̀"åB°cDú×ÿÿßú|#Ò¿Æü¹ÿüwÿàþ5ç?àÿ3ð7ßô¯9ÿûèÿõìüOqþ÷ÿ&Ðÿëþ5úÿ`
-Ý?¾©µþWéÿMÃsbøsH¹+¼ÿBÎc ðÿøD¤þ_æ?#'è?èÌh'ÿþ?DõWÿ0¶$òü·ù¾é_qþó¿mÀÿåþkù¿^û¿ÏëDÿ&|ê= ¿ô¯9ÿþOXÿ}#Ò¿æüú¿LÀÿåÙùâüú?LÀÿåþ5ç? ðù¦Öú_oþC;Í`ÿoù¯¾é¿ÿëòýùVðþïþÿW<û¿:ü_ê_ÍÿU®ó¿xþp?â sHÿù_¼ÿÀý¯oDú×Èÿòÿiù_¾é_1ÿ«Áÿió?|#Ò¿fþù&pþëÙùbþþoÂcDú¯æÿºZÿÇ¿þ
- uMõ¿ÿ+ý_ø?M`þoDú¯æÿºÿUBþMïÿ¼_ú:ù_qòµø¿,Õ_3ÿû_ÈÿòHÿù_èßü_¾é¿ÿëzýèßÏ?_»ñ±ÍÀ!"ýkæqÿcë¿oDú×Ìÿâü×ü_¾ÿ)æÑÿiù_¾é_3ÿýú}Ský¯ÿ'ÿþoÈÿòHÿóÏù_ÜÿÙ Y¥ÿ¥¯?¾ÔÿÕ¤2è?á ÿ+ëÜ?íì~¯úEX^ÿ»8úS#õ·`kýß÷ýÝíóãáK{xûY¾ÿësâýß¹§ýìÿ±Uÿ/Ö¿§~÷½¸¿}¼ûëg¼«ÿðý?ÆýCþ
-Üÿûf«þwûÃÍzý7]Çû¿ ¬÷¾éÑîÝþ¿
-ãûNü'þØÿà<\±RÿÓñÿÊÏXvþJ
-]ú¿có9ÿÑgSýO×?iñ¯Áóßáqÿ_êo¤þÛ7ä?4]ÄÿoBÊ
`ÇHô¿°ýwËüñÿÀùo$ú_Øþ»nþÃÉÿÓtù/&0ÿÁ7ý/lÿÝ2ÿþ?#óDÿÛ7ä?®pÿoý¿¾ÿ-kÿÝ4ÿüèÿõDÿÛ·ÿ5ý@÷o*ÿoµÿ®êÿ-9þÿ¿
-s Nþñÿ8C¢ÿ
í¿öÿ¹ãþÏ9ôÌvýÿWÓü_øÿlÔ¿ÿë2ÿ¡é"û?ÿàþUü_Sþ[Éèßü_¾è¿ÿëµÿ{ö¡>õÇG_$úWñç¿dú?M`ý÷Dÿ*þ¯)ÿ±+ôÿË7¢ó?
-ÿ×yþC¤ÿÃü_¾è_Åÿ5ÿ5ýÿË7Öÿjþ¯éþ7wý¿ s ÈõDÿõü_ïÿ¹ËôÀû¿o¶ë¿QÊÿ:û¿
-þ/$õ¯çÿ*×ù_<ÿM¸q9F¢Õü/ÞÿLàþ×7ý«ä×ÿDþ äùF¢Õü/ü&4(ß5ý«æÿa翾ÿiæáÿ6!|èx 8F¢ÿzþ¯Ëõ¿k
-ù&Äü=Siý¯çÿgÿþOæ0ÿÏ'ý×ó]ÎÿÊ£]ý0Þÿ#y¿l×TÊÿ
-ÿ+áÿ²@RÍü/îm ÿË7ýkæ1ÿÅü_¾è¿ÿëzýoп >¿vãs'C$úWÍÿâþÇÖßHô¯ÿÅù¯ ø¿|#:ÿÓÌÿ¢ÿÓò¿|#Ñ¿jþú7õû¦Òú_1ÿkò$ú?LK@þO$úWÿxÎÿâþÏH õÌ*ý\lùúQáKý_M*þC
-þ/VÖÿ¸ÚÿØ?ü^õ°¼þ%w±êÚÌüO¶ÖÿøípßßÝ>?~¾´·¿åûÿ¹þ97ÜÿðÇþ?%öÿÎØªÿïßS¿ûÞ?Üß>Þýõ3ÞÕøþãùÓðþo÷ÿ¾ÙªÿÝþð¦æ_³^ÿM×ÿ`ë½oDú_´û_·ÿoÃøþSdÿoÂûú¿Ý±RÿÓùÿÊÏXvþJ
-]ú¿c!ÿßMõ?Ýÿ$¥ù§þÐFêo¤þõú/óù6¤\h vDÿÌø÷Ãùo$úWÿ0çàÿ5ù¾èùÿ~óDÿÌø÷Cÿ¯oDçÌø×Cÿ¯o$úWéÿç? èþñM¥õ¿NÿoþOþÿ.²ÿ7a.ÁÉÿÓ÷ø!Ñ¿Jÿï<ÿû?räÐ3Ûõæ?´Óüü&HêÏü?ÌðDÿÌø÷ÿË7ýWó½ö3ÿÁOý±çàþÿðïõß7ý3ÿáßþ/ßÎÿÿð¯ÿo$úgþÿü_¾©´þWÿÐNóØÿ0üWHô_Ïÿuùþ»Lÿ§ ¼ÿûf»þ¥ü¯³ÿ«Ãÿe¤þõü_å:ÿç¿ 7ñ#0ÇHô¯ÿÅû ÜÿúF¢ü¯óúÏüOÈÿòDÿù_ÿ§
-ÊwDÿªù_äÀù¯oDçù_ø¿M: è¿ÿërýïBþ ± ÏTZÿëù¿âÙÿ
ÿÓ¹ÌÿóDÿõü_ó¿rÑ¿ ãý?÷ËvýG¥ü¯0ù¿ü_Hê¯ÿÅý¯ äùF¢Õü/ôoþ/ßHô_Ïÿu½þ7èßÏ?_»ñ¹ÍÀ!ý«æqÿcë¿o$úWÍÿâü×ü_¾ÿiæÑÿiù_¾è_5ÿýú}Siý¯ÿ5ù?ý&Ì% ÿË'ý«Ì<çqÿgCL$zfþÛv±çë5£Âú¿Tý2öâÿÒgmýû§ýýÃï5¿Ëë?=Å¡þ)'òßLØ\ÿã·Ã}wûüøeøÖÞüfïÿçúçÈ2áTxÞÿ°pÅfý¿ÿúÝ÷þáþöñîoñ®þÃþóðc<ÿo#ù/&dôîÍúßíoiþ5ëõßÌû¿ 4ùF¦ÿ%»ÿUûÿÜÓþ?uä¿0~ýcÛ7û¬Õÿt°î3ÿB§þïØÅÌùÛêº JK
-Öÿætêÿó_Dõ_Ø |ºá[ÿÐtþR.4 ;F¤ÿ
-ÀïëÿjþC×°ÿ7þßô¿°ø]ý¿ÿpîÿãþÏæ?øF¤ÿ
-Àë×ÿ6ÿhçÿ¾éaðûú¿Ê-÷ÿ&ÐÿëÙùß²à÷õ=ÿ¡ãþßú}#ÒÿÂà
-çmþM ûÇ7µÖÿ·G
/ìÿíBwòÿ¯èßÓíkÆÿãþ6 oØ
ÿîÿlÈ@ÏôTü_M;ù¿ðÿ ª5ÿ×uþsGþ ÌðHÿþ¯)ÿkп ø¿|#Ò-ÿ×kÿ÷ìÿBÿ&|ê= ¿ô¯áÿôòM`ý÷Hÿþ¯iÿ?ü}ôoþ/ßÈÎÿü_çùý&àÿòHÿþ¯iýo[ôoþ/ßÔZÿ+ù¿Î÷¿eÜ Nµ ÿÕ-"ýWó]Í
-ý&ðþïþÿW<û¿
-þ/Dõ¯æÿ*×ù_<ÿM¸q9F¤Íü/ÞÿLàþ×7"ýkäMù?ãý@þoDú×ÌÿÂÿiBò]#Ò¿fþù&pþëÙùbþþoÂcDú¯æÿºZÿÛübAþ©µþWóųÿÿ§ ã×Ïü?¿ô_Íÿu9ÿ«ý0Þÿ#y¿ôuò¿âäÿjðY ª¿Zþ÷¿Vÿåþó¿ÿbþ/ßô_Íÿu½þGôoÂçÏÇÃ¯ÝøØæIàþ5ó¿¸ÿ1õß7"ýkæqþkþ/ßÈÎÿó¿èÿ4ü/ßô¯ÿ
þM@ý¾©µþ×Ëÿ:ÏÄÿm©ä¹E¤ùçü/îÿlPϬÓZjùúQáKý_M*þC)ÿkëÜ?íì~¯ùEX^ÿRRLCýSNÌÿ4asýß÷ýÝíóãá[{xóY¾ÿëóßmöfìÿ½²Yÿ/Þ¿§~÷½¸¿}¼ûÛg¼«ÿð¢ÿ<ü÷ÿmàüÏÞ]³Yÿ»ýá-Í¿f½þÛÐÿdþßÈô¿d÷¿jÿÛ2ê?§ü'Ưþo¿¬Õÿtþ¿î3ÿB§þïØÑÿiöúî¯9ÿÍ)Lý¿ÿ ªµþßËü¦#ÿÍ
-Àé_sþûxÿ÷HÿóæüîÿL`þoDú×ÿÀü'óHÿóÿký¿¾ÿéÍ(Üÿ@ÿ¯oDú×èÿ=Ïhп tÿø¦Öú_¥ÿ7
-oåäÿïXÿm8ݾfü?^é_£ÿwÿÀý 9rèþÎüùê¯6ÿ¡é:òM`þoDúWÿÀü/ðùF¤ÿZþ¯×þïÙÿ
þMøÔ{~é_sþùo&°þûF¤ÍùôÿË7²ó?ÅùôÿË7"ýkÎ@ÿ&àÿòMõ¿ÞüùLÏfü_^é¿ÿëòý¿þOxÿ÷@ÿÿ+ý_-þ/Dõ¯æÿ*×ù_<ÿM¸q9F¤Íü/ÞÿLàþ×7"ýkäÍë?ù&ÿåþ5ó¿ðÐ |×ô¯ÿEÿ¿ ÿúFvþ§ÿÕáÿ6!|èx 8F¤ÿjþ¯«õ¿mÉÿ0!äïZë5ÿW<û¿ð0~ýÌÿóHÿÕü_ó¿Jhп ãý?÷@ÿQ'ÿ+Nþ¯ÿËQý5ó¿¸ÿ5ü/ßô¯ÿ
þMÀÿåþ«ù¿.×ÿv´
£>ÿ|>~íÆÇ6Oô¯ÿÅý ¬ÿ¾é_3ÿó_ðùFvþ§ÿEÿ§ äùF¤Íü/ôoê÷Mõ¿^þWü_ø¿MÍø¿¼"Ò¿ÆüÇ9ÿób"Ô3«ô?.µ|ýÁ¨ð¥þ¯&Aÿ¡ý_ø¿ôY[ÿãþiÿcÿð{Í/ÂòúÒüÿ)·ÔßÍõ?~;Ü÷w·Ï_oíáÍofùþ®.õß©ìÿ}²Yÿ/Þ¿§~÷½¸¿}¼ûÛg¼«ÿð¢ÿ<ü÷ÿ-ú·îoßlÖÿnxKó¯Y¯ÿ6dò_LÀÿãþìþWíÿsãù_nÿaÃØûÍþß/kõ?ÿ¯ûeç?¡¤ÐÅ©ÿ;v©áüÇmõ?Ýÿ$þßtÊÿó?Dõ¯Öÿ{ÿÐ2ÿË
-Àé_qþùo6ðþïþ5æ?û#ý?&0ÿÁ7"ý+Î`þ§
-¿ùF¤Åù-÷ÿ&ÐÿëÙùâüîÿM ÿ×7"ýkôÿÎóп tÿø¦Öú_©ÿ·msêÿÿÐ÷S ðÿøD¤þßóüîÿlÈ@Ïôtæ?´ÿÿ ¢ú«ÍhGKÏÿàþç?´èßü_¾é¿ÿëµÿ{ö¡>õÇG_DúWÿÐÿhë¿oDúWÿéÿ2ÿodçjóR ÿÃü_¾é_qþCFÿ&àÿòMõ¿Þüvò±ÿ7üWßô_Íÿuùþ_ólàýß7ý7*þ¯xöµø¿,Õ¿ÿ«\çñü7á&~Äæþ5ó¿xÿ3û_ßô¯ÿ5¯ÿä@þoDú×ÌÿÂÿiBò]#Ò¿fþù&pþëÙùZþW
-ø¿M èþ«ù¿®Öÿ6ÿaB,Èß3µÖÿjþ¯xöáÿ4ù¾é¿ÿërþW -ú7a¼ÿGò~è?êäÅÉÿñY ª¿fþ÷¿&ÿåþ5ó¿Ð¿ ø¿|#Ò5ÿ×õúÑ¿ >¿vãc'CDú×ÌÿâþÇÖßô¯ÿÅù¯ ø¿|#;ÿSÌÿ¢ÿÓò¿|#Ò¿fþú7õû¦Öú_/ÿ+Nþ/üß&ÿåþ5æ?Îù_ÿ Y¥ÿZ¾þ`TøRÿWÊ ÿPJÀÿeÁÚú÷Oûûßk~׿äîäÿM¹IÔßÍõ?~;Ü÷w·Ï_oíáÍofùþ®.ìÿmKpÚÿ/ì\±Yÿ/Þ¿§~÷½¸¿}¼ûÛg¼«ÿðý?Æýÿ×îÿ}³Yÿ»ýá-Í¿f½þ[ò_ ÿÉ72ý/Ùý¯Ûÿÿ°ÿOûþØÿÍà<\±VÿÓùÿºÏXvþJ
-]ú¿c7æ?pþ£Ï¶úîÎüîÔÿ;öP}Dõ¯Öÿ{ÿÐtùï&¤\h vHÿóúLàüÏ7"ýkÌó?èÿ1ù¾é_qþCÂÿoáo¾é_qþCÃý¿ ôÿúFvþ§6ÿ!îÿM ÿ×7"ýkôÿç?4èߺ|Ský¯ÕÿÛ
©ÿùO6Ì%8ùúÿ3Dú×èÿ=ÏàþÏ9ô@ÿAgþC;ù¿ðÿ ª¿Úü¦ëÿmó|#Ò¿âüýÿË7"ý×ò½öÏþ/ôo§þØóðHÿóÎM`ý÷HÿóZú¿LÀÿåÙùÚüØÑÿaþ/ßô¯8ÿ¡Eÿ&àÿòMõ¿Þüvò±ÿ7a.ù¯>é¿ÿëòý¿þOxÿ÷@ÿNþ×ÙÿÕâÿ²@Tÿjþ¯rÿÅóßøcDú×ÌÿâýÏî}#Ò¿Fþ×¼þÿaù_¾é_3ÿÿ§ ÌÿðHÿù_äÀù¯odçzù_Ìÿ±!|èx 8F¤ÿjþ¯«õ¿mÉÿ0!äïZë5ÿW<û¿ð0ù>é¿ÿërþW
-ú7a¼ÿGò~è?êä
ÉÿðY ª¿fþ÷¿&ÿåþ5ó¿Ð¿ ø¿|#Ò5ÿ×åúßpôoÀçÏÇÃ¯ÝøØæIàþ5ó¿¸ÿ1õß7"ýkæqþkþ/ßÈÎÿó¿èÿ4ü/ßô¯ÿ
þM@ý¾©µþ×Ëÿïs×ÑÿaÂ\ò¿|"Ò¿ÆüÇ9ÿób"Ô3ëô¿Øòõ£Âú¿TýÉÿ2amýû§ýýÃï5¿Ëë_r7ìý`~
-¨¿ëüv¸ïïn¿ßÚÃßÌòýÿ\ÿ\ïÿ&°ÿ÷Ífý¿xÿúÝ÷þáþöñîoñ®þÃô?ü÷ÿ-ùß6pÿïÍúßíoiþ5ëõßrÿoú÷LÿKvÿëöÿmßÿ×?öÿ&ü±ÿ§ÿÛkõ?ÿ¯ûeç?¡¤ÐÅ©ÿ;v¡ãüÇmõ?Ýÿ$ùÝÔÿ¨¿¢úWëÿ½ÌhºÂý )#Ò¿âüòmàýß7"ýkÌó?ðÿÀüßô¯9ÿügóHÿó¸ÿ7þ_ßÈÎÿôæ?îÿM ÿ×7"ýkôÿç?ÿlÝ?¾©µþ×êÿ-å<ÿÿ s Nþ¾Çÿãþ5úÏó¸ÿ³!GN =#ÐÐÿÐü_øÿl
Õ_sþù¯&0ÿÁ7"ýkÎ@ÿ&àÿòHÿµü_¯ýßóüôo§þØóðHÿóç¿&°þûF¤Åùä?ÚÿË7²ó?½ù
þðùF¤Åù
-ú7ÿojÿõæ?´Óüöÿ&Ì% ÿÕ'"ýWó]¾ÿÐÐÿiïÿ¾è¿ÑÉÿü_1àÿ²@Tÿjþ¯rÿÕñü7á&~Äæþ5ó¿xÿ3û_ßô¯ÿ5¯ÿä@þoDú×ÌÿÂÿiBò]#Ò¿fþù&pþëÙùbþþoÂcDú¯æÿºZÿ?¢bAþ©µþWóųÿÿ§ s ÿçþ«ù¿.çaþ-ïÿ¼_ú:ù_aÊÿjñY ª¿fþ÷¿&ÿåþ5ó¿Ð¿ ø¿|#Ò5ÿ×åúßôoÀçÏÇÃ¯ÝøØæIàþ5ó¿¸ÿ1õß7"ýkæqþkþ/ßÈÎÿôò¿èÿ´ü/ßô¯ÿÕ¢P¿ojÿõò¿Âäÿ¢ÿùäùD¤ùsþçÿ&ÄD¨gVé¿Y<òñF
/õ5©úeøëø¿X[ÿãþiÿcÿð{Í/ÂòúʸÿK95ÔßÍõ?~;Ü÷w·Ï_oíáÍofùþ®.Ìÿ²áeÿß¶ÓØ
-¸b³þ_¼Oýî{ÿpûx÷·ÏxWÿáEÿyø1îÿÛÀû¿ ä¿øf³þwûÃ[Ízý·¡%ÿÁôïþìþWíÿsÛ4ãþ?ü&¼ìÿÇÞoöÿîX«ÿéüÝg,;ÿ %
.Nýß±#ÿßmõ?Ýÿ$þßtîÿåü×Qý«õÿ^æ?4ó?mH¹Ð ìþÿð¯þßô¯1ÿaîÿÅÿkó|#Ò?óþõþæþÿð¯þ_ßÈÎÿÿðoþ_ßô¯Ñÿ;Ï@ÿ&ÐýãZëþß4¼ 4ñÔÿ[8ÿ3a.Á?9Oàyà
-þ5úçùÜÿ#'èq3ð¨ðåóÚÿÿ
-¢ú3ÿá_ó|#Ò?óþõàÿòHÿµü_¯ýßÌ0åSìyøE¤æ?üëaý÷HÿÌø×ÿË7²ó?æ?üÛÁÿåþÿð¯ÿojÿõæ?´Óüöÿ&Ì% ÿÕ'"ýWó]¾ÿÐÐÿiïÿ¾è¿Qñųÿ+âÿ²@Tÿjþ¯rÿÕñü7á&~Äæþ5ó¿xÿ3û_ßô¯ÿ5¯ÿä@þoDú×ÌÿÂÿió?|#Ò¿fþù&pþëÙùbþþoÂcDú¯æÿºZÿÛübAþ©µþWóîK ÿß¹ÌÿóHÿÕü_ó¿Jhп ãý?÷@ÿQ'ÿ+Nóþ/Dõ×Ìÿâþ×ò¿|#Ò¿fþú7ÿoDú¯æÿº\ÿÛñHýðùçóñðk7>¶y8D¤Íü/îL`ý÷Hÿù_äØÿË7²ó?Åü/ú?M ÿË7"ýkæ¡P¿ojÿõò¿¦ùþoæÿåþ5æ?Îù_ÿ Y¥ÿv±åëF
/õ5©ú%wø¿,X[ÿãþiÿcÿð{Í/Âòú2~¨Êú°¹þÇoûþîöùñËð=¼ùÍ,ßÿÏõÏ%°ÿ7aúúýÿ\v®Ø¬ÿïßS¿ûÞ?Üß>Þýí3ÞÕxÑ~ûÿýÛÑ»k6ë·?¼¥ù׬×Zü?&°ÞûF¦ÿ%»ÿUûÿÜÓùbþ
-ã×?¶~³ÿ÷ÉZýOçÿë>cÙùOÞý»8õÇ.&Î,ØVÿÓýORéÿMaêÿåüÏQý«õÿ^æ?0ÿÁ
-Àé_qþù/6Ðÿãþ5æ?Ìý¿ä¿Àüßô¯9ÿÿ ¿ùF¤ÍùÜÿ@ÿ¯odçó¸ÿ7þ_ßô¯ÑÿËüSèþñMõ¿JÿoÞr7õÿrþgÂøõ÷=þ¯ô¯ÑÿËüSräÐ3ýùíÉÿ
ÿÏQý5ç?0ÿ׿?øF¤Íùèßü_¾é¿ÿëµÿ{ö¡>õÇG_Dú×ÿСXÿ}#Ò¿æüú¿LÀÿåÙùâüîMÀÿåþ5ç? ðù¦Öú_oþC{òöÿ&L_?þ/¯ô_ÍÿuùþÏü+xÿ÷@ÿÿ+ý_
-þ/Dõ¯æÿ*×ù_<ÿM¸q9F¤Íü/ÞÿL
àþ×7"ýkäÍë?ù&ÿåþ5ó¿ðÐ |×ô¯ÿEþ ÿúFvþ§ÿ
ÿÛð¡ãàþ«ù¿®Öÿ¶%ÿÃX¿gjÿÕü_ñìÿÂÿiÂøõ3ÿÏ/"ýWó]Îÿ*¡Aÿ&÷ÿHÞ/ýGü¯8ù¿þ/Dõ×Ìÿâþ×ò¿|#Ò¿fþú7ÿoDú¯æÿº\ÿÛñýðùçóñðk7>¶y8D¤Åü/òßm`ý÷Hÿù_ÿÿË7²ó?Åü/ú?M ÿË7"ýkæ¡P¿ojÿõò¿â4ÿÿ· Ó×ÿË+"ýkÌó¿8ÿ7!&@=³JÿqñÈÇ?¾ÔÿÕ¤2è?û ü_¬ÿqÿ´ÿ±ø½æayýKîâXÿü&l®ÿñÛ᾿»}~ü2|ko~3Ë÷ÿsýs ô0àiÆþßõÿâý{êwßûûÛÇ»¿}Æ»úÿÑÿðcÜÿ·äÛÀý¿o6ë·?¼¥ù׬×Ëý¿èß72ý/Ùý¯Ûÿ·á´ÿO
û?þØÿà<\±VÿÓùÿºÏXvþJ
-ÃÛÿ©ÿ;vãû?ç?úl«ÿéþ'éÌè¦þßHý-Õ¿ZÿïeþC3ü"°þ[r¡Ø1"ý+Î ÿÙÞÿ}#Ò¿Æü9ÿû?ÿàþç?Dü¿&þæþ5ç?pÿoý¿¾ÿ)Îàþßú}#Ò¿FÿïyþùÏ6ÐýãZëþßFëÿ©ÿ·pþoÂ\ÿ'gü?Îé_£ÿ÷<ÿû?räÐ3ý/n¾|þC{òáÿ³ATÍùä¿Àüßô¯9ÿýÿË7"ý×ò½öÏóп úcÏ#À/"ý+ÎHôÀúïþç?ÿhþ/ßÈÎÿôæ?ú?LÀÿåþç?4èßü_¾©µþ×ÿÐNóØÿ0üWô_Íÿuùþ_- ú·÷ßôßèäý_þ/Dõ¯æÿ*×ù_<ÿM¸q9F¤Íü/ÞÿLàþ×7"ýkä×ÿüÈÿòHÿù_ ÿ§
-ÊwHÿù_äÀù¯odçù_ø¿M: é¿ÿëjýoò?Lù{¦Öú_ÍÿÏþ/ü&Ì%`þODú¯æÿºÿUÿCÿ÷ÿHÞ/ýGü¯0ù¿ü_ê¯ÿÅý¯ äùF¤Íü/ôoþ/ßô_Íÿu¹þ·Ãþ-øüóùxøµÛ< "Ò¿fþ÷?&°þûF¤Íü/ÎMÀÿåÙùbþý&ÿåþ5ó¿Ð¿ ¨ß7µÖÿzù_aòÑÿaÂ\ò¿|"Ò¿ÆüÇsþ÷6ÄD¨gVé?}\jùúQáKý_Mç?R2þ/ÖÖÿ¸ÚÿØ?ü^ó°¼þ¥ñï¥òßLØ\ÿã·Ã}wûüøeøÖÞüfïÿçúçÉ2áeÿÒôv®Ø¬ÿïßS¿ûÞ?Üß>Þýí3ÞÕxÑ~ûÿ6Òÿmù/¾Ù¬ÿÝþðæ_³^ÿmÈøL ùË72ý/Ùý¯Úÿç¶iÆýbþ
-/ûÿ±÷ý¿;Öê:ÿ_÷ËÎBI¡SÿwìÆüGÎôÙVÿÓýORéÿMSÿoäü×Qý«õÿ^æ?4]ÿÇ
-Àé_qþþèÿñHÿóÎý¿üwÿàþç?àÿ³óßô¯8ÿ¡åþßú}#;ÿÓÿÐqÿoý¿¾é_£ÿ÷<ÿ¡Eÿ&ÐýãZëþß4¼ ¤<õÿ²ÿ7a.Á?}?ýç+Dú×èÿ=Ïàþ
Ï9ô@ÿAgþC{òáÿ³ATµùíøJÈóß æ?øF¤Åù-ú7ÿoDú¯åÿzíÿý_èßOý±çàþç?4ôÀúïþç?´ôÿË7²ó?µù)Ðÿaþ/ßô¯8ÿ!£ðù¦Öú_oþC{òöÿ&Ì% ÿÕ'"ýWó]¾ÿÐÒÿiïÿ¾è¿Qñųÿ+âÿ²@Tÿjþ¯rÙÿ?üÿÜÄ8À#Ò¿fþï&pÿëþ5ò¿æõþ?ÈÿòHÿù_ø?M`þoDú×Ìÿ"ÿÃÎ}#;ÿSÌÿÂÿmBøÐñ pHÿÕü_WëÛÿaB,Èß3µÖÿjþ¯8ù¿Èÿ·a.óÿ|"Ò5ÿ×åü¯ZôoÂxÿäý"ÐÔÉÿÓüÇÿËQý5ó¿¸ÿ5ü/ßô¯ÿ
þMÀÿåþ«ù¿®×ÿþMøüóùxøµÛ< "Ò¿fþ÷?&°þûF¤Åü/ò?lÀÿåÙùbþý&ÿåþ5ó¿Ð¿ ¨ß7µÖÿzù_qÊÿÂÿmÂ\ò¿|"Ò¿ÆüÇ9ÿób"Ô3«ôß-u|ýɨð¥þ¯&Aÿ¡ò¿LXYÿãþiÿcÿð{Õ/ÂòúÜ
ÑÿÚqþõ×gkýß÷ýÝíóãáK{xûY¾ÿësbÿoÂËþú×
-»_lÕÿõï©ß}ïîoïþúïê?üGÿÃqÿß$òßLà}ß7[õ¿ÛÞÔükÖë¿é:îÿM ÿÉ7"ý/Úý¯Ûÿ7ÝØÿSdÿoÂÅþÿëW®X©ÿéøåg,;ÿ %
.Nýß±4-ç?lªÿéú'-þ5Xsþ;ü3îÿBÃù ú/lÿÝÿÐtôÿØr¡Ø1ý/lÿÝ2ÿ¡dòM ÿÇ7ý/lÿ]7ÿáäÿiºDþ³ ÌðDÿÛ·Ì-ç&þæþ¶ÿnÈ.]æþßú}#:ÿ[Öþ»iþùÏ6Ðÿëþ¶ÿn9ÿk
-ú7¿¯o*ÿoµÿ®êÿ-íØÿ»þæý?}ÏóÀý/lÿݰÿÏ÷6äÈ g¶ë?èø¿vòáÿ3ARÿzþ¯Ëü¦ä¿ÀüßHô¯âÿòßJFÿ&àÿòDÿÕü_¯ýß³ÿýð©?räãþUü_çù/ä¿ÚÀúïþUü_SþcWèÿ2ÿoDçþ¯Iÿ1Òÿaþ/ßHô¯âÿÎÿþMÀÿåJë5ÿ×tÿ»Äþß¹ä¿úD¢ÿzþ¯Ë÷ÿ<ÚEп¼ÿûf»þ¥ü¯³ÿ+ãÿ²@Rÿzþ¯rÿÅóßøc$úWÍÿâýÏî}#Ñ¿Jþ×¼þÿaù_¾è_5ÿÿ§ ÌÿðDÿù_äØÀù¯oDçù_ø¿M: è¿ÿërýïBþ ± ÏTZÿëù¿âÙÿ
ÿÓ¹ÌÿóDÿõü_ó¿rÑ¿ ãý?÷ËvýG¥ü¯0ù¿"þ/$õWÍÿâþ×ò¿|#Ñ¿jþú7ÿo$ú¯çÿº^ÿú7áóÏçãá×n|nó$pDÿªù_ÜÿÀúïþUó¿8ÿ5ÿoDçù_ô@þo$úWÍÿBÿ& ~ßTZÿ+æMþDÿ s ÈÿòDÿ*óçü/ÎÿM Å{fþÓò̯×
-_êÿjÒ8ÿ9îÿñé³¶þÇýÓþÇþá÷_åõ/e|ö9áÿ3asýß÷ýÝíóãá[{xóY¾ÿësÇúo«ýÿÍÍøv®Ø¬ÿóßS¿ûÞ?Üß>Þýí3ÞÕxÑ~çÿmàüÏ?|³Yÿ»ýá-Í¿f½þɲü'ßÈô¿d÷¿jÿÛt:ÿOÌÿ³áÕþÿëWöÿîX«ÿé`Ýg,;ÿ %
.Nýß±ó¶Õÿtþ¬9ÿͧçç¿&ê¿°øt÷*ÿ¡é:òßLH¹Ð ìþ6 ¿¯ÿ«ù]ÿÇú|#ÒÿÂàwõÿzþùÿ/Ðÿgó|#ÒÿÂàõëÿk÷¾éaðûú¿Ê>ÍÿDÿúÐÿëÙùß²à÷õ=ÿ¡pÿoý¿¾éaðó¿¶Aÿ&ÐýãZëÿ[
-À£ÂöÿvíØÿSÆ#AôoÀ\Bèûñ<\!ÒÿÂà
-ûÿÀý
-9rèþÿ«iOþ/ü6ê_ÍÿuÿÜÿhó|#Ò¿ÿkÊëôoþ/ßô_ËÿõÚÿ=û¿Ð¿ úcÏ#À/"ýkø¿&ýGæ¿ØÀúïþ5ü_Óþ?´ôÿË7²ó?ÿ×yþCGÿ ø¿|#Ò¿ÿkZÿÛýÿË7µÖÿZþ¯éþ·ý[0üWô_Íÿu5ÿ14ôÀû¿oú_<bTøbÿW<û¿ü_ê_ÍÿU®ó¿xþp?â sHÿù_¼ÿÀý¯oDú×Èÿ×ò?L ÿË7"ýkæáÿ4ù¾é_3ÿü8ÿõìüO1ÿÿ· áCÇÀ1"ýWó]ÿmKþ ± ÏÔZÿ«ù¿âÙÿ
ÿÓ¹ÌÿóHÿÕü_ó¿Jhп ãý?÷@ÿQ'ÿùê¯ÿÅý¯ äùF¤Íü/ôoþ/ßô_Íÿu¹þ·ã+!ú7àóÏçãá×n|ló$pHÿù_ä¿ÛÀúïþ5ó¿8ÿ5ÿodçù_ô@þoDú×ÌÿBÿ& ~ßÔZÿëå÷¿¹ëèÿ0a.ù_>é_cþãÿÅù¿ 1 êUúÏ#¿þ`TøRÿWÆùÏ¡æ?°¶þÇýÓþÇþá÷_åõÊ^¿Rnðÿ°¹þÇoûþîöùñËð=¼ùÍ,ßÿÏõÏ%²þ0~ùçýÿ»WlÖÿ÷ï©ß}ïîoïþöïê?¼è??Æý
¹ÿ7öOßlÖÿnxKó¯Y¯ÿ6dòM ùË72ý/Ùý¯Úÿç¶û¿sêÈ1anûfÿïµúÎÿ×}ƲóPRèâÔÿ»ñýó}¶ÕÿtÿTúÓÔÿ9ÿ5ATÿjý¿ùM×ÿjBÊ
`Çô¯9ÿÿ ôÿøF¤ùôÿÂüßô¯9ÿÿ¯ ÿûF¤Åùä?Û@ÿ¯odçzó:îÿM ÿ×7"ýkôÿÎóп tÿø¦Öú_¥ÿ7
-ÏØMý¿äÿBß%Àÿãþ5úçùÜÿ#'è?èÌh'ÿþ?Dõ×ÿÿÛæ?øF¤Íùèßü_¾é¿ÿëµÿ{ö¡>õÇG_Dú×ÿÀù¯ ¬ÿ¾é_sþý_&àÿòìüOqþý&àÿòHÿóп ø¿|Ský¯7ÿ¡=ù?ûÈõHÿÕü_ïÿ%4ôÀû¿oú_<bTøbÿW<û¿
-þ/Dõ¯æÿ*×ù_<ÿM¸q9F¤Íü/ÞÿLàþ×7"ýkäMù?ãý@þoDú×ÌÿÂÿiBò]#Ò¿fþù&pþëÙùbþþoÂcDú¯æÿºZÿÛü"@]Ský¯æÿgÿþOÿçþ«ù¿.çÐ Æû$ïþ£NþWü_
-þ/DõWËÿâþ×
-ò¿|#Ò¿bþó_lÀÿåþ«ù¿®×ÿþMøüóùxøµÛ< "Ò¿fþ÷?&°þûF¤Íü/ÎMÀÿåÙùbþý&ÿåþ5ó¿Ð¿ ¨ß7µÖÿzù_qòáÿ6ü/ßô¯1ÿñÿÅý
-1 êeúÿ¹¿»_êöºfTøBÿWÓ
ÑÿB&ÿËõ,öü½fyýKJ3Ô?ÒQV×ÿ¿ßÿ÷Ç_÷k>ãÝý×¼Ô¿ £ÿ;µä?Ùðÿú_ñ¿þï÷ÿýÿµ?ö?þ÷ÿ¡½É]ù¯ïÿçÿíüßý_=Üÿ?ûûçÛÿËáþ~ü©ÿëÿ£ÿ§CVëx
-xë]ÿÆò÷ÿÒ
<îÿS¢ÿÛ¹ÿ|ý:5!kW¬Ôÿâï¯YµÿKí´ÿ£ÿÃÕõWÞÿ¥ÓùOjÿfÃiÞØÿöÿ+³Zÿêû¿Óû_*ìÿLxÙÿ?Æ= ²vÅJý'ýó¿rÚÿuìÿLX]õó¿fÚÿqÿgÂiÞØÿ%öÿ+³ZÿÚû¿.Nû?òM·}ø|²Rÿg~½fÕþ¯Üÿ²ºþÚû¿x¾ÿåùoÂi×¼±ÿkØÿý¯Ìjý+ïÿOû?ú¿M¯}Ùÿ ü¯ÍÿDH À+
\ No newline at end of file
Deleted: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/64fake-4n2s2ca2c2t.tar.gz.output
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/64fake-4n2s2ca2c2t.tar.gz.output 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/64fake-4n2s2ca2c2t.tar.gz.output 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,174 +0,0 @@
-Machine (phys=0 total=4194304KB)
- NUMANode #0 (phys=0 local=1048576KB total=1048576KB)
- Socket #0 (phys=0)
- L3Cache #0 (8192KB)
- L2Cache #0 (256KB)
- L1Cache #0 (32KB)
- Core #0 (phys=0)
- PU #0 (phys=0)
- PU #1 (phys=4)
- L1Cache #1 (32KB)
- Core #1 (phys=1)
- PU #2 (phys=2)
- PU #3 (phys=6)
- L2Cache #1 (256KB)
- L1Cache #2 (32KB)
- Core #2 (phys=0)
- PU #4 (phys=1)
- PU #5 (phys=5)
- L1Cache #3 (32KB)
- Core #3 (phys=1)
- PU #6 (phys=3)
- PU #7 (phys=7)
- Socket #1 (phys=1)
- L3Cache #1 (8192KB)
- L2Cache #2 (256KB)
- L1Cache #4 (32KB)
- Core #4 (phys=0)
- PU #8 (phys=8)
- PU #9 (phys=12)
- L1Cache #5 (32KB)
- Core #5 (phys=1)
- PU #10 (phys=10)
- PU #11 (phys=14)
- L2Cache #3 (256KB)
- L1Cache #6 (32KB)
- Core #6 (phys=0)
- PU #12 (phys=9)
- PU #13 (phys=13)
- L1Cache #7 (32KB)
- Core #7 (phys=1)
- PU #14 (phys=11)
- PU #15 (phys=15)
- NUMANode #1 (phys=1 local=1048576KB total=1048576KB)
- Socket #2 (phys=2)
- L3Cache #2 (8192KB)
- L2Cache #4 (256KB)
- L1Cache #8 (32KB)
- Core #8 (phys=0)
- PU #16 (phys=16)
- PU #17 (phys=20)
- L1Cache #9 (32KB)
- Core #9 (phys=1)
- PU #18 (phys=18)
- PU #19 (phys=22)
- L2Cache #5 (256KB)
- L1Cache #10 (32KB)
- Core #10 (phys=0)
- PU #20 (phys=17)
- PU #21 (phys=21)
- L1Cache #11 (32KB)
- Core #11 (phys=1)
- PU #22 (phys=19)
- PU #23 (phys=23)
- Socket #3 (phys=3)
- L3Cache #3 (8192KB)
- L2Cache #6 (256KB)
- L1Cache #12 (32KB)
- Core #12 (phys=0)
- PU #24 (phys=24)
- PU #25 (phys=28)
- L1Cache #13 (32KB)
- Core #13 (phys=1)
- PU #26 (phys=26)
- PU #27 (phys=30)
- L2Cache #7 (256KB)
- L1Cache #14 (32KB)
- Core #14 (phys=0)
- PU #28 (phys=25)
- PU #29 (phys=29)
- L1Cache #15 (32KB)
- Core #15 (phys=1)
- PU #30 (phys=27)
- PU #31 (phys=31)
- NUMANode #2 (phys=2 local=1048576KB total=1048576KB)
- Socket #4 (phys=4)
- L3Cache #4 (8192KB)
- L2Cache #8 (256KB)
- L1Cache #16 (32KB)
- Core #16 (phys=0)
- PU #32 (phys=32)
- PU #33 (phys=36)
- L1Cache #17 (32KB)
- Core #17 (phys=1)
- PU #34 (phys=34)
- PU #35 (phys=38)
- L2Cache #9 (256KB)
- L1Cache #18 (32KB)
- Core #18 (phys=0)
- PU #36 (phys=33)
- PU #37 (phys=37)
- L1Cache #19 (32KB)
- Core #19 (phys=1)
- PU #38 (phys=35)
- PU #39 (phys=39)
- Socket #5 (phys=5)
- L3Cache #5 (8192KB)
- L2Cache #10 (256KB)
- L1Cache #20 (32KB)
- Core #20 (phys=0)
- PU #40 (phys=40)
- PU #41 (phys=44)
- L1Cache #21 (32KB)
- Core #21 (phys=1)
- PU #42 (phys=42)
- PU #43 (phys=46)
- L2Cache #11 (256KB)
- L1Cache #22 (32KB)
- Core #22 (phys=0)
- PU #44 (phys=41)
- PU #45 (phys=45)
- L1Cache #23 (32KB)
- Core #23 (phys=1)
- PU #46 (phys=43)
- PU #47 (phys=47)
- NUMANode #3 (phys=3 local=1048576KB total=1048576KB)
- Socket #6 (phys=6)
- L3Cache #6 (8192KB)
- L2Cache #12 (256KB)
- L1Cache #24 (32KB)
- Core #24 (phys=0)
- PU #48 (phys=48)
- PU #49 (phys=52)
- L1Cache #25 (32KB)
- Core #25 (phys=1)
- PU #50 (phys=50)
- PU #51 (phys=54)
- L2Cache #13 (256KB)
- L1Cache #26 (32KB)
- Core #26 (phys=0)
- PU #52 (phys=49)
- PU #53 (phys=53)
- L1Cache #27 (32KB)
- Core #27 (phys=1)
- PU #54 (phys=51)
- PU #55 (phys=55)
- Socket #7 (phys=7)
- L3Cache #7 (8192KB)
- L2Cache #14 (256KB)
- L1Cache #28 (32KB)
- Core #28 (phys=0)
- PU #56 (phys=56)
- PU #57 (phys=60)
- L1Cache #29 (32KB)
- Core #29 (phys=1)
- PU #58 (phys=58)
- PU #59 (phys=62)
- L2Cache #15 (256KB)
- L1Cache #30 (32KB)
- Core #30 (phys=0)
- PU #60 (phys=57)
- PU #61 (phys=61)
- L1Cache #31 (32KB)
- Core #31 (phys=1)
- PU #62 (phys=59)
- PU #63 (phys=63)
-depth 0: 1 Machine (type #1)
- depth 1: 4 NUMANodes (type #2)
- depth 2: 8 Sockets (type #3)
- depth 3: 8 Caches (type #4)
- depth 4: 16 Caches (type #4)
- depth 5: 32 Caches (type #4)
- depth 6: 32 Cores (type #5)
- depth 7: 64 PUs (type #6)
-Topology not from this system
Copied: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/8amd64-4n2c.output (from rev 7493, mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/8amd64-4n2c.tar.gz.output)
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/8amd64-4n2c.output (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/8amd64-4n2c.output 2010-11-24 09:21:55 UTC (rev 7494)
@@ -0,0 +1,49 @@
+Machine (phys=0 total=67108240KB Backend=Linux)
+ NUMANode #0 (phys=0 local=16776592KB total=16776592KB)
+ Socket #0 (phys=0)
+ L2Cache #0 (1024KB line=64)
+ L1Cache #0 (64KB line=64)
+ Core #0 (phys=0)
+ PU #0 (phys=0)
+ L2Cache #1 (1024KB line=64)
+ L1Cache #1 (64KB line=64)
+ Core #1 (phys=1)
+ PU #1 (phys=4)
+ NUMANode #1 (phys=1 local=16777216KB total=16777216KB)
+ Socket #1 (phys=1)
+ L2Cache #2 (1024KB line=64)
+ L1Cache #2 (64KB line=64)
+ Core #2 (phys=0)
+ PU #2 (phys=1)
+ L2Cache #3 (1024KB line=64)
+ L1Cache #3 (64KB line=64)
+ Core #3 (phys=1)
+ PU #3 (phys=5)
+ NUMANode #2 (phys=2 local=16777216KB total=16777216KB)
+ Socket #2 (phys=2)
+ L2Cache #4 (1024KB line=64)
+ L1Cache #4 (64KB line=64)
+ Core #4 (phys=0)
+ PU #4 (phys=2)
+ L2Cache #5 (1024KB line=64)
+ L1Cache #5 (64KB line=64)
+ Core #5 (phys=1)
+ PU #5 (phys=6)
+ NUMANode #3 (phys=3 local=16777216KB total=16777216KB)
+ Socket #3 (phys=3)
+ L2Cache #6 (1024KB line=64)
+ L1Cache #6 (64KB line=64)
+ Core #6 (phys=0)
+ PU #6 (phys=3)
+ L2Cache #7 (1024KB line=64)
+ L1Cache #7 (64KB line=64)
+ Core #7 (phys=1)
+ PU #7 (phys=7)
+depth 0: 1 Machine (type #1)
+ depth 1: 4 NUMANodes (type #2)
+ depth 2: 4 Sockets (type #3)
+ depth 3: 8 Caches (type #4)
+ depth 4: 8 Caches (type #4)
+ depth 5: 8 Cores (type #5)
+ depth 6: 8 PUs (type #6)
+Topology not from this system
Added: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/8amd64-4n2c.tar.bz2
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/8amd64-4n2c.tar.bz2 (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/8amd64-4n2c.tar.bz2 2010-11-24 09:21:55 UTC (rev 7494)
@@ -0,0 +1,35 @@
+BZh91AY&SY%)Ç DÿøVQïÿö=oÞÿïßð@B "ø`ÿ>¾ñöä½#MÙ¡x-{h %$¼
+4ÓA¡¡¡ hh
+4d ÂbB)·êª¦ú© @ @
+Sت ¦ õA)é"i&"dÓL Ð"HÐ @ *HA4 ÐB4§´§§z22mC&Qé=&LÔ`$#ôøÄþ_ÀP¤L[àô>¢ãBÅíù>?åþY&Ô|Ãh3TXE±l/¤E PGz M¶ÏXÞÆ1XµÊAÒm#§iHéËrõI¬I5*ε«<«Z³Ö¬âµ«8¤ÊfffUAzç|ï2Z÷½É³;ÖeKÚ¶#8BÖµ)jQJ)E(¥¢f&&&&&3UUN1b°flÉÀQBm
,81v0ÇFèÃc£ÓSZÞ hâ$,RL¤I¦ÕV¹BL&㥵òeJE3!$ÍÜ»»»»»I$Sj °(Z(¢*XM
+(¢-(Lò¨TDðUIb¢
+BFE
!¢¨¥U!E¨Pª%JAU";êXîXÌ÷]- ñ1¸È¡=\U
+ô
+BùH òûwÏÇ´«GH´e1F(ÅÆ-¨Á°{};ªªª®UUUUUUUga¥¥¥¥¥¥¥/g
bÐÆ¥:òèmYBªÐ4+l¡_¬©^Í3£ì¢ZQ-E¨¢Õ&i¹¸x`×_8À`P¹Ã_[Ö3ÝÝlö×NÐ:I¦yíkÞýoËv{iÃ!ÏÝQUK¤Ed"Qly
§¡I,)`ΤC³ÒV$R¤^½W߯%f9
'%G¡ÉÎ7zåàðÂIµ
+àLÌ$¢´ o®^øµ¯u^ö«ß¼`Pîàæ6¡õ ÀÀïcõÑÈh=*ªéóͪå¸Ä:.{µ£±Ë¾ ;bBvu6-Ùåx{ä¤s!Ì3øýBà ýcaÐ7|\pÇö
+Gæ2a¨ô ë|l,'`ûDHt°ñ ë;ª©ØnI$I$HôçÇukZÚÆëQ®Ñ×í©M±cÆ
++ZÉ$I$<À¥@e(¥ÔYe$Æ1ÌQX¸I$I$I&7¢«!Uç7jªª«`HÉ$I$I#À
+ÎË$IUUVeQe1{Ýc kZÖµkY`5@ª¢ª¤PUVµ÷LIo 90Þ-LgTQTfʪªP¦
+pÀ qÖpV+1&CVC8tù,öòÆ4cÅíkpÁßÙXX¡J¢M{3I$.*I$ðùrO´~E|â|ãüCð øD°Ì5
+(~Zü^¡Ú>¾£¼îO§êÜ>üU E°hDDÉðÏ áîWÁ;u[%Jª¥PÖ"B¯¾ðCùÄ (ZÁÝZgRD^Æ´i}ØtY¾ßYÁ[¸KQ¬Vlî¦6ÕmïN)#\ëJj=ãuD÷dzIab
(¶?ÐPè5!AB¸ñ4ã3ÒG2D2¾e÷Aí¨v;6ÙÌ=·¾VêîáÅjF©iîÅ^ªDÒÔ®;àÏ=ÄîÏ]N1Óª¬0^gkGXÎí¸çømùIv
+'h×ohÝT»¯íøIqR¢$)kKWUós§~8SÕF-RÒ¥×åjËZ¦Ê ÓYu¢sMÖð<*´¬¬ÈgÚ4ê,,P¥ÑA¡Ç°Ò7Ôª®®Ì4áÀ7k·nQ02ì Ò8Nü[·¦8Úéq/kÛ\|ôÒ
ÒÖªGã©T ZÕÓ4ë½ø¶rEU(KDeS*·}ueáõÄHtì¾é7xnÛ)¬XÎoiȳ¬ uLg¡Eûøñ)*2¹µHlðãl°U¤/k^;±XʦþY1Q|¯ºËÞ^^D!S'VñlL-,/Ç]¹-÷ÝY^Û5-ynYy
ã<oªXë
+ß´¦1ï¸b°áuU¢$8 Ï[ΣF°Î+~sÃßÊÕ[Y¿¥°pk6½VXbvá![B
+¥xc:î &ÖEâÑCÅ`Q$Ìra¥§´z:¬]uëÖ;7뵸Ð4"CºÒ$×»=*×¶K^ôßfLÎת[+È\çÈ,.8í[Ðmº"Bµ
iÔW@¸ÄÖS±ÂV1*
+#HÒ@)ÌJ9dH(^S}¸iÝ×ZÏ)j98a,¥«bg[k}U
+T¨4Ö·«±½È]m%bJ\§FùmÉÍ6ËÃð7¼JÍâçÃ%dµS:Å à(jË>
+üô¾kVìZõC
+ݾbÛvåhv[Af³RÙh²ª¬ÖIv¼öS»l×S5¶ka×ìÜNM8Ô¨g7G(6ËZ¦s£ÚKáQYJ=7ÉË«¸Ð]~
+bKÔ+¦sAµ`ã7(¼dÞaÅ5ÊÍ7u(¥ u{Æ*í0ç"Kg|6Æu2¬®8ÞÓ=ùn;³çÔÖûo½«-ÅL¤f8qú/n
+:î'@~ôx#µãnn}ùiäκ~°/l)ü¿-væ[Î\3?Òª³N³
ºÞ%É3eUZud²P[Ĺ0flª«N¬Bêx&ÍUiÕBÈ]AoäÁ²ª:²Y¨-â\36UU§VA!u¼Kfʪ´êÈ!d. ·r`ÌÙUVY @ÿEç9Ã
+¤à6TdÓ,´ô
+%¶TF5[«ø hø÷ëÄhºl«dFRðvjþ/+âPúÄ&à>û϶?hz
Éö°Þ¸ÌQóø,I÷D4°ª;'ÞU(X~âþeÈâq8
+K4<ÇòÌO¼?Q¸=Ñú¬OtMÃQ7n5¼JÂz¯¨²"CݲjT¹^Ië:ûaà0?)ïÅÅã`¡ÄX¡Ò"CQØ:ÆePñ¢ÑXDØL̰àëÐ\ÔO(!h'A¼Xn>ÏmQ¡üà
ÄdPÌv?Ìb `ga,N#Ü(6ÂÃ1q.¤öUK
Äl(N1à¨Ct ,=cÞ`AB¤¡82±Àd<ÇpPµ ¹:Å´lZ5&áÄJ%"Çï;ó¬ÀPÐ(ØN"
+Á!îë31`Ôl4¨`÷ĵÁ2ÔvÀ&è$-9U*UC!pÌL =#xõ1æ'!BX;¨nÜ\d(P\xõ2FѤD
`P°±àt%ÄÈqðÔKBÁ<`Ð4
+Ǽ#¬|Gä/!î \ÝÈ\6¡ÚuÌ`1cÄè<Äè `wwàPìÌ(r$ Þ3Àðâf3
+ÃÑ!LĸÈ\wB7ñÄ9aÖ(±°ØK¬âI
+Qä5pë@ÈNÊØ
+?y¼h(ê8 ¨(RDyà6\$öÈpqCñjIÈxGÄ ô ò$OHRI<NÈ@ÔGâ09Þ7 ïÀl'QCå§î9ãª=Á¨ñCAÔ: Càbáâ
+áqîÈi°Ñ硨ú´u BP¨Ñ0:C!KÔ\øî5à3þ%ÎÔ|ÂÃÀTD¢s%Áé®"B ÐP:
x!!DBx\XxXd3({Çh÷â$5A,#pK q2¢<ÇÄGu`è`á!!¼$8ÅÆô$(PHd\hnP¸ä<BãÐQ¨Ð¡$24fáÜ%
+à?øj#¸v#°LÆð¡â(oDàÜ=£þÆ!ÔJ(¬þ1ÀþQ yJTRIí#¸æ!PHs¡;Ec°JAÜ9
+Á(P¸õ
ï¬d¡,&ñ,'$9 CÐC¼u}´ ÿâîH§
+Ä¥8à
\ No newline at end of file
Deleted: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/8amd64-4n2c.tar.gz
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/8amd64-4n2c.tar.gz 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/8amd64-4n2c.tar.gz 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,10 +0,0 @@
- SÖ9K í[sãF
ûuô+ð¸1ãE
-úÍÞÇ8¼X»chæ-HHnͯßÙA at 2QÙÔÙ¦ò|1VÕÄÄ
-§*r9ÏÜßÜÊÎþãÝ+{ò4mÿ4yïÿnÛÿùwÆØØ¦qìLò.6Ö¤æ]¾ÖÔån×Û(z÷ñf}³¨W2®Úî?¢ÿÍvý*'Á¸ø$MbÄÖÇ?1&eüâ?ÛÜÕ«ëõ9Ñ8;Äûøë~ü]'ï¢ø?ÄK(ój·[oÿòm_ÝW«ùz;çþoßÝ5·Õª©gßýüþÊÑu¹¬þ^-×ójñÿuöùëhU.+ÿ÷÷wåâoÿ¹ÞVÿgÑoj»^ý[³ü÷èG
-k«]Sm6õêÆÿ»ûÿþ¯ö
-mÇßÌ\ÍÊÙmíêµokb뢾¿ÚÜ>ìêY¹ö?b|µ«?ú ÝìïÒÖ¿°¥}Ëö®7wí·ª]ûå´ú4«6M½^}þ^{ÒÏ£Euï)°«ß7O£¥wÿÿÏ¢ûeÍ«h³«¢f7»m´)«h9«¢Ù§"*7õ,ÚUhÙlý+7í+e4[®ïý°¦ýgIÍ×»Ým´\~®?ùwØùwóÿÙè¶v;ÿËùóSûzõ©Ù®7M´ûCn¢Å2Jæ«õïíkû/¢ÍªöG7Y´(o¯§þõÙr3]T7åì!ÚÝ/#?rÿͶÅço_}\߬õ¦ýhRÛýÆ«_ÿëû£ÏÚýäæö£ùüó~~1sÀLËE}³ZúäðÍr>÷õn?¬}_Gëf=ì¯+ß¹¯·?I®6þØFËråӾϷþ3®}îýM³e´kfWWÝSÔ\Ú)jx~ñ)j&oÒ9Eí¥¢§èYNQw1§hri§hÂSTÙUÔ]Ú)úò\Ôð}§hzi§èËsQ¢A7úìRNÑìÒNÑç¢<Eßæ)_Ú)úò\§èÛ¹Ñÿÿed±tóÿþDx`@ý'vÆ´õ¿<YÿAÐÿ¼º¯ýó¬çAxü3ñGðRüý×Mµ<Ïiÿ4O2ÆÁøû9ÊañÏ|ü³4¡þ!¿ÿ/û¢`lüMgqæÇÜYÞÿ!³Þ¬ëɬkl0þãßÜn«r>}|s6ÀîEÿÿÚôãï$¥ÿÁcþú%_¸XÍóò[#Xÿ¹é¦ýVÞTÓz~ê§ôǶ§ÿÔO¨ÊUM°þÛôöÍw ×§þê_52ýÌþEóÿØÿAý8Ïüßñ*r¡Õÿ¾þ*̶§HPþÏÆùañ¯Wóê
-=
-ÆÆ¿ÿËãAÿÖopÓóÿ¬?ÿß×xÿ}ZßÍO¼{«E¤ÿ§ L5ÝÛ¦n}m/#üù?s9ÿ!ðù_7"ý7³ÞÿÏÿþþï¨Võu]ÍyPHÿ{Ïúøcßÿmqÿ¬ÿéF¤ÿÙú¶ÚV«ÙÃáàT:à´þ~ý?Íéÿ1u¯þ/vÓõõ´ÜíÖ³ºlêûºyxùáúÏLNÿQÿåÿoËm5ú¦Ërsò§ôÿLý?µ¬ÿCèUòéÿUHÿ«»åÇjÛÎ vU
sZ§ïÿé@ÿ¹¡þ´õ?W/ýÇÿ÷ÿ ÿÙýnPÿáüCF÷jDúø?2êýºéÿÜþÁóMêÂû²)y ÐHÿÿó?xÿ×Hÿÿý_èÿÐHÿg÷ÿMNÿ7ú?u#ËÿüÔ?þeôvÿG¿þçRæÿ1¤3 Íôo þîÿ
-AÿþôèF¤ÿúÀúnDú?ûþÃû?÷ÿÆðãj×lïfíåW
ôðpÿ?¼ÿëF¤ÿõôèF¤ÿûÿ@`õG7²ü?ÀÿAýCè99èÿPHÿÿóèÿÐÍ8ý·|9¢Uxhÿoãèÿ@06þèþßiÎø#?ªÿ7×B8Ëü?fñR Ö?ªÿ7×Bàì_7ÁúÇôÿfý3wºéÐÿþgÿ³ÿ÷Å2VÿèþßÌÿ`?®ÿwÂøCÅÐÿû?c`ÿoÝôXÿÇçôÿëF¤DÿïúGÀþߺé°þ/¥ÿëºé±þþ\ÿ§þý¿éÿÀþߺåÿëÿXÿЫäÓÿ«þý¿3®ÿ
ÀþߺèÒÿ;Iéÿ@ ?bÿgÎÿ pÿgÝôðPÿèÿÐHÿþßÔ?öÿÖHÿÿó?xÿ×Hÿ ÿ÷Ã@ÿnDúGìÿLÿ7ú?u#ËÿüÔ?¾þ]ôØÿù?ÜÿY7ýCú'ýDñGø?èÿ@ÿnDúGø?¨¬ÿèF¤DÿoêûëF¤ÿûÿAàý_7"ý#öÿ`ýýºéáÿàþ?XýÑ,ÿðPÿúNú?t!Ò?ÂÿÁüú?t3Nÿ)¾ÿ7û¿@tÿïÖÿÇø¿>ÁñGõÿfÿgÿ[v½TõêÿÍúÖÿt¬Tÿo®ÿ@ýëF¦@ÿoîÿá<óæ/±úG÷ÿfþCXüqý¿ãA@ÿïõìÿþëÿøüÏÿºéÑÿþìÿþëÿ¸ÿfît#Ò?býý?¸þO7"ý#úÓÿý¿u#ËÿÖÿ±þ¡WɧÿW"ýúsÿìÿþ!ý¿]LÿQüû?sþû?ëF¤ÿú@ÿnDúGôÿ¦þ!°ÿ·nDúGø?ÿÀû¿nDúGø?èÿ@ÿnDúGìÿLÿ7ú?u#Ëÿ
üÔ?þeôØÿù?ÜÿY7ýCú;CÿQüþúÿ!Ðÿ¡þþêë?ºéÑÿúÀþߺéáÿàþxÿ×Hÿÿë?èÿÐHÿÿ÷ÿÀêndùÿúÐsrÐÿ¡þþæÿ Ðÿ¡qúOðý¿Sú??¼ÿ7÷Tÿo®ÿpù\pq¡ëÕÿÏÿ*W5ÁúGõÿæúÌÜéF¦@ÿoÖÿ!eþ_pþ©Õ?¼ÿ7ó?ÂâìÿÍøCÅÐÿÛ²ÿ/öÿÖHÿÜÿùÍ@ÿ¿nDúGôÿæúìÿþ¹ÿóî?ÝôÏýß\ÿ§þý¿éÿÀþߺåÿ¹ÿó[¡WɧÿW"ýúsýöÿÖ@ÿþßíþô¼>¢ø#öæü÷ÖHÿÿõþÝôèÿMýC`ÿoÝôð¤Ìÿ@àý_7"ý#üôA ÿC7"ý#ö¦ÿýºåÿþêBßÉAÿ.DúGìÿÌüîÿ¬þ!ý¿þ¢ø#üôÿC ÿC7"ý#üÔ?Öt#Ò?¢ÿ7õý¿u#Ò?ÂÿÁýÿ ðþ¯þþÖ Ðÿ¡þþîÿÕÝÈòÿ ÿõ¡ïä ÿC"ý#üÌÿA ÿC7ãôlù8¢UxpÿïþcãîÿrÿÁñGõÿæú/çÿsq©ëÕÿÏÿXÿÓM°þQý¿¹þûëF¦@ÿoÖÿ!eþo9ÿ¿TÆêÝÿùañÇõÿæþÏDñGôÿfÿ_ìÿþ¹ÿóù?Ýôèÿm¹þûëF¤îÿüf`æN7"ýsÿç7×ÿéF¤Dÿoú °ÿ·ndùîÿüVèUòéÿUHÿþß\ÿý¿u#Ð?¦ÿ·£ÿ(þý9ÿÀýu#Ò?ÂÿAýC ÿC7"ý#úSÿØÿ[7"ý#üÌÿ@àý_7"ýüý_èÿÐHÿý3ú¿!°r«YþÿõýúÐwrÐÿ¡þû?3ÿû?ëF Lÿïþ¢ø#üôÿC ÿC7"ý#üÔ?Öt#Ò?¢ÿ7õý¿u#Ò?ÂÿÁýÿ ðþ¯þþÖ Ðÿ¡þý¿¹ÿVt#Ëÿöÿ þ!ôôèB¤ÿù?ôèfþ¾ÿ7û¿@tÿïÖÿÇø¿>
ÁñGõÿfÿgÿv½TõêÿÍú*W7ÁúGõÿæúo¬ÿëF¦@ÿoîÿá<ó^E.±úG÷ÿfþCXüqý¿ãA@ÿïõìÿþëÿøü3wÝôèÿÍõØÿ[7"ýÖÿqÿ'tÿéF¤Dÿoú pýnDúGôÿ¦ÿûëFÿ¬ÿcýB¯Oÿ¯2DúGôÿæþØÿ[7ýcúçô űÿ3ç¸ÿ³nDúGø?¨ôèF¤DÿoêûëF¤ÄþÏÌÿ@àý_7"ý#üôA ÿC7"ý#ö¦ÿýºåÿþêBÏÉAÿ2DúGìÿÌüîÿ¬þ!ý¿]LÿQüþúÿ!Ðÿ¡þþêë?ºéÑÿúÀþߺé±ÿ÷ÿÀû¿nDúGø?Xÿ@ÿnDúGø?¸ÿVt#ËÿüÔ?þeôð0ÿþÝÓðG´
-îÿméÿ@06þèþß~8ã 8þ þßë?!eþ³p©ëÕÿë?!ðÉ]7ÁúGõÿfýõ¯þý¿éÿpù?û_,cõîÿÍü°øãú'?Qüý¿¹ÿ3öÿÖHÿõ|þÀ»nDúôÿ¶õý¿u#Ò?bÿgúÿ Ðý§þëÿØÿ×ÿéF¤Dÿoú °ÿ·ndùÀú?Öÿ!ô*ùôÿ*C¤Dÿo®ÿ
ÀþߺèÓÿ;¡ÿ(þý9ÿÀýu#Ò?ÂÿAýCànDúGôÿ¦þ!°ÿ·nDúGø?ÿÀû¿nDúGø?èÿ@ÿnDúìÿÑÿ
-þOÝÈòÿ¯ïÿ0Ô?¾þ]ôØÿù?ÜÿY7ýCú'þ¢ø#üôÿC ÿC7"ý#üÔ?>¹éF¤DÿoêûëF¤ÿûÿAàý_7"ý#ü¬ÿ@ ÿC7"ý#üÜÿ«?ºåÿþêBßÉAÿ.DúGø?ÿ@ÿnFèç?.gÓÍúw¯ú]y?¾õ×VáYÐü?1ôa`ÿ?Ý»ÿçÂÎ_Z
õÿ2¹ký?ô½>cãÿÔÿQp±ñïøÿlFÿàø7·Ûªu <ÿ' óÿÎòü_pq©ëÿÉû·)g¿7cz~þïÏÿSã8ÿP¹ª Öÿ¾ÿ÷iÍw ׿Íbæÿ 0s¯þCfÿ¢ùÌúóÌÿ^E.±ú?ÔÿdÇhO üó?Ââÿ¹ÿCà1ÆÆ¿»þ×1þDñ?ûúßl¸þû?Bhûp°^Dú¬ÿeÿ?|þ×Hÿg_ÿÛÿùû?÷
ðaU_×ÕW¥ôXÿqý/ºu#Ò?`ýoNÿ®ÿÕHÿg_ÿÛ×fcú ú×,ÿÿúë-ëÿz|ú!ÒÿÙ×ÿöû?º4·Ô?¶þGñêE ÿâÿ°ô űÿ;ç¸ÿ»nDúGìÿNýC ÿC7"ýÛÿ1xþ³iBýCx_6%/zéáÿ`þïÿºéáÿ ÿýºé°ÿ{Nÿ7ú?u#ËÿüÔ?þeôØÿù?Üÿ]7ýÿ#¡ÿ(þ ÿGBÿ?ú?t#Ò?bÿêë?ºéÿìûïÿÜÿë]³½µo^ "Ò?ÂÿÁýÿ ðþ¯þþÖ Ðÿ¡þþîÿÕÝÈòÿ ÿõ
¡çä ÿC"ýüÌÿc ÿC7'ô¿ZÏ¥]þ UxXÿï,ÙÿÂø·ÿlúé06þO×ÿô×>ÿ1þ¯Ïøøûi0 ûøçùø'&ógñÂm¦ö]d¿9ïïú,ÿÈøûI_é?«&ü'ÿ\Þ÷ÿ¹ù_mT§·u¥yêò̸«ýwõnů¯×Ûª¾Yù¿Ö«¦Ú.ªò¾ÚÿëC_-Ö¨=GÚ÷hWngWëæÖ?ì¿gã ÛC~½×ÿ²ZÖ«ëµà'ôï¥ßßÿÃXGÿ?«´"5ÑÏÕò×uS.¾Zü<Ïɢ߾ïøa[U×ý$¸Ìø°«æDKr9èønÖÔ÷ÕÓëþMÒ¼tü¸*{CrW$ïëmóÐyýtñ¿Ûº©>³ßºâÎêEõÏò¦Ú=(üõª;àçr³éü{²îïVëÕÑ;DYv?¨öÅ_Ëî¤;à?ü2ý°ò§ó4¤{ï×w«YÕû=»~Y_Îó¢_þ§-ÊzùÇ!ìäè×üåÃj{òø>®8æßïnÔ´sZÄÃW;çHÐüßÈ!ÿ»óãã?¯ý'å¯KáÇ8ÿø?¹ÿW0±¤ûÿñò ëÿbï3|þÔMÌý0ô*¹²/,kHÊXýoúÞa?ÿÍÿ§Ìÿ#ÿ×Ìÿò?.åþò¿ya¬+ÉäÛ÷H&EÚÍÿ)Æ_1ãõÎÿÒÿáÑÉÿféäÔj<Èÿ7é¦wãAþ7³YáâÎAþ×e¶È:ù_k]\t<ÿºNäãAþ×öÈgò¿Îv1Èÿº|b]gÀ0ÿë?ÉùßøTþ7æmj~Aþ×äù¤ûQó¿¹WhgÀåcæßã¯ÿþùßÉ!ÉÿúaÌÿpþë!<&ÿÕIÐõ_(HÉõß¿Ìë? ø#óÿ¼þCø´ÿÓ»H\*cõoÑùÿùããï¯ÿì¢ç?Þÿ!ÅßÊÁçÿ¯ññ¯ÿ`þÂSýÏYÛÀú_Öÿ9Oâ8IÖ$pzøµ2^ÿØú_Êõÿ{jýí×ÿÒ<Îâ´7 [ÿóðÆtVNØAýÏØ$vygÀ þ6M:«ÿeEgÀúÔÿ²¤(\÷[ÿÑ)ÙgÖ¤ÝÒ}¦þ×®kï8Qÿ³§êvPÿóÚéJí þg|¨:ÅZû\ý/?æÕÿ,ëoñ
×pýë!?õ¥=ÿ#óÿÔ?/Iû?}áhñ¼TÆê?Áæÿsÿ-æÿ?8ÿÇý üÿ3yNÀü_åÿL¹,6½ü_ÂòðWËxýûù_";ÆþúÏý¿¾JÆÇÿ5¼þ#8dôSùßdÿ-ò|ÒÙs&¬ÿ(&ØÎÁúÔÔtò¿©+´3àü¯uÝáDþ7ä¿ì¤G¿f?ÿkØýýü¯µ¢èæmuÈÿ&§ò¿Épýÿ ~ÁúÄ«û[ò¿mñ¯ûIþYþ7aþ÷Í0þúÎÿ²þáÑüÊW#Aódþúpü/7x½XôË!zþçþB!B!B!BÈhþðáZo
\ No newline at end of file
Deleted: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/8amd64-4n2c.tar.gz.output
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/8amd64-4n2c.tar.gz.output 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/8amd64-4n2c.tar.gz.output 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,49 +0,0 @@
-Machine (phys=0 total=67108240KB)
- NUMANode #0 (phys=0 local=16776592KB total=16776592KB)
- Socket #0 (phys=0)
- L2Cache #0 (1024KB)
- L1Cache #0 (64KB)
- Core #0 (phys=0)
- PU #0 (phys=0)
- L2Cache #1 (1024KB)
- L1Cache #1 (64KB)
- Core #1 (phys=1)
- PU #1 (phys=4)
- NUMANode #1 (phys=1 local=16777216KB total=16777216KB)
- Socket #1 (phys=1)
- L2Cache #2 (1024KB)
- L1Cache #2 (64KB)
- Core #2 (phys=0)
- PU #2 (phys=1)
- L2Cache #3 (1024KB)
- L1Cache #3 (64KB)
- Core #3 (phys=1)
- PU #3 (phys=5)
- NUMANode #2 (phys=2 local=16777216KB total=16777216KB)
- Socket #2 (phys=2)
- L2Cache #4 (1024KB)
- L1Cache #4 (64KB)
- Core #4 (phys=0)
- PU #4 (phys=2)
- L2Cache #5 (1024KB)
- L1Cache #5 (64KB)
- Core #5 (phys=1)
- PU #5 (phys=6)
- NUMANode #3 (phys=3 local=16777216KB total=16777216KB)
- Socket #3 (phys=3)
- L2Cache #6 (1024KB)
- L1Cache #6 (64KB)
- Core #6 (phys=0)
- PU #6 (phys=3)
- L2Cache #7 (1024KB)
- L1Cache #7 (64KB)
- Core #7 (phys=1)
- PU #7 (phys=7)
-depth 0: 1 Machine (type #1)
- depth 1: 4 NUMANodes (type #2)
- depth 2: 4 Sockets (type #3)
- depth 3: 8 Caches (type #4)
- depth 4: 8 Caches (type #4)
- depth 5: 8 Cores (type #5)
- depth 6: 8 PUs (type #6)
-Topology not from this system
Added: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/8em64t-2s2ca2c.output
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/8em64t-2s2ca2c.output (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/8em64t-2s2ca2c.output 2010-11-24 09:21:55 UTC (rev 7494)
@@ -0,0 +1,38 @@
+Machine (phys=0 local=16468292KB total=16468292KB DMIProductName="PowerEdge 2950" DMIProductVersion= DMIBoardVendor="Dell Inc." DMIBoardName=0NR282 DMIBoardVersion=A00 DMIBoardAssetTag= DMIChassisVendor="Dell Inc." DMIChassisType=23 DMIChassisVersion= DMIChassisAssetTag=)
+ Socket #0 (phys=0)
+ L2Cache #0 (4096KB line=64)
+ L1Cache #0 (32KB line=64)
+ Core #0 (phys=0)
+ PU #0 (phys=0)
+ L1Cache #1 (32KB line=64)
+ Core #1 (phys=1)
+ PU #1 (phys=4)
+ L2Cache #1 (4096KB line=64)
+ L1Cache #2 (32KB line=64)
+ Core #2 (phys=2)
+ PU #2 (phys=2)
+ L1Cache #3 (32KB line=64)
+ Core #3 (phys=3)
+ PU #3 (phys=6)
+ Socket #1 (phys=1)
+ L2Cache #2 (4096KB line=64)
+ L1Cache #4 (32KB line=64)
+ Core #4 (phys=0)
+ PU #4 (phys=1)
+ L1Cache #5 (32KB line=64)
+ Core #5 (phys=1)
+ PU #5 (phys=5)
+ L2Cache #3 (4096KB line=64)
+ L1Cache #6 (32KB line=64)
+ Core #6 (phys=2)
+ PU #6 (phys=3)
+ L1Cache #7 (32KB line=64)
+ Core #7 (phys=3)
+ PU #7 (phys=7)
+depth 0: 1 Machine (type #1)
+ depth 1: 2 Sockets (type #3)
+ depth 2: 4 Caches (type #4)
+ depth 3: 8 Caches (type #4)
+ depth 4: 8 Cores (type #5)
+ depth 5: 8 PUs (type #6)
+Topology not from this system
Added: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/8em64t-2s2ca2c.tar.bz2
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/8em64t-2s2ca2c.tar.bz2 (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/8em64t-2s2ca2c.tar.bz2 2010-11-24 09:21:55 UTC (rev 7494)
@@ -0,0 +1,38 @@
+BZh91AY&SY+Xw? oæçÿô*zÎÿóïÿÀÿïßô @ !;ø`þûßwp :uC¬:ôÝð{Ý»ïô÷ª´®±k+,h¼à/{À @ hCDhSÊhdS=Hi£#i M È14j= ÿõT£@#A 4 iÒÒh 4Ð4 õÒÉ h$Ò$i¤j&¨ô CÔ A M&©z2 Ð Ð ¤ hh $@&FMFLÑêOÕM4ÁBoT4ÄÂhý$òö°°¼@ Nü,\üâb%Aaüßöüô1 ~ Ù *ÀgJÀýTÀúÍ÷¿rï\ÅÂ/¿ºØøéq+?H@?
+¬"¬"Ȳ,ÁWDËÑA!H
+u $}TJ
ó>oùÀÕØ~,>#®G¶wV7#¥«D+vDÝVҺ겴ËËÝÄ&ãoqinfÔÅ©53vîö,g,#y7e¶w»¹¬äVë@Æ4A½É&É$+IÞÍÔÜIjIjIjIDÔÔæe4` 7·d$LV-XL'IÒt'vI$Ý»ÝÝb³³1<aî!È12714æµpÖ®ÕÞµÍtÑ Bd!+B0RD Í£Õ*¬U¨+-´«KJVDIR¤#A,$DÈÆEXÂ"A¤bEdA BÏMWTc1¨i2ç3äÆLæ(h:LbÈö½9]6Meëà"ªëÆ1m¶Õ7!7&d b²dÒ(¢³2eQY)&B(¢*!
+ãÕë:Þq²@üÈX ¤0ÒR at E(#Q3EH² ±HB@`¢0@$RZ´I<ÀTþ¡RtCÌduQñÒ¨^Á8HVð cã g9·äù°Ë,l0§Yç^ù+Êeü¹õfõfófó§êù¼/ ú¡ë¯ùZÖµñëûYãjªª«ô;ó^ô÷¦Üªe2L¯OÒÜ4Á`°X,ÿHS¨§|ðeÎlye¹-:¹A!ÚÞ^H»
+ÏG$f!fj$.u{;E7ºgXÎ({ò LEI'vHàÖ8l.8ßl+
+¨PÓo{ßÞ0ñT0DZÏMtg¦ådÜl/ç&Û^ÕUU_môÛ³ß1ÍòIîHD¡X'ýI;]¨Ê
û÷$!FU)ÖÄñ²**ªÔAh'}$C#wÔ-Q$MÏF+Mlfê¨dÊq1QV
¢s{Åg¾$0²88ékUV¼Ûç ŬWVæÂDÚj¹þȯ §-/"¨:T`Ñ
+Æ1ûObÃ1æ0ñ1ÿq¸ÀX|Ãú£ò<ôé~! îõåÔéKø^þ7½Â·í"ÑL]í®ÍݶG³»ò@P¸G ê5#ïc(d?¬v!C¼pÂãaqä.;caC ÔXb<à<öÀf?(¹0ªHHy"=Çbïv}Éí 79!ò<¿=ZÛm¶Ûm¶×ð@É ÐÖ¾i/å
,+X
&v §% UUU:ªª{Þ÷¼ ÝÝÝÝÝÔI$I$=Pî *ìÚI%m¶Ûmµö{î$±H{¹9Ï<xñæzI 'd O|@óæùÚ¶Ûm¶Ûj^þ¾rLUUU]Ë|xñãÇn»v{[m¶Ûm¶Û_P5®ãè9ªª«À-m¶ÒÒÒÛmªªªXb&<ÒÇxñãÇyçyçÓM4Ò Í°8µÂªªªä¥ $1×]n¢k§Ûd$5o[¤Émé^
k¤d®
@+¤@y557¦ñ¦y}ù#êôVúFb$5¯Ã{óÊI6úÿ×Ý]ÚÖWǽoóc]èûÃÛºA`²ÕaJ
+¡-
+ÝzíÅ$üët8PG»àáQ«n~v©ZVMI,Ç·73&°)ÓÉ¢S ¹Á¨êbØ um±Å±-p9âìõn£têÚYfÛbâeÐ]P1 dV}A $KxifjJO·ss2$TÄ$QDÃ_6¶ë½ ¤¡¶ø G<ÅÅÞgV]oÂIÁB7Ík$ddHH>Ü0@ BOºóÈBB¨
+Þ8>Ýæ
×G»íÙ3YfXÞÜÚ( (V)¥p ¢íõ:Ä;:àáNò¬ªÈ/
+à{
+¶Y_!=Äw *¾uPðô9+Â1PUP*xqWØ\Ïxk^¸SøíjÃòZÕ+im÷ÙÞíaºB%4ÊÏDYÎ|üçG»CË8$FJ"Gªü(÷á·Zën¼¹ØWG]tíåÜ!;}G¼|Ï9ç;yìÚí)¼ç= £È²Î:Ĭ´Õj]«Ï¨Òdxòߦ3{KF×]xãéjPPÛ:Îyé:ßô÷YîÎ+o¼"%4[÷Ëüîûgµ:ç÷ìßN;Ùj³9ÇZ7sJip3]èóºÎð¼rÀç,%)!2³ü"r,¯
+y[n<¶Ã
+Âõ°úÇìy¼ÿSqè8H(*¨
+
+æÝyÇ["=%z&0ú'¤ëLjÚö½T0¯2@øYpÎüëçlÚ0Mï WRò©MÖ]zØp!ÖúÞ¶hгWXC6PË$×ÅïáiçÁÖ
+Û° Ìz`¬à mÍÆ_íáô zÏ^»sÞ·
+ at 5±ì £ L Ef.µbsWèêÐ"DÍ ÌlMÐ̡ѮØyÒöï×òå TXÙÓëô
mÅ1álôµîy'N0f¦ÖKp:uãܤ¢E«?ÌgÌÖª×ÛÚ°ßè÷>3¢Hsã<>·äoúz©Ñ
ëDID8 }yìooZ÷ç@|Æè^Þ _zÕ¾t<°lu˸kµikFU3æ¶ÃáKÉÂàl©¯Cà8mÖ7é¨
+®;f{¥ÜNõ×lÐ@<}u¼#6óçVäIêïzµËÉ ÚLõ,ÒZ"ÃàÆ«³QòACe¤k°Ã¶ÛÕéË;Õ®½e
+ð0g5ö}ÀPÍ«ZãRøYe¼jùuµÕ~ ¡«îôø9Ôo bw~l´7«ç
+# öÛæ TDQ0Ò 6îÞk9Ñá Br
+gÚï8zM:Î
ÅÂYjÆüíAâmQ,x:Íwf+1§,·éÆã4¦Y!M¸çá
+ªsŦO]9Õ£zx9Êi÷¾Y4¿LĽHîÆùÌö×9L¶²ô¦Ä'Axæ6;uC
+ù˾£Ö» ¦]G`Ðá¾E§ Ptål-eèï7ÄtíÁ¥B~þ7çÇã½.0bHv³ã®s /=YÓ2VáfÎuBÆ&fñÛÁ¶xgW8lʱ´ÏC]}ü Há©÷R7Ó,
+Ü1㺲Ï5ZÐp©4Ò2Úª¡H`WÍäêhܤ rÆf0]uÖ+¡*[¬gSvåãÍæûýáóOtÔã#>î¼·ä0IãÆa)Ý
ÙáB%+0¥°3>ùãX5;@Y×»¯¿]ßlæv B\ã4`i8ÁÈÔ8ëÑÁ Bt÷×kåÕÈ/gJH>^^~¼°á¾³rªß a®Õ÷rÇîUZKid¯S at F:v)¸8ÍÂúcWÁè¨$3þ¬§ìÀä¸_Ë?©r÷+ èÄE3ºÖÑyªãV0Iÿ½ÞýÞo®Ã¤%&qήa8¥îòï7$É,Ù3^uslIÅ/wy¼té&O-á;l^uslIÅ/wy¼té&IfÉbó«cbN){¼»Íã§I2rÞ8Åήa8¥îõwÇNdlÆ/:¹6$â»Ë¼Þ:t$³dÎ1yÕÌ1±'½Þ]æñÓ¤%÷]v ×®×^ŵ]}â1¦-G¶µõmrÀ5¬y0 1%
+Q3¶\í
ëÔÓ0-Aƹå ãÊ·F¶©.´`>#ì}<&Òím0Éö
+9=¿ !ñNçó>³ÍïYe<ÏW¾¢¾?¿óÿïý¹©U]a'÷]
½?ñgÛÀº.ʳ²9Oµr|\4ì1UO}ø/ª¨÷ÇÀ\}Ô,6ýÿ½l0àÖõW©e|%8ýïÙRgf߯3àíͶÕ_jÖÁSw½wÏÝùFzt2Ó#*¨}?£&n×ÿàEUÄòýÑù9ázýMF¢PÜXL7v¾¸gý¢¸Â`;°Æ³¶{ °ÌP bÐ(eíkcKU«Ù!s²Dß?pÕcþ,Äø?Lð¦iÐ<ÇÈnõ{ÆEt#íõ@Õ(Nµ
+/p¸¼Ý¢÷|ùÏÔP»KËá;çg¼uè¼P5f?먡=³è'½ÿ6£>)dê² PXGØVCcf<ÉáôÒ¨*qAtMFá
+1PÒh)ù@ðÎ9¢Hi
ÉiÈÆÜq
Ű¡d3k©RDRARARARRHªII"©$\%
hèÕî7>ób¦37i 5CaRGÉð¡ÝPJp
+eËQØb0$¸© MIJf%ø'øõÈñÂl~Q>q
+6²`§¦6·Ã °ÇiÕöè.:"Âb>CØy
+Cb`+E, P`4P`òáRʦg!|á¨1°Üa
+ð ~gAþª`'úy¸,ͦa0¤à'ACaCÝ%úÒ>è;O16br¬êýAùÆ#ÃÄiôÄéè%¬'Q¬Îáß £cl¨à?ñÄe<Õ&UCu"o>÷'¡â9üDî&ÂÿL=ÃðHËtgFâ
¸Â¼
8ÉDâÆCH1%ÄDï$ú;`%C5Ä~A6>Ý2w#A=¤,7î©TªRQTR\\s-ià8qsçæ;«B&â#aA2µsàèO$j'qAã4;1LcÌL4[Ùwcq°66cBk~¿fPÑ;»û R¡Ì °°ê,.âµ"~7ÐitDëìs¡K¥ë¥"q1mB'1½zÐEóæf(TÔ`:O<þ¼I¸tC¨°à%
$"~#£³¬sÄÅT%X:#/AàǼl>ÿdMÝFZû.ÜmØ<ÆõcQ¨$"QtG{g«â¡,:7%ü¸D¤
+¿úÂñQqãq¸Æ¡Ä[¾Csñ·Ã75£ááÚ¸Ân8xÏtXö*-,ä;x~²%`Àï ¿B&ÃQ' BLÐï$l;ǰÚÇÀIî;
xi´à¸ä¡ãÔ?3A ã¸Õåë íøGx»v«K!ê*Ô%ý(J®,9Î °úp&bhØy¾¡cÈj
+üÅBP E
+I'øtMì.=!Ü,.ù
LEBUb5DÀx B}!êæÄ'ßu ¸ßÐc#ó¶ÊvÊCruÆDDâ'$`3ÐÖâ{ê3äqp¡¸°õù
+·¤%úÒ*&'áöÂcÆöµ Ï`<ÜG1ACçqñNôL¥°qÁ`õî0´0¸}c¼%!{º*$°Àc°õZ$Lvâ'!ýo6("l) N1ZËPÙÇAý$NÍ,§E
d®RðHfvÌ0I¬G® Ð3´'Üy Dà' î
+DáqÇÈsè3
cAnÌr]ÈLúCB:C/¹ù¦r4©U Å··Üü.oðHDý ÿòB&ÚÝäðÜál2Àº öAäàÕÍuÝWl;t%qùä6$P¡óbáÞ>BK³- Ý&âT;¤<ÃÁ8¢ÿrE8P+Xw?
\ No newline at end of file
Deleted: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/8em64t-2s2ca2c.tar.gz
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/8em64t-2s2ca2c.tar.gz 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/8em64t-2s2ca2c.tar.gz 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,55 +0,0 @@
- eÖ9K íooãFîóvý)ørp2¬*þ¸ÀM¦7;Ý̤ӻûN )Z&Z"ê´çÓß*ÉrK¢Ýd³N;SÏOHZ%QÒáS:5+6IÔ}/[g2ÿËw.5iEû¿Eíÿ}à;!d¦¡JRý¸ß±OsÁ®í²&¾»YÕ«uY}åyEÓr| ^fçñß6õô}üUG?OÅ?ßîÊê¶ì&ÀÉ!ÞOÄ_()/ã(ü.'û_Áóøm[7ÿö&¯>Õ²nåRÿõE¥/â]Õë+}I·Ù¦\ßë#ÉÕ¦^ëÓwE|¸TÙ¦Ðïý§_ÿüoQWæß¿þãCð
UÁÿ
-äJýÇßþyÕvÅv[V+ýÒt_þöOó¾RÉôX©«<Ëï -ÿiÞ=
-çIð?]mïîÛ2ÏÖÁþWmy£C·jÍS®òº)ÌýóæÃ¡l[æÇ#eUv¥~ÇÌC·Û9v_´æî¢øÛ®¬«Ç,Áºø¤¿ºþæáÕïÛǧ¯3}vý~]ðiSË"ضEеy°i`Á&/üól -¶Á¦kô9ù¦þ¤Ö©$È×·ë]{,»6Èòml6ÛÏúZý¶ú?©ÿÜuA· ¶7úûVÿ:õFãJ_ÕU·0çÏün±-ÛM]Ûâ¦
-nô6Åv±ªëe°J}¢M¢@?¡ìê&X¶|»ÖßãsP´æædúcé/às·Õ{o¥þÜëìîv¡O©\´wÙ²þýê¦^Õr»ÿÉ8þ!L®_ç!Itë"[«jSTÝáÁl¹Ô¡j÷O3/×?ÄM©?ì1Þ×A4;<ò©lº]¶¾ÚÖ¿M°ÉªlU÷ysuuzE?æ-WtÔ¿¢#\Ñ®èô]ÑòyE?_FËg¯hÙ¿¢%®hGW´úfW´úc^ÑÏÑÏ_ÑIÿNpEÿËÑÑó~¾Ï^Ñ¢E\Ñ®èè]Ññó~¾~þûWt+ú_®NþWôóe´zöVý+Záþ+£Ó?æý|ýüö¯èW´£+:f½¢ùGÀýæ©ùM±aÿ eÉÞüL1ÿÃÁ/Åæ·ºËÖoÊxDÉLÎeðñ§+}ìç¦(tuÍgRÎ̱v··úyó¥vPRHc5¥Ãòä.nPû÷|ÿ{¶íö¯û1ïÊOÅéãJ¥*Ü{WeGçÉ\1¯ûSVÕÕ¡Ryúº³£gçûÓm¹.(Ïßïñu_>ïCU|*ó.»Yü6é,Úÿfë:ÿxñåÄ,ßýìÇNg"gáñØÙ}rì..ïÏÞÑ|ÁÃ÷û¦ì,ÿx~üðýôWþ.ZO¢$ÄÃ{þm·3HE¼ÿ~ï×ÙÍù(Vq´ÿ]ÞÿZäë¬Ü|ùò<|¿Us8úøj%æcæsüf^túaæ³ý{þýç÷¦Î;ýA¾ÃOõ®Ê/ÿpìñ»ÿ¶Ù^¾î¯õfSvÿUêÿí$æéá³uÅrñãûãõèÊûï®ëü1L*Rñ<U3]0þÐ>þvú:{øÇþz·«>>¾T%*çæðßv«bÅÙ58» NüÚ~Z>yàý®Ù^غ
->>¬×ÙÃUTä{ôåZQê ôÇcò_+Mæáák}ë
-¸ä©ú_+±ò_¯ÿu¥ªú?âõ?¦3!¹éß)]D¡îÃéÒrE*J¤I0ÓõÍÓ¹._÷³Ða ¢$Ñe[¬æºâ#ÈyÌbó8é×éwTz|Ð/Gq$
->ááó8tõ$ºréDgÐ'C5©>«
-͹ö/HâдSôt %>ÕÃ9.tuåïÏððS§ëÏ®¹>Õñùú¼º£ÿ³XêÞÉ\>R¬?ÔÃBóDt|
yXê\ĺ=¥ó(1¯ÐíýRSèWß.z|EbÞ(MÌ+ôÑ(Õ?Ôþ3¡dKóËÒ´¸^ê4m¶÷/ô7Ð/æCéG8|í²ê D¬koý¡þ5Ì[pÿ¹ÍGJã?7}öù¦[fJÎØOkç3¥¾ù§xéM_¾¶Lm¦×oþypÃ
-7ÜpÃ
-7ÜpÃ
-7ÜpÃ
-7ÜpÃ
-7ÜpÃ
-7ÜpÃ
-7ÜpÃ
-·Ü®òîsÄqH$W7]¹)FÉÏÃãR¢5n y«ý#í¢ÙUUYñð÷ÍÁàªßð[[À\øÿÚûvúpvù¿ÉÿÉù¿8x"þKãn/&¼ìâ/Íú0J¾}¿+6\öúOTü,Ç?ßî^x
-ØÇ?ÕW âÏÁ¸ø3ý"°¿CÿñwEü»z[¯ëÕ½õ
`] ügÿî®)²åâ¸nðëÃóü¯&þQªXÿÃÀ1ׯáNAn(ú?&tXl³üc¶*åò«çÒ¿..ôÇÐ?PßPôoRòiþ{ý+©ôÏþ½¬ÿÑRû?¡^C³ÿñN£4bfþÿb]¶_Íb_ÿ'º ýs@q^óâúPý#ô/.ëÿ8¡Âky]£ðý×ÖGA8}ý/¤BþOï56õÿ]Ñl²õB7ÿë®[£çÂíæU$±ÿ+/^ïª1"íËÿ(J"ÿ`þÇo,ô7Y{·¨ê®°ÔÁ°þ/Ë)ýs`¶â´¯ÿ
áÿdÁ:þeµ,>K«ËÀ>þRÂÿÍ5þ&ÃüØsÿÉeû_$1Ê̦Lÿ6 ·Põÿè4cmÖt¥ÙlëÉsØ÷ÿRù?0þç7Týv[Ù´gàúQÏÿ¡ÿÇÂÏEÖí"ÐÝú ¨L0(<ªÿî~;]û¿7ÿ¯ÛÿÿcáCUÞм·Põ¿ßHwä9ìÛÿJ Ð?Ê÷rû¿¾+¢Êï _Ö¿ºôÿJBÿ$
- !ÿßeM±\èÃàaý_öÿc
ù_$¼¿^CÕÿïÙ}»¨oYÛÖyuå§²»æú?QXÿÏü½fúm¿~!ý÷×ÿÆûüoп{1xë#tF¸¡ê¿ÚmnÆ´ Ú¢ÐÅpý_ê_Jø¿Y0þÎ_húÝû?%üPã?ÿórüG ÿð $Ü>CÕ¿sÿ'ôÏü~CÕ¿kÿ'ò?ð ÿ§ßPõ?©ÿ³7þ£Dú
·YAðþBÕ¿sÿ'ÆY@ûßoÈíÇþO ÿ7ðú
-yüRÿgoÿ#ÿüõªþ§õöò¿'ã,Ì ¯ þwãÿÄøÇ¼ÿ'²rCÕÿ´þÏËþlèôÿý¦áÞÿü¯,PãïÜÿõ,Àÿé7Tý;÷Bÿ,`þ×o¨úwÿý?àÿôªþ§ÍÿÙoÿ§¨ÿYxWµ]³ËMÛ
-º÷ªþû?áÿ`í¿!·ÿ]û?áÿ`ó?~Cÿwíÿÿø?ýª×þOäÿæþO¿ þwãÿÄøÇÀÿé'Tý;÷ÂÿÍúÿ~3Zÿv[¾ançÿÔ%ögÁ"þ]½×õêÞúB°¿HEøs@w×ÙrÑ7ú[
-ÿ(Cõ¿ý¥ ÆÿXàoäí#ÜPôÿèýÝfùÇlU,ÊåWÏ1¤ÿ'Æÿcèô¸ý¢ÿ¼n5½þæÿÀþ¿~CÖÿèÖ?©ýEÐ?¯¢Ù¼Ç( ÿ?h ²¯ÿýDèÔÿ~óâúØþ7býOoþ?J¡Âkyapo±Ð]«?áöõ¿
-ûÿ²õ?~cSÿßÍ&[/tó¿îºu1zØ(ÜnþWEfýæÝóøçõ®húí±/ÿ£(ÿÌÿø
þó&kïUÝ:Ö?ÿòÿó`ÿ½ÿpûú_¦ÿúß=Öñßû¿íÌ öñ2
ÿjü§Íÿ`ÿ÷oDÎd õªþ]çÿÄüÿóªþïÿþÈÿé7TýOÿ³7þ/Ìÿ±ð¡*oKhÞ[¨úwÿù?XÿÏoÈí×ù?#èäÿðòøÿ¤ù?/ûÿØÿ ï¯×Põ?mþÏ^ýH¬ÿgA@þ^3Aýï$ÿgù?1xë#tF¸¡êÚü1öÿFÿDç/4ýÎý&ÿüî¡Æßõþïÿáû¿û
-UÿÎýÐ?ðú
-UÿÎýð± ÿ§ßPõ?©ÿ³7þ£Dú
·YAðþBÕ¿sÿ'ÆY@ûßoÈí×þOø¿YÿÓoÈãÿ®÷Gþ°þÃo¨úw½ÿ»ÄøØÿÝo&¨ÿÝø?1þÇÂ1¯ÂÿýÙ¡êßõþïë?Y@ÿßohúîýÈÿÊ5þÎýXÿÇü~CÕ¿sÿ'ôÏæýªçþOôÿXÿÓo¨ú6ÿg¿ý þgá]ÕvÍ.7m7èÞC¨úwîÿÿ´ÿýÜþwíÿÿÌÿø
-yüßµÿþoàÿôªþû?1þÇü~3AýïÆÿñ?1ÿÓO¨úwîÿÿôÿýf´þc+ËçFávþO]"ÀÿÉEü»z[¯ëÕ½õ
`
-
øs@w×ÙrÑ7ú[
-ÿ(Cõ¿ý¥)æÿXàkÛ¸#C4F¡èÿÑû»ÍòÙªX˯cHÿOÿÇÐ?ÿ÷þóºÔü)öúWúýs ýû
-Yÿ£[ÿ¤öù^C³ÿñNT´ÜLÐÿ4 Ù×ÿIü<ÄP×¼¸þ¶ÿXÿÓÿCèq®ã륧Xè¿®Õpûú_HÿèÿûMýW4l½ÐÍÿºëÖÅèy`£p»ù_ý1ÿëÄ?¯wÕ@Óo}ùE Ö±W¿±ÐÞdíÝ¢ª»ÂRÃú"ÿöÿaÁ&þ{ÿ/áöõ¿¦ÿúß=Öñßû¿¥óü)ü,Pã?mþϤÿëÿXÂy þBÕ¿ëüÿãã~CÕ¿ëüú, ÿ§ßPõ?mþÏÞø?ò2ñ¡*oKhÞ[¨úwÿëÿY@þ/¿!·ÿ]çÿL¡ÿÃoÈãÿæÿ¼ìÿÇ
-ó¿<k¬ ðªþ§ÍÿÙ«ÿ
õÿ,ò÷ ê'ù?Ìÿ±pÁ«Xÿ+1Á
-UÿÓæÿ{ù?±ÿÆÿÑùMÿ¡{ÿ§ÿjü]ïÿñ°ÿ»ßPõïÜÿ ý³ ÿ§ßPõï|ÿwø¿XÿÓo¨úÔÿÙÿQ"EýÏÂÛ¬CÒE¡êß¹ÿã¿, ýï7äö¿kÿ'üß,Àÿé7äñ×û¿#ÿpú
-UÿÎ÷ÇøØÿÝo&¨ÿÝø?1þÇÂ1¯Ãÿl¤ÜPõï|ÿw¬ÿdý¿¡é_¸÷"ÿ+Ôø;÷býðú
-UÿÎýÐ?ÿõªþû?ÑÿcþO¿¡êÚüýöú
wUÛ5»Ü´Ý {¡êß¹ÿþÐþ÷rûßµÿþ0ÿã7äñ×þOø¿YÿÓo¨úwîÿÄøðúÍõ¿ÿ'ÆÿX8Æ þO?¡êßµÿùx@ÿßoÆéÿcÑTÅZ×ô)çÖÿéüÔúRbü
X`ÀgÆé¿®Ì(?õöú×ÿ"ÿá÷)ôï1£ÛÿÊjÉÇFávë?t Æú,âßÕÛz]¯î/ûøT ÿ;øwwM-my£°Õð2Tÿ÷Çÿ¢4Áø?ÛMv³ÜPôÿ¸ögå³U±(_=Çþÿ¡Ðû÷þóºÔü)öúWRaüì¸ç7dýnýÚÿQý³ð*ýÇ;RÑs3AÿÐ l_ÿ'!æÿyPP×¼¸þ¶ÿXÿÛóÿÅ!ôϸV×ñ5æ }ÅBÿd}ý/¤ÿÿùMýW4l½ÐÍÿºëÖÅèy`£p»ù_ó¿¼$þy½«~{ìËÿ(Âú°âÂo,ô7Y{·¨ê®°ÔÁ°þûùcä`Á&þûõ?sØ×ÿBþ?ê÷XÇ¿þKºÏÿ
-ÿÔøOÿ;éçÿ(ÿ9ÂyàþBÕ¿óüßÿgã~CÕ¿óüßèÿ±üß~CÕÿ´ù¿{ãÿ"Áüªò¶æ½
ªçù¿±þøÿýÜþwÿùY@þ/¿!ÿOÿû²ÿ+Ìÿò àýõªþ§ÍÿÝ«ÿÿ @þ>3Aýï&ÿ7æÿX8ÆàU¬ÿ!ÿ7TýOÿ;îçÿÿãÿèü
¦ÿйÿÓäÿÿÓ=ÔøOëÿìïÿñûÓg¨úwíÿÐ?ðú
-UÿÎýð± ÿ§ßPõ?©ÿ³7þ£Dú
·Y¤C
Õ¿sÿ'ÆY@ûßoÈí×þOø¿YÿÓoÈãÿú?{û¿¨ùX@þg¿¡êZÿg/ÿ{ýyãÊo&¨ÿø?1ÿÏÃ1¯ÂÿýÙ¡êZÿçeÿ?ë?Y@ÿßohúîó"ÿ+Ôø;÷býðú
-UÿÎýÐ?ÿõªþû?ÑÿcþO¿¡êÚüýöú
wUÛ5»Ü´Ý {¡êß¹ÿþÐþ÷rûßµÿþ0ÿã7äñ×þOø¿YÿÓo¨úwîÿÄøp\ùÍõ¿ÿ'ÆÿX8Æ þO?¡êß¹ÿþoÐÿ÷Ñú/ëÂÊõù£ðñþO©õ&!ò²`ÿ|×4EÕ-Mù©hÆc°üò"þ*Fþw²|[.LlQ
-x Mÿ«ZË¿ªES8Çpû/¾Ð(è
MQí }§ÿmS´Z÷Äsë?ºlÿÅÿá!üû¿ùÌHý×m[½ ÿë?xþýftûßnÉïvã?fü7Âøñïêm½®W÷Ö}üEñ?(ñïî"[.L ¬VÃ?ÊPýßÿÒþ.g`¿í¶3ý?®ýÞfùÇlU,ÊåWÏ1¤ÿ'ü1ôÏÖø
-EÿyÝjþ{ý+)áÿ`!þ½¬ÿÑRû? ^E³ÿx'ÃVDÜLÐÿ\ f_ÿ'!ü< ýï7/®ÿðÿõÖD)ôϸV×ñ5æ }ÅBÿueR=ÎaWÿù!öÿcõ¿ßØÔÿwE³ÉÖÝü¯»Îb5Q¸Ýü¯Dù_^ÿ¼ÞòÚ÷ÿ¢þO0þë7úϬ½[TuWXê`Xÿëÿ¤Dþlâ¿_ÿM8}ý/BÓÿGýïëøï×ÿKçû¿$ðÿ±@ÿ´û¿$ýüÏXÿÇBÎì ã/Tý;ßÿãÿ,`üÏo¨úw¾ÿò?³ý_üªÿi÷éÿû?°ð¡*oKhÞ[¨úw¾ÿæÿYÀ;¿!·ÿ]ïÿùÿÕoÈãÿîÿrÙÿUþ?â:Fà1TýO»ÿK¯þÇþ/Lò÷ ê7û¿`þ
c^Åú_Ñn¨úvÿ¸¿ÿüß,ÿDç/4ýîý1üPã?ÿó2ÿ³ðÿó $Ü>CÕ¿;ÿ§<ø?¡àÿôªþû?áÿbþO¿¡êRÿgoÿ7%Ôÿ,¼Í:$]ôªþÝù?÷úW!æX@ûßoÈígþOyðbý7ðú
-
yüRÿgoÿCÿ, þ÷ªþ§õ^¶ÿDbý3èßk&¨ÿ'öÊÿã,cð*üØÿªþ§õ^öÿc)0ÿÇúÿ~CÓ¿ÝfðFáÖþOäewþÏCþëÿXÿÓo¨úwÿúgã¿~CÕ¿sÿ'ÆXÿÓo¨ú6ÿg¿ý þgá]ÕvÍ.7m7èÞC¨úwÿþÐþ÷rûßuþOÌÿ°ù¿!ÿ»öÂÿÅê¿¡êßÿó!ÿ'ÆÿXÿÓo&¨ÿÝäÿÄøÇÀÿé'Tý»ó>äÿDþÐÿ÷Ñú¬,g
Ûù?u ÿ'ñïêm½®W÷Ö}üEjüÿ¿{(ñïî"[.ÚòFÿ`«áe¨þï·ÿ#}õ?|mûwDÆ3ý?z·Yþ1[rùÕséÿñÿúçóþóºÔü)öúWRaþÌÿù
-Yÿ£[ÿ¤öù^C³ÿñN½H¹ ÿ?h ²¯ÿùxÀð¿ß¼¸þ¶ÿXÿÓÿCè
ðZ^GרÐW,ô_WÆêO8}ý/¤ÿôÿýƦþ¿+M¶^èæÝuëbô<°Q¸Ýü¯Ìþ¿ÿuÏKâ×»j é·Ç¾ü¢ë¿XÀüßXè?o²önQÕ]a©aý÷óÿÅØÿøïý¿sØ×ÿBþ?ê÷XÇïÿÎó¦ðÿ±@ÿ´ù?~þ¬ÿc!
-ç 2úUÿ®óbþÿù
-UÿÎó¢ÿÇòú
-UÿÓæÿìÿ#ÿ'ªò¶æ½
ªçù?±þdÜðrûßuþÏúç ù?ü<þ?iþÏËþ¬0ÿËCxÀg¨ú6ÿg¯þOÖÿ³ `ý÷ ê'ù?Ìÿ±pÁ«Xÿ+0É
-UÿÓæÿ{ù?±ÿÆÿÑùMÿ¡{ÿgÿ'Ôø;ßÿã?,`ÿw¿¡êßùþïÐ?èqù
-UÿÎýð± ÿ§ßPõ?©ÿ³7þ£Dú
·YAðþBÕ¿sÿ'ÆY@ûßoÈí×þOø¿YÿÓoÈãÿ®÷Gþ ¿¡êßùþïÿcû¿ûÍõ¿ýß1þÇÂ1¯Ãÿl¤ÜPõï|ÿw¬ÿdý¿¡é_¸÷"ÿ+Ôø»ö&XÿÇü~CÕ¿óüÐ?ÿõªþû?ÑÿcþO¿¡êÚüýöú
wUÛ5»Ü´Ý {¡êß¹ÿþÐþ÷rûßµÿþ0ÿã7äñ×þOø¿YüýªçþOÿ± ÿ§ßLPÿ»Éÿñ?1ÿÓO¨úwîÿÿôÿýf´þíR~a>Þÿ)µþu ÿ'ñïêm½®W÷Ö}üEÆ?øwwM-my£°Õð2Tÿ·ÿåÞÿ`þþFþ×î`6þ½¿Û,ÿE¹üê9ô>þgôÇÐ?èqû
-EÿyÝjþ{ý+äbú÷²þG·þIí
-ôÏÁ«höïÄ1J#f&èÿìëÿÄ, þ@ýï7/®ÿí#Öÿ\ÖÿqBÿ,×ò:ºÆ¾b£ÿ»¢Ùdë
®þë®[£çÄíæTdò¿cþÇ=/^甆}û/b¬ÿ`í?¿±ÐÞdíÝ¢ª»ÂRÃú¿,ÿ¥±ÿ6ñßûÿç°¯ÿEhÚÿ¨ÿÝcÿýßmÎa)øX ÆÚüÉeû_ÄXÿÃBÎd ôªþÝåÿý1þÇw~CÕ¿»üÿ¯Bÿäÿóªþ§Íÿ×ÿÇú_&>Tåm Í{Uÿîòÿíõ¯B¬ÿeABù^Cnÿ;Ëÿ'ùÿôÏÖÿû
-yüÒüýÿXaþðÏPõ?mþ¿^ýH¬ÿeAÀúë5Ôÿçÿý1ÿÇÂ1¯býÀl$7TýOÿ/¾Ô¿ð³`ü?¿ÐôoÐ(ÜÚÿ©àÿäwû??ø?1þÃ
ööªþû?¡Ðãòªþû?áÿbþO¿¡êRÿgoüGõ?o³.àý
ªçþOÿ²ö¿ßÛÿýØÿø?ý<þïlÿçÿ3BþÿËo¨úw·ÿóÿã,`ÿg¿ þwãÿÄøÇ¼
-ÿ'öcªwû??ø?±þôÿý¦áÞÿü¯,PãïÜÿõ,Àÿé7Tý;÷Bÿ, Çå7Tý;÷¢ÿÇü~CÕÿ´ù?ûíÿõ?襁kv¹i»A÷BÕ¿sÿ'ü, ýï7äö¿ëüð°ù¿!ÿ»öÂÿÍü~CÕ¿sÿ'ÆÿXÿÓo&¨ÿÝø?1þÇÂ1ðú UÿÎýð³þ¿ßÓ}{kùçÖÿåþßaüÿ<̾uÛcÆé¿Õ5ÿr±ÉÛúw]ë·Ù§²ZVðþ{óÀø?ÿóÑíÿÔjÉÇFáã×(SÿÀú,âßÕÛz]¯î/ûøÔìÿø»ÿî®)²å¢-oÖ£CõÿùøÚûS´ÿYfÜn¢;3´F¸¡èÿqíÏ6Ë?f«bQ.¿z!ý·ÿþãúç}¿¡è?¯AÍb¯%öÿcAAÿ^CÖÿèÖ?©ýaÿO^C³ÿñNTôÜLÐÿ4 Û×ÿYý3Bq^óâúØþ?býïeýÇ!ôϸV×ñ5J_±Ð]=@öõ¿æÿYÀøßØÔÿwE³ÉÖÝü¯»n]6
-·ÿUÿåà%ñÏë]5ÐôÛc_þGQý¿XÀ«ßXè?o²önQÕ]a©aý_ÿRbÿOlâ¿_ÿC8}ý/DüÏ,XÇ¿þK:Ìÿ}Ð
-ÿÔøOÿ;¹lÿù¿XÂyàþBÕ¿»üßjÿó<`üÏo¨úwÿûàÿÐÿcù¿ýªÿió÷ÆÿEù?>Tåm Í{Uÿîòïõ¯ è å{
-¹ýï,ÿ÷Þÿ+±ÿÈÿå7äñÿIó_öÿc
ù_¼¿^CÕÿ´ù¿{õ¢°þ@þ>3Aý?qþï}ý/Ìÿ±pÁ«Xÿ;ÃnÜPõ?mþïøRÿRÂÿÍñÿ@tþBÓèÞÿ©àÿäÿiýã?J`ü%áþôªþû?¡àÿôªþû?áÿbþO¿¡êRÿgoüGõ?o³I=ªçþOÿ²ö¿ßÛÿýþoàÿôòøÿ¤þÏÞþ/*Fþàþôªþ§õöò¿'
-ã,Àqå7Ôÿnüÿcá×áÿD6Rn¨úÖÿyÙÿ¥ÄúOÐÿ÷þ
{ÿ'ò¿²@¿sÿ'Öÿ± ÿ§ßPõïÜÿ ý³ù_¿¡êß¹ÿý?àÿôªþ§ÍÿÙoÿ§¨ÿYxWµ]³ËMÛ
-º÷ªþû?áÿ`í¿!·ÿ]çÿÿÌÿø
-yüßµÿþoàÿôªþû?1þÇü~3AýïÆÿñ?1ÿÓO¨úwîÿÿôÿýfXÿU½,¬ì=Âü"UÆÿ
-ÿ§{FÆ¿®Ì0/ñöåÃÿÏZ\~3RÿævIO°.ÿe¨dò«øënÀà`ÿÿþJÌÿ³~ ±Ò¿îôgZ.¶ÀþEtÿQùßX0!]Ü] ÓP¦2É«ýC²mðpÿ¶nrUé?˪+u}*ö¯i"«umÖ+ääMêî®h¢ù±Òÿ¦ØÕmm{ý¤×þiÿWßK4ø¥ØüVwÙúMp@$ijáÁÇNòsSÇg"æ35?åC[,*ú§üwå§/o¢Q*Mðä)ïªìòIó$'½wùSVÕÕ&ÄììDÇw9{Rýw¹-×ÅÃç"yê]¾<éò³|¨`:³vâËoÎN?Ë/ºüxú»§ÌÂÓ§¼-îþì ú)a|ÿiÊ®¸ÉòçO;ýF?ëOùlU´Od$ÅY³íö⣩<ôú;ýëÎÏbdÿf¾òésäÙÅð÷ß/>TíùsþqªwU^\|ëó§<~éß6ÛgÞåý:»9(Vç?Ýû_|/Åü*ga|ÿ¡jOz|/¥«Ó§üm·:üºý£'2yâèû]³}<úõoUþ·yV-v_.÷ÅÖ|¡Ás÷ÿ.ýQýßxøöW øXéYj±èÛòöãÿºåý_Y( ¼ÆvüwÐìõCúïû¿Dõ<cð*ü_··(©ÿmݶåp¦§±¯ÿuÇíPýûÍHýßeñzÓÎa¯ÿ0Áú/ ¿±ÐU7l½Øºyn©×Øë_§Aÿ@ÿ~óþóuÖ¶/s|cnçÿb¥àÿãàÙø/7åT×}üc"ÿ3_¹ä°dâXÿÁÂPüsÝòkËv¡¿}MøuÁpûï"þºÿÂÿËÂPüoʺ]|*ªeÝÏ1q9ÿ¯Áøoõ:x
Wå? à%#õß´Ï%wÁpùô×ÿ ÿÏüAýþ2¨ÿ:k*ÛPÿ~7FÿéEû?MôÏBø÷_åL¢ ðqúY`XÿÑeÿ/ÿ
CÌ øÌþ·M½ÜåÝb·+ÔsØÿÚÿóÿ,êÿ-³îÍ¿ã?ê2ÿOaü
0úÿE!zÉØñÿ´ ËqÑþ¡Àø/P½ßmÿñéÿàÿVhÿ± ýûÍØú_ÿ¿è]¶"Pÿ«ã?,@ÿ~3nü÷%îÿGFÿaa(þzËìEß|(þ"½ôÿ¥Àþ,è0¿¹ùTqéûÍÞðæfùehèM{òmõú÷¢ù÷åªó8|³ýÔ¼iN7ÕaNQ?Øüoòcy'~ yjç0¶ÿÇçÿ<¬ÿÃúâ¿+>uÆßsâ//ûÿ"Øÿ_þßÛÿëÝïÿ*/[þ¿Ä6<ÿöæCìÿÀ££a¨Ñ7Æÿu÷[wú?[ÿüèÿ± 4ï3ãÆÿ^2úOÿSääê÷ñþúÐáö¿ìÿÿgë?ýfìú, 'è_&èÿ³ ýûÍàøza#q»ü/úNü/ÿïÙÇbgøûBÿOFÿažßé_?ðÒô?ü?&% ôÏ Ú øÃÿ¬Ý @
\ No newline at end of file
Deleted: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/8em64t-2s2ca2c.tar.gz.output
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/8em64t-2s2ca2c.tar.gz.output 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/8em64t-2s2ca2c.tar.gz.output 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,38 +0,0 @@
-Machine (phys=0 local=16468292KB total=16468292KB Dell Inc. 0NR282)
- Socket #0 (phys=0)
- L2Cache #0 (4096KB)
- L1Cache #0 (32KB)
- Core #0 (phys=0)
- PU #0 (phys=0)
- L1Cache #1 (32KB)
- Core #1 (phys=1)
- PU #1 (phys=4)
- L2Cache #1 (4096KB)
- L1Cache #2 (32KB)
- Core #2 (phys=2)
- PU #2 (phys=2)
- L1Cache #3 (32KB)
- Core #3 (phys=3)
- PU #3 (phys=6)
- Socket #1 (phys=1)
- L2Cache #2 (4096KB)
- L1Cache #4 (32KB)
- Core #4 (phys=0)
- PU #4 (phys=1)
- L1Cache #5 (32KB)
- Core #5 (phys=1)
- PU #5 (phys=5)
- L2Cache #3 (4096KB)
- L1Cache #6 (32KB)
- Core #6 (phys=2)
- PU #6 (phys=3)
- L1Cache #7 (32KB)
- Core #7 (phys=3)
- PU #7 (phys=7)
-depth 0: 1 Machine (type #1)
- depth 1: 2 Sockets (type #3)
- depth 2: 4 Caches (type #4)
- depth 3: 8 Caches (type #4)
- depth 4: 8 Cores (type #5)
- depth 5: 8 PUs (type #6)
-Topology not from this system
Copied: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/8em64t-2s4c-heterogeneous.output (from rev 7493, mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/8em64t-2s4c-heterogeneous.tar.gz.output)
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/8em64t-2s4c-heterogeneous.output (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/8em64t-2s4c-heterogeneous.output 2010-11-24 09:21:55 UTC (rev 7494)
@@ -0,0 +1,34 @@
+Machine (phys=0 local=16468292KB total=16468292KB DMIProductName="PowerEdge 2950" DMIProductVersion= DMIBoardVendor="Dell Inc." DMIBoardName=0NR282 DMIBoardVersion=A00 DMIBoardAssetTag= DMIChassisVendor="Dell Inc." DMIChassisType=23 DMIChassisVersion= DMIChassisAssetTag=)
+ Socket #0 (phys=0)
+ L1Cache #0 (32KB line=64)
+ Core #0 (phys=0)
+ PU #0 (phys=0)
+ L2Cache #0 (4096KB line=64)
+ Core #1 (phys=2)
+ PU #1 (phys=2)
+ L1Cache #1 (32KB line=64)
+ Core #2 (phys=3)
+ PU #2 (phys=6)
+ L1Cache #2 (32KB line=64)
+ Core #3 (phys=1)
+ PU #3 (phys=4)
+ Socket #1 (phys=1)
+ L2Cache #1 (4096KB line=64)
+ Core #4 (phys=0)
+ PU #4 (phys=1)
+ Core #5 (phys=1)
+ PU #5 (phys=5)
+ L2Cache #2 (4096KB line=64)
+ L1Cache #3 (32KB line=64)
+ Core #6 (phys=2)
+ PU #6 (phys=3)
+ L1Cache #4 (32KB line=64)
+ Core #7 (phys=3)
+ PU #7 (phys=7)
+depth 0: 1 Machine (type #1)
+ depth 1: 2 Sockets (type #3)
+ depth 2: 3 Caches (type #4)
+ depth 3: 5 Caches (type #4)
+ depth 4: 8 Cores (type #5)
+ depth 5: 8 PUs (type #6)
+Topology not from this system
Added: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/8em64t-2s4c-heterogeneous.tar.bz2
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/8em64t-2s4c-heterogeneous.tar.bz2 (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/8em64t-2s4c-heterogeneous.tar.bz2 2010-11-24 09:21:55 UTC (rev 7494)
@@ -0,0 +1,53 @@
+BZh91AY&SYÅP ];ÿçÿ÷Ör÷ÿÿöïßÀÿïßô @ !;ø`7``ìë´9
+|çww¶«uãÇM·c®æ®Ø
+u×U»÷ xÒ Ðh6Èj3H @Ð=A©²i¨¢(OSÔ24£A Â4d
+2
+õÿÕU¡ h h j at HL¤Í"d
+=@ JSóU=ªmGê§h
+
+¡¡ ?T òA£F4
+"`44SM!6¦G¤Ð 2 4 b@3SG¤þàûÁý÷Qý4*JO¶>è`Üü¹¤}ÀÜåQD}A¨ÚÀX£èl×ÕzÒ zýW×Ö=¢aXyBûcÀKmA)þHB|H**¤X,E"ÁdP$<éÙ¢H@R*#
+ >mÎnq5©çê:úµbRPàµ
+xm]xmb17nÁ,¤ðÊK&]Ba·XÌTìw!()xÃ"ÀãblÝ˼»%$¹PÂIá
+Æí`¶Ã
UËÄÞf®ÒeeÕeUºuY.Ò¥eLx
+[
d±{o1á½ÕC1f®ÅêÉ¬â¬Æ+8Ʊ°h- BAR :G4R¬U¤
+ʪ¢¢®²Õ%"$PE"¢H²"H"$"Ȳ"H"$BÜ4¨QÒÉ÷-2\¤¡ kT¶ë¦ ¤Õ÷`
X4¨âSÚ3fKÉ@X¡Ì*±Uc/%\QV*$*aÝnøÍíyhÜñµY$"¶¬I!HFKDT@PDU I#H#"!@T¥BK;¸Tü¤æ<Ü=Qãeªf.Õé«d%ïÃ-oA¸zíØØ`.=@À5oíçÎ÷¦ý%7a7I¤áRqõz¤9FP×;y3äiªªi®½¾¼Y×"ª¯¡ÓXBï³jÓèøau`°X,kùBvE ÁìGU
+@³*²-'n
R¨Z#u´g%_[(¦sEñjCÂÔá/¤¤áRG ü#¢ãö°ª
û;ZIw î *Þ9¾ls{7ÐÜØj/å&ºÞÕUU^Ám³×rÛ!ÉÌ èBOï$ëvtyyni
+zßxû<+Ëk·<)I$)%ª ÛIãHƵTeÅxå´Qî¾®¥^69Ö+]Uղýváf¬½°/ºRÄ6îÔaeqY!åB5HW±Ö_dWlI0ñÎò*H¶ÙoØcº)¤õLGxîó¸? Ðoâpûãïàøc°XoCÏ@=µîRðR@Úv¬Ft&î®í*pôzÆñÐoAÞ>ä1
+áE°PíÆC¨¸Ô\xÁÀXPÜGÞ;©Ä`2l00-#_$'ì8ô:{²ìIôÌïB#
+ÃtÊG ÄqmªÖµkDCæ4';1»jûv÷wvr6Ù¢ïJ gZS^ wwwwym¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶æa¢I$kzt°ÃUkZÖµ]è9ÀDH9å2ËóÏ$\ÀPhF3ÁáâBWNÝBjKUUÉ5Uׯ^½xßqMUUUUSØc ö
+
+YÒª®UT44ÕU5Jª´N¹I!ÇwwwwvµkZ×p½ï{Þ÷$I$I$I$I$IkZÖµf/
+YUVäô`ïh¼Òf|,ÅYsɽ°6µ@ÞÐ,,S0ªeÎÏ'fÛ%M%LË®eR ØÑ`HI æ2×T¿¡æt4z\ë*múø×h÷£ÕØ%eªÑJETФrÎW´¹5ÁTÁ0ªnEA20vmc_çYgPíÉ)%$TM'ÅÅÏìùÔD¸@;0ÎÁ×ëˬºÞ1Ì-,
¥k²Y!k,/×s½@!¬¶Þ-£ÀÌTl/·¸_äïÆx{^WËë[];RÔ-KãàpíÒÇ@¤D@/ÂB1}P·Á4|?N|82e6UC ãZÅÊ`Iï
+$Æ&ïúÈÝBPWÅ`ÅcFZåX½
+PíòÂj¹¤¹ªç:±ÛZÖÐ0ar;æåîóW¹½MÁqh
+¡qÝ!°4(!ÓíJ\&r¸Atô(ºlÙ»¬¦¼}ÆãÌHàÀÆ(Ä6!°C@ÄMggÚé+±Äù¹CwàËÙ¹!*½ÔÚ!Yñ2
+Ö·`ÑmEúåÄ Ep+Q7|ãY5UO>ýÃ|BmÄüùb¯ÀlÁ5ay;§JÙ¨W=bÙ´åߥÐÙFJ¥iL®:õÊê_ ±$«[ÜùCÀ2Pð%õ^ëØúôÙéâìRt4W¬_TÝI!çÉ jöy÷Àê=ìÞóÎùÍÎNcDLP`º o& ²U P¢k´âÊ»=¼ºÙÏìîV8iä¶¾|[³kÒS^m³Yh®8\³vÚ)¨19ñø8´ÉáÖ¾mkR
+¨
+sG¬óÀ8ç¾;um¾u²jÔ k'N»2òÍQ IU at h ±l=næÞó¨nÔPjK½@H1ÅÝË×Vm*ãmû
+À-ÃÓ@µjvÅï
+tÅîZ°ÕcøÛ@õª«ØØnàiUkëãXmÓó5zLÒFþ\½|F
+ãPµAú»7(½gÏâ«Û8Í3Ì«ªr}!"ØrF¿TmS
+ÜqìÇû×%g[ìu|:
N\õ+;¼Kk¯ CV¾èêßhvf÷Øö(ÄNÊ&f²· D#Xo+/y$c!Ñ/бdJͤ@ìHo{øøäÙ;µf¬YÌ45x
+ku»NxN: 3¼®ûsÜÕCÑðñ¯~äãnbê_à/ t-]±îðسNUÇw8qX`fZËUOHfäbA/³i~1SgZ¤Áת5}Û:³RHô6I]8.í,îÂã[©MUí˳î3ÞNö4Îܶj+!w-Ûû7jl2<'M\8çyø
]Ñim¾¶a70z±~XV)j®WÔ¿\^ëUbîmJïð=.¬
{
+MÝi¸½ -ÐêÌÁf(³fêæfñkITê³x+ Áïè[¸®Zæp[½Ìv
+¥/j©¢Öµ²åÍü@xdðMë¡¶köï¿,xl8Á\wÙkÜh3ËFìó´Ê Á*¢¢g7¾lr«kqϪô!,kÞ-Cº3³Z©óB,×mguWé½!~yÔ8 !L×Þ¸ÍäèdVxSQ!U+£±2UÏMpc5ª,1Ók±bHYCndVh BÕ]<ëÕ÷'$5m絸qoîAäëªÌÃæÒ7p©D~±$^BLøa$¹s7Z-Ê¡)lï;±ÆÐSrøùÝ
+ùë£'¹£
+5« IÝZwÀT
+·jw¥®¶ó"dÓ)«¡FèjÅàVËlÁqÐË·²?VÏq~ßäÍ¿Þ;ì¨[rÕDåWü´/¾ïºÌBóÿ µÞ7UHC½÷×o"ÒÑ*ª³$»yU\´ê¥¡ow±!Ã'.ÜâÒÑ*ª]Vq{9u
ç¶n«7|ã»yUTªê³[Ýã¬HfpåÉË·8´´Jªå§U-{¼uι9vçUTºôK®ò;ïØßsÝ÷{¾öü5t<M{îêEe÷y±dqMW¿ÒUëÞU`ÔØé|¤î.çô¾©ñ³ç8?ÛPn|eYn ÆAò'w8º´>c¢QÅ6ÅâF-à7Pj~ÖRAh/È M9 Eße§Ë¾`]º¿hq|¬w¶ßÔa
+UUOp~!òßUQí
+cÖ.=ÔóEð{׸Ývwª½K+×,¿ñ/¯UIÎÓÖïâÓFûDƯ9Dã{ýeº
i[jmâ¥a¼Zÿ,®~Èÿ~Bø^Ø>´ h4
+VßL2ÿaAp¸ÚfÖVËPÀXd(P³
+¼ílijµ|ô#Pí`Ñ]h=oîGIÌ<GpÜ6y½C!
Ñ\Èü~sÈPæ%J
¸¼Ùb÷½
Aî6Ã ¡v)!,v°9Yí×
+ú2tÐ:ÁêË{L¶ÐbÚHGÚ ÕP#Ü5¸joÈäNù8CÐl$Ã,
?a$c£(ä<¹-8Âq
+âÂáBâÂXPÝPõâ&!T¨J¡*ET¨J¤T.$ÍÍ£ÐÚT{ÍJRæÈØ9pI"¢¤bÿõC² SxSwQÀâ¤ä
+GÚ÷'üôÜMhËQ5>Põ EE'¹¤)åëÜë"Z¿bã ¸à,`õCÀjLcH¥E5
+õ,ªdoqÊ ÃBÁAAðùÆìS ñOzÌä)71CaCÏ%D>ºHG»ÇYâ¤Á$#±ùÃæÒB7F[ñ§¿ZÁÐi2¸våtB?2æ¸1¼|BeÂIÄn*uP£szHEü÷¼dG¶9ûa Ô_âÏDø|nÞÇ ¿°¡Cç0N`XIá$
+aâNvî¬ :àÖÍpq!
+Ú%tnðâÄPI$BÁS`齺J¥%E%ÅÇ9"ÖéÁ=Ý
Ïwì9|B6 Eu«Û åBx£@ì*'Y÷Y
+cAp-軩°Ô(jj
+!'ÃÕ$´NÎÞ¡R¡È °°è,.âÔõ1IÍ!jº^¹Ò!kbHG!µy1FB
MñËÞzÄ1¸qô
+IøÐb´qtÿ§!È1UX9£wîcÚ5TLÅÝí=K¶õáqpú«! Ð5I¨<hÖ"Ï7-ôÒÃar_¹l(ÖÉ!Atï¸ØcPà-½Û!±õ[ðâ64cAÄÃzðîë\ ØoïcÔT=°´³ëÝò"QÐmdôFO ð`=×l
+GhÞC1õ=Áaa éBÙë7®C¿°>ó1É$#AÇxÕZW¯f.Ù¢ÒãÀyµø`¡¢âáÔNPÌMÂÃäb=
+gQàF>ÕBÇÐ7
+¼EBP !BFõ÷d¬.<Ø,.÷LEAUÐgÜ'¾nLAô£{¸ÛÈc#æ-l(;ëºBÉ! ¥ä"8afipõª2âqp¡°°µ¸{Å
ÛË
E´HEÒD?E$"¢iRqïì8ñlîÞÖ çÀ0.# ¡ô;Æs±$#t°X8ÁÁæ(5ØaC0Òz®9`1BX7ÝÍQ`XyCHF:ðIâ1âÅE$o#;Yj¸pÜ>HGVc5SÂ̢Ѣ^#¹ HFáâ+4ÇßDà°4d;ÇÎ91â(rsCrÀ.âsÌo7Fïó,¤f)Rª
+{ô¸ìÞ$#èåI××´Û è-ì¡!QPx7´r]wEÚ¼åpxpâ&¢(Pú» ßÚ=K²D´l¢)$CÄ;¡'Å$OÿrE8PÅP
\ No newline at end of file
Deleted: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/8em64t-2s4c-heterogeneous.tar.gz
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/8em64t-2s4c-heterogeneous.tar.gz 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/8em64t-2s4c-heterogeneous.tar.gz 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,39 +0,0 @@
- 9ÑÁJ í_sÛFÅó:úxÌT)t7 ]µUëÄkÆÙTïì! e` lͧßnRI ðöµ>?T ýïôíQ>£ö;ÙDÙw·y×ÕM^æÕ²ùÛ7dDkûèpõ·¢ÕÿøF&I¨âÄ</´yüM é>ÂÓ,6à«êfVÏ×
-ÇâeôdüuÑ\ýãDü98ÿl±,Êëê¼sØ Çëx¿PRîÇ?düMÒ|Åçñ<þ6ÊyÓTõ_^áÅ]^N«zRLÍ_ÿÈKûümÙæ³s×é¼Ý=ñż泿B¯e:ÏÍß«£¿ýí¯ÁÿåUiÿÿã¯/ü]«HÁò{¥þñó.6_,òƼ4YäÝÏÿ±ï+L¾×J]divMñûîQ8þp±¸½o,«^4Å ÝMc¹Èª:·;V{ì[Ú'Ö»ÒEmöeÑæ-³O]/vß}ÞØüs/Ú¢*³Z³üÎ|uóÍÃOÇÃg©9»ùü.¸çÁ4M´MÌ:X¤y0Ïò û<Z0hòE0ok³çÆîIl^ÝÃZû2Ùìz¶lniÛi¶(ùüspýÙ¼UcÞÖü'Í?Ám´ó`qe¹oÌïaÂð9ÍÍ7.ÍU]¶{þ´În'¼¾We°È¯àʼi/&7U5
-eaÎ7q¶ªi3É3ó=>ycOaOf>ùø">·ó±§Ù<Ï=Ko¯'ææÉIsN«OWÕM5/«<Öúû0¾Ø|8ÆÑ:®tVÜó¼l×O¦Ó© U³:̾ÜüW
ù°x_ÑhýÌ]Q·Ëtv±¨>åu0OËô&·ïóêâbûÌ+Z¸¢£îávtE'_íÌ+úé{´|òÝ+ZâvtE«¯vE«?æýô=úé+:î^Ñ1®è?Ý=:úc^ÑOߣÅW´è^ÑW´£+:újW´þc^ÑOߣ¾¢u÷Ö¸¢ÿt÷èøyE?}VO^Ѫ{E+\Ѻ{tòǼ¢¾G?}E'Ý+:ÁíèÖ¬W4¸ßÿçs×ã?¡´}ûã?Bcüwùü÷ªMg¯îñ"âËàãfßOuovâ"¤Ù}?,¯¯ÍòêKé ¤2´û~´wéÖ.s»UBÞóý§tÑݬ^÷:k»|ûy¥®
ö½-Óý½ãxln1¯û6-«ò¯û
PÜ~ÝÎÞó}{]Ìò=Jêñúû=¾îËÞÇó}(ó»"kÓ«ÙÖo¢Õo6«²{_NÂhóÝw~ìd$´
};?öÖ¾7ævy¿óö®¿ß¿ë¢Í¯Òìãîþõ÷3_ùWskÝïù.],ö>f½ú~ïgéÕîH+~÷¿åÙ,-æ_¾|$E,×ßïCY¯÷>¾Zñzý¿Ûmñhõ¿üô~òÁyÛ?èÃwø¡ZY¾÷åö=~÷ßçý×ýXÍçEû¯Âü³Úe-ãdýYÖûÚ|:yý~s½Äæe÷ýïÜÄUö&)=NÔÈܶvh;s=|Å}?Þ.Ë/U±
-õØîþyy¯¢1Ù¹Â;Àöß»éÁïõboÇÂî0Eðæis{=\EyÖ¸G_®¥ÖJÜ'ß=üZI<×_ëkß¡KÿFíÙçx¾ü7
F¢öý?ÙòÛÄ
-ÔáHÈ`lÛwÊQhÚpæn9"%8òFÆÉØÜ_W£Ða ¢86÷6Ʀà#Èq´}Gæuæ]"l^ ÌÆN8V2'\¿`¬Èql
-§yAôxsBªÑ8HÌYUhϵzA¬C[O1g0w(©Ì©^ ìÌM×zuØ2Ý|vÍ VãÍyMÇü-FZÖÉX®?6êá¡ýH"Ú¼Â>-mq.´©ÏDÉ8í+L=żÔ"æö·_Û7Jbû
-³7J̵zÅHYhiÙ@Ú×Ãó1ö³V/PzõÈ|óa?yFõ×.ʶ"S_6¥·yÃÐüöD¸úÝÄÃÿíGJôÃëÍ=dÞLÍLÉûiûoz<Rê«s7siÆæÚ²U´¹½~õÏ
-6lذaÃ
-6lذaÃ
-6lذaÃ
-6lذa;c»ÈÚÏm uKÇWm1ÏFÉÃÍT¼±n q¢ÕêfR/˲(oñð÷ÕÚàjÞðk[ Oûÿ{ªpýò)ÿ-òqð|ü§Öè{ô¿´ó?Ò?§Åß<nóùÐË ·þeÇÈÿÇB¯øgåk üE¤âÏAïø[KsÏ ü¥²ù÷[-ªYusÚ
Ð?þqÿgáÌø··uN')üÏqdþo¸ÿÕÆ?qù?lbpùDèTàæLýor;Liö1½É'Å´{cú7w]ý+s<ôÏç7gêßfç9¨ùmzë_j-ôÏþ½BÿÏ×þÔÿã$þYx ÕþÇZãnÄmû2+n¾Þå¿
-þY¡8¯¡,ÿ«ÿýNÿ_@ÿ,ò2ºÄ]ÀWé¿*TòSÏÑ»üJKäÿdA@ù^3°ü¿Íëy:êÕ¶³üùq`«ð~ã¿: ±þ+DñϪeùd¢Èþ÷ÿ8Ñ÷0þã7ÃôÕis;)«6?EÇõßñÿè(þ9Áýd`ÿò_©þOÎQNóÏòøeÐ?þÿøÛdóÏãøý?Þ¯ÿGZáþÏ]é¨zþ=¶Op²Hë¶°ën}9Gÿñ?aüôÿù
-þ×ÁMÆ®ßsèGõ/£ÿ_¢ýÇÂOyÚ.ë<0mù /m§¸#xþÛûÅõÿÎø¿©ÿcü
eq]@óÞB ÿպϣÿøC¬ÿÅò½¢þ_Ýæu^f÷ënwàqý«}ÿ¯1ôÏAáà3ýÿ·iO'fÇàãúï´ÿcÿò áýõýJïIu=I¦Ê´-îö~ûýËûôÏü½¶ü§ç8¦ÿùVùß ÷lbð"æÿFhpC ÿr9¿Êk[hòöDÿz_ÿZÀÿÍõÿ@tþr¶þCGþÏþOâOàÿÜïÿÑúxPîO!пÿgý³ ÿ§ßèßÿþ/àÿôýïÿìôÿèH£ügáMÚ¦¼¿èßÿý¿, þï7õ'þOø¿YÿÓo(úÿÏ÷îÿI!ÿüõýø?;ýÿB ÿ
ôï5´å?ÿãÿ<lbð2üÈFÊ
-þ üªãÿ1ÿ´ÿýælýGþOäe þNüóÿXÿÓoôï&ÿ'ôÏÆý@ÿnühÿ± ÿ§ßè ÿg·þ£ügámÙ´õ2³6èÞCôïÆÿ ÿ¨ÿû
-Eýßÿþ0þã7ýÿNüð³ ÿ§ßèßÿý,Àÿé7´å?aþOôÿ±°ü~B 7þOø¿Y@ûßoèÿ%ßw°
-ïçÿJbýwſլº¹?íBèÿH$1âÏÁñooë<NâÊüv7Oü>ÇÊÿõ©ÑÿÇ%ÿ¹¨ps¦þ½¿4ûÞäbÚ=Ç1ýwûÿÂúç-n¿9SÿYUÖü6½õ/5ÆÿÀú¿~C¡ÿçkÿCêÿæ_è
Qíß<Ðw#fhÛÿ
-@½ËeÐ?(ÿý²üÂþwÂüNÿ_Cÿ,ò2ÂàÞ2LÿUiþ§£wù/XÿÌÿñåÿm^ÏÓÙÄTÿ«¶åÏ[
÷ÿÕÿñ_÷Å?«å¡ªßþ÷ÿ8àÿfã?~3LÿY6·²jóS$q\ÿÝüÈÿÏÃÀø¯ü¿§ãÄò?6J[ÿWå?çÄåÿ>ÁÚ¿þi
-ÿñ'Èÿcý÷¯Dcd õý»Yÿýÿ, ÿÏoôï&ÿ'Ú, ÿ§ßè ÿg§ÿ?ÒÿcáCY\м·èßMþOäÿ`þ?¿¡¨ÿ;Éÿ)¡ÿÃo(úÿÏÏÿÙiÿcýw&$¼¿^C üûå¿óÿY¿×Ðÿë¿cü
M^ÄüßnôOÿScý÷¯õÿ@tþ2Dÿ#ÿ§ÿañwÿSñçàÌø»Ëÿ ÿ/üügHÌFãæLý»Ëÿ ý³ ÿ¯ß©gù?%ü?,@ÿ~C¡ù?#è
Pí|¦¸1CÛþ§Ëÿ) q×o(ËÊü ôϸTú2Á]ÀSé!ÿ'ü, ýï7Ë÷ù?ÿ¢øçÿÄüo0âê7ÃôÏÿþOÆßYþOs¬ó(ÿ98'þ.óÆðÿ±@'ù?5æÿ³ü~C 'ù?1þÇúÿü@ÿnò¢ýÇòú
-þÝäÿÄøÈÿé7úwÿù¿X@þO¿¡¨ÿ;Éÿü?, ÿ§ßPôÿ;Éÿö?â3 |@ÿnòbþ?Èÿé7´å?]þOñ?61xó%z#¸!пüþoÿÓozëÿc^ùÌôO>Çqýo·ÿåjþÖÿáÁÜh!éÿ~SWô׿1ÿð;Ìý÷!õÅÿ[aþÃâï<ÿ·HÄ3ãï.ÿ7ÆÿY é·#{0B]3õï.ÿ7ôÏZÿ~s¦þåÿðÿ°7¿¡Ð¿üß
-úgáETûÿû«AÛþ§Ëÿõ?yPP×Pÿù¿cèäÿöaúgÈÿ
-ÿèÿóå¿ûü߯9 ?yþïó¿X@þo¿¦üßÈÿÄÂÀø»Èÿ½]ÿW1Öÿ`áø»Ìÿáÿc þnòcþ/Èÿí7úwÿã< ÿÏoôï&ÿ7Ú, ÿ·ßèßMþoÿ±üß~C 7ù¿1ÿøÿý¢þï$ÿ7òÿ³üß~CÑÿï$ÿ7Úÿ,(x½@ÿnòcþ?Èÿí7´å?]þo¬ÿÁÃ&/bþïù¸!пüß!üß, ÿ·ßÿÐÿSÃÿÉAü üûý?:BÿJÂýé3úwãÿþYÿÓoôïÆÿ ÿðú
-þÏ÷vút¤Qþ³ð&mtÑcôïÂÿ©ôÿ²ú¿ßPÔÿø?áÿfþO¿¡èÿ?ßÿ¹_þ'qü, ÿ³ßèÀÿÙéÿXÿ8®ü¶ü'ô¢ÿ
M^ÿë?²C ÿ§êú?1ÿ´ÿýælýGþOäe þnüÿÇü~C 7þOèÿú
-þÝø?ÑþcþO¿!Ð?AþÏný_£ügámÙ´õ2³6èÞCôï&ÿ'ü, þï7õ'þOø?XÀøßPôÿ;ñÂÿÍü~C 7þOôÿ± ÇßÐÿþOôÿ±°ü~B 7þOø¿Y@ûßoè¿Îòã®Ï/X
îÿFÿÊÿ'ã-ë:/ÛÉ´.îòúÙs½ÿ¹ÿ8DþwÒlQLl at QxÉÙú¿©ü˪ÔÕSç8^ÿÓ{úOþYçåÒ÷Þú_ÔyctßçÇõuêèÿá!üë¿ùLýWMS<aô~úÿÁôï7Cêÿ'LùÝ¡_ÿíÿ57 þſլº¹?íBèÿH ÿ3ãßÞÖy:ØAQÞ<ñû+ÿÿJ
-ÿû#°_÷D]3õÿ8÷{fÓ|RL»ç8¦ÿ®ÿ+¡0ÿÃoÎÔVÕ5¿MoýKü,п×PèÿùÚÿú¿ùúgáETû7R,EÄ
-mûÿð°Þå¿2ôÏêÿ~CYþ?1ýóÿ_§ÿ/¡Ä¥ºÔôaú¯JêáÔsô+ÿWãÿZ`ý?PþûÍÀòÿ6¯çélbªÿUÛ
-bÞoüW'æñ_âU˧=¡½Û2Nàÿäý¿~3Lÿ
Y6·²jóS$q\ÿûóÿ"ü?<ÿjþ÷©ç8±üC¥CsØú¿²ë¡üwÏ9ñ_ÍÿÖÿø¬ÿw×Áü?¢pc!пõ_ÐÿÏúÿü@ÿnÖAþg°þßè`ýNÿ¤±þÊâºæ½
@ÿ.ÖÑ ÆÿYÀ;¿¡¨ÿ;Yÿã?, ÿ«ßPôÿ¿þK§ýGhÿ³ .5n C õ_öˬÿÂ
!¡-ÿ ×Áø¼ù¿½Üè`ýÝ]ÿþo¬ÿ¢ó!ú8òÂÿ˰ø;Ïÿ)ÍS?gÆß]þOøYà¯ä?ó@`67gêß]þOè(ÎoÎÔ¿»üðÿ° ÿ¿ßPèßIþOè
Pí| áEà¶ýOÿúgö?¿¡,ÿIóBÿ,ò2ºÄ ¯Ó¿ËüjÿSÂÿÇÚÿ~3°üwÿùX ?yþOÌÿæã?~3Lÿ.ó®óÿ!ÿ/ãï,ÿ§íXåÿDùÏÂ9ñ_ù¿CGù?cÄøäÿÜÿ«#ÜÿyPÙ?}@ÿnòBÿ, ÿÏoôï&ÿ'úÿY@þO¿!Ðÿùù?;óu¤Qþ³ð&m±è¶ÇèßEþÏ8Äø¨ÿû
-EýßIþOäÿcù?ý¢ÿÿüüûåcýG ¿!Ð?AþÏNÿ?ò21þ½¶ü'Ìÿþ?61xóÿýäÿTÝüÈÿËÚÿ~s¶þ
#ÿgÿ'ñwãÿDþ7àÿôý»ñBÿ,`ü×oôïÆÿöðú
-þ ÖïÖÿÿ·eÓÖËÌVØ {!пÿ'ü, þï7õ'þOø?XÀøßPôÿ;ñÂÿÍäï7úwãÿDÿðú
-mùOèÿDÿÀÿé'úwãÿÿ´ÿýfþOHù¹UøéþO¹Zÿ]Àÿɰø»\ÿÝÆ?¦@ü83þÖëõß1þÇ%ÿ¹äæLý;Xÿ]®×þY@ÛoÎÔ¿õßåzýwÿ± ýû
-
þi×ëõß¡^Dµë¿5hÛÿë¿ËõúïÐ?(ÿý²ü§Yÿ]®×þYÀúï~3Pÿ×ëõCÿp@Âõ×í¿ó?X@ýÏoéßåúÏr½þ3Öÿ`a`üݯÿ,PþspNüݬÿ¼Ö¿FüY ?qþ?¹Îÿû?Èÿç7ú'Îÿ'×ùÿ à¸ó
ýçÿ[ûæÿ±ü~C âõ×õò¬ÿì7ú'Îÿ·öÿ&ÿaõ¿¡¨ÿÓæÿ[ùÿ0ÿ Ìÿ÷þÚü«ö¬ÿø?ü@ÿÄùÿVýÿëÿðü~C[þSäÿëüèÿca1ÿù?Ø!Ð?qþ¿µþúç í¿9[ÿäë??ø?%üÄßÿùXÿÓoôïÆÿ ý³ßèßÿí?àÿôý¯ÿüàÿDùÏÖöý»ñÂÿÁêÿ~CQÿwâÿÿÿø
-Eÿ¿ÿ'üß,Àÿé7úwãÿDÿðú
-mùOèÿDÿÀÿé'úwáÿÔÈÿÄÚÿ~Ó[ÿÕõµíæësãú÷ô¯Bò
ÑwZ ÔõÞúoLÉ?̳ɢúdJý&½{né·ÇõßÉÿ&èÿgý~3¤þù}Uøéó?Ñ¿T2ÁüÅÿqý¯ÎÑ?þ4MBÄ3ã¿·þãás+ÿwûÿÔÊÿ£þÏM¿Ñj#Ü©ÿǹ?4ûÞ^þþwëÿÊúBè´ýýæLý¯Ö=¤ùmzë_j-±þ+
-ú÷
-ý?_ûRÿúgá%Tû¤HEÏ
-mûÿ°¸wù¯B% (Îk(Ëÿ'ìÿ'Ìÿíôÿ% ôϸTúw_¦ÿªìãê]þK¥%ÆÿY@ÿß,ÿoózÎ&¦ú_µíìÈRðVáýÆubªÿe(þYµ,UýVô¿ÿÇÆú_,`ÄÕoé?«ÓævRVm~$ë¿ãÿÑXÿñ_Íÿ9õýË¥äfáø¯æIêüßkýÇðÿ±@üßñ~ý?ÒÈÿÅBcd ÷ýçÿV«üßÿãý~C âüßkÿ¿Bûäÿöýäÿîôÿ ôÏÁ²¸. yo!Ð?qþïþãù?YP¾×PÔÿió¯ü¿ëÿðü_~CÑÿ~þïNû?Æø/
-Þ_¯!Ð?Aþïýòßü
ùÿ,ò÷Úò"ÿ÷ªü4ÆÿXØÄàEÌÿa5nôOÿ[ïë_ø¿Y°þÎ_ÎÖèÈÿ)àÿä þþÏýþ¡ÿ%áþôý»ñBÿ,Àÿé7úwâÿDþàÿôýïÿìôÿè(FùÏ´EÒE!пÿ'úY@ýßo(êÿNüð³ ÿ§ßPôÿïÿÜ/ÿ{8ôÏ Ü~C ÿg§ÿ_ôÿ± ÇßÐÿþOôÿ±°ÁËð")7ú'ðªÿ3ÄüOÐþ÷³õ/ù?ÿø»ñbþðú
-þÝø?¡0þë7úwãÿDûø?ý@ÿù?»õÿå?o˦°A÷B 7þOø?X@ýßo(êÿNüð°ñ¿¡èÿwâÿÿø?ý@ÿnüèÿcþO¿¡-ÿ ýèÿcaø?ý@ÿNüÈÿÄÚÿ~ÓKÿe5ÍÛ=;X
÷óØú¿áÿtOÿøW¥íæísþ÷ÂÿÏj\~Ó_ÿö>oÑÿþ/cáþÏÁÐøfÀáÎþ¿ÿïû")0þÏBøF |f¨þM£?5Ê9épLÿ"ÚÏÿ©ùßX°qÜm k»NFòbõÔ¼h \?¾®ê¼¸)ÍEi®YÞå«×$ñŬ²?ìe±õ&U{×ë'QÅ|ÁÕÿ<åuuÒ9èß4ö;ó?Eÿ¿¬$¼Ëç¿Wm:{¬qÈPÉàã[üTçùæ@èh<R£Ñî!|úxH d¢Lè·yµÅÝ71($q¸uÈÛ2Ý?h'ã¸ó.ߦeUþõá0!F;'Ú¼ËÎAAvßåºå(©Ç">ô._Úÿ,J«ÖÎøòÛ$£íÏòÎÜ#?nÿ.öQ¸}È¢nïw0z; ÿ®6¿J³»m£Ì§ü5½ÉÇC"[Þ cºXì} ;~m~±Ýw1¿îx'Fv÷ïö+o#w._~z?ùP6»?ÌîÇý¡ZY¾÷wyüÒ¿ÏO¼ËûYzµûV»?Ýûßòló/Åþ*;a|ÿ¡¬×=¾2·«íC~^Þ¬ÝÉVÂîÞ-Øû~Y/÷~mý½ÿ7YZN_®üÉÂ~·Ãç8Þþëø¿$Öãáë_àk2TÿÓÂèÆÜ»O9GÿþÿHI¬ÿÊÀ
-ÀkÎèÿ=lö:À1ýwý_Qù<lbð"ü_×׸
1Ó_ÿªi'2=¦ù¯Tú?(þý¦¿þoÓÆz½{cþæñ ýûÍ0ýU=Ogy>¯êû£çè¯-êÿ,@ÿ~ó¼þ³YÚ4ß»X
÷òÿ$þ?Nÿt^u
-¿Nÿ
Sã_L_ýâo¡1ÿ
ñÏLͯ)ù!ôÙ_{¯ÿíÇ_
ü¿,ôÿUQ5»¼Vu¿s¿ØÿÆÿyxÏfÁÛ2ûí /é¯ÿºÙIî~ÇïÿqgþOö?ò{õ=r@úKýWi=é¼×äßoNѲWÿ"þYùM$n ¾Ò[ÿ* Çõíë?ÿ
×!F |¦þu5]fíd¹,¦½Îѯÿç¡þñú¶ÿ¦iÛ·úwBÿÏþø¯úÿX£¿Éñßd"¨èÿï]<~ÿûýÿ*Dÿ/P½ß¨ÿ9ÖÿÚÿ-Qÿcú÷å¿ù7o'mzsê9ÿ:AÿпßôîÿííþâÿZbü
ñWÓtV¤ýcñÉ~üÍ3XÿÛWWw¥µYy\¯,¯®¦_º^5[G,Ê_«Oyý÷éM.Ç:|µ¸«_Õ[ûër=¦h¬_á«lk_ÖJe¨_¡Øy!hÿ9ö®çÿaþ?=â¿Ìïòò´¿»¿ì´ÿEõ?xx÷?o^ÿëíë÷ÿ
ÀKÜÿ{;Àÿ%ûã:Æú,<J8°}c@ÿ_{¿ ÖÿÎüïhíÿ@û© yéÝÿ×»÷Pÿ¿DþG ~¿äÿé9ôxý_îë_ÿ³ù~3`þGï àýõ/uö?пßôéÿ³]EC²ÀX÷Ëÿ"TÈÿÂAïøJ?æË?пý'µBÿ¸íûMý'¥ÿÿG&hÿ±ú þjN-ô
\ No newline at end of file
Deleted: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/8em64t-2s4c-heterogeneous.tar.gz.output
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/8em64t-2s4c-heterogeneous.tar.gz.output 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/8em64t-2s4c-heterogeneous.tar.gz.output 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,34 +0,0 @@
-Machine (phys=0 local=16468292KB total=16468292KB Dell Inc. 0NR282)
- Socket #0 (phys=0)
- L1Cache #0 (32KB)
- Core #0 (phys=0)
- PU #0 (phys=0)
- L2Cache #0 (4096KB)
- Core #1 (phys=2)
- PU #1 (phys=2)
- L1Cache #1 (32KB)
- Core #2 (phys=3)
- PU #2 (phys=6)
- L1Cache #2 (32KB)
- Core #3 (phys=1)
- PU #3 (phys=4)
- Socket #1 (phys=1)
- L2Cache #1 (4096KB)
- Core #4 (phys=0)
- PU #4 (phys=1)
- Core #5 (phys=1)
- PU #5 (phys=5)
- L2Cache #2 (4096KB)
- L1Cache #3 (32KB)
- Core #6 (phys=2)
- PU #6 (phys=3)
- L1Cache #4 (32KB)
- Core #7 (phys=3)
- PU #7 (phys=7)
-depth 0: 1 Machine (type #1)
- depth 1: 2 Sockets (type #3)
- depth 2: 3 Caches (type #4)
- depth 3: 5 Caches (type #4)
- depth 4: 8 Cores (type #5)
- depth 5: 8 PUs (type #6)
-Topology not from this system
Copied: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/8em64t-4c2t.output (from rev 7493, mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/8em64t-4c2t.tar.gz.output)
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/8em64t-4c2t.output (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/8em64t-4c2t.output 2010-11-24 09:21:55 UTC (rev 7494)
@@ -0,0 +1,31 @@
+Machine (phys=0 local=1016272KB total=1016272KB Backend=Linux)
+ Socket #0 (phys=1)
+ L3Cache #0 (8192KB line=64)
+ L2Cache #0 (256KB line=64)
+ L1Cache #0 (32KB line=64)
+ Core #0 (phys=0)
+ PU #0 (phys=0)
+ PU #1 (phys=4)
+ L2Cache #1 (256KB line=64)
+ L1Cache #1 (32KB line=64)
+ Core #1 (phys=1)
+ PU #2 (phys=1)
+ PU #3 (phys=5)
+ L2Cache #2 (256KB line=64)
+ L1Cache #2 (32KB line=64)
+ Core #2 (phys=2)
+ PU #4 (phys=2)
+ PU #5 (phys=6)
+ L2Cache #3 (256KB line=64)
+ L1Cache #3 (32KB line=64)
+ Core #3 (phys=3)
+ PU #6 (phys=3)
+ PU #7 (phys=7)
+depth 0: 1 Machine (type #1)
+ depth 1: 1 Socket (type #3)
+ depth 2: 1 Cache (type #4)
+ depth 3: 4 Caches (type #4)
+ depth 4: 4 Caches (type #4)
+ depth 5: 4 Cores (type #5)
+ depth 6: 8 PUs (type #6)
+Topology not from this system
Added: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/8em64t-4c2t.tar.bz2
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/8em64t-4c2t.tar.bz2 (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/8em64t-4c2t.tar.bz2 2010-11-24 09:21:55 UTC (rev 7494)
@@ -0,0 +1,163 @@
+BZh91AY&SYLE± Û4¯ÿöþ_ÿÿ÷ïÿþÿÿÿô
+ ÿø`bþûéø ê
W¯ Ç É»På/` ÛJ6ÞÙDN^¶Áôøûkï¼àÎu\Mö_E|;:4tnî·ºÍl:ÝÁë¸v.×sÑç·§TmÞìãÝïpk{ÜõÞ^ÜN÷s½mÇ=íïöï-Þî÷nõ§x
+U[×»ºsîÛ£l±È
+·9ljèJ¡GA«³@jE4W@»s5¶Tèt
+4NØ( £±Ðh ´)ÒîàZ[ 6ÀÔ ! &ÈÐiMIêªzy õ?SQê
+=@õ6¦Ô E5SÞ£ÿÕJ2(õ jx"
+SÔPõ¤ ò I!2jy&§µ4(ü< iê¨z õê @hMDÊi°DÉ´)íM=!¦ ÉôSjhõ0¢ hhiêI ÓMÔðM?§¦©ú5CõG©M2êÊhõ 4Óð'Æ L§ËDDò'å %>â|@Ò#ûEâP?çiIR þÈOíáXu7(õh°Q
R©P?¬þÀa`Â[í¨ i@×mq¶¢mÉa÷}ÿèú>wégòF´Ì ׯL~
+?QN å
UìsDDeA0êDt©$àø¼ö9ëê»Úñ}ñ¼\½»Ü
«3bÞ,'vnd²îË^òBæ0¹¥Ìhy 1E£7VµGXÖ5än5Vá+0ëÚÜ2mn5Va×µ¹0ndÌÛ¶
«ÌX4A¢iÍÇ$ׯ1¼[æQm¶Ô.äÍÖ®ªÆnLÇ2ܵB¶,¹·uEPÚÝÝǹôæ,Ñnn[BÕFîºò-ÜqKmz^»veÌXSw«½,ë[nÖ+1àÔ´$´$³ZZ[©-!î5\jª75h¦5Ùwh·mÚ4e8±G¶Ü˹h»nÚÞ<Ý¢í¶ÑrÝ´]·mmܶI&ÓnÙ¶%£FîÇLau\Idëɵõ×]N
+¡¶ÓnÍÒFfÝáw6eÓqâÜ'1n=9¤æ.±î¾ôNcÌ8ºðñÇxx¼ðñÎÎ5° H¾°ª"AaT²ÙLbµ¤Ë8.êa¥À踬,²ÂÂ]"ÀÅ!T
P,
+Kib1Ë-lQË´¬Ée-)d*e-¤ÄTÉBÙ%EÁIX*#¢¬QimQ0ÀÄX£¶
+,
RdÌÃJXTQEj(+JYe,¡s&LEBË
+°¥VÕÈTÊ[dÅS TËQ´©ªÙ
+kP1fK)e´¥RÒbÀ¹iP1fR%\m²b©
+å¥@ÅJZSéFoGÎÁäzJf]Cz;j&ÆdáðSJ[MͤïÊXDêÚ^TS\L£îÚ,àâhŵ5Ûà ààPác âef (©Æa'ÔÈN!Ê)QËi¹±¨å'VÙLbnfLs¢Å´YÄUMÕäd,8
`D§¦gsxáζ\ѱz¼º¼½rk
+ri
yqÁÅ&K¬ÉuÊÉuÌiÉMdî$mBFHE 'ÊBrÊEZê¼DñK]at@# ¤*°)(`)-FXl±d!A$A"ÁDa$D£USÄÿ¨R=Èxß3ÓLòªûÀMeUYÐ
+Ò-â=ØC!æ(8_õÿ<8CñÏXûe|£ù¥J:u(êQx OâïC(´XWYyWñ¼ÃV6S¬èøÆqs¡Ñ{æk¬<yåÃÊÓ¤,0ÊXqßÃÏæ?;çÁÌ¢ÇC´¤/ñ¼½í´6ßd¶Ûy$²Hü¤=ªí¥5Þ±å¥5Þ±å¥4©±!@í1Wm)ÃV<´¦·
+XòÒTÅX 7½ÙM¼Êmà¶So¢So¢So¢So¢S}dè!bÊ8RVRV0BjÐFHUIA 0M!ª¾X HÂ,ë 1¤a
+,î"¨8s!÷$á°ETÏù|ûn¾.á·J6dÍ#ÅGêgR&rÛe9Îwèüȧ4Uò
Lk¹þ wÿo0ìP?}ý¤Q,{øo£ù´Ó7W+È©Þô-z¯
+Ãèð¦,|SÙ¼c²ÐHé»6ÓLð·ÓqGd¾uÑöê¼P#Eðíî
¹l Íh3Af0 )Z:V¸KJVÌ:ÎåAU QCÝÉ;;õªõ.Ç3÷ã4[÷L"X½l¨RØè9aÚ±ßaíu9¯âÁ¸Ù$2?¡@ò}¿É¦^zxÄÉRÀ±t½ü¬ÑÉYè{{ÂuvuÝ|&RV½è¶Þü&øC/gZØ®½-ãÍeðD¸¨ìBÕ,³d*t ð5£sCùó2°»øº½Ñ²ï\7Ýr¶Ùë»_=@ÂYÚìÕUUUUUUjýjÇnu¶BßqÆ»&Ã<olæf«npZ¶2ÑU#d³t¹µU
+;'TÏ=9!QEæcP£-eKŵ8Âæõ1ì=SF©ÑÐz_àÆ3YéO{3ÕìÏGM'ØåUUUUUVóUUUUUU~À×ȧéÀþÛÖå以Uzx¬ÖXL¾-h
+rx *®N}xê9Ö¿ïä÷äøäþX,výëe6ã=^£ët±* -$`^DT;O(wþ(¨gªS»OÇ X
/à
+xà?¸ô¤Æé3"ü=À/Ö¯¿s¼ø¬Dfº¹9¹¹¹É¤¨)xãÝWué?/!Î$<1Îzú#ûü» -¢(
>\ùOþUUVæ6ý;çÕÎtdz-ÛP9mÄvØ`½UUUUUUUUUWòäß÷òü>O»±÷O/¯<&O½>Cì}U³ç¼¥)ÖNJʱFµ\JÚ2¬^1í0ää_ Ôcíôûvôzg®R©HB¥#Z]dç¯[ë
¸a
~Î`:,þJ5f2m>áaPÜ£qq9ÿ1Va at Hü×mn·oiª'³Þª§;+u9UM@)ÃWGFÍ|µPÒïø]pQ8!÷ríi×ük
++"M¥DÀòHM" WAP½Ûí÷¢#CL]âX8pGóàyÇé üg¾B þy<ר6EhùL®
+Z6EhÙ£IWÈ"´lѦ¨#`DE,]J´²U¦0F$¾°ÓaPl(~ DBÎx*ªªªªªþ+ª¾wâü>ó:²Îß²Cî}lß|z»Þz @DZ\
+Ù8¡Þ
+
+ßO7[çot÷½È#å0eƪ©Fse)Z5@Äh']umìvÜÈìü
+¬ú×äõ;â{MÿÛ=+þ±µòTô.ô®Ñõ7:~Ö!Ú¼®@Ü@³µ0é§0/;88ÃÀõ0ïO¡úüc½B ^mTÅÝ;úÎNêP½x* BÎHNDÊú¶z»Ä/";06cè jâªpMµ~]çÒU'4 ßG¥
+EÜB"G(fÜË*\¢ÞÓÓpí·vxêà#£ÖuÔ¾À·Í=Büyý>ºkß¬ä ·Ö ¤%Ù!`sLº(BË'Ù¿ZèQnj¨µª ÷ùèôùïsï©2ËCjðyDNþlÄyaÌyÖòÙäNr¯UªkIKR#ÅAu,[Ïsø¾_.ûýíô®ÔðW(/bïdFåðÜܧ/U9®ö9ëNc«©ÕΫ_m»»Dîg)j'i³a®1¸·* "ª½JÖ¥ãDò'
+ ª
·;ᳯ&¶;ÅQLa»;¦4³¾ 4,µPèr¡ç!?dsn?]ªyìïü¤/`ÑD×ÃéúD{¤¿s$,pÞ{ÕkÐYýhËê8è½=æ²Ò¦#VÏÕÇÇÄtcöUUUUUUh-ÇVúIðý»z|më¸ýBªµ×ót;0ìÔQ7¢1NÀÅ
+Î5¬Î]ëá
Õä§ðYׯézÇ9èý»úÝ{òíò¿©
+¤}ÙlºÓö,Âpà?¯;ßòLÏ@áÖ{Éc¤QÖ÷+öÄ?E?æ×Ç¥ºé,ÛçÜIµ~R¼uñvóPOºC ô§^ëú¸I:Fþ#S/ºª¼^#ff¿BóOÒ=¾^òÆUJ 9 at K;d#¾<PÊÅgϸÉÏ'¨xçþWî廫¼lJ%_w¥³ªHaõ¸ä^Ú.)ÝOÝwW«Úª{ðtð¸ï:5AÐCí0ECé¯v´rZlåçx8£¡:áÛ²Äër=NŹùÃp|Õ'7Q˦ª>)?ÂÇ4û]ÅÑà TÎd&âö=CP,5;1Aù»×5ï^Uô:züÕ $IªªûKYÌÌÊÎfsϸ6¢jXýÿ[µRfßx`ú¹_ÆwèÉqʼ7âO¾÷y
¿Í®Ü 1»Çur¬}@C XÏô@¦òÐ/Öû.Á÷Ûñ£Âr꿯¢RYú¹ñÐ#õZ</ Û¢¸!ÊÞWó|=ÛyI¯Ôpüé<GÐ2c½éVyFû×sçvÝ61Á´y¤S·S9 ìñð#ht¾«s tønëÝMÇàkMÓw/¬»+Ý}üv'çä;0¨f+jýCBÝAçEQù¢yn_³Õ¯¯wÀôwâTX±TX±bÄb¿5ï« ;ÐJpËݺgÐðK¹mÜÓ1¹¼aCSõ
+QÑ5<Ëß¹ü=cÁ7$ }ÙñgìÑw¹?Ót5ü àjÐ(Ñ@±!´3vz¹À7XäQ,Áø)â£sÔ7ÙôtuüÃAæ=P»ª¹tqÚøâ»8¼y|ÿ?¿ÛæÛ»Ûã«,²Ë+ZÖµ¾û¯¾ûï¾ûï÷ßmÍuϺë¥u×]u×jîëîäC[ù~ô ô|åOÒ8p8Ô*mnMûøKY4Øfd©£³mÄÁÔJðnaÅî~îÓn°µËJÑÖ§^_WÇãòí {ÈBÓú¸æ6^ûÞ÷¿çs'àhPÓ9pðæàè ëà6¨vy
+e#
+ïâs
+¶Ûm¶Ém¶ÛmÛm¶Û÷Ð wÒ7ëó=_ñhÈnbÓæãfÑÜÐ:îÕD¹x÷عqzfwÀÏZäxâ9ýÂr|Jäs& vòé¯ÔëtÃUÓDûÀñÛÀõ2-Äwõw<6þL+Ö;ÊèSót1L²ò¾BºÚ¬Q?
· í`: úÐÁ´Opð18 wçæì³¥¾þB&Ð>
+G ßV¯t#3Î\3üÿ cÅcéî®úùOÌèÛLÀÀACæË¢;ru}hªC½ßù¼6 òÉõáÖ.5`À_çVîçØËÄj>ùùw=ÿGòé:ýr~ÐãyXzFWªr"Ûù¹¢)Ñ=½æèã¤ì.ÜIYÙÉãvOØf´í3ØpúýÐLlb#˽Ä,UØÚ¾¾©ÀÊ'±Íêãî²wvö@úà{sSóõE¶ÒÕ¶ÚU¶ÒÚÌÌÌGWê>o 4õj1øðãìú 'w¼DÎ: YUUUU îø¾O5$RÒÂÎõOºí"¢$r)'<«
+ÕKW åìCIðDìëõ©Åh Èïh*ãn|M¿}ض{¨â+J2.×Ty
+ ð[º×Ãm}á÷Ñý¿¯ßâÓÙÓ±ÇÑì,kÌzÿ4ÿ
+$É 7ðTPal±n~/¿§H-dl<¾Ì!oä,ÝíjÐ{º(âûü{úúïWÆøt?éóá ;©Ël¿~B±gú¾äDBdÁÄ7oéô練@AéÄ)$eü§øt¦j%víÛ±ÅVR£)¢'Îr#Ôþ5U¿ªïÃþáRePè°u÷aÏ7êþK(÷0ªòð?gÛ|¸>Þå6îÏ8Ö
+åuOOãÞÁ áú§Ô[sÓWðjÙ!
Þ®v×"zô>Õ!Æ¿ckT¦[á&Ha´ìæ'õݳÑg9bW߬÷½£)K8¼}ê¾ÊÖµ¾r¾ÐUsÒ1£3¬²Ë.ºÛ/U(Ð1h«(9ѶVÛm¶Ù,²Ë,²Ë,¥ZµiJYdÀ½ïÇì²¶¸/ß¿råëׯ]»víü×]u×]uÖÁeû,·eYe,²Éà¿EºW]u×]e«j×Þß}÷ß}÷Ý}kZÖµkU¾Ò뮺뮺뺵kZÖµ¥)JR¥+h$УíºáÎdÈ@ª/©
+Ø
+$í.tâN«<t3î®»¤©<3»O«ôT/BÀæÞú&=RHá#ÀPßUëÈપªèØ\~ôE5òÑÖÇOú¿*àôQAEVlÕsÎVm"Ùi¢Ùi6Ûm&Ëm¶Ò-·ð ?2
+1»óÂgo
+«§ÀB at aâ{ïËiJh"¢M,U}Q:îÒË+¬ yùá×OVõkå¹kîzúD2î!*¤"©ªJ¨à'pÍÝI$I$I$I$I$I$I$I$I$ç9Îsç9Îsç9Î`)U)JR Ø- ·0 .\¸ <óÏ<óîà[6
+JURáÜHïV #Â1ZÕ)UJR÷W-¹©®WÌÌѯÚív¦¹mÅ30õHnͪ¨»Ç 6ý½½½»÷|»=¥Ûm¶l´iÛ÷qÀÚªªªð¦ô3í
+ËïOivÛm¤[-&ÚE¶Û-$m"3¶Ü©ªªª¸êð $ðª*ª""¬]UEQ8paBR¥*¥DR"-JVR »r¥)JR¥)\DbªQ@ÃLE¶ÛKVÛKnèöI ØO]δcR½8íËÃõ
Î0ÉDFà:6ÆIÃ,¨7`§Mm3X)Â"u ÄXD¬ ¢I!uøÞºUUU_ppãµv`6Ûm¶Ûm¶ÛoÏôª¯á_Íã§£ [û^{¬RúÖ¼tÆP(¤ÎÌ:¶¹_º ét>hslÛt¥@CñQ bÃñɶ½7ÒBHDìH3VuµDîª(!¨,w'}¦Pí*ÞØ&µzªy0Éys3H
+ñãÐÀpÉÃt§ &·7kx(µUX[éöãò7³«5w®M߸kìoQ>fÞ9M þ±É%ö="Èôuå'8ªB±/]öê*¢J¨øÒ0ÅWüò~|Ç´W·?*´#´¤,)(K,*K
+£QHNHÝMô<inåc>uEiÐ"%x_n+z²3ßéQ÷Ô¡$ QTþ0C0CÐ6Ô
+{lCÁ×|§ldè=!>
+½$¹ð~T¶À R´BhM ôädÙ%"¶Öºi¶Ù×MÇ?~
ÌLç»ZÖ""""3;²N
+pê(eÔ÷Úü'ÚpÈ²Ë õС@íÿ:~ø?
+F
+ÈÆ§é²ÊRÖL
b ¦¨àûÇÈÐ[98ÀÃÔÉrrC z»ý|wc`ØØ66v6v_Öd
+Ú4ÁTjÕ¨5jµ+P¯"Ù:CU¨°üÉ`¦3·&FF,déÈe&ÂY% 4Y&I1ºÃðý¸ûl>IüY$$â"xìÌÞÝõþO|ÉÇm¢?À³bͰ6É~î§ù½N CÒzP(I!÷PUYUH
+ªþ½Ï?}}¹³È³³d=@UÝéò°
,*ÎöÀ¸?ÂXS\¨¼Ïöp9YŵUm5Ú2ΦI²£q¨Va $7\ì¼
+ÕT²Nuèå|ãÔ¾n¾3r¹Þ¾¥×±Se$ÌΨêܨNNuÉÁ¡Ëé(p#Ô'×ãÐ@VuÍüI;a"|×°ÞØEXERÂ[a-°¤EdP
+H¡"ÀYE¤UYßIÜóÏ|ÑçìÏP¾æ3I¤ iwik$ºÆM,â°Z4Ü%1Ò(ãHÛÎ_n®R·k\98läÙWȨְµ[¼QmYEsP)IDV´Þ÷/äØ-¢"Íò(I$×QZ2kÁr ú'ù>ÚZIªZÉË´rKÍTIûóG9ê(]uïKíPåXkW$ 1\WN4s¦2®ëͬµPJ"UV ¬¤:ÄjÒl5\ÖÚÃØ1ÝQ/®bÃ)%IºpÂÍjcN\MÕ7 µëTQ!@HhÞnlë]JâµÔ%ÝÚºêÔu@µ¦Ó!B º`zÈ
+6kf')°Euv¨ÞbZ¿v[F5ΰ°oÒ3c¤û@êÞi², s0OÏC¤ +!D;VG$²>Ç×¢-t3ª¬IÌ(pdrTN«U=*s/Ût¨órÛ,½PKflF ÛÕTÙ³z±UUUM CXª«¡Ö^G}<d0°1÷°9Wô!&AEË ´`|DØB}¤Ù*ªªªT±UFÚT*¢¿±ðñ÷üÞ·{ÓëfäÞÃzãL À±2ÅÛ%6!µTOaã<% ¦ï
+5Å! Ù-
)@ªËÙÇKÿò@p¶÷Õ¹R0ñ¶¬*É[kÖû§ö@à:AäzàÞ¶ÏU&F6lǼñ?0]þͦ uo~©\$ö¹á±Ãðý@7æ|X
ÿÞ¥r8
+"e}®BHÉ@(Ra
Wú
t©:´8óÁP
+I.(Z
e
IaaCÑÒ?ÏõQ$c Iܧ*¯Ð©õAP"äA
+ùªÈü¬vøìPooªhwr4Ò§àD`´O»ÔÉ*¨ÚTÜ6È@UÒw¤á«[ãP@¨2ïs'*q«ÅÐßôéRG ÇBx*\ûL ¼<ø9S%ËFµñؾå
+¤F)<)KÚPI¥áÍìhåÙ)GEw§v¡ uÏX~t[w$wÛ¬µF â°1Û +hQÈzÉf at bí6lI KXÐ/G#Õ´½¦©~ëÌBIåwnX]UÎÛ.n[b÷ôÂwg«¯6;}>ÛU{|¾¦¨\¬Ë\^ é4Q6,\Iyc¦¥ãD6RÍ@lå%§%O[<5åìpDEBÓKYS:¢æ
a!Ím8Ï5UUUU^Àxwëß²¾û7ä¿+'fBùßÙ6ßëî»#ivM)MÚÑlg¸L±\å$º*,s«8Us§ 43|Õ@& DÐoÅaú;Ë×4ùÅe¨ïjR\»i_ãçâ5¡kÓ¤+çûmɺB¨U
+¨J[¸af0¡0Ã0 ,&éÒJlõëBÁEÓÐl8ûþß~¾¦ò?r¾|cð84S¤bÜÊup!p jÝR^&ùàÅåÂÍB××*BrFBD¢HJ RC`f÷ÇÊm' qìUUU_¬CØyø÷ûøkú~ÛêβnAÊÞxt¾HiXq½÷CJM\n¬'v¶ôÿø&ÐÏ®àñ¼ÏM> =ÝöÈ4¸¾
""Kà"tò`®»ßìñÕéN¬°^FÝ,«JcZ/øÐlÞ=£ËB,)$¸XP¡j%%
+E8YÂ7¯·rØ[gMRs²áô`ï±&÷÷ÑÿZ"Å/vù>êÂ<íljõʾêè`©-ÎòÁ~Ìguúì´Û&¬µq·BñHç|/aìz:bYcÙáQU&¦8[Ï
¨
+Ë£> 8%òH,£AIã~ê:mÞ-µhw2r3D *s¨\|ü(rìcM\:[@BkÕ@
+ÂN56^ÀÖ©Ý®²²kÒ;÷jË>¬©A0ë«1!Õ5ÄÁ $°5^ª_dÕ
+TרֱÏ'ªÂÃ!õ.$8I
+" 2 3 Ëûoo\
+òál^CËé¹Î½}C¼_(3îR)êMød×h;ó|o ßÃUVu¹7IM§yi¨%Ç`ç&Ob0VþO¯×ïoB
×óýc^ºCIGܵ"z ÜØmc]
+ó
ª{
"±^®|ËÐ[åf"F1ÄWVÓpÅkOeX`P`/^ÍÇ ;êæ®®ç¦&/7Í!¸ãC- ƤfVÕåö{~U»<y@h!}72 ÜX÷ka· ðú³ÙTÊIjªKnìùïÏô̰¤áaB
¨XPXT;{·ì¼Y[£vCÂûëtÏ#Åë«×wÎpðí;QwѬ¿®Â}Þy¤ëï[AtBzæ2¿RCäw3dÝæMl$RªVC os
òH!FF%Ï×^åÔa_häÝj¬øØwFvY6WwÞµJ+è`3·*ucMÞ9¿ð'P
+Þ>m_ÄÈé,}ñÛ»ÇhÃ^yïàáO¡=ªªº¬îͤãe¸ªª¹¥Ý*ªï!®Æñ½¶k`ydIÇ£¦AÏu'}
+:ã
+I5wêÆ >Ëísö@íï弡ÒB&
+íåx¾_[<svxxÝaÔ ^ÃAe~ÛrÐQR´ièj¬Y^WMwñÒÕofK^yTÅ8HéÁðÐÈ7$ñm¤fõKHÍCq&=Ó¤$¿)+4X@´¥iÙ0=HÀû^~³ßÕö{|î·§É©®QºµFJ9ÙI AM¯q¹"ÇxN&ݸµãTÛ¼h BA@û¡¦)(
T©HXczñËö
+DwW[ÌíàùwÕ
+Z¦ÁJÜ ãàÄ4R'Ê.ù5U2â&ÇʱÚÒDVo«ôÁ¶NN
+vVÎ62Û⹯¶pªª%1`åu6¬eR`ÚTP< ¯{]3:£M¨nâvóÒÛYBÛXÜ(
+Áf
+&J±³¦fB@)3Î'ÃáÞÒNyÌ\Íêè}¸O!$
+ýÎ7©ÂÇ÷7o¥©ãdz >ÇÁ(¼yg]o³ÁÎÍkD4ZLõf@$DÊ
+kÊS|¤;
+½öbÛ@&JÄ` ÀA ²"Dd$A A ,Á NMWP6ÉÕÕZL:Ï-îCêsx¡Ðb N4ãªZ:ÖÊ@6e§·9XSUèF2¢3 ëÙ@¦½÷º±<gOÍ""s°b7È}¢/WxkrÑN®xO¶¢ ÛÈlvamÖ÷´üèÒÕÍW
+om.DQk+
+
3{¹s¡yâ¥t'HI5÷ ¢"`EîvÈfÅ×fÏÕ{¯¥ÍkÒ)äý·´àÎñ3ÄüKÂXYpP|KíæS¤.|ê_zOòqÍD%Ý9×=iKó¡|kWW'
·àæih ªG]ljV÷ݶÿh¾Ihc°s±·66Mq×ÕNy\Ë,¥
+0RN¶NwÎt£*+¥#7¾2¥&æT·HSërL(KâÂ4RP®Ö¸ä:²òñË.°2j
ÀÈX,6h¸ÉáÓ!Ó;:뮳¸lâm>9áî¤}§qXÏ>f÷ûóÁçèdÉ#g2é¤oJÙ-·éÂAÂËHÝÙ9Å6'ÊM "2]<<üp°òÃÕòZI]Y)&Àa\ÃGé7>d°ÎáX üµV#u°.° 3¦{hÿ²5´üú²ÃF^,-UWÇ*O×GS£
+ùn8A3®@ZÖÕ[,JGÎ#¯¡árC²àkÄF[õää@|ZôU3å sw4poª~ð@køèyÒô9q ç&`dRÂÆ6Ñcc|5¾xÃZã^¾Û× ÒÆFKÆd¶f9Õ¼ÜtØ·¬âQ%ÙÜv!&Zm¾XS+ME)mjT(/FÀK®v¡Å-ôÑNÕÙ¨_)= 1;Ìλgm<¡Ì×Bàë%uB9&q9áÍ#ç."O{AÔ¸XÄ.ãrµ5Ú¢ß"ð©VTä`ØïÉٱ촨±RCÖO|^*³Ó®8H¡4vA$AjÓ^\M;æÈppKðÔ]s®¿ZOE#U5e[9¢3T,Gߦ©É
+}ÃD~qÄI§Û;)£êáI
¾ÒðL*WkQ ^¾8(Ão]r-¿
+%xûËåöÕ¸è
+¶öݽ¦´Ns»ÌÏ~z°7º¥P$+®zº·»ZyàKÛºPIbé ÒI£.Y×¢0}cPªF©
+,&c-YÝ~DA1ÃêñÕ¼ë$£vÝ6¬Úßx| ôg9¤ SÆxBw+|¾p3e#8¿9¦®)iÎuÎõEädÈvÓTQT¢NL1¾´ì¯<¡ÓiÀgc< 5 CHJ¤^ÁçPT~©sHE£·FwÍûÀ`o»Ç\ò
+õÕê¸sP)&DFµ¶FÉï¦H,·aTÊZ!=غØsmI'lÏtW1¡C]¿fÖ½#û[l}k¥ñÖöxÓÅxMÄÔDD)6Ö6 :pr^`Ò I¨E[0iºéÞ»eÝô$>}ñüßüþ.çßû³çû?ù)þ¿-k-oÑ4±K$½ÝßûÐ=æoý¨yQ ]y_OSñ[ñndöôÌÌò\cÙ}BBÞä4¡oiËLòÉsؽÝÙðVK×OåëÖg^33<Âã¬øaз¹
+([Úrã<ò\ó/wvB<õâSãÇó:õÜÌÏ0¸Ç«=0èH[d4¡oIËLôÉsȽÝÙõ+'^²_ò}Îó<{yqqf {Ò
½§.13Û%
+éJR±¡¤bÏF£ÙM§\²Ñð],»JF9g¹qyaз¹
+([Úrã=²\±])JV44LYèÒÒpT{)¢´ëÙ¾gHÆyK33Ì.1î²Øp$êCJô¸ÄÏ.y+¥)J¤Óy4²Êd:ÂÜ_ƶãHÆxÊ9æöd `HIÔ-é9q.yJRZɦ,ñic8*=ÅZu1|3ÎYÙÞûhr¤E4--X~X¼Vþi<Þ¯#Ç>?y':°¶ë>ñÓ?:¿±Û£:þ¥Ö´I?y{þ¿âÀóÔÆ¾Ôiìîå]èÜ!^x°¿ÚçÎ2¾yÄuÅñÁ[¹'N:îÂȾÅûiÆ.£í[¸ù82÷¯û"íþ0? þÇ÷@ãúôþ$»unè9þ¾X®ÕáCGsúFÏíxú¤=úfAI½oø>2í 3@?97:UUUUi£Ñ«5¾Ä;HYÉÿâÐØÙÏbNFBáíNæïÜÐÒ¥¦êÀ;9ÿ»ní×~øméauAY3¸]Uk
+]ÛTG]DTíõC ÔmÒ¥y¿S%ê\ÁüaÛv»¤Rà!VYg×IqÈ-Jªë¿cõ HP ±±rQ)þ+|ûÿkYÏ(\sÁ[Üu1I¥åKÁkRÄsýÄN× 0¢²3ðµçH¿}ënÂS¥qÕl¥&fpú@
+¤Y²Ü PQ?R
+Kr cþ£¼6ªÅ×Rúãeå* óÕÚµ\$^È
¶ðaþ½OF±Î¿ Â,̬síDæ7Ãv4Ùç¿`!+»4°AÅEFTCe¬3d®{dF3ªÛý:úg¸íw·Ï×ñy0Ç(iBZDóØÙÁ'RD`°KJH hhI¥$La
+¥Döõ ÷É#B©º\¾É7ÊZ5 Tz7H$Díèûi©÷Ï_úý^ÇÊÌj?¨x³1ÄÉU÷p}o«ß×Uöþl¤`õ{å< PËú}/xÕ$¿?Àà¯ì¿â>:I~4k>/ÒÝ `©ç7; ~F>úµm¥}ëùö×ü½còðñU
+ß¾Ûî娤<$4û!=¤§û¿Z_mýBùíöìáH¡UU6Ø¡rvy©
gãkqµ¤©[³±ì(X?»_[)ÂoI¼åFJ"Jª!RÐx ¯Å ár( Fõ
lYm-±e¶,§Â= }mÏûóì<NÚ
+Þ¡¢¾Z²Ve-D
:)mÛ«ûXb)
=cß0ꣽICUº<~QSôbÚÀ-ÒW TöSB±è³øÒÏ:ù)áìÇÇo»l¥*¨ª¥G´j=
G4²îù¯ïS]RY=ròã`rã.:µ÷+
i)ëu1KÚ½cÀNt }é¨ýÑ: hrÝø
+syõ=uÆÃÕØsÍêÙ$}.
+v$õJ'ÁÙJRdöw[©Nå'7ÙøÒ=´2ªªU=¡¤YC¦X=<ÔKTEÄaß^ Ô%2Ò,àÂIFI`.'!òµj`
HéÙîwoZ pj '¸üøÃ\b»ÜDØÅT*¾Q礤Oø
+ËE»q2¢èGNáhNò´bϹ¥ÁrT2»ÓܰôaåÀ²UHâéÖ.çß±Ý]»/~»hµ1¯8*ß½d
Nu#g
+h¤
Ò|GXgôCÅD;Ì{ü³â¨ <_~1_+?4~¹ðÙZ°ÀSÌu|èÝhK
+¢B
+ÿbDð8)'Àaí!õ5ÏãQR µÔ¢åß¿mó'ô2t9;C"ñ;¾\¢Âv±¯±{òo¤µ="åËÌj
+D*¤åazê^HIZH
Ùû»'Ú ÎÎTI}uèx*Ùñt0
l#ÅÓ·Û|{Þ¡¨µ}ÑØ£é¡§CØï;@¤¡¯4l°÷ &|dé?V"¾OSú઩ÉàñtÈ¿:<;¸«ù±¡êI)ÛQ:ìlõQ§MW·ÆÇò³¥^Ò TÊf¼·<
m¥q²ÛÉ9õqù06º±LÑ
+(.äÍ@Ër6ð[ÒâÕÏ!<½"«¢z~FÜû~×áyЩÁkQ(¦að@B¬$£HG¶FâºkwYÍâÂþÖõ¥ç-6oXÁU]]-X*>0Ç\ñg$©¯ÙiûQ¡ùÑQn¿8P=@,¯00 @0/é=ïQ|ïsÍô©õºWçÑRü>½ñéÄïÅðmz8kIFñ`«lÕ:¶û/ôz,é¿w×òþÝIþd ºAàû¿ç~ªÏ$*ÊR¥Kwoti*N¶Û¿&ìz¯Ò¶VJû/¶û¯ÃñÔ ÆúÎév7cøÛ÷Þ_ï¿>¹0wÏÝò¼Ðû¤·ÿR{V|iüϰ0$ÒÂ3ñT?4C$:2Oî"z3ýû¬²Ë,²ª¥2MãXÖñ JÒÖ
+é(¢)Îþ?ÇXûð
ÁCÆ.
+Ùú#tr×,cÆ7áoÊ´ÛÀ¸À¿ªÎE¸k$¶zSx0ÃQBzíÊ7£W¾FôúD ökèµörøû¬ýF8t
+
+ÜÞxb
+
+± =×èëôvõû¡äRÊ%,Cí´{$,ó!ë?!]i;"Þ¹1Gø;bTÂ*ª¥UUTA@Ã=? ྯlØù:LFcöÇîZmqäõÇëß$sQ?*?`©L[n(ź+ÛNÀe;i¹û$^/)RV\ å#¶Æ9ÿ|ÿò¹þÏg±âåQ>"¡â¸ÏÒ¼X
+fø[ÌW¡l¨×=eäN¯;kù½í½"òW¨vó
þ}PÝl$
+-2©a$ìÉnwfÁä,3b4tîÄuóóêc½&Wõ³Fì²Ù¤¸6I7r£l(eVw
+²¢Z¯<±&èÙ&.Ë%¶Í*LÅ]¯ê
+aæ,¼õ!4mΣ ÐIêÁy¦åflYHþêIRQkÐ
+6oß\»0^t#º:©Á#vô{vËñÓßé¬0ú|¢bLEY§ÈèÞ;ÏöXÃ0Ã
+LñANT
QEOQtnÓäiø+Áê³)¬VWz
KT6G_¯£¢úýJnuI²Ê-_c¾[âÅ$"Ý>ßp³½óæ0ÏI;3²ð<1%¤pT:éì¯[§ÃsèrÐv|¼vPñæÓq#¼×M§êL~
yü1F¸C.`D<p¹î[osLÊrGt;;jî`X
¬ÒIT/:~T^p|ó[¾ªb#¹ª! ChO )Pê&̤û`3*WstñÙ×¥2
¤èt
+RPºs2C·|CJÚ
+á"RëJäH$¡Ð¨å
+G~õÁxzä0¶6k8¶R(rø¤ûòPÌI$UD%TUHETU$%RBU$%TBaSÂ(¸©%TK£8¶£IÌR`w±ÐÊØÈËoÓ¶0Ü®¡Ö
+Òê£H¸Ê(%az¬Òª"
JTbX ªª(/Áª¤¥H¾Y{p<G$y6TP÷8 ³ÆÑÊ^CFY¾ ðd9
wd Óñì2 P¥
+Ji&Ê"ß4Æ{<0ôÃ=²¾zÃÛ^a{ò^) À$,qíäQHòñÚî©ÏÏÞÙ`ä5d"$K0'Û¯Öà,1¢[ó:ÂõÊðtôÙ"IýÔª|ø·Âvmõa pJ7U{aiàÂÁcxÓJ196nm¶"¥b±1.ÙõÝðq¼L¨©R¥UÝò{¸b/û}xò:¶Ýµz¦6Tzm}=ß
+sj(Bh0%¸MQ_6¶I8²°qÒd;Ãjø^ìgF>ÚÇÍì O¦¤4B/I0@IÙãÛcjÙ¬ÓFù¸]mr:1TÂb»J1×v©2»9S*çVÙ&<b½1³
"(, 5³©*
PªÚéñ~wåæõüìl[¬XIò¯qq%PTóÛíÎ.ì'ë,ÉJít
_½r¯ü^k0
²F®ù Ù&1΢÷6ÅyóF´
+ä÷Z~D θ×ÙÇÀ°Èfý/iì2¢ou$úéÉ71)¬)Ìönh}èz~°òCµ¿.mçAfPª ³#À1Ýla<"âpl0sç÷ 2ÒµKÂÕ´¦p ªçk°È[)3ç0hÄ_$Ì
+F+mXÍùð"¹
ÝðØ¼»kûû=Ù Í)JU;|
+Á´PçJ)AWr/Pà[(ýÙ5Ï4|T¡Q Mß4Dð"G®>aSXp_@>ÜW ]æ6Ì=5Ø*e{]ûO0ÍL6ñnúõ"h¾A< DãVþ¤QIj{QEQEQIï`¢M§Çç'ìêûÍàú9
+w!\ÀÆ,´J³29³Ó¸ ¹©Pº<Ç?q«`IÃà® Ö¹¬D¡Â¸zòá'òRg³XvÇXðÓ×yê¾I¾åë4¢´( ÁH"jb°ÐÉ>0± èaIftRH² è'@ü*ÄÃsÛ97Þïô[ô©¦üZ>Ô©²¢ÑQ7%MH7¢o¬¢;BªnþÕEÊ 7 ßçå$¶é·ßlc«ðûü±¾-2UI*³z°x {g¬oõâ4}6]!ë<giåðpÀP;¡¶Iy-íiý¿h¨µURòIÊ
+)µS
Ù^ùýàñ>~Ú}>¹ÙóÃujÒU~£ÝZ¤åWJ-ËßÓ±ï)#Ö>À>89_Úñk"í»kõgd(Pð³HO"D¨²IÝòð~Î_RÓºHl¤¥U¡ZÐc¹S§¸:ÇfC&Ghè)sÓ¬åÂhÕ=FØh&+nÉ#sPÖ&Tãsôª
+Af³4IÛ$êÚ-ÎÙt)H¤ß¤Â¡Ú¨rÇMLÅI(VÌ5¨>úÙUR`ÄZCæÝÿmAÜ.B¥IC¼¡6¥{+
+Å*ºH5W¶!CïGm*h]hëÀPÃË"ìXD©ª b1÷rAèÍHôáRh4R´²$«²KoË´§wXtJQH@ }ôà
+eÀ'×E$4_¦8¯Uá1»2D~?ÔØC¤*I8wµá'4?To½ z£vðëéál󽪱lûó;Ð(ûûÑ& sFõX#sp7¢4`àIKBÒÕHÏd1§¥g³f*Èo\»ñ&ÂëV7tCfBc]tºZe¦v
+FÌUiÛI!ä¡8;¡Q:ÑuQ~¤RuÜ1^
b/ÑQz¾J.ª®ò åo¬ÇgâW=ª)é[¤~¼×FrD±s6&@iè"3ÓØw«9´ÄóÃ4ò.kÔDjï14¬¡2ºÛ+®
ïäÆ"-
+N ^l<²5Bb¯.7òX»Ñ9¸¢o ó'Û
+T¢"~lG}d½ÐÔ¯Õñ 8 Û(Ĺx'eZ]aT-
+²/.öÖ *^
+°°°²Øö.FU¢J¡RT¬jÙU'ìmïûùk
+
+íXsÙ03D}[øå16dVz^Ås©1R1ãXÞ,Ä^)1PNOjUJȯ9¯vð".8 Î &ÞèØ=ÑN¸sÔ÷äg$ÐQdDfÅHta@ðç$Å"ö&¤ÞªÐf8ÔH¼
+¬ªëÇ0VÝ,útE¹yÀßx@¥*býÐéî¼2IÙÝÙ[{ PÙ{HUêÖq
+ÄR;h&7h¨Àß/3'Ï0è
ã8÷¨Gp1Ù%ÞV6[-IH¸F·À;Ó¼ÖI9¨W¼VMüÖîl¼®¡ãÑ
+$ÕµÚEÉ[]ÀSà©Ï+) k°(ǰl¼JK|vªÆ¦êFR`ÁÅ Ñd>qJR¶çMèVB¬¤,,´°²Ç2lÀ¶@5¨,?pM©IâHMDgºP9®Ä"ûåÄä=`:¬Øwúä ´J#¤@L,(5Vaª¤'p¡(©U%Jt¯ãÂ2ÒZsëÉÖ
+¤æ,ìôÿY;Dt¢«E 9^D
+PF('0ySjïy£t1v ]õ+nmʹ7× RqcÄ^&Q="HÈ)¥ØÀ! 2Y()N3{°&5 *DëøWFÑ@Ï8\pôOi#úÛ¶ë]-·a-ÊÉc/订òtÍáBÓí¨`ùoh«ïE6:Å(~^ÖÁVÁ§ÆçByMî'Âè·p6Cæ^URªÎ¾
÷
+x u§!ãy$Fë#q)$TºªÂÖU-nº½MÌäHòYþ|¿D\5)3ÇâVå-DÊÉ%§!åØêÀwóþ.ÈZO%wµ 8Î#¸l©#ÑØ°´P©ALjÒõà0Ùú³¤¦£*RLbZ
+ßB`yedÎ hɺ¼äÜU »µTpåý98HYm+êÛI=#E"t;\¤ÃÑÁ'w9þ$x¬2ó'|ÃDÅ]`ìTn²`¤,Ó×óW¿ÎKYY"uß-.×+ã7¹wnûÆÁ¬Y'Z{ÇDY`%ínö ÂIðrX]³ÉiúHR'1ѽù¤GÙ ÒNÉIõÞóp²sßwàâÌ#µ$fHÊF
+ß]C!òIê]Ð$¨wA)ªÉtKö¢Y1^DµD¤pAùã·f0ÁM]дÞÚê*·i(R>;ÇÏ7TaS«ä
DI$P¨IÓTç$eb÷^É&§íö[8Á!Bë!+
+{UöÚªª;¤YP)xÒ ôª8¸0 ŧºCÜXëÍ
½ÔÙáo-ä´çá$éÔl KU±áÚ«ªÐì2_,Ô
+¸I2rØ´Ilg¢¬JæÉ6#JJ3ïèå4j5 ï¡mÞ1°lèX{öÈp£ÖqH;UëVeRuö¤¤Û:ưcâÿÞfà<ê¥ á9å,(
+ ¾à"ø¹¶*ª$¡)ãN:¢N©2tå:&0>P
+î0Nb8âÀLbHD,d1OpÒC%%¡34ÎrËNi$îÁSbMn²£H¼`½Â" CÀ`È//wg÷í2d
+Ú3qYiy.Q
¹D©';Mo
_ü»çpl/ËJX_-aéiq+;´1,¸´@Ñ|×@ÐN
UÍi¤ßÑ9M@A@ÂcQzkFåÅUE£·^ãTdù¹ÓÜî|@
+é9È
+û$+ĸ1 ðQqä´¢°²?ÅyOá
+7@¼½ÂâL¤1IÔåºeöhKÉ[:³B¤FíÀ6#leô£©µ´0 Ç 7U#ªFÊ+9x7¾NµnÎ5"^ Ù÷'lUÜ#â;±ÃGKèì²á¼Pa%ðXc@¼x'F(ÛXòÌl1e&= (<°ëDm
+"&¤Ô^õz¼uõÛJdH¡¢+ËF N5íkz,:ï¿®ÁÖþÍâfºLÌés×òòBȧi¬¼Û4ìZMIf6lÄÑKÖ¬Eå¯9hãZÔGSS-Ü齬:dkõA7ïÏDKlÏ÷´UÔ`6et¤µób_F
7aK÷ß±ñǬRñOk"Ñ0h656ê!*B!ØñZN|ÝÙ<ÆBʰÆ$È\°^hèyÝ0DT)BT7Ù½¤T3WfÿeÉifXÇcdãɳðýs%TEMÉ&Õå»0yãDÃt*u×]áÆãKt"(å&YbÜ4©DhKTpÈa0LRlä¶àÛ*BR5ÄÆ¤gB¦-4ÑÖ6_:*ÐáÆÚ
+é:
C9cu<æ½#pØ6ÇÔj5¹NGøß.¶ZÛáLÖ/kuÌ´u§ÍÓPèRI ¦°ñÝêá×În÷øwuð£§"`y+<wu$}Ðp¢D<á-#öøúv¹~½] ã[',íìlǺ¯Ola"÷ìxSÑÇË÷С]1ù¢^l¹Î(Åã;jÄ^¤}G pðE"¢Se4٨첨pýÂ$=´
+R¤ª©$£6ø6½5!ÎÝ.=A2¼~?mëâÉMRc®£Z\Ty
+@É ²M!!
+ ¬àEØÁòp{qÒO¥mi õû&»üç¹8¼¢$Í$UIèØq̼¤¢GÏt¬_¿h]ÉØ2Ó?á"ÁHê$X"PEDqSx¦IÛ¾FXÇÕd"pð_plÿPëÙJº`Ç
+õcÏ/E¯l^lÖøQ,±Bpæ#8.ÀØ ¶[1Ñ&É3ýQ6eHPùEì
Pz5=±QĹ;¿çEPÿÅÜN$b,@
\ No newline at end of file
Deleted: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/8em64t-4c2t.tar.gz
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/8em64t-4c2t.tar.gz 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/8em64t-4c2t.tar.gz 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,206 +0,0 @@
- Ö9K ì]moÛ¸î×_A`¿ÌÅNzù&Ê.MÝ´
-&fd{/E¦c¡¶¤+ÉiRì_RGòÄÈð<D£ZHJÉsHõäLðâ´øÛ=+ø§Ä÷pùp^ð©1'ì
-&böyû*Ð*æyd½¹¾In¦Q¼å:å6
-d½ùOó4ÞÞ]ç¡,ò^'ß#TÉÌ=0¢äÏ|ì½A¸ë¬ãò?ü»Á;ÿyøï¿ÅÄ
¢A¥IQ£ÿGá·ó £,D
y&ÑÉß¾ ÏókT$èøâ'Yq Ò#oñ2òÏÃÃJ,}¥õXöËTì²tG'èR8&7ÌUqCôõ7xNÑß?FTÇßSO~:Ï¢YÝÿu5éÿEUüC'MZ&}!Ã$UW¥äOåæõ§òb½z¬xõXÿ)ÖW±oäì¾¾éÒ¾Eg÷YtHð'ôaLϳ¤HÂd~= ÔéÃóÁÉñaï¨ZèÞSÒ½zÆý§Ø~=6x
-ê±£õUê*þ'ßc4·Q(ã,¨ÝHÝx]»6»1¬ÝÈÝ8ªÝÈ7Ò&Õ´Ñqª/±b:ÜçQLÑip/³6×Rô^"©¥(=©ËÁovcU²¡äIU²¡äIU²¡ä¬ÝØLòd\»qäëU¦_¹qÜðåPþüF²³^_3xN£øÛCù*o¢\]¯~¯ÀL¾&ó"oÊ<[Fù}<©e²©æÃ§:Þ«æ¹,E6Ouw\dÉt*³JÜ({Uè:âàFÎd\<=H-ýojmúÎO¾¯ë"T7t¶d±¢;²xx#è¢y^föõèbK&ké¼#Ëw1õÖ¿þËLõ!åßÉp¾8³ìDÜoLK¬OëÃÙ:o¢XÖ®_+-ׯ}Ï[®_ûʶ\¿¶áÛrýZ
¶åúµêjËõkµÔÆëõïÿdð`tuñ]}¬0ý[µ!ÖKdK
-^-
µ2Ú¨¥°ö©S è¸$q½íE|þæ£(ÙÜ$
O¿ë^z=Áõ|ïø=úÝ×Q~Å÷$û¦SÖí®º¤Y'ý¥)eæË2µ«õ±£zìîìUÕÄ~íª"ÛÐÁÝ«¥ÐºÞTC> ^Ö_SÃîMPí©·<G©V¼GGèäÃñæZ9^ß-R¹8{¯tÈú{ÿ¡ï]ÛR-î¥KðGäͰ:ÿfI¸IÀfóD`L ÿ!ù?¨É?LçQ<NºÌcûüaÌ+å¯FIÌWòçóV e.ó<ÉþòNÎne<J²a4R¿>ÉXÕY¶ªV q0¦÷*FÌþEý>üÅÁL>Ý´h?úúW48¿Zi^ÿi«}Ûg>ÿ8P]ã4UÃ-TÉÙç:]âõUã0'åÑzô)úåýAº%ytDwëKÂDõéUDù@:I}BGñ ÂEQL.NçÆé\ÇÞË\ÿw(ïBêÖÿáæÆMåzxu=9ø>^>
-TþêºÝΤRq(Í%*òÍò¥D3¥ò»^#ÊefE¦bntLÂYr«.+ômL p:Îó j¼¦ÍîÐøN%«dÕ?ªþ IJ¯Õû\½%;©{ÂMgêÑcU½ãb¨¨AÏ0Ùx¦ÔY*¯stÒÎd:¼IJcG¢^J¡Q>Ó©z;$s
ÎLKtW¤êUduÉâ 5cªÁå4*ïh\'7É,JõÛ÷zB¼íùËçz©àitëÑéâd0)©ååe¥ð0R}»-Eÿ3â½ÅÛ(+æÁô M¾«~Êìqûîà`µr×V¹ÉæÊÝ[S¹{P¹÷Z¹½·þW¹ék«Ütc妸^¹Õ9¨Ü¯¶r³×V¹ÙæÊM×Tn
-ûõVnþÚ*÷>·¿¦[âCåÞwåîÿaÛ{m{K»¿¦r÷¡r¿Þ[¼¶Ê½¥ÏMÖtKTî×[¹ý×V¹·ô¹ÙÊÍ r¿®ÊmfýÏýg&gví?ê¿~Õÿ{Ìû
-ÉÙeRÓwV`"¨OÑ·÷*æc&å»eÍ© ´§cÞÏÇcõ2c´cd_èæïè){¸ß+ï¹ø¤ÕXuÌQXD·OÙ¨"ø(cNâàY'=âÑej+Å&Ø£?æ³RlEóA5÷+ëØE©Ï¢B^á·ÕØEÙâ$>WÈã³rì³ò³ M=ñüÅ{»×ϲa¾z 2æ«§A4®§òQÊhÏÅU-âåöø"û¥¾á©|ñv~ýx1¼Òmú2µÇR¿Oæq(?ê"æñI/géó{Él§úó®Ì_`ÖãO1
-.Ê{ú²l¿ÍIÂAhómßg=&üÈ«üá-QÑó"zLæñ·Û¸èÓç7²|ãÃùâÓ+Â]=ý5¿9}1ÏÒg§S}Z)ÅIù²nȰP2åË:à?<ýc=+ßfT÷<TÌÍÜnPkÿU
êzÐöö_ÔìÿØ'ÐþÛî#B Q<<Þï©Kx êj(Q¤Æ¹=¬®ôUYµ^qâûHÉ!u]^E·¨ºJ¥K|}¯Ó¢\©D{dyELxJµôa*{ujÇõINá)åñp%C¾úUe®>íyH!áãåE\qUÜ+¯òÕ,¯ñ´QÍ>,J¦z ²zÕW¨(%e¹8õ|Ĩz&$Á¼¿¼T=<VoÈë«F-´¯ÊÑë#ýåUQ\dZ
-ôú྾¦×ª:;ú?àYðÆlù®½ @ @ @ @ i ¾¿& ê÷´÷çªCDé&B8F}í)±úC@¤Ç{Û²8»B%¦îà;¸.¢TwRû¶tÚ9"S\þÎÙ<õ&äá÷õ4 ¿ÉJ®êÿ³êÿßç{Ù¼Ùþ?XPâûR½ÿf°ÿTå¿Ø«ÛzÐ^þÚÇäoävS
-ZÉ_hÿOò·òÓùËë@ÃýßVü
çü üµ;ì*A+ùs¢äïsò·¦ò/´ÜÐØ¤"´¿Òÿèn ÈßZË¿d2
-
ëlä¡Ì7¯ÿÃJ÷WäÏÏaý
-,eðóKþÃù+Y
-åZó¹êzá·àF£Ñ®<vñcZá¿G|ü·Ìuù¯·ÐhÀùU´ç?°þß(ðßiñ¿Mïߨÿaÿw;è¤ÿ?C+ò'ÅKÇÿÃiïÚ/b·þçÕþ?g°ÿÐp×a¼Lÿ7a¿ÿ ¡ÀÀ>ðßa4å+rH³<4÷ìÿWÿÅÿòrà¿ÀüÛhÊÿr¿Û©4òÐoäÿ}R¶Tï ö_h+½= díªA3ù?ÿ¥>øZ¡üG2ç±³ÿϪóÿ0úßç'èãÇÏèä×ËãStöûÑÉ%Âw¬î)x0äÿ<nvò*ÿU ü·Ñ×kXz0püª¿qxß,öóLx ÿÐô.Ãÿzbã<vëÿÿ ðß§}Úç>ÚaÈý¯ÆyìÖÿÆÿ@{§aÈÿòkMó0èÿ3þV at 1ôÿ]ÿûû
-Ê¿cûOmþPhÿ`ý#0ä·öìÕí?àÿeÔ÷Àöã0ùß±ý§6ÿ#`üg:
-Cþwlÿ©ÿúõV@G
«0äÿÞí?ö±ôþ!ÿ;¶ÿÔÇÿ°þËË0â?µ`ÿõ_V`(ÿ½¯ÿ¡°ÿl°ÿPP
-nÀÿÛDÝþã?+ð=&` waÈÿ½¯ÿá ÿаßaò¿cûOÝÿæì@{Z{À&`Âÿû·ÿþ·~!ÿ÷¿þô¿¨W
-Ã0â?¶`ÿa`ÿ±CùwkÿQ½çû¿Âúo[_|8=F/_ÑùÓS¤JpüïØþS³ÿ2ü·èý¹
-Cþwlÿ©ñ_pØÿÑ
-ÿnÃÿÝÚêüõ? üwüߣýg1þ§0ÿkh !ÿ»µÿýþ·Nû¼/|Ú÷ p-ø?Îä¿öøý§Uþë_`ÿ±¶òOâñ¨ME0°ÿùêÈßå³Tv©Áö<´·ÿ±ºþÃãàÿaT¿~Pý΢þgÁÝæ<v÷ÿ«þßaÿ·ò hÜDWüßÂõÿ°ÿ ¿Ó0æt'Æêêá4 F[òØÝÿ¯ÚÿöAÿ[pßmóI&óI2ÝÆ}Ýü¯Îÿ{°ÿ·%ô pÆü/-yp+×Q°íõ¿'Àþo@·Ñÿy£þYp7Ô'ä±ÿµý¿9õßv@ûÚÖ«0åpDÓàz*7ÉÌâd9vÎÿñ*ÿ
çÿ,ûs¨|¾4%Je6N2uRýÚ
W¶ü×~ñ8Ñþô»ïpÆaÿG+ ^_þwmùÇ2,äh¨N4¥Ãnû_}ýþ¿ÀÞ¯n£-ÿ3©þ¶¢¿ ÿ¹úß
-ÿnÃtü¿õ7Éc÷ü_Õÿ3úß
-ãhÜÄËçÿôé¹ÃHn¢Ç.ýOxÿ>V§ÿð0ÿÔQG¿ÏÊ£Ð?ÕÑ{g}^© åÐ>~ß+=AË£Oûåq1¯ ÿÏalÿk9ÿ×Úþþ¿V ónÃÿ¹,òTÊ]®%vó¿êÿÏ|ÿÅþcçó4M²BþZç`ÊÿpíÕþÇ ÿo ÿÝ)ÿGYtÛt Ýü¯~ÿc
-ë¬ ÓèðA¸Ð¸cÿþ¿mõ¿û[øÿº¦ü/&2S½æ/)©ÜßþOåþ
-ØÿÉå&ó¸hG;ÿRöÿÀþkÐò»Æý¿ ´jôWЬýÇb®â)ö°í¿
-´äm[
-Úëâcò·#ùçÑæ»¿7Ñÿ^EþÔýoêMÿ] waÄÿtrG¡
-(ÂÈadETDÉFî´ïÿÿ· ¿Ó0âqvªÿIµÿG=Ö[ÁU# îß®ÂÿSy+§Íóh¯ÿ©OÁÿÃ
-(0ßiñ?L&2Óß] vMìæõûo`àÿaCà2Ìæÿ&A¶X®|§p7ÿyÕþçØÿÑ
-èϰÜeñÿ{pñ0Èó$"º-ß7ÿ£øo=`¿Óx©þéÎ<vñÔæÿ¸úß2øù%ÿá0ø³Âÿñ|v-3ÝÐË@wæaÐÿ`ÿ³À Ë0à?¶àÿ%|ðÿ³#ùwîÿUmÿ)ôÿ,QpÿrFü·áÿü·ðÿrFüïÚÿkÿ·ü·A@à.øoÁÿöÿ·ÐÿnÃÿ6ü¿ÀÿÓ
-ÀÿËmÍÿYðÿõV þ_nÃÿ6ü¿ÿV þ_nã¥úoþ_À+XÊ ü¿Üÿ;÷ÿªÿ¹ýí ÆÿnÃÿÌÊþ_ü¿lÀHþûºýæ Gúàæ0øoÃÿì¿V ö_·aÄûÁøÏ
-`ÿ/·aÄûÁü¯0`¾Ó0â¿
-ÿ/ðÿ¶ÿufóü¿àûïV}h ÿ;÷ÿªêAìÿaÜ?ÆKõÿÞü¿@ÿ[ÁR/òÿ¡ùÂÿûU×sÁàûÏV íÿ@^waÀbÅÿÿ
-É߯þ_Ðÿ³ØÿËmñßÿðß
-ÀÿËmñ¿sÿ¯ºþ÷ÿVpçE6uó
--0â¿
-ÿ/ÿ±ÐÿnÃÿ6ü¿ÀÿÓ
-ÀÿËmÍÿYðÿõV û¹
-#þÛØÿøo þÝÆKõÿÞü¿ÿV°ìÿå&øoãû0ÿo .£ÿi[¯gÐoîÿ¥âÏ9øYASùIL{ÐZþ0ÂAþ6ÐZþÅ$ÁhG×êmÝ4z#íúÿZþ XÿeÐÿwùÿèûá·àF£Ñ®<v÷ÿi
ÿñÁþo`ÿwù&Yί¢=ÿ)|ÿË`ñÛ0ãÞ¿QÿsØÿÕ
-:éÿÃúï?-^:þoâ ´[ÿójÿÃ÷?ì üÜÆËô#÷?þû?Zìÿæ6ò?µ«¿Yá¢Õøý+ù?·ÑÿêO4J#? ÍðÝö_,(öIÙNPõ÷Àþ»´¿z[
lù¸fò6ÿK}ðÿ°Cùd6ÎcgÿUõ?#ðý;8 ?£_/OÑÙïG'ß1ý'`ÈÿyÜ4
-ìä?!Uþ3þ¿V úÄë<ÂÿSõ7·¬ù[Eûù?&8è+ 4½Ë0äÍOîÖÿ5þà¿0Î{¦Ð¸CþÇAü¶ÿÿmb tüOï2kAÿýÏ(½ï2øßò&ö½þì?û¡ü;¶ÿÔæ öß
-6Ø@)8Cþwkÿyöý¯û¬ÿ¶â¸î.ùß±ý§6ÿþÀ`¨Ó0äÇöêø©À Dx¸«0äÿþí?°ÿúNÃÿÛêãã+ @.Ãÿ-·5²ÿø`ÿ±Cùïýìÿeì?à
-èùß±ýGÔúÆVà{Ì@Ü
!ÿ÷¿þô¿À÷?Ü!ÿ;¶ÿÔý¿`þÇå{V8
-Cþïßþúß
-àÿá4ù¿ÿõ? ÿ@½rh ÿ±ûö0·öê×û°ÿ»Î¯N>£Á¯ÇèüËé)Ò?A%¸Cþwlÿ©Ùý¬ znÃÿÛjüö´à¿Û0ä·ö:ÿaý% ÿÝ!ÿ÷nÿý?ì`
-Ó0ä·öRã?ýoöy_ø´»8ügò_FyößßaÿaD
-ú¥TÿèýèÛvçãïNd6¦Ãb%EÑîC`ííSøþË?LæñîO¿h?þçXÀü¿@÷ßm4ÖÿA81ûúcÛï?ßõ0ößÚÉ?Gò®åêoýOÏAþ6`$ÿ<úÑæSлõuÿêþ·õ¦.»0â:¹Ï£Pô7áiQ%¹Ó¾ÿ/<Xÿa°ýÛ0âqvªÿkû*þ?VpGãH pFüÊ[9mG{ýO}ö?+ø?öζ¹mË÷óÚUó¦37I ¤ÔöÔ¦m§ÛÕvâÍÃÎÞÛ·KESÍYÔ÷§¿ %Ùä1uv²øÿª;²(þq C,ÿ´þãì*ÉMüïr Ð4Ьÿºÿ_ÿ±þ
O~·ÚüßU'ãþ@7 E£°Yÿõõß^è#þù<@`1$ýnQ6EEÅiT¦7iùÈZ Âü@ÿ ûÝ<Õþ_GóÆs4é_ìÌÿy>ì?ë:xþ?<"¾WHú-®/Üô ¤l¡ÿÀÿÇ/0h3ýwÌþDÿÿâTÿ½ÇÕÛþJ"üËfHúgÿÂúoÿe7$ý÷ÿõøoè
£¨ÐØIÿñ_XÿÁì¿ÝôÏÿ
øOÿe7´ù?ø/¬ÿ`ñ_vCÒ?GüôÏâ¿ìæ©öoñ_Ð?ë:@üôß{üW}üïë¿XÀøßnúW,ñ_xþ¤úï=þ+Øõÿbþ
"ÌbHúçÈÿÿ/ðÿÚ
-Iÿù¿0þcù¿ì¤ø/Ìÿ² |«!é#þñß,`þ×nhóûÿ
-\è÷EÀbHúï=þ«nÿ©ÿðO«yªýßWüì?ë:xRü×dFä;
¤ÿÞã¿êë¿=Ýþ90þ×^ú,ñ_xþ'¤úgÈÿ
þÈÿe7$ýsÄAÿ, þËnHúï=þk×þÐ?'³¢Ì±i¾ÑXIÿñ_ÿaößnHúçÿBü'ÿ²ÚüCþ/¬ÿ`ù¿ì¤ü_Ð?0ÿvóTû¿·ü_Ð?ë:@þ/;!éãùÿgAHd µvú÷»|maÞ>þKüE2Íâ¿h[ÿe6ϦÙå-åFè\ÿR(Óþ£þ÷Oçú/¯ò$ôB_ËVW¤[ÿßÔ¿§Bäb¡þ¿Dù÷JgýßÅþÍ£østÒqÓ9ûÿ²¦_÷ àÿ·Îú³¼æ7é®(øÿYþí¦ÿ.½RÿßõÿÇB/ý¬ÿþnyêø¿M P³ý÷êýùßxÏ}h×bfÿ[
ÿQôoºÐ?Èÿf7mõÍL¨?íFáA§ñ¿~Aÿÿí¦þõ?éxâ Âý¿n ÝPTínÿ?]ë__2éø¸võ¿5ÿ+Qÿ<ëqës4öÿUÝþ+ø^8oÞüê¼ýx|êýãõÉGÇýª\ô¬¨ÿE]¶
-4ê_ºþ@þg?~I K!êªÿŬùÛ¤ûü
-<ØD Ko3DýéuûÉÀfû¿£ýó ¼¾êB
-|ÌÚQÿ³¨OýoåÿÁøC< Òjúg_¼í9ýÿÒEÿßfHúïøÿGÂÿñþ{öÿìÌÿ
-<ÿü?0
-@Ô¿þçü?XÿÍð}$´¢þ{öÿìÌÿ þ
Ô
-VCÔ¿þ7ÿç¿¡ÃÁmõ¿ÿò¿°p·¯Õõß³ÿgwüïaüÏpá ²þ%ÿÏÿfXÿû_ÿü_,<àÿ0
-v@ÔÏþ`×ÿñ¾øÐº½õ¿ÿõ?°ÿ,àùvCÔÏëvã¿0ÿÃú}ýÐRúß¿ÿö
CÄX
-Qÿû_ÿûÏÂèßjHúwü?þõ߯ÿGîÆÿ!ÿ;çNNÃwïów§§y`Dý÷ìÿÙñÿ*ñ¿, ÷g7Dý÷ìÿÙÑ¿yþþí¨ÿ×ÿìÆyxþпÝõ¿ÿÖÿ²pÀjúï×ÿ#vô¯`ÿyðäС"ÄJ:è'ÿÜãó6õ¯ßÁÿÃB×úÏfãä:»Üÿ_¨Èõ_D×sóØQ®;ÃTðãϬ¯ÿð=Äð Íåé·~ô?º¾>|æþ=þ;P.æÿY«*@`'}éÿåÖjýcþñ[
-Yÿéå,ËÑLM³hüÈ9ûÿuÿ_à°ÿ,@ûvCÖÿb>*¯ò¤¸Ê¦ißЬÿúü¿üßLÐ X
-Yÿ°nÑE=.îöß$ôÏäo7]õ_ÄQ5꿾Ì6çhÔ¿¨û<
õß<È¡1`/TýG7Q:.¦Éè2»IòYö8çÿ¼ºþßGüëþSý¾y'Î<É'Y®7ê¿Ñ.ü§«þMàl ÿNöÿqÿß®ý÷ÿáØ{éªÿh2Iâ2ô¶rhöÿí®ÿèÿ³°_»éªÿ<1K;É¢/ýgú·êø=êosæù¿zü§ØÖã4vòôù?³yÌâ4yHMö_xuý®Bþ/Vóÿ~
-ª×p¨ª×À¼Õ¯þês5ôªWêUÈyá_½Y½rX½.ç0ø/Ùÿ×qþ¯³ÿñ¿,`þÏn¨ú/²'ISè_E³þëñÿÂó_xø·Å¬XÌçY^&ã¿£°ªþãE¾Wÿòÿò ûo7Týóô¦m fý×ÿí¹ëXâyúbU¹hìÿÓ1þ·süò³ø_»i«ÿò*ɯ£©Yóå4Ùoþ'åøäÚ?äú³Å¬lwîñ ýg-¿Ý´îÿEñU§Fví¿H7§?®ï"ÿÝê?¯²ëmÐÝþÝ'Eýs@ªÿ"ý³}ö÷6ö¿>ÿ#}Øôþ
-] {!é~u[¤±
-hÁ$£yifj§{ÿ?ð±þñ[
-Iÿåí¼Wû¿3ÿ+}äãáÓ,¤ ¿m
¤ÿ
irLÛ£»ý¡Dþ$o5$ýÇÙUç¿. MÓÍúßÉÿ(äc!ðÐ Ømþï*ÊkÀuP4zõïÕýaõ,çXn3$ýnQ6EEÅiT¦7iùȳà óRAÿ, ~«yªý¿æçhÒ¿ØÿôaÿyX×Áó§ü!1ð½BÒÿlq}ä¦`6ÐÿàÿãÁЮÍôï2Äáù¿Lê¿÷ø¯zû/ÑÿcBIÙIÿñ_Ð?ÿ²þûÿúFüwý³p {!é!þK`ý°ÿvCÒ?Güâ?Y@üÝÐæÿâ¿°þÄÙ
-Iÿñ_Ð?ÿ²§Úÿ½ÅAÿ,¬ë ñ_vBÒïñ_õñ¿H¬ÿbã»!è_±äÿÿâTÿ½ÇÕÿ"ýó¿,Ä`CÒ?Güü¿,Àÿk7$ýsäÿÂøäÿ²þ9òaþå[
-Iÿñ_ÿfó¿vCÿcÿò Ü! !é¿÷ø¯ºý¤BþD ùÛÌSíÿÞâ¿`ÿYX×Áâ¿&4"ß)$ý÷ÿµóü÷@Ð?ÆÿñÚAÿ%ÿWø/HõÏÿý?ÿËnHúçÿþY@üÝôß{ü×®ý¡NfE/bÓ|£%°þ9òaþØ»!é#þñ, þËnhóñ_XÿÁòÙ
-Iÿù¿ `þíæ©öoñ_Ð?ë:@þ/;!éãùÿgAHd µúÏffï çè¤þE
-áÿãë¿ì¦ýïòo£ðöñ®Ñ¿ç!ÿmë¿ÌæÙ4»¼¥ÜÝê¿ÿUÏÿe¡sýWyGEz¡¯Öe«+Bÿ+ää¡ñÿ cïÎú¿ýGñçè2¥ã¦s4÷ÿëóÿ¾@þ7ÿc7õgyÍoÒ]ÿù@þ7»¡é¿KïÔÿw}Äÿ±ÐKÿù¾[:þo Ølÿëþ?ßÈÿÄzùyýoþKÑ¿pñüàÿ³¶úJQxÐzü¯?ÕôÏ æÿì¦þõ?éxâ Âý¿n ÝPTí®ÿÿwÿt}µÊ¤c8H»úßÿ¨õ?N¸õ9ûÿª>ÿ¯âyx}x~â¼yó«sòöãñ©sö×'÷«rÑ/°¢þEtÙz4Ш!êúW.ò°à»Aà*ðX
-QÿSýï,~dÍï&Ýçÿ@ÿ Þfú/ÓëöÍöGÿúçAyÂͪ+36BÔÿ,êSÿ;ù¿0þçâVCÔÿ<ûämÏAèÿ+ñ,Hý!é¿ã`Hþþõß³ÿggþWH´ÿ,<àÿQ°¢þûõÿ¸ÁNÿO@ÿ,Þ BìÖBÔÏþù ã?R7Z
-Qÿ=ûvûÿ
-ñ,¨@úº$ðBÔÿþý?ÈÿÂÂ!ܾVCÔÏþ×ÿõ_, !é_2øÿbýïýò±ðÿGÂ(ØQÿ=ûÂ]ÿôÏ
-ñ0k!êÿë ðü»!ê¿gÿÏnÿþ_7P¾èèØ Qÿû÷ÿÀþ³pø«!êÿëàÿaA_r4 CÒ¿»ÿOÂÿñþûõÿÈù_üï<:9:=vß½?vÎß:æ-L-õß³ÿggþG¹ÈÿÀzvCÔÏþýÿçú·¢þûõÿìê_(<ÿ
èßnúß¿ÿþ_Ñ X
-QÿýúÄþì?zà C¬ ¶úäÉ?Iç¨ü?aØàÿ1ȾRç? óüù²çû-,×ëç^%ùu4WyVÝÖÝÿ§\ÿÿßþ!×-fÍ~è>þ÷ô+ì?èþÛMkûÅW´§?v}þcõüWßøÿÐþïnõÎÆÉ׫¿»ÚSÿ"}Ô?¤ú/Ò?»<
-ºÙþûµú~øoôþ
-] {!é~u[¤±
-gÂæQ^¦e=¨ný£ÿÀGþ/þËnHú/oç½ÚQïÿi«ù>ÍÒIÑ
-X
-IÿÓä&¶?Gwû/Cø°üÓnHú³«$7ñ¿Ë@Ót@³þUMÿ~ ÿËBÄVCÿ»òd<Òè hô6ëß«é߬ÿfA=Ñ XIÿ_¢ÛbMFQQdqéMZ>²0ÿ'ôϲ¿ÙÍSíÿu4o<GþÅÎüçÃþó°®çOùcVä{
¤ÿÙâú"ÉM HÊfQúÿü<ø36CÐÇìOÄø/ij@ªÿÞã¿êí¿Dÿ %þe3$ýsÄAÿ, þËnHúï;þëñß!ôÏÂQTFhì
¤ø/¬ÿ`ößnHúçÿBü'ÿ²Úüßþã¿|¬ÿ`ñ_vCÒ?CüþY@äÝ<Õþï+þöu þËNHúï=þ«>þ÷õ_,`üo7ý«ýÆeüÿÇ©þ{ÿ
-vã¿0ÿËÂ@f1$ýsÄÁÿËü¿vCÒ?Gþ/ÿX@þ/»!é#þó¿,((ßjHúgÿBþ0ÿk7´ù?ü_xþ'îÄÙIÿ½ÇÕí ò° Èßfjÿ÷ÿö
u<)þk2A#òBÒïñ_õõß^ ñüOÿâµþKþ/<ÿRýsäÿBÿäÿ²þ9â¿ ÿe7$ý÷ÿµkÿCè
YQæØ4ßh ,¤ø/Ìÿ° ûo7$ýsäÿBü'ÿ²ÚüCþ/¬ÿ`ù¿ì¤ü_Ð?0ÿvóTû¿·ü_Ð?ë:@þ/;!éãùÿgAHh×fÚé?O®Q_÷
·ÿR¡Ö¿+Íó_ÿµ:Ô¼ÈódVÆyzäÎÑØþY«%àÿå!çéÈT/¬ôiùϲ|gíÎÑÜÿkú÷¤ü_,L£ñ8É!~[i¡ÿyZ÷ôstÿ-ûÏäëÿí¦þ³¢H/¦]">·iÖ¿_׿Rèÿ³à¾> {i×ÿï¼äoNó?fþWBþwÚÖͳivyK¹:׿Ê<ÿõ¿:×y'Ñxdzéì²Õi²ÿßðÿ*äÿç¡æÉ¥ý!Bà{¥³þïÖ~ΣøstÒqÓ9ûÿõø/_ ÿ7Xÿa7õgyÍoÒ]ÿùþí¦ÿ.½Rÿßõ°þ
^úÿÈÿ÷ÝòÔñ`Íö¿ÿé{ùYÏ1ýo3O³ÿRô/\Äÿ° ÿ¿Ý´Õ63©hç0
-:ÿÝ@¡ÿÏÆÿvÓVÿOYbÞìÿué¢j'¤pMüü¿û§kýë«U&ªÛmЮþ·æeøõ?N¸õ9ûÿªnÿÀúO^8oÞüê¼ýx|êýãõÉGÇýª\ô¬¨ÿE]¶
-4ê_ºþü,(¨;BîvBÔÿTÿ;Éù´I÷ù?x°ÿ, Þfú/ÓëöÍöGÿúçAùBxJ¤Lp6BÔÿ,êSÿ;ù1þçâPAö6CÔÿ<ûÒ>¡ÿ¯àÿãAºèÿÛIÿü?>ü?ë¿gÿÏÎü¯hÿYxÀÿ£` Dý÷ëÿÙyþ»R.Ö³à ,Þ¶¢þ{öÿìÌÿ þ õ[
-Qÿ=ûêã?%Ö° tÍø[!êïþü/,bÕõß³ÿgwü¯0þgA¸p ÙIÿÁÿÀÿñþ÷¿þù¿XxÀÿ#aì¨ÿý?Á®ÿã?TXüc1Dýïýì?xþ«Ýõ¿ÿÖÿ²0Â@k!êÿë`ÿY8ë×júßÿúøXÐ
-Åôï2ø<ø8 Ö¿þîöÿÿ
ÃóO'G§ÇÎá»÷ÇÎù»ÓSǼ
I°¢þ{öÿìøü, ÷g7Dý÷ìÿÙÑù_ »!ê¿_ÿÏ®þ±þ èßnúßÿú¬ÿeá
-Õõ߯ÿGìè_ÁþóàÉ¡7B9Äc ¤þ'yòOÒ9*ÿO6ø¯¤æùOÂäÿ/{þ±ßÂrý·~þçU_GÓQygeÙíA`ÝýÊxþäú³Å¬ùѯÝÇÿ`þtÿí¦µýâ+ÚÓ»>ÿ±zþ«¯´ÿt«ÿt6N¾v\ýM±ÿ"êRýé]Ýlÿëù?¤ûϾҿ¡`/$ýϯn4Ö£óLøÑ<ÊË´L³µÓ½ÿøXÿÁÒÙ
-Iÿåí¼Wû¿³þS[%Äÿ°ðiNÒdVÀRHú&7É´ý9ºÛ
-øÿXÀòO»!é?ήÜÄÿ. MÓÍú¯ûÿý@bý'ûj5´ù¿«(OÆ#ýn F/`³þë뿽ÐGüâ9l¤ÿ/Ñm1Ê&£¨(²8Êô&-YDÿúgÙßìæ©öÿ:7£IÿbgþÏóaÿyX×Áó§üG~·ô?[\_$¹éIÙ,
-Bÿ?ÿ_@»6CÐÇìOÄø/ø/Hõß{üW½ýèÿ1¡$¿l¤ø/¬ÿæñ_vCÒßñ_ßÿþY8ÊM½ôÏÿ
õ,ÀþÛ
-Iÿñ_ÿdñ_vCÿcÿÂúÿe7$ýsÄAÿ, þËnjÿ÷ÿý³°®ÄÙ Iÿ½ÇÕÇÿ^ °þÿí Åÿ
çÿ±@ªÿÞã¿]ÿ/æY!"À,¤ü_ðÿ² ÿ¯ÝôÏÿã?ÿËnHúçÿÂü/
-Ê·þ9â¿ÿÍæí6ÿÇÿBÿ¸/B4 CÒïñ_uûH
ü, ò·§Úÿ½ÅÁþ³°®'ÅM&hD¾SHúï=þ«¾þÛ¤þ90þ×^ú,ñ_xþ'¤úçÈÿ
þÈÿe7$ýsäÿþY@üÝôß{ü×®ý NfE/bÓ|£%°þ9â¿0ÿÃì¿ÝôÏÿ
øOÿe7´ù?ø/¬ÿ`ù¿ì¤ü_Ð?0ÿvóTû¿·ø/è
u ÿôÏðüGøÿx@m¦þ½®!_[
·ÿÑ¥<O!þ¶õ_fól]ÞRnÎõ/
2í?êÿt®ÿò*O¢ñ¨H/ôÕºluEºõÿMý{*Dþ'zéÿx¿W:ëÿ.öoÅ£ËdÎÑÜÿ5ýû"DþG \»é¬ÿ8ËÛh~îúÿú·þ»ôþIý×Gü½ôÿ±þû»å©ãÿ6@Íöß«÷ÿ=äãÁ} yýoþGÑ¿páÿcùßì¦þ³ õ§Ã(<è4þ×/èÿ³ù?»i«ýO:&¤8 £ðfÿ¯H7U;!µùÿ
®õ¯¯Vt|\»úßÿ¨õ?N¸õ9ûÿªnÿ@ü?¯ÏO7o~uNÞ~<>uÎþñúä£ã~UðØQÿ"ºl=hÔ¿uý+üÏ,n8ðÜc)DýOõ¿³ø5tÿSûÏ`ém¨ÿ2½n?Ølÿwô/ '¯¡pÀFúE}ê+ÿÆÿ¢ço5Dýϳ/IÞöþ¿ÿé¢ÿo3$ýw|Éÿ#àÿáXÿ=ûvæÿÃÃþK ê¿_ÿîú°þá©P!µõß³ÿggþñL(¤n³¢þ{öÿìÆyÈÿÂP/·¢þ÷ïÿAÿ
CßjúïÙÿãïú`ÿY.@6CÒ¿dðÿàùß,ëÿëÿ
ü?FÁúïÙÿÀÿóßÄPJSÀöBÔÿþ×ÿÀþ³çØ
-Qÿ=ûvã¿0ÿÃøC?;!êÿþØÑù·¢þ÷¿þö}ÉÑ XIÿ.ÿÇ
ÿbý÷ëÿ;ñÿùßy8<ÿtrtzì¾{ì¿;=uÌ[[ ê¿gÿÏÿW¹ÈÿÀzvCÔÏþýÇÀCÿ@ÿvCÔ¿þ]ý
ç¿° ý
Û
-Qÿû÷ÿ`ý/h ¬¨ÿ~ý?bGÿ
-öO½aÊ!Ò¿ZIýOòä{|þÓ¦þ
y$4ü?tÿl6N®£Ù¸Ë@ðÿ¡úç\ÿEt=7ÏåºCðø9L?þüÇúúßCüÒ\~~kéGÿ£ëèëÃçhîÿ×ã¿åbþ±ª4vÒþQaý§Ö?æÿX¿Õõ^β<ÍtéÑ4Æ£¹ÿ_÷ÿnûÏ´o7dý/æ£ò*O«lúö
-Íú¯ÏÿûJ`üÏÂ
-Õõ_y è&]¤ÑãÂènÿý@Bÿ,@þvÓUÿEU£þëèëÈlhsFýºÿÇSXÿÍÊ3 öBÕt¥Óèb.³$e£qþÏ«ë?ð=Äÿ°°îÏ9ÕïGqâÌ|åz£þíÂÿpºêßÄÎ&ðïdÿ÷ÿíÚùYþ0ý·®ú&$.ñHoh+fÿßîú?þ?o5]õ'féo'ùSôï
°ÿ,@ÿvCÿ¯GýmÎÑ<ÿWÿóT ûÏÂzüfÀN>ÿg6/Y&É£ÉþdÏÛú]
ü_,¬æÿýT¯áPU¯y«_ýÕçjèU¯2Õ«ó*C¿z²z
-å°z]Î+`ñ_²ÿ¯ãü_gÿâYÀüÝPõ_$e1O¦Ð¿fý×ãÿ=
ç¿ððoY±Ï³¼LÆG+`TýÇ|¯þ?äÿåößn¨úçéMÛ@Íú¯?ÿÛs%Öÿ°ÅóôŪrÑØ9þ§cüoçøäÿfñ¿vÓVÿåU_GS³æ/+Ëi²ßüOÊ5ñÿÈÿ´ÈõgYÙîÝã?<7@ûÏZ~»iÝÿâ«NþíÚ7n(ÌôàÏwÿ
nõÎÆÉWÙõ6ènÿE¨Hõ_¤¶ÏþÞÆþ×ç¤ûϾҿ¡`/$ýϯn4Ö£-d4ò2-ÓìAítïÿ>Öó ~«!鿼÷jÿwæ¥üo<|¥4Aø·ô?Mniûst·ÿ2ÈÿÀò¤ÿ8»Jróü×å i: Yÿ;ù
üo,X j5´ù¿«(_®×
-@ÑèlÖ¿W÷ÿ
Ö°à>G`3$ýnQ6EEÅiT¦7iùȳà óRAÿ, ~«yªý¿æçhÒ¿ØÿôaÿyX×Áó§ü!àEø^!鶸¾HrÓ0Ë@ÏAèÿðÿñàÌ ÚAÿ.KüâÿX Õïñ_õö_¢ÿÇÿ²
þ9â¿ 0r³þûÿúFüwý³p {!é#þë?Xý·þâ¿$â?Y@üÝÐæÿâ¿°þÄÙ
-Iÿñ_Ð?ÿ²§Úÿ½ÅAÿ,¬ë ñ_vBÒïñ_õñ¿H¬ÿbã»!è_1Ä
zâ¿ Õïñ_õç¿H?Àü/1DÅôÏÿÿ/¹Ù
-Iÿù¿0þcù¿ì¤ø/<ÿå[
-Iÿù¿ÿÍæí6ÿÇÿ¥ Ü! !é¿÷ø¯ºý¤BþD ùÛÌSíÿÞâ¿`ÿYX×Áâ¿&4"ß)$ý÷ÿµóü÷@Ð?ÆÿñÚAÿ%ÿWø/HõÏÿý?ÿËnHúçÿþY@üÝôß{ü×®ý¡NfE/bÓ|£%°þ9òaþØ»!é#þñ, þËnhóñ_XÿÁòÙ
-Iÿù¿ ~»yªýß[üôϺÿËNHúçxþ#æÿY@m¦
þüñ¨¸.Góì}ݤ³ËZ0
-ÚöÿU¨õ¯<äÿçÁ
ú¦ýïüÈ×-Âã?Ý@º¡Þ.BOwÿÉ@Ûú/³y6Í.o)7B»ú_÷ÿ\ÿ«DýsйþË«<tw ½¶ítÿú÷Tõ,`üo7õû;âÏÑe2JÇMçhÿËþ} þ(×n:ë?Îò6ߤ»þ%ÿÇÆÿvCÓÞ?©ÿïzÈÿÌB/ýäønyêø¿M `³ý÷êýÏÿáñvó4ûß*ü¢á"ÿ+Èÿh7mõ¯ÿIÇÓä4
-oíÿ3Û¥~ÂÿÃA×ú×W«L:>®]ýoÍÿÈ ùX Öÿ8)âÖçh´ÿª>ÿ§ÿÀÃëÃóçÍ_·O³¼>ùè¸_æí¨ÿE]¶NÒ¨!êúW.âYP¾?p@°¥õ?ÕÿÎâGÖümÒ}ü¯ÌôÏ`ém¨ÿ2½n¬Ùþïè_@ÿ<Èp¨[1P
-i m¨ÿYÔ§þ·òÿ`üÏÉ! i5DýW+ÛÐÿW
-ñ?,Hý!é¿ã Hþþõß³ÿggþW´ÿ,<àÿQ°¢þûõÿl=ÿkåÿÁúO¤Px¨Åõß³ÿggþ'ÀøLûÚ
-Qÿ=ûêã?%â¿YÕà1à¶BÔÿÞý?xþH a5Dý÷ìÿÙÿ+ÿY0ö-½ô/ü?>ü?ëïëòÿ°ðÿGÂ(ØQÿû÷ÿ`þ
Àó±öÇbúßûúûÏÿa7Dýïßÿõ¿,¨ÁP<ôöm
¨ÿýû`ÿY8DüÕõ¿ÿõ?ðÿ° /9 !é¿ããÀHþÿÄúï×ÿ#ÃÝõßÈÿÌÂáù§£ÓcçðÝûcçüÝé©cÞÂ$ØQÿ=ûvü¿ÊEþÐû³¢þ{öÿìè?Àü/пÝõ߯ÿgWÿXÿÃôo7Dýïßÿø/Ñ X
-QÿýúÄþì?zà CítÐÿ$Oþ¹Çç?mê_þºÖ6'×ÑlÜåF øÿÐEýs@®ÿ"ºg@rÝ!xü¦GûÿÁÎó_ÿÁ4¦ßZúÑÿè:úúð9ûÿõü1ÿÏXU ;éKÿ(§Åü_Ýþkýcþñ[
-YÿéåÌ< ~¦K¦Y4~äÍýÿºÿ/pØ }»!ë1WyR\eÓÇ´ohÖ}þßGþo&h ¬¬ÿÊXD7Éè"Fwûïúgò·®ú/â¨õ_G_GfCs4ê'ÿ§°þ9!f ì
ªÿè&J§ÑÅ4]f7I>ËGãüW×à{ÿaaÝsªß7âÄ'ù$ËõFý7Ú
ÿátÕ¿M23áßÉþwËÿä)
üÿ,ÀþÛKWýGIÉx¤7´Cwý«À
þYpáH·®úϳô·ü)ú÷øÿYþí:þ_úÛ£yþ¯ÿ§ÿÂüëñ? ;yúüÙ¼Hfq<$&û/¼ºþCW!ÿ«ùG¿Õk8TÕk`ÞêWõ¹zÕ«Dõ*äÀ¼áЯ^¬^C9¬^ó
-@üìÿë8ÿ×Ùÿþ?ÿ³ªþ¤,æIÒúWѬÿzü¿§ðüþm1+óyÉøïh¬ªÿxïÕÿü¿<ÀþÛ
-Uÿã<½i¨Yÿõç?z&%ôÏ@ÏÓ«ÊE#`äøñ¿]í¿üß, þ×nÚ꿼JòëhjÖüee9MöÿI¹&þùö¹þãl1+Û£±ýßYÿå¹ÚÐòÛMëþ__ujô7h×þ»tC±Ô¿ë»í?Ýê?¯²ëmÐÝþ ¨Hõ_¤¶ÏþÞÆþ×ç¤ûϾҿ¡`/$ýϯn4Ö£-d4ò2-ÓìAítïÿ>Öó ~«!鿼÷jÿ7çUXÙÿþ_>ÍÒI üÛVHú&7É´ý9ºÛ
-ä`ABùVCÒ]%¹yþër Ð4ЬÿüDþ7
-ÍÐæÿ®¢|¹\7 E£°Yÿ^Ýÿg¦¡Üçh l¤ÿ/Ñm1Ê&£¨(²8Êô&-y<aþOJè
Ôo5Oµÿ×ѼñMú»ñ>ì?ë:xþ?¼ß+$ýÏ×Inz fhã9ýÿ þ?|@!èßÝküWåÿA þRý÷ÿåíøñü/DøÍô¿Ïø¯Jÿ/¡0r³þûÿÚÿ^ÇAÿ,Ee&À^Húßgü×Rÿ¡@þ`ÿí¤ÿ}ÆUú×ìÿbñ_vCÿÛcüW¥/°þÄÙ
-IÿûÿZÎÿIäÿçñ_vóTûß{ü×Òþû°ÿ<¬ë ñ_vBÒïñ_õñ¿H¬ÿdã»!è_±äÿRÿâTÿ½ÇÕÿb £ýç` ³þòIøXÀÈÍnHúßgþ¯µýGþÿËnHúçÈÿ
øOo5$ýsäÿÂú0ÿk7´ù?ü_ÿfÁ}¢°þ{ÿªÛÿ@ D ùÛÌSíÿÞòÁþ³°®'ÅM&hD¾SHúï=þkçùïDü'ÆÿñÚAÿ%ÿÿÌ©þ9òÁÿËòÙ
-Iÿù¿ ÿe7$ý÷ÿµkÿCè
YQæØ4ßh ,¤ü_ðÿ° ûo7$ýsäÿÂü/ÿ²ÚüCþ/¬ÿdù¿ì¤ü_Ð?P¿Ý<Õþï-ÿôϺÿËNHúßçó×ù¿0ÿÏÈ j3-ô_håG×ñh}Ѫ/¢tvÙE
-FáA§þ¿xþ.Ôo5íìØ5äs£ðöùÿä_t)ÏCü'më¿ÌæÙ4»¼¥Üë_
-%ÿ
Îõ_^åI4éÅ´m7 Óø¿ªO
ÈÿÀB/ãÿÆß+õû;âÏÑe2JÇMçhÿËþ}"þÌÜÙMgýÇYÞFót׿4Ë@¡ÿÍnhúïÒû'õÿ]äà¡þ?ò?|·<uüß& °Ùþ{õþ¿øÔsä³§ÙÿVá¿ýäæùí¦þ³YêC;Qxkÿ¥ýþ?ÿ³¶ú×ÿ¤ãiB0
-oöÿºtCQµR¸a ÿ/]ë__2éøÈvõ¿5ÿ+ÿbý"n}Æþ¿ªÛ%°þ×ç'Î7¿:'o?:gÿx}òÑq¿*ÄÚQÿ"ºl=hÔ¿uý+ø|á Ë -
¨ÿ©þw?²æwîó*ðaÿY,½Íõ_¦×í'íÿþôÏRCßÓÍ?¢°¢þgQúßzþÆÿ" Ðjú¯·=¡ÿ¯àÿãAºèÿÛIÿ Còÿøðÿp@¬ÿý?;ó¿B¢ýgáÿ%õ߯ÿÇ
-vý?Ð?CObæÇbúïÙÿ³3ÿøO&þi5Dý÷ìÿÙíÿ{ÿ`!áP®VÀNúß»ÿG"ÿX b5Dý÷ìÿñwý?ÈÿÆpá ²þ%ÿë¿X Öÿþ×ÿ ÿø$õß³ÿ'ÜéÿIèå*_»õ¿ÿõ?Ð?xþÝõß³ÿg·ÿÿ/"=é)t,
¨ÿý¯ÿýgáñVCÔÿþ×ÿÀÿþäh ,¤ÁÿãÁÿñþûõÿÈù_üï<:9:=vß½?vÎß:æ-L-õß³ÿggþG ä`½?»!ê¿gÿÏþÄÿó ýÛ
-Qÿýúvõ/<<ÿ
èßnúßÿúøY8D`5Dý÷ëÿ;úW°ÿ<xrè
-P±ØJ:è'ÿÜãó6õ¯ßÁÿÃB×úÏfãä:»Üÿ_è
-Ô?äú/¢ë¹yì(×ÇÏa*øñç?Öóùâ?xæòÃô[K?ú]G_>Gsÿ¿ÿ'P.æÿY«*@`'}éÿåòjýcþñ[
-Yÿéå,ËÑLM³hüÈ9ûÿuÿ_à°ÿ,@ûvCÖÿb>*¯ò¤¸Ê¦ißЬÿúü¿¯Æÿ,Ð X
-Yÿ°nÑE=.îöß$ôÏäo7]õ_ÄQ5꿾Ì6çhÔ¿¨û<
õß<È¡1`/TýG7Q:.¦Éè2»IòYö8çÿ¼ºþßGüëþSý¾y'Î<É'Y®7ê¿Ñ.ü§«þMàl ÿNöÿqÿß®ý÷ÿáØ{éªÿh2Iâ2ô¶rhöÿí®ÿCþWB(ßjºê?OÌÒßNò§èßaÿYþí:þ_úÛ£yþ¯ÿç©ö
õøÍ<}þÏl^$³8MGý^]ÿ¡ë!ÿ«ùG¿Õk8TÕk`ÞêWõ¹zÕ«Dõ*äÀ¼áЯ^¬^C9¬^ó
-@üìÿë8ÿ×Õÿõÿ<`þÏn¨ú/²'ISè_E³þëñÿæ/è[ÌÅ|åe2þ;Zë ê?^ä{õÿ!ÿ/°ÿvCÕÿ8OoÚf jÖýùßþúç çéU墰rüOÇøß®ößGþoÿk7mõ_^%ùu45kþ²²&ûÍÿ¤\ÿüOû\ÿq¶íÎÑ=þÃsC´ÿ, å·Öý¿(¾êÔèoЮýw©Uxúséúí?Ýê?¯²ëmÐÝþÐU¨Hõ_¤¶ÏþÞÆþ×ç¤ûÏôßаþçW·EëÑL2Gyiö vº÷ÿë¿y¿Õô_ÞÎ{µÿ;ó¿ÚþÃÿçY:IÛ
-IÿÓä&¶?Gwû/Cü,H(ßjHú³«$7Ï] ¦õ¿ÿ1PÈÿÆBà¡°ÚüßU/×ë hô6ëß«ûÿ ë?XPϱÜfHúÿÝ£l2"Ó¨LoÒògÁæÿ¤þY@ýVóTûÍÏѤ±ÿéÃþó°®çOùcVä{
¤ÿÙâú"ÉMÀ,m<¡ÿÀÿÇ/0h3ý»,ñ_xþ/¤úï=þ«ÞþKôÿPá_6CÒ?Cüòÿðø/»!é¿ïø¯oÅCÿ,Ee&À^HúçÿÂú`ÿí¤ø/IJø/»¡Íÿ1Äaýÿ²þ9â¿ ¹a7Oµÿ{ÿþYX×â¿ì¤ÿÞã¿êã/XÿÅÆÿvCпbÿòÿÅ©þ{ÿª?ÿEú!æY!"À,¤ü_ðÿ² ÿ¯ÝôÏÿã?ÿËnHúçÿÂü/
-Ê·þ9â¿ÿÍæí6ÿÇÿBÿ¸/ÿe3$ý÷ÿU·ÿôÿ@þ6óTû¿·ø/ØÖuð¤ø¯ÉÈw
-Iÿ½Çí<ÿ=PúçÀøÿ!^{!è_°ÄIÄq@ªü_èÿ±ü_vCÒ?Gþ/èÄÙ
-Iÿ½ÇíÚÿúgádVù"6Í7Z!é#þó?,ÀþÛ
-Iÿñ_ÿdñ_vCÿcÿÂúÿËnHúçÈÿý³ óo7Oµÿ{ÿþYX×òÙ IÿÏÿ!¡]iÐÿ,']ýv0
-ïÿ%Ðèñ_û§Mýg33ÍK?G÷ñ+°þ¿Õ´Ñ¿ù§óC7èÞþ¡BþGÚ׿´sTõ
-õ¯D |%eÕþÂý#_öû[¿ ê¿}ýKÚ9(õoò¿¢þ÷O§ú'6ȤúQÿtªÿ6ÎÞoÐ}þG(¬ÿãù?즽þgëHk
Ð 4é_¨zþoáäÿeÁÔêè*-0ôBTï¯Ó¢pÜåß,OÒË~ÎÊ$&ÑMRí๺ø43ËÌ
-²>@V^%ùræþõédÿí¤þþíëÿ:¹Ngpö_Èõ?B¹ðÿ³pð¶j©³äúcVFÓWN
pÕ@º®óùçoò$Y}î8ëE°]àSï
-x*o£Àë¸Loîàá
-Í'³h«º=l8Jóòöþ U`³À?ò´L.¢øóf¡Í_ñ&&çÑeR¬
-(m;ÃY4oüý-½¡·y׳l¶yG_¨Áæw0~.¦[%6ðöÍѧ¾ítWßú?gYlÿÎw?óãõüGø0.¶ö÷2ܬ¬ïx¥×wßA©áVuø4ËEÖw¯¶ðëâry%G÷»ûéÆMóO?,òùݧÿÝZ°Nö_ÐÎA²ÿ
-öNõïÑÎAªÿ õÏAûú§úJi»ÔýÍóuÿ¿Ðôÿ8ÕµNí?Q¤ö_¢ýç Sý· öÿó¿;ñÿú
-ü?,¬ë ù_í¤þCÚ9(í¿ñÿ ýß?mêEz1%G wïÿ»^üÿ, ÿo7môf'ùýË ý? »i«ÿY_GÓÑurå¤zø&Ýõ/uOúç ú·MýOy¾=¬"FáÁÃúW
-abþ}_ÿbÿ×}åº/]G_}÷3pÁ+å¹®óCÜ8Â}v`
-eï¾À`»Ü)0Ü. v
-DÛ¼Ûüñv`§Àx»@¸S Ù.0Ø)0Ù.0¬µíÛÆõK¢zQ+pQ/ kâzU+0®ð¶A½_+0¬jv~EX+PûIý:¸^ vĸ^ vDR/P»bR/P»ªö3'úKêvIÜÞVQ g°qé×Z`»Ø9BX/P?Âve µsí%¼I½@ý²^@Ö
-¨zµ]@Õ¾¤¿ó¶ëBTâ6àÖZQ/ kd½ªPõÞv9¬ðk¢z Và¢^ ¬Ø¾íEÕÄ®ZT¸Ú.jÛ«í²¶}¸ÚÖ¶ÇÕös|os{Rmk
-W乫í^mû`µÝ¯mªíãïï¶×¿¿¿Ú^ÿþÁj{ýû/lOéy«y¸ºe;ÍF"Ym×'ÚÐr$ÝÕveNäßh½Ý¯×_Ll¥2w²ÐÃW¡ðåj»þjp¿=ÔÛÃUyY÷b¡ß¯M§+ô¾Ø,PH¸Ñªpåºx¸Àíÿfÿo|=ô)ê<Úÿ20Ûjý?écþ
Ót¶øêÜèßf3G¾ÔÍhø"µ»¦Ó¨Lgÿ>K®¢ir-émq|WV
-)}cBÃø>;¿FårûO>{æüU8ÎÎWçC2wtS¾òº?é}4»³ëëh6vLWNéÿ²ò§Ó×?þô£g³"&?åí÷¹ÐbÓ]ÓîÁoÇïß:Åb>ÏòR
x¾(^8ÎɬL¦Î/Él¡\½Ñ_9¯åU2+ÓX¿ÑõßÑ"_¿þ-¦ÅÁÏ'ï>¼çÙM:Ö\?îÆyÿú̹æúðUd µ*ÝÎÍMÃ$6½éEa"m=´ã²ÔÖQu,-t}ßÝ$ãwMvÎ)Üv»ú×UãHÛ¦¦¯{WjsÇS3ç¼+·±ë$¸PÍç\ÚÚq<isÎu¹Í]C´8çªÔÖÞòÚ¾><?qÞþçwõê×Vo÷»£2zx_±³ïê§6v÷§\·ÝiWï÷õV¯MW8Z»ßõ¢å®xg×ɸå®ÉXĵ]±lµëê´÷»õG»N£¢Í'3ç'ÇýZÝ
-Zü_GQ_ml^qðu8ç¯?:ÉÌÜRãW¦!rÜçN6ër¡¾æfª^;³äKµQ¬6ê×t«ùUUsÎ.6ÔZ}Y}3/ßÌ£ËÄgÛV7mUÀû|ð9Égº§yÎê¸Nµö ps§Ì»}þÝ1÷ÀSy˯¢ñ8u_&ïßèñèäÃozK8_B
dxÁÁÑÙ6(37tV¾<0·à+çý£só»Þ¸êP_Ý[2£*é¼ý¨òg«RÿõA[õ&|s,dU*0¥Äªóñ×÷§ÿ{kuÄjBUj}7ú¥:ÊÞlòÆÅ{ø(gÞ|\Å=Zåhý]ê(Áaà
o|㣨oEæ(ºÍwÑ]ìå'¯ÏO«ãûËOï>vü¾åÙá_ª£x«ã«ÃÇ®øöQ~=?^þVµ>Êp§'Ë£ÈõQ\ÂQþq´ºî÷Wìñ{àÛßeU{Goª£ñóñòVZ§úÜ9?[®1÷°Þ~jz'îïn³×ï«êsWtØí¼ͷÎ^ÞË$½\äyä3ɳñÁè³QeäTËfuÊñbýÇò~ÖÝ$ÝX8ERj/Û¶ØÍqÞ¾;:½þøÚù}³èp«=¬Ht³öÞãÂ*o_ÙÍD$áUËS8B'òé³lQ«ß[<s~úéïË#ê/¿qÄÖËõ¯îÎÇÕIÌÇúúf½2gËÎõÁâæhbýñI¬fø¨³ów§'o7¶[ÜM.?'~âÆÕÑ>ÿ×G§ºÆ?øp´o7GSæãÔ¼Y¶¡ÜßP«¦v}´o7GóV_}³O¹¼«£Unmä6~é7£ùë±Õån\7Íù/_ÿ|ºuÝv£ë·z8B7wG«ú)Uû±q´ÝârªáÅÙùÊáünlñ`ÙÅXwý×ÁòÃDÞß&/î7++þnß8÷E&«¢Z¾«eîÿ'%Îù·NÍÌÊ@ýSus±j¾Þß_½3?gYFÉû2b£Ì²\+¿ëªØ:ΪÌYvSýú?Í0Ù²ú*,×ú¯ªïxP)±ZoúïÞÎr©åÆ·>¨¾É«o~as{Ô>WCÏ«þýç¦û¾ý¹éo|®uðn}=u§¤¦óå"Ké}uµªß¨7 Ýת>~î¼yç\De|õêþ®é±ï}£ «6ýüìÅÇô:Éwι>/çéAéòÓSÛ`iM'(19¾NdyÙWeªây:JÇ¿ë_#þp¦Ñ<o
¾W=Âgw-vñ·wñZìnï´Øe¸½h±ËÅö.ªÅ.ãí]ü»L¶w [ìâníbÞÓ¢a¹½l³·½×f`{ Í>í}D}¢í}T}âí}ü6û$Ûûì3z«Gµ:ºJ/¯êùfJ¨4µûÇã; ÊN²¢ìäQvò);BÊNÊNCÊNe§ÊN1e§1e§²ÓäñNÞ-ExW?+õ»±Xñª÷wY¤£¨H~wõ~Ë=ô¯TÁó»É]=ÂÙ´yË#<w
~ùpâ¸/¤úæYµ³kgÞýiÅÆivxZé½ðÂõyß~}x8z÷ï.º°£ÿ¥ù?õ_Óì"Vo¤3LÍÿÏwnî8ܸØwû¾ÿ×YºÓ|qëdúçé8yyÿ¡|ìÃá7>ü¥öU×0ÏÕ2»nL£rsXMÅx"Ϲ¨¯ªë´2;øTT3èÎ^}|VuMy{ÐiÒ¸è^eõÌ_ýé+çõt}1ûÀ9<ÿ¤{Kç*+çÓÅeõþÀ£êáC¶Èc=Ì«úÕØµt¼ÁªÛøÃe4嬧_«?¿×[ou¸ÀURWÂm©M¹î33²;xû~¤0=9ÿ¹3˫ΤcÝ)Aõ¾êÏê
-8øyNK=ê6]?¦°Ð¿Ò©ÒMdù8É;×ÙE:MË[çR_êj,½ÔC5ÓÕtîúôÜólÆ·«^dÕ£<øm9?Ñ[q2KË4¦óëßöW}²#ç**®srºSæ©ù.;ª/¯¯|î(åzvpüµLfÆ7qx¦s·º{ÿÊÌX¸?:úÞI/t]ë£Ë(zDp6úxrvüþà()Ø|"J½ôçýú§3Ï3]E¿<8\~ßWúOu%;ÿùËëÿåܯÒ?Xýçwó[îº\[?ll?¼Jâå¼®Õr'/_¾4Ó ¯9w.´ô°}9ýqVMzÏ©P^à}þQð~|v¢(V×å÷³óy]ãä¹nô°áóÝ`ö¹#<%?W÷¾\ú@S}vpxþúÕr`eÓjcU ú*sÓÕÅ<O¢å©¿ýÕ<)X¿û¬Y©Ïr©o«$7?lu}Ío'ÓèÖfÙÜù¡øä1Ït{M©x1êaQI³¬<ùçÂ<=õåKÇÁK=ù9»ÌÎNÎ?8?Lçÿï'S7ºjé&"^俦}G×É,ÿ¼ùí>Wî»WÆÛuc½ÜØþaO]&±õ]1á¹×nêÉ.ß¼
n(ïnBmë
-tŬïÂ#À ð}uÏ_z&YÎj÷3]ûå#»K?8¨ÚSá,¿ç+-ß
-GV¥äzÞq½M·
-ÄpYÐqõýeËd4Ërçë6÷|çäH_Õ§w³<©>©öÓ£ÙWI5@¿Ît
-d¹¹Ô«ûßùáãxv°¬ù
ë/QZJHÇúWúNkûP4OnÒ¥ÖLîðàåËJ²¯´uõ¡r¿*·2â'×Ñ-øIVoåO/yo^Wßjåö\:AxÿÌ´5ÿ^ͤèùr¨~Ñú×7öÒ1àÊÞ~wmý/_ÌKóµï7¯Ûó͵º(¥éÞ75zKÕÎÜïø²Á4gºk{ñ£8éÜ©f*wJñ
-Ýmʪ'q:Iã)Mêò_ᮺôM<Ûǽ¥|ò½U}"ZÜ[ßô9>§åyr·ÄëFÞâv_åúÛþ¹¼!~¯L¹UþaZáB÷¾UùòGÝx°ò%µò¿Ñ´êÊ÷öRùòGá=¹ò¥ùDR+_v«|ÉVùòÑÊW?Jùpå«~?ØKå«uçù©¯Ì'Zùª[å+¶ÊWV¾÷£®|¯ßÊî¥òõOýt)<jå{Ý*ßc«|ïÑÊ÷Ã+ßï·òýT¾þ ªïS+ßïVù>[åûV~ð£W~ð=4ûÁÂïÇæÔʺU~ÀVùÁ£þ(ÕÃ~½ýÐX®^l~Hü°[ålnV¾®¤Ë«ÒÄ
-Ëi·l¢ßßÝÅÒ']ÍüàC¾»Ú|ö²Û:QYêj0ß¡Ðßfüb]GéìÕ³üÃxyd¦½ÕdùOOÞþrà,§þ
-miO¿[í Ö;¼W;_õ]a} ñÜ×]ë@÷°BóÑjO¹³§ ®©üÜw;¿«AVë¯mÎôÐ×ßþko|eóH_[¶þÚæL}méí¿öÆW6?ôµUë¯mÎôÐ×VNØþko|eóH_ÛëåÞö÷Þö{¹·}ÝB²ÞÛA/÷v m7ë½örob¼·gI9E×.kÒo=|ðöøã+çýÝ̺±egSg]§Ó[GÆa0ÎâÏÎ*1ÅÒe°95.¼òv8ó8Ý¡??\Än{¾ôµ1^3ç.d½H.¯Íì~åL?ð
ñ6m ÊÈx·îv¹Óàx ÝeÙå¬éÙÙá»·oN~ÙÚá
Ä7n±êGÊ_·ü±±«_y|h²ÏÆ~óäµsÑÌËÎóDÿ{çyY~òÃjQLá|pÂù þÚ¹ü+®9íÝüîÚ¹:<qÞëÎóóÒeó»ÞàþáüP¹öSÏ\úÕj¥¸ «:þëÆI];G®s¤®ôa®ßñC{ãD¶?¤£Ê£*ÒQUÃQ=ÒQ½£ú¤£ú
-G
-HG
-6u@:ê á¨CÒQ
-GHG?ª ݯ¢á~5+
G½ßëÛG½ }×ï7Õ#Õk8ªO:ªÿèQǤÚ?V[ËEͯ;kq$ýTÖ?î+¶÷,àÊû¿Ù¦:iæÌ«ÜßkFdµúàÁâJ^¤¥s}fzUhýsGÿµÎ~xÏÀ[ïiþ½{²²ÔÏde¨Ø=Ü=±¸;±hÚs÷Ä»OÜõï/ßÅêÒw«î½¾QÝ«J!UÔúZ¥¸¯ÌåÒñà©×®©{wMݲÌðÊ)óh¦û¹é¼-¹Ñ_9¹ë˼_
UUäq~ÿ¿£?^ÌËÑùûtÜçìý¹ ;¤Ïÿöõ>iÇsyþȧéì³óûéÛß^ëÎãÉûÿ(ô ÛÓþ@Fp¿ á©G¸ë¥>p¿u¿ ¥í!wñ·êk´?ÄÑæ!þ¶ñKÚâøk±yçoZ
-kɽ|üxo~myúµýµÕµ]f871&¤îÜÌð~X¶GÎûr:?ÄÏ×ãèÚùÙLÿÌgs}ÊÙù2ÂÑÄAígóÍQàÖ¯#GóVCÉõêKs´C,fYqh¿ûaª\ÆK= uÆyz£_ºà¤h_üjqñ`áåÜ8ðæÀ±ú¾fĦ/ñÝXímRFÉôÕV$ØÆæõ½³*Ò?ç']ÍëÁw¡?úô¶
-j<>rOÎ?¼»ñ6.fSóþ²ºIx6÷eß:N&ÑbZõ¯~Íò.¢÷K:.¯Ï]~tôþ×#çÉ4º,6Ögë¨ÖÕw]îõþìý{§^DMØØðåâäíccAv½øö®ñEó®v4ïê?°«ß¼«|`WÙ¸ëÅäÛ»^LwØ5nÞuøÀ®Ãæ]v
-îvý4û<˾Ìt2_Ä&Ö´RóÁÉ»³³O¯u¤u:6?Ê[³¾ÐJhæ ë²ó»YÕ¿:ñgù&tÍÆ®Gî6Ü<ZD:I´:Z¼y´1ñhb}´ÉÆÑª@ÊÑÜÕÑb¹y4E¼në_ºTÉúhñhë_66$íî^l-~êuK66O¬Ó~&{<ZÔë/zý¥Q¯¿ô¾
-é绵8Úåäëö«Deâ
X§üèvâÕþfUOuÆaÒýËßã>ÑÐ×uò ò±6S}]§¢m#9Ð×ûì^VñÄË*z¸¬¢ÇË*z½¬¢ù²ç¸;îéÎäêU9èéùagL6ïÖU6jÂá
uøÏ4/¦w¼t»|üÿí=ksâH÷_Q±û¡íUz!Å`7t³Æ=3^! £5 óë/³Tz ¥¢ÄÄÄÝÅ¢Æ å³²ªT¬ÌÐ-ãyüüÁ¨XÇÞ_}aÈ?ö»Ï¬d 3YùàJÑ»¸Û3Þ)Åj62xjÃ
d q,
-W;KÂάPº:¹û=óGxäÍ{ Óu±ÕHã±¶Ô%Q̦Iìà>pµ1ÔÇ»mNqxO&a¸Ìw©äC´Úµ]èÒÚÆÔÕðSCdxY¸'}uaÀ?ÞÎaÂo"¾âTøu
-É.ÖÖ¦SPÀ¯J¹KÁ+(x§Qè$/Q:k!اIÚ
-$ ýxxë6Nᨠ`
·hÄoÝ=7¼ªnnoûwG
-
-ȪÈF-MMÎÈÐÈRã²Y¡¸,·þ¡kìkº]-Â:P"e«èZ~#ÛõìtÑÎà(ÄR5UË ¶È¶ GAd[Ud»ÈÈ GAdGUdG]ä6ßµ¸9¼ÓÅ×ß§
-ÉcÖmñ3ÇøÒ¢lèÙnòýÛýÛâæCæCõ¾}¤ùd{AZqCÔ|\Å\b®ªaÝZu±£"rG£ rGUäN-==ȪÈ^ù.÷'½·Më ݯyð~µÏkm¶['ÄRVÂ:®/À9^îÜÑrÏ E¶,ÂQÙVÙ®!r¨RUBÈ¡bíÎ d>ò¼ÿüHzècÎb¸äù6É<~»ÄÛ¸)b¸äO%ñ<þÒÿàÇ61ÌÇ*F»¬:bV²2+SÌʳ!+³²Ä¬l1+[¬ÌʳrĬ²2+G̪-fÕ +³jYa\S+S +³rŬ¨ +³êYbV Y'feYdUVÅ»pWÚ ×`eýVV-VvÁê:g%nWÔ +³
-¼'06N;|'etfbãñ]¹÷ðçå+¥9¹VßHe
-ÙCSôÐñ4d<
-OCÆÓ[ÙémʼÜvAsQDm» BÁ,YaX²Â°d
aÉxÚ2¶§-ãiËx:2§#ãéÈx¶e<Û¶>t,ÜÍ%9î
-åqeò¸²2peeàÊxvd<;2ϧ'ãéÉxz2çDÐÀË»P%£ë¹ÑõKNd¢Ld¢ø2õ}ú¾§/ãÈx2g ãÊx2¡gó¬|Ãe ô
-wì¤Ñ¸1o®P+
-ÅÓrà}áÔ²²xZý ÄðPéÕz³XL@#
^Á ¹KîrÄ$?åGzË¢q1#F4e¼qÙïèù°âDr4%Ñc¼E ó
-\{iÒjµÆÝJ·ë0Lã Á£,xÈ9òèFdfÞ6À¾Qù(ú2ÜÌÑ1Á8prQıEÿ¢Ø)û ¡;ÔéXf«m]zY¢Äï¶ÏáãO×eO?¯Ó°tè×D§p-?GÒIãçÛq¢ä
ü¶7^Büûä´ìmð»$M3Sã&$)È-µH˨ØðÁíhǵJáã²¢çE1æxÌlÇ/I;¸Ã%À+nç¡Ù¢·"¯
-B/À° þô·ré]pGÃò´ì° »)æÅbóÕ¸Oeµ fêS:cPFD§ð}1-#-÷³
m¶5;m\F TY`ª«f¦qºj*kLuÕÌÓT3OWMeE©®ujÖ骩¬íH0ÕU³OSÍ>]5µ$ ¦ºjÎiª9§«¦²v%ÁTW}jíÓUSY+`ª«æ¦{ºj*ksLuÕ:§©Ö9]5µ@ ¦ºjÞiªy'«¦´ö(ÁTV×W@3OPíøZ§³jÖiªY§«v|mUYG5û4Õì#ªyûÛ¬þrì(ÂÍc/ÀÙÒþ±&YŪb×Gqꣴ룸õQ:õQ<%¬4<ܺÁpÓ'v0°@e<ACè-»1L#iCÔú-ÏÑu%8úâI7Ò×(&ØÐæIÐ<~6Æ»XÅoïÃÌ·O¿õéwÒ7¾õMøcâ*æá×J©ÝÅ¢)M+=\³a"úüN³LOEä6s¤ð*.ô7¸Rð̸,D£§fÊE£BÑLuÑÓE³å¢BÑluÑÌÓEkËE3
¢µÕE³N#ÍÖQÍ>]´\4[(ÚµºhÎé¢rÑ¡huÑÚ§6Öv{T4<,ðgY)'yÁåÍÉ6ùh|ÚkÚç!_Î̺öWÚ2øñjïyõãǯzêfc®#oÞ%®aëWÔ±mc[ld°$yå@a!N°lxôáþê;æáÌó±.QJ0²½$Z ¹4YÕ1.ýe¯©¯ËóÖáv¾´¨Î~Þh÷.|#
-§çp ý.YÍC¥/ò0Þs&/GaúöÊÃÌøVÁ
úÂ(ÌÃgÆq÷ãA¬T#w2®:&7©|Jñ)B±ä®ïtºØµì¬fÄB ÂPÓf0mÓ.`lѦóxµÊ
-#6½1ú<bGUFã+×Ý7ëx>gzáQÉÖº4ôü¤ruËhùõ «±0b#¹± ùÁLÃÒ×®YY!XÃ_m1»EÇi}ÆLGK {A ¦zë<tèv¤+ÕÁ6Ä÷:Þyó4k©q>꯵éJ#ýÓ%¯FËé~_»ûA
-YMJ÷AüòrôNÚ_o{ÛÇ·+Úx¨Øà<ýÍ·)¶K6äáén²Ý
-Ó&ݬøeá YXÜYcr-^CL
hûÒg8Ìób^qâ%ýÜ¡DìTGÝ*
-²OÊÍe&]fU®
-B×Ä¢ôÐÙ&ÑóÀåv1ÁPE$'Û´îWäÛ(lH§è
-Ê#åTa³Æé6qÝÕÑÖÔ©
-³uySBb
M¹·kB3ÂXXa±îÒî^äÀ¿RâÏâ$\¦GÅØ/l³íP
-á òÂi¾¥GNÖ#ðl-qr=)¼ìÄ[YE¡^= jÔ n=1ª©'Áª'AVOs¿èÂz^O:õĨ®'Fe=¹¸,ñCzÛç-ØI·Ú¢äÓU¸ü´o>rñä¿$´E`x±cèÍ`ï÷{ïW³¥7¶%tø«t« «¡(_E5´¶N
-5«°~ÆaõE
-Mº¯g¦7ëÞ¬6}þÈØ7½H4*ðM4Ä.«¢P× ´h=T2d
-ÀË
-`Õ1Um «Â ¼½Öi§B]5`Ô3]EµÎ¡ÜÜ vØÕ°k »¢W¾$+(Ô3 at P£
-êvA¢n2Ⱥ þ
-Û1À©c §Ú N-º :- ¨ß5º nÔ®"RÕ¬Ü í:hW ]mÍÃ5¢Å >àsÄt«AÞ²P`P3£Öl¤B]û©÷`AݬRÆÒ\aÇ~Fn?·ýÜjû¹Çí§Æ'Z®¶.%ë¶ãtM]7p½ëÊêWìqú©7Æ}0\²ðèe7¸tÔG>%Á'(Ê0HÈv¤9^´òz
-fefñøáfIÆ?©¿Â S'ÿ~Lboo;r}ÇÅÐO+w[mÌ£ ÌóÙ6%u¾¶ÔjÀ§U½¢¥2X£E*ÃqgeSAaØod¤AFLò½FÓ¶®týR¤ÍQ*$µªÄO"`Ý åð*Ú¸÷Ø#ï|{WÔ4¿ÀÌ5&5]âoæì«åÉ"XxìvuHÁRÐ
-n[¢ÉÀl¶+¬ äÇÉ*!ãñÆÛ@Ã¥ð¾óNÝÑZ¸ß
-ôªãGÓÕ]j÷ÆMÀïõúÍ
-xj;8ÿw]<]¹1ÔË.aðÞ%?]÷@ÌÏý ãj3#úiÜfqLÝØS¶ì}%¨@ AúágâMq½sý\[-!ÅKêÊ"câBÈàç)Éà:ôlZVæ®9ªPr À:A B±<ÐÖcYXÚ!T]EóDXÊdôÌÚÓû<±ìF¤¾%÷½TÚ654ôq%3èÞ0Î/ráB½wÈðúR@ ]O¥ëi8§SØ3=Ã%T¨ÓÃOT¯ OÅ×Ïliîàf Æ;àkd0úB ìn¿öþ4%@«?ü0Ìz,û Ô.ö ¢ä%Z4ë´/ÃRB«¼ïÕc¬kP÷ª¨ÿ³3«ê©m
¼×4ìãáó{è±ÎÖØïlͽÎÖuF©³µ®Rê|j,)
Rg«)¸%
-f¹
-0 at gÞAéÝ¥ýò¯x»^zó ]j¸-ßæzõæÄægÚÆÍ¯¦6Mp3i»dΣyÈG&ot½Ì=îãZ9K^Î>àþþ¸'³|°Dùñ×<R°ÈC"²öØFËÒí®q¦#©ðAü`«ã´Ê~fÃQW¡÷¢±û9ô)YùY2ES£Ê¡õÊ[có|Zù9Oåçºl·-2 2õ",)V¨áz
-íZ3Æzã?ù8a@èаñÉÁNMJÁw±·^à+¼Ä¼õËͬI>Ì&Á=R¬oI1¨\×T&kqcÒ?]cìË}¿ÿÄ®ÖoäÝ»ÂmF~<þÈ7"yWÃ&x÷.¼±` ¬>)ï´XWÅÑy#üÙ
-êþÆÃøÁ¾çM¾ÊU,¹áXy`[××ÛÍFt··â»=ýòp8Çó0\åÏûÃ
-rÖNß¼« ß%ɳÕFLSàÌÓàPoãF×ßw^Я¨àñâø;TÊ*²7!øcôìa¿Í÷Û6äs¸y×/´b?¯-ÝÖ^F?^}¬#ÌAÍ
-]w9ÿ~íͽZèyÂʳ8¨¯i"Ë´9>®ÔÇ%*¢CÏ8ì-ûÇÉUÒý
Eü~·.±ñS³kèÝi»Ûît;z%
Ñu|aü¬S}:Õà¿ gÛßk¿«±Èúü¶
-·áErÙâç>ájQå¹ýCä¥KÿXéRV6T½ti%
ã¥KO,ÝÔ#c½
-w¶1¾wéÄúä
-bìdwk,è%¶OM@L^½5ô¾I=ûÞrÉÉñu%öIA< ïl¾øf÷_>ß´)¸ÁGñ<ã,¿ÜtKÍWoû@QcxI´¨fö\`ÖtK3Ð
/w$¢5XhÖ§¿Ã[næmZ~¼Ø'Èf
+o3Ûelgn/8!·c¯ãè¸@NMÁSÆL½ @CQÝ6Ë}!É·BW îèA¦Ñ:a²ðÑÕ( ß¡Ùl.%¿øÂ1÷=Í4È0Û>NB¾âË<ä½k-jXùÛ&z^{Ë¿{Ñ«÷{ä-[ÓZpkûòi´^àGPE4,¶AmD¯tG£¦gH%HZÂÃnüóeü¾ýÄ=sgè´9=;º
-5[¯0>:±Z¯CSôû|ßOÀdôë
-ªN¸¢q»ÌÁFpïMrkÌ|DÔ%¿^=þÚxõwüm¶Á'ÂÉeêáÕ:Úø"¨\Ã0NÔ/Á&Ó/!¦ÁBöæîùÜ»àþaÙT6Âå´ð²q=ß8ÆæyN§«ÇLZÆÅ%i¾¿`J¶ôÃõβê"?<÷>ªá~2ú0#åÒéOTh<Üö¿u@ÿ[ .õjÛëî~0"w[(cÀ
-ôløtÉ4ÇÝbnÝÒ+ò»$ìF:ÓýèÕIÏåÃKÏU@§Õ|/w§ÏÝ2ÎÛj,`°GõghX?w[¦ÿäxhW
-ôª#KUPG
-=£óÊ>ýî-èfÓßà
-оÃ'Ïêâ7Îî;a¯ÙF;h³àô;}´y*n~'<EÇÿcâ~ú¦ÿûÄ+*-zÂjm¸ ãÉÉ2X°HM2}qüÒ'7Ü#¹~K;·s;ù¿KüÏj'ÿq¾Î×ù:_çë|¯óu¾Î×ù:_çë|¯óu¾Î×ùú·»þqø\À X
\ No newline at end of file
Deleted: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/8em64t-4c2t.tar.gz.output
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/8em64t-4c2t.tar.gz.output 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/8em64t-4c2t.tar.gz.output 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,31 +0,0 @@
-Machine (phys=0 local=1016272KB total=1016272KB)
- Socket #0 (phys=1)
- L3Cache #0 (8192KB)
- L2Cache #0 (256KB)
- L1Cache #0 (32KB)
- Core #0 (phys=0)
- PU #0 (phys=0)
- PU #1 (phys=4)
- L2Cache #1 (256KB)
- L1Cache #1 (32KB)
- Core #1 (phys=1)
- PU #2 (phys=1)
- PU #3 (phys=5)
- L2Cache #2 (256KB)
- L1Cache #2 (32KB)
- Core #2 (phys=2)
- PU #4 (phys=2)
- PU #5 (phys=6)
- L2Cache #3 (256KB)
- L1Cache #3 (32KB)
- Core #3 (phys=3)
- PU #6 (phys=3)
- PU #7 (phys=7)
-depth 0: 1 Machine (type #1)
- depth 1: 1 Socket (type #3)
- depth 2: 1 Cache (type #4)
- depth 3: 4 Caches (type #4)
- depth 4: 4 Caches (type #4)
- depth 5: 4 Cores (type #5)
- depth 6: 8 PUs (type #6)
-Topology not from this system
Copied: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/8ia64-2n2s2c.output (from rev 7493, mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/8ia64-2n2s2d.tar.gz.output)
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/8ia64-2n2s2c.output (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/8ia64-2n2s2c.output 2010-11-24 09:21:55 UTC (rev 7494)
@@ -0,0 +1,56 @@
+Machine (phys=0 total=33331648KB Backend=Linux)
+ NUMANode #0 (phys=0 local=16554432KB total=16554432KB)
+ Socket #0 (phys=0)
+ L3Cache #0 (9216KB line=128)
+ L2Cache #0 (256KB line=128)
+ L1Cache #0 (16KB line=64)
+ Core #0 (phys=0)
+ PU #0 (phys=0)
+ L3Cache #1 (9216KB line=128)
+ L2Cache #1 (256KB line=128)
+ L1Cache #1 (16KB line=64)
+ Core #1 (phys=1)
+ PU #1 (phys=2)
+ Socket #1 (phys=196611)
+ L3Cache #2 (9216KB line=128)
+ L2Cache #2 (256KB line=128)
+ L1Cache #2 (16KB line=64)
+ Core #2 (phys=0)
+ PU #2 (phys=1)
+ L3Cache #3 (9216KB line=128)
+ L2Cache #3 (256KB line=128)
+ L1Cache #3 (16KB line=64)
+ Core #3 (phys=1)
+ PU #3 (phys=3)
+ NUMANode #1 (phys=1 local=16777216KB total=16777216KB)
+ Socket #2 (phys=256)
+ L3Cache #4 (9216KB line=128)
+ L2Cache #4 (256KB line=128)
+ L1Cache #4 (16KB line=64)
+ Core #4 (phys=0)
+ PU #4 (phys=4)
+ L3Cache #5 (9216KB line=128)
+ L2Cache #5 (256KB line=128)
+ L1Cache #5 (16KB line=64)
+ Core #5 (phys=1)
+ PU #5 (phys=6)
+ Socket #3 (phys=196867)
+ L3Cache #6 (9216KB line=128)
+ L2Cache #6 (256KB line=128)
+ L1Cache #6 (16KB line=64)
+ Core #6 (phys=0)
+ PU #6 (phys=5)
+ L3Cache #7 (9216KB line=128)
+ L2Cache #7 (256KB line=128)
+ L1Cache #7 (16KB line=64)
+ Core #7 (phys=1)
+ PU #7 (phys=7)
+depth 0: 1 Machine (type #1)
+ depth 1: 2 NUMANodes (type #2)
+ depth 2: 4 Sockets (type #3)
+ depth 3: 8 Caches (type #4)
+ depth 4: 8 Caches (type #4)
+ depth 5: 8 Caches (type #4)
+ depth 6: 8 Cores (type #5)
+ depth 7: 8 PUs (type #6)
+Topology not from this system
Added: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/8ia64-2n2s2c.tar.bz2
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/8ia64-2n2s2c.tar.bz2 (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/8ia64-2n2s2c.tar.bz2 2010-11-24 09:21:55 UTC (rev 7494)
@@ -0,0 +1,24 @@
+BZh91AY&SYã; Xi¥ÿØãÿþuïÎÿïßð kø`7¨A´Ì¶àw:× [
+P) R
+º 4ÐÈ b2`4 d
+ SñõT¤üª¦4##!d0M© )µô= z I ©OL¦ 4 4ÐÈ b2`4 d
+ )Ah h¦§ñM=AâLM2i¡¦PÍOÖ'æäòÎ'èíÁ_LÜ&ãàý¿KQÉÝ÷¾/àøþOáùy»òåË\!ÈF"w(©e*½ªÀe%/AMººúiÕ§=:®©HL£z¶´ÝÅ®ê©wWvÔZâ×uT»¨ÕêôÓM4Ò
N\î©^îÖÖµ3©L¦S)ÊT¥)JR§7¨Ôj¸FBÞ÷k{Þ´ÅÝØMU)JR̵2ÔËS-Lµ2ÔËD!!wvÞ^ðËÕïxÞ·ºÝn¥#
+R²¤ÕWV©JR<Ü`ÒUU^£éEgJ(Ã:QFÒ0ÎQt¢3¥S¥{ ±°-Ða5râÕ6\L!1"$D,(°²&AÌc1Ì °!Ⱥu9(à:ª¯Kj½Zæ\LÌÃÌ0ÌÃ¥-)màQ
+ªªu"éKJZRÚ[J°°Ú)Ò¶cc,e³#Q7oÃr©S0`N ÒªÝRHÈÔÉ2¬ÃLÉFXÌIfH¬Å&9õp½LéÒÕáÂÕ|ö¬Û«&2c&1ù³óP~õã¼ ß1m=G,K%ËårĹb\±$õü¥-¶RØÑ²Æ¶h úÐ \æ¹c*&Khi,eL:h,aD:h,bf&KÆTæÆêÕv\ð´Å¦MóÑÛÇ_?*J2
+¿TT°'Ò&±)àõ½òj&ÃÛÙ®qZB*ªªªªª¢*«èóà'3Ñn&8ânS9H{¬8EKûúA²pçé§]uã¶Û$I$I$%ݸ
+0Ë4Ìêc¸¾ÆÆqïòyÏUUSÄÅUUT·Y¯ø 3333332Jªªªªªªªªª³Ä%öK2K2K2KIfIfIfIi§mÙ³ fÌ%K0a,ÁëâiZ>$$I$I"K»»°µ` feUUW88UUU;Ûj¶Ú¬âpªª³@P4Ð@NÝ£·z;víÛ´vâ";ýþø 7 kóÇ<àUUU99UUUV×$RI$I$%ÝÝa¹°°|¥êt+5mÑL7&M§^5HMz¨§ÆÐ×ïq5òü=êøÝ¦¸OGsæÓ§Å¦û´o·ÏþãÓæÐb¦
+`´ÌÆ3:û<ª¨§²*^Çô¾¡ãûéHúDØ>±õõ¾¡7¬:ÌE ´¶ÇÁø;Çø]ãúü¿ÛøÿËüqzÄ T½QRëc²cÌÓe´T±6¶cÍꥴÁè{ve½ò7ÚØÓlU/æÝËâ7Îàx7mÙìö8×ÁL9V`.!¬C&,Bfi´D²ar ð hÇi:½¤÷½Û ÅL,Ái09_}ó.ï h|Üz'sRîÌÑD³AÐ.ÖuÚuéâwö|½¢ã·k®yY6¨>°åÙ-x¹pãÐûð8ôäé¿?Ë3¾\6P´ß¬ä¨Âf¸háÅÌr:ü<ο&xYÜ×çÙ»t`o38Ë&ÏPBeÈ4
+í<`rê³°yGnTÁ2`uty~};K\újïØ8]£v¢otðJÛ`Zw4k8l9à0o§
+F=kÎá½0°aZ¬åbdÅY£}ZYVY¢*^è©}8Bz9çêu^´óvÞw^voWfF.ɾ
+µÛ]óVð/(;;FÞ¦TÁ2`r&EÖÍ2:wk1ÇAßÃM±;µO7C{Ù
+Ín:Õ=ÔPõ#½ì£
+Ãd Ó¯s;ůмÍ^¦²Ý&36\xfº³]mñ¸ì
ª]Ã@Ä»â|µåRñ1SÉ®ÛNÌsó`8ñÙ3A¯nµnÞimmëllmq¡N*ihÝżJge\{y¶ôk°ÅMN}|uó`írÑÇlÎ]®w3NxMÞ8íÆíp/âho «èï!ÞÑÖK¿©v;]#WERζ8ôËö¸HZ´ÚßG
+8ó0¹Ý2sh59N®÷ÉA¡1PÖ`I|MëO2ðey7½lÞt¢3
ÍêpºÔ:0¶:òØ!8eó±ÚuÀTQF1ÜfH É«!@D@ÕiYKo7ú"¥Ãvsæ¹¹k¶ª!ÃÀä0¾¹ê
´å(ÊJÕÑGS§&Ýè¹Á×]¥àÕO¡Öe;7û8MÝpÉâäéÔ!,ç5Òp2ä
+CÖg«¦k!,¸dÑ,´a®°+UÄFFÚå£m´oD³yc7£~wEÜ.ó[^]5à;¹o
+<°îÎ@¯ÖFudã×öâTÁË*fæ¯Tª¶\8#&qfæqfqzÍq*`ã3sW4uQQqç½íyÎEæsN÷Íß=×ÌâÜ9¨¨¸êw×Qy^uyS#5¾»¯5Ÿ4uQQq©yÞ×ä^g4ïq¬ÝóÝy¬Î-Á£§}uÅçYÕ9â3Y»ëºóY[GUç½íyÎEæsN÷Íß=×ÌâÜ9¨¨¸êw×Qy^uyS#5¼p2¦njõJ«{_²{$à
+4§O¤Ô3ôÙù~VÛa6üæø(ûãÀÇìcì~ÿËú\÷N!÷¼ªª¬ n¨C?£w;÷^fÁä>§æÀOãuã!à'ßWèô3&üôæ'1Ì,ñÂÌàC÷EK½u6}Ò?P{ïÖ=nÑö>äëIö4°O`5~ÐîõÖô{âz¹ ç§_TT¹OØÔx̪¥¸TêØMÝ]cÞ
+_µÈNAÐÃ9Bqª¥¸ÇÚ'X¦ff+ÁïðSä¾ßc-¼Á³íZ
+Ú: vïò;ÓRô¯;a7{ôè'8©`µT»{16A;ª"öû|¡;ÇézOB0lo,wEK5¡t²;[ Ôh=£Ì?T¸ Ä<Á窥È>Ðáê|o<T½á)zØþGx|-Þ·°îK
+wïGÆFÑ=høÞ§ÔÑÞ'®*^q5Ö'Q
+ö-ÄÂZµvõEKs}Ø©{¿õâuºåB_¸u$|M\wkåcO}ìwüB{bt äâyÄøDè¡6§ÝHù_¸êó¤í8¼cÒ&ÛºVEKÑI°{F¢{î÷¥£È©y
+òDÈî¯T±U/¹,MíñzÞôTµQ06&g:ÝÂz8ÅKWT¶*Tµn{´.ñ©l*¥ÁÈMGDÐNá8` ÌO |GPè¶bMõ/µ(}¸CË=Âunfq: NÑ<Âc¸L¸T¹ ç*¥Ì'º$ÿrE8Pã;
\ No newline at end of file
Deleted: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/8ia64-2n2s2d.tar.gz
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/8ia64-2n2s2d.tar.gz 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/8ia64-2n2s2d.tar.gz 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,84 +0,0 @@
- ·Ö9K ímsãÈu
÷óþùn ÒßìÚ++U©|dA$D¢C°Hjå×f$
-/ÑgÑg7sÏS¶÷ehQbë·OßµuYü«ßù£_ýñ4d=U翺*dOÿìâé¯_øÁ9ùe
ëÿ½ó¾(x}?ox8êûw?Ü»õ¶ÝýÂëÃñ
-q]ÿññâw`Üø»¼*C\ÿç.wÓø3¸ÿUós»l&ý=ÿ"ø\ãÏàÿ÷§æó$¿qãïúñ/³þe·Æ¹øÕ¿#Çßå¡,BÇ¿Ìå?
1ãßÿ·ü5¿þg>;Ïÿªóm@ãO`ôøº}·íÖÀ/Bôø{
ÆAüø6¦^-í]ÿqÇ|$ç.ÇûÛãïý`üûW÷þgÉúÌÿ×!øç¿Ù¿õw$Äû¿ß<Ûe½]ìëå§zÝ,ÚÕ÷¸éïü[ÿ/¼ügàC)ã
-ïÿ²;pþÛþïÿ¾:×ÿäzì7
-èÄìÿ;/ÿ)æÿAó[öY/7
-V«ÿV½ÿYê?"Ç¿Ýÿñ¿@ý¯*Tÿ£ÿ±ýßfü{Üÿáü¿ÌõüO¡þÿwÝòíù_NöîáÔ2â¦ÿîeþï\çÿYÿþûпÔËOºóÿô¸O|ÿ/ôüOá}}ª¥¾]0ÿ·ÍÏÍvô{ õÿsþCþ§ÇK~Ó`þ/»MshvËÇE¯Ìy5àËëÿ_æÿ¡ê§òó3]ùÿúñ¸èîõñØ-ÛúÔþÜÿé{DÜÿ¿ø_æòì·
-XÿßÔfµèÿ`ñ¹Þßz`ý¿ÌõüOa°þ¯ü¯10ÿwïÃyplN7ÿeUÉÊÿÚñ?cä?¼ò°ñ:ÿ1ÜÿáK¯ë?§øi0ÿ§ÎëüG.ÿ<å?>lÝÃz£=0ÿÓç?rÝÿ)(ÿaÌBþCùO
-ÚÿiÌÿ©óùuþCþS(] ,ùOÈèùô·
-XÿOÿPýò¶Áü:ÿ1ÿe¥ý4ÿ·
-âÎÈå?`ã?uþ£\ÿ}©þ\³UÄ.ÿç?2wÿPþÔ·
-æÿÄùwÿÔýÃ_wÇÓáayj».Áü'ä?´ÿúØóÐÿ£ÿÔÿÃ6ÿüü§ ûmÖÿSå?^ÖuþAþ#SþÃÿSç?®öêü/çõ?)oÄÿÿ(ÿ`²üÇëþ_Õ)̽:Xópþò¿tþm0ÿ§ÎçêÿÁâ㮽oì7
-æ?!ÿ¡õ
-¹Ì7
-æ?!ÿ¡û?å?lùOÈÈ
-sÙo°þþüõÿ¡ üm0ÿ ùíÿ¢0ssm1â¿cä?rå?`ãìüþ¹ê¿þ°
-æúþ
ê?$¿m0ÿ ý?´ÿúØóÿPýα
-æ?áüùOAýmùOÈhÿéo°þ¼ÿêÿùÿbÌÂù/ÚÿMAóÛôßGF>Þÿ8¿ªPþÁèñ?uûnÛ_èñ÷./3?øñ?mM½ZÛ»þãZùH"æÿ_óßE®ç
-ù¦é-âýßoí²Þ.öõòS½níêÆ{įÿ/ÿ9èyß6ñþ/»Ãç/÷ßëùÖÿmú1ûæÿÎÉ
-ÃùÐõÀ£ý®ÿCï1²þãòP!«zÿ³´ÿBäø?ÿÄú_U¨þGÿ©÷ÿ
«ù¿×ú?´Ð2ÿéû?òú?Ûóâý߸ÿëüïëS-õíùOØÿ§ý¿ÔüÉ6ÿþÏ:ÿú?Ûó°ÿOþSý¶ëÿÉû?{=ÿS®ÿ+ÿkÌÿ©÷ÿ
-çÿEY©ÿJoÄÿÿÈuþ7lüõ~ÍèúOAýmù?uþãêüõ&ñÿø°9të.öÀü'ä?tÿ§ üm0ÿÓç?ò´ÿÓ6ÿÉû?ü§ þo¶ÁüOÿðÿ)HÛõÿôù=ÿSPþÃ6ÿþÏÚÿAAóÛ þçþNùØøOÿ(uþ÷oëo¶JØópþ·òÿ¤¾m0ÿÓÿû?ÿmÌBÿíÿ¥ þ¶Áü'ôÿðòúØóÐÿCþSý¶ëÿéÏÿÖù_ùfÌÿ©óWû?uþóú·âÁÈxå?`ã,ÿñºþ£ú/
¹WË`þ§?ÿ%(ÿKAç¿ØóêüÇpþ§þ,>îÚû¶YÉ~£`þòZÿ¡Ë|Ó`þòºÿSPþÃ6ÿüü§0ý¦ëÿéû¨ÿå?lùOÈhÿ
kaÿãüJùØø';ÿåµÿê¿þ°
-æ?¡ÿê?$¿m0ÿ ý?´ÿúØópþê¿tþm0ÿ ç¿È
-êÿlÌBþCû?(HÛõÿôý?Tÿ§0Ìèz`ÌÂù/ÚÿMAóÛô?DF>Þÿ8¿Jù
-£ÇÿÔí»m·~~¢Çß»¼Ì5þâÇÿ´94õjqlïúk=æ#ÿ͹êó¯ü·-âýßoí²Þ.öõòS½níêÆ{ÜÿWÿCÿܼ¤·J¼ÿËî0ÂùK"êÿ/ëÿªÿsÐýÞ6 ÿ³hþï¼ü§0ÿ׺Øb´ÿÏõè=FÖ\Êâ\øë/!ªÿ0ÿ§õÏèÿ¬úlü§ÞÿÔÿù7Âm ´æ?¡ÿ³ü§ þ϶Áüxÿß7îÿ
ÿ)¼¯OµÔ·æ?¡ÿ³öÿSPó'Û`þú?kýú?Ûó°ÿOþSý¶ëÿÉû?çzþ§0XÿWþ×ÿSïÿÎÿÕÿ
¥7âÆÈ8å?`ã¬ÿóËú×õú?ÛóêüÇÕùYPÿ
-OùC÷°ÞèB`Ìÿôù\÷
-ÊØóÿPþú?Ûó?yÿç*ÿÔÿÍ6ÿüÿ)HÛõÿôçëùò¶Áü'ôÖþ
-ÿÛñ?gä?
-å?`ã?uþ£¼:ÿ»Pýëo¶JØó?ýùßAù
-Rß6ÿéÏÿÖýÎÿ¶
-æ?!ÿ¡ý¿ÔÿÃ6ÿþAþ3PÿÛ`þòòì·
-XÿOþ·Îÿ£0ÈdÊØóêüÇÕþOÿEâ¼þ'åíø_0òAùØø'˼îÿUýÂÜ«e0ÿ ç¿(ÿKAç¿ØóêüÇpþ§þ,>îÚû¶YÉ~£`þòZÿ¡Ë|Ó`þòºÿSPþÃ6ÿüü§0ý¦ëÿéÏQÿ
-ÊØóÿÐþ/
-37×à þ;FþÃ+ÿÁ ÿd翼ôÿÈUÿ¥ ôm0ÿÓ÷ÿ(Tÿ¡ ùmù¾ÿöÿpPÿÛ`þòªÿRÐù/¶Áü'ÿ"ÿ)¨ÿ³m0ÿ ùíÿ ýmÖÿÓ÷ÿPý ÿ¡ó_ùO8ÿEû¿)hþoþÇùòèüÇùUêÿAaôøº}·íÖÀ/Bôø{ÏÿÖø§'~üOCS¯Çö®ÿ¸Öc>ùÿ×üw¡ù?Áü?Ón0[Äû¿ß<Ûe½]ìëå§zÝ,ÚÕ÷¸=ÿ¯þ_¨þOÁÍËÒiÐ,ñþ/»Ãç/¨ÿ¿ä*åÿ(H}ÛþGÌþ¡ù¿sòÂpþ_ëz`Ñþ?×ÿ¡÷Yÿqy(Ð?ôtþ3
ÈñZÿñýªÿQÀÆêýájþïÿ§à6 Zó?}ÿçBþSPÿgÛ`þO¼ÿï÷õæð¾>éß0ÿýêÿDAÍlùOèÿ¬õ
-êÿlÌÂþ?ùOAöÛ¬ÿ'ïÿìõüOa¸þ¯ë-0ÿ§Þÿ7ÿkÿJoÄÿÿ8÷ÿSþ#=Øø'ëÿüÿÐõú?ÛóêüÇÕùYÿ2ùOà)ÿñasèÖ]ìùOÈèþOAùÛ`þ§Ïå?)hÿ§m0ÿ÷.+ùOAýßlùOÈèùô·
-XÿOÿÐó?å?lùOèÿ¬ý4ÿ·
-âl3h$ÿ¡ó¿9`ã?uþ£¼>ÿ[õ
-®¿Ù*bÌÿý½ õmù¯ó¿¿tþ·m0ÿuþ÷÷úØóÐÿCçÿRPÿÛ`þëüïïÙo°þ¯ó¿¿ùÿmÌÿ©óWû?uþóú·âÁÈäÊ0ÀÆ?YþãuýGõ_
-s¯ ÁüOþKPþα
-æÿÔùáüOý?X|ܵ÷m³ýFÁü'ä?´þC!ù¦Áü'ä?tÿ§ üm0ÿ ùùOa.ûMÖÿ÷ÿÈÕÿò¶Áü'ä?´ÿÂÌ͵Ä0ÿÿÈÿ`²ó_^û¨þKAéÛ`þú¨þCAòÛóÐÿCû(¨ÿm0ÿ ùÕ)èüÛ`þ'?ÿ¥ÒùÔÿÙ6ÿüöPþ¶ëÿéû¨þOaÿPÔÿó_´ÿæÿ¶éläã
-Ñùó«ÔÿÂèñ?uûnÛ_èñ÷.?ÿñOOüø6¦^-í]ÿqÇ|$óÿ¯ùïBóÃù¿Â ¶÷¿y<¶Ëz»Ø×ËOõºY´«ïq{þ_
-ü¾Pý¥Ó" Yâý_vÎ_QÿÉÿTÊÿQÐ~/ÛþGÌþ¡ù¿sòÂpþ_ëz`Ñþ?×ÿ¡÷Yÿqy(Ð?ôtþ3
ÈñZÿñý¹ê°ñzÿ_¸ÿ{åÿ)ø
-ÁüOßÿ¹ÿÔÿÙ6ÿïÿûÆý_ý9¼¯Ozä7æúýAý(h½ß6ÿþÏZÿ§ þ϶Áü'ìÿÿd¿mÀúòþÏ^Ïÿëÿz°æÿÔûÿóíÿcáC)ã
-ø1òAùØø'ëÿüÿÐõú?ÛóêüÇÕùYQÊOùC÷°ÞèB`ÌBþC÷
-ÊØóÿPþ¶~Ûó?yÿç²ÿÔÿÍ6ÿÉó¾Òó?éo°þ>ÿ¡ç
-ÊØó?}ÿçRû?(hþoÄÿ\ç7`ã?uþ£¼>ÿ[õ
-®¿Ù*bÌÿý½ õmù¯ó¿¿tþ·m0ÿuþ÷÷ê½¶Áü'ôÿÐù¿ÔÿÃ6ÿ:ÿû{AöÛ¬ÿëüïïaþCçÙóêüÇÕþOÿEâ¼þ'åíø_0òNùØø'˼®ÿ¨þKaîÕÄ2ÿó_ÿ¥ ó_lù?uþc8ÿSÿwí}Û¬d¿Q0ÿ ùÿPÈe¾i0ÿ ùÝÿ)(ÿaÌBþCþSË~Óõÿôý?Ôÿò¶Áü'ä?´ÿÂÌ͵Ä0ÿqþK©ülüÿòÚÿCõ_
-JØóÐÿCõ
-ß6ÿþÚÿCAý?lùO8ÿEõ_
-:ÿÅ6ÿó_ä?õ¶
-æ?áüíÿ ýmÖÿÓ÷ÿPýÂ0ÿ¡Å`[`þ§?ÿ¥Òþo
-ÿÛf¤ÿ±-?Þÿ8¿Jù
-£ÇÿÔí»m·~~¢Çß»¼ôñãÚzµ8¶wýǵóDÌÿ¿æ¿\õ?
-ù¿SþÛñþï7ÇvYoûzù©^7vuã=nÏÿëÿÁÿSð¡ñ÷ÙF8IDýÿ%ÿ£ú?Ýïmú1ûæÿÎÉ
-ùÐõÀ£ý®ÿCï1²þãòP!«zÿ³Ð¿\õãÿ´þãýUÿ£ÿÔûÿú?ÿFôÏÿÚ hÌÿôýü§ þ϶Áüxÿß·îÿzþ§ð¾>ÕRß.ÿþÏÚÿOAy_Û`þú?kÿ?õ¶
-æ?¡ÿ³ü§ ûmÖÿÓ÷Öó?
Áú¿ò¿ÆÀüzÿßpþ¯þÏ,ÿµ
-âÆÈdÊ0ÀÆ?Yÿçõ¯ë?õ¶
-æÿÔù«ó?² þ/ò6îa½Ñ
Àÿüîÿÿ°
-æ?!ÿ¡ü'õ¶
-æòþÏU&ÿ)¨ÿm0ÿ ù=ÿSþ¶ëÿéózþ§ üm0ÿ ýµÿæÿ¶AüÏù\ùØøOÿ(¯ÎÿVÿO®¿Ù*bÌÂùßÊÿSú¶ÁüOþ·îÿtþ·m0ÿ ùíÿ¥ þ¶Áü'ôÿ(ä?õÿ°
-æ?!ÿ!ÿ)È~Ûõÿôçëü?
-üG¦ü-0ÿ§Î\íÿÔù_$ÎëRÞ.ÿ±CùBùØø'˼îÿUýÂÜ«e0ÿ ç¿(ÿKAç¿ØóêüÇpþ§þ,>îÚû¶YÉ~£`þòZÿ¡Ë|Ó`þòºÿSPþÃ6ÿüü§0ý¦ëÿÉûäêÿCAùÛ`þ'Ϩÿkaÿ#ÿáÿ`²ó_^úäªÿRPúÃ6ÿþªÿPü¶ÁüOßÿCû8¨ÿm0ÿ ùÕ)èüÛ`þÎÿÔÿÙ6ÿüöPþ¶ëÿéû¨þOaÿÐù/ÆÀü'ÿ¢ýß4ÿ·Íÿ½ù«Åñói±ïþÑk¬nwëñ2
-/£æÿy!ÿ9è~o÷ÿ,2òõ³áQù¯ó«¼ò_Fÿ©ÛwÛnýü"D¿wy(5þâÇÿ´94u?hï¶#gÏÿ_÷¹êÏÿÖmïÿ~óxlõv±¯êu³hW7Þ#¢þÿÅÿàå?Íÿmïÿ²;pþxÿ½ê$ä¿m@ÿ#fÿÐü¿ÿ'ùÏ`8ÿºb´ÿÏëÐ{¬ÿ>EȪÞÿ,íÿ¤9þOë¿°ÿ7Wý6þSïÿ
-Wó¯ü´Ø2ÿéû¿òú¿Ûóâý¿ß¸ÿëüïëS-õíù~ÿoÐþ
-jþfÌÿäýßuþ' õ·
-æòý¿^þsý¶ëÿÉû¿{=ÿS®ÿ+ÿkÌÿ©÷ÿçÿEY©ÿ
þQKÆñ?v3 ÿ(ÿ`²þï¯ù]ÿ)¨ÿ»m0ÿ§Î\ÿ£þï$ò6îa½Ñ
Àÿüîÿÿ°
-æ?!ÿ¡ü'Õ{mù¼ÿ{YÉ
-êÿhÌBþCÏÿ¤¿mÀúúüÿ)(ÿaÌÿôýßKíÿ ù¿mÿsFþ£Rþ6þSç?ÊÁõßëü®¿Ù*bÌÿó»Î(ÿOAêÛóâü»ÎêþÏ᯻ãéð°<µÝN`þòÚÿKAý?lù¼ÿGeòúØó?yþ#ÿd¿mÀúªüÇËú¯Îÿâ0Ìè< [`þOÿ¸Úÿ©ó¿H×ÿ¤¼]ÿBþ£Èÿ`²üÇkÿÕ)̽:Xópþò¿tþm0ÿ§ÎçêÿÁâ㮽oì7
-æúüG©õ
-¹Ì7
-æ?!ÿ¡û?å?lùOÈÈ
-sÙo°þ¾ÿúÿPPþÃ6ÿüöQ¹¹¶ñß1úå?`ãìü×þªÿRPúÃ6ÿþªÿPü¶Áü'ôÿÐþ
-êÿaÌBÿÕ)¨ß³m0ÿ ç¿È
-êÿlÌÂù/ÚÿAAúÛ¬ÿ§ïÿ¡ú?
aþC϶Àü'ÿ¢ýß4ÿ·ÍHÿ«ÈÈÇ¢óý«SþÁèñ?uûnÛ_èñ÷./ÿ¡?þ§Í¡©Wc{×\ë1IÄüÿkþ»Ðú?Áü¦ü·-âýßoí²Þ.öõòS½níêÆ{ÜÿWÿWÿn^ÎÊJÒ[%Þÿewáü%õÿõÿLù
-ª÷Ùô?böÍÿÿóÿZó[öÿ¹þ½ÇÈúËCYþY ¿Rý)DÿÓúgôVý6þSïÿ×ùõÿ§à6 Zó?}ÿç ÿ)¨ÿ³m0ÿ'Þÿ÷û¡ç
-ïëS-õíùOèÿ¬ý?ÔüÉ6ÿþÏZÿ§ þ϶Áü'ôÿd¿mÀúòþÏêÿÃa°þ¯ü¯10ÿ§Þÿ7ÿU¦ý¿|(e¼aÿ3Fþ#Wþ6þÉú?¿æ?tý§ þ϶Áü:ÿquþGtþ
§üÇÍ¡{Xot!°æ?!ÿ¡û?å?lùOÈ(ÿIAû?mù¼ÿsÉ
-êÿfÌBþCÏÿ¤¿mÀúúüÿ)(ÿaÌÿôýuþÍÿmø3ò¥ò°ñ:ÿQ^ÿ]¨þCÁõ7[%@ìùþüï ü?©oÌÿôçëþÏAçÛóÿÐþ_
-êÿaÌBÿÿGAý?lùOÈÈ
-²ß6`ý?ùùß:ÿà ÿ)ÿaÌÿ©óWû?uþóú·âÁÈTÊ0ÀÆ?Yþãµÿê¿æ^@,ùO8ÿEù_
-:ÿÅ6ÿSç?ó?õÿ`ñq×Þ·ÍJöóÿÐú
\æó?}þÃéþOAùÛ`þ§ÏÈsÙo°þ¾ÿúÿPPþÃ6ÿüöQ¹¹¶ñß1ò
ò°ñOvþËKÿ\õ_
-JØóÐÿCõ
-ß6ÿþÚÿCAý?lùOȨþKAç¿Øópþü§ þ϶Áü'ôÿÐþ
-Òß6`ý?yÿÕÿ9ò:ÿÅÿó_´ÿæÿ¶¹åÿ®[5q+Fæ?\Ê"ô×ÌUåÿ`0jüÏÿú¹`äø¿Ö]Õ£ñg1þý4 ÞãiüûýåñÏ]ÜOÏÿþÜÿÓÿá|ùÏ·ç%Ø7tÆ?bü1#¡ñ£Æÿ×_"4þcÇ¿ô×ýu~[ó.ó?å9ÿJõÿ£pÔŦ=½ËË¢ç¾úñéß|nÇwÙóßßw¦]ïúlw§æ°mê§ÿëoÖÞý¸íõvqþé¿ù"ËìNþùðéß¹y9WÁß+þn>·»û.þ=nøï¼«ùïþN ÿüø·'GßýgóùCwª·zwæü VyW¾ûôüthç?×»|ðÇfõåï|fÙ,»xÁ§öç¯_ §ùr6»xÁ_wõÛ¸löæ+ü[»Þ\|Ï_pñ]^¿à?ºüòÙ¿àÌ÷íáôøæëÞâ©£Ö]½üôϾÉÚmó_õº9~yAQõùIÖûýëùô,¿|ÁwÝîò+¼sâüê»íë+|^^~Ôûéï»þW¿Í¾õMþ¥{Ø-ÁÏyù¿oë»7ì|ñv°ÖÏ?æââÏ®ÿôâãVñNÜü¿Þÿç£æÿØ7tñëÄø¯Úþ£ê/
-Ñïq»þ_^ÍÿÖÿ(¸ÐßeuÙ5KÜõÄbÿ7¸éÿUÿþ2 ÿ)|/ëÿ÷ºØ"Îÿ
-zdþçܨùö
-]bÜÿÑã×ÿJÿ1ÿ^7½àÿù1`ÿØ7tÆìø§[ÿ)ªëõå¿(¼¬ÿ!ó¼G¬ÿTYÈËåþkø<Ë?Eégj2ü»%îúCïÕÿ²Q×ìºÄ¸ÿãÏ]ÿÓú?
çõìjý/¢¸XsÊëygË{Ùpý/w½Êáò+Öÿ\Yý½ââÃõ?_¸²,.^pcý/»µþ]ÿ]ýõ¿ëózýÏÙìâ7Öÿ²áú«æ3ÿæ+\ÿ
¢×åò®ÿÍÊÊ_¾ÅÕúËfîò£¾±þÝZÿË®Öÿ|ϳ7õëÖÿ~'ÄÝÿôÐó_1êþ}C¿þG?wýOÏ\öÎ]vÍwýÇ®ÿ~Ôõÿ×_"û7þÄõ_]ÿ)|¯ýÿïu/B!B!B!B!øÅÿç¤_ h
\ No newline at end of file
Deleted: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/8ia64-2n2s2d.tar.gz.output
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/8ia64-2n2s2d.tar.gz.output 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/8ia64-2n2s2d.tar.gz.output 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,56 +0,0 @@
-Machine (phys=0 total=33331648KB)
- NUMANode #0 (phys=0 local=16554432KB total=16554432KB)
- Socket #0 (phys=0)
- L3Cache #0 (9216KB)
- L2Cache #0 (256KB)
- L1Cache #0 (16KB)
- Core #0 (phys=0)
- PU #0 (phys=0)
- L3Cache #1 (9216KB)
- L2Cache #1 (256KB)
- L1Cache #1 (16KB)
- Core #1 (phys=1)
- PU #1 (phys=2)
- Socket #1 (phys=196611)
- L3Cache #2 (9216KB)
- L2Cache #2 (256KB)
- L1Cache #2 (16KB)
- Core #2 (phys=0)
- PU #2 (phys=1)
- L3Cache #3 (9216KB)
- L2Cache #3 (256KB)
- L1Cache #3 (16KB)
- Core #3 (phys=1)
- PU #3 (phys=3)
- NUMANode #1 (phys=1 local=16777216KB total=16777216KB)
- Socket #2 (phys=256)
- L3Cache #4 (9216KB)
- L2Cache #4 (256KB)
- L1Cache #4 (16KB)
- Core #4 (phys=0)
- PU #4 (phys=4)
- L3Cache #5 (9216KB)
- L2Cache #5 (256KB)
- L1Cache #5 (16KB)
- Core #5 (phys=1)
- PU #5 (phys=6)
- Socket #3 (phys=196867)
- L3Cache #6 (9216KB)
- L2Cache #6 (256KB)
- L1Cache #6 (16KB)
- Core #6 (phys=0)
- PU #6 (phys=5)
- L3Cache #7 (9216KB)
- L2Cache #7 (256KB)
- L1Cache #7 (16KB)
- Core #7 (phys=1)
- PU #7 (phys=7)
-depth 0: 1 Machine (type #1)
- depth 1: 2 NUMANodes (type #2)
- depth 2: 4 Sockets (type #3)
- depth 3: 8 Caches (type #4)
- depth 4: 8 Caches (type #4)
- depth 5: 8 Caches (type #4)
- depth 6: 8 Cores (type #5)
- depth 7: 8 PUs (type #6)
-Topology not from this system
Added: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/8ia64-2s2c2t.output
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/8ia64-2s2c2t.output (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/8ia64-2s2c2t.output 2010-11-24 09:21:55 UTC (rev 7494)
@@ -0,0 +1,35 @@
+Machine (phys=0 local=16591312KB total=16591312KB Backend=Linux)
+ Socket #0 (phys=0)
+ L3Cache #0 (9216KB line=128)
+ L2Cache #0 (256KB line=128)
+ L1Cache #0 (16KB line=64)
+ Core #0 (phys=0)
+ PU #0 (phys=0)
+ PU #1 (phys=1)
+ L3Cache #1 (9216KB line=128)
+ L2Cache #1 (256KB line=128)
+ L1Cache #1 (16KB line=64)
+ Core #1 (phys=1)
+ PU #2 (phys=2)
+ PU #3 (phys=3)
+ Socket #1 (phys=1)
+ L3Cache #2 (9216KB line=128)
+ L2Cache #2 (256KB line=128)
+ L1Cache #2 (16KB line=64)
+ Core #2 (phys=0)
+ PU #4 (phys=4)
+ PU #5 (phys=5)
+ L3Cache #3 (9216KB line=128)
+ L2Cache #3 (256KB line=128)
+ L1Cache #3 (16KB line=64)
+ Core #3 (phys=1)
+ PU #6 (phys=6)
+ PU #7 (phys=7)
+depth 0: 1 Machine (type #1)
+ depth 1: 2 Sockets (type #3)
+ depth 2: 4 Caches (type #4)
+ depth 3: 4 Caches (type #4)
+ depth 4: 4 Caches (type #4)
+ depth 5: 4 Cores (type #5)
+ depth 6: 8 PUs (type #6)
+Topology not from this system
Added: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/8ia64-2s2c2t.tar.bz2
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/8ia64-2s2c2t.tar.bz2 (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/8ia64-2s2c2t.tar.bz2 2010-11-24 09:21:55 UTC (rev 7494)
@@ -0,0 +1,49 @@
+BZh91AY&SY§± ÿ§ÿÐüóÿü}ÿßÿïÿð nø`_ÏU$B×mÀvÔëÀr& D P*
Rï@Ü
+ 5OOJ~ª©¡êh4 ¦ ÕOßê©M
+¨ Õ<É¥)¨ i& PjTòj=@ Ð& @pÐ
+ Ð ¦4 ѦA¢ #&¦C$ÙMG©æ©êj¡íSÔ=@Úz Ú!é©ÿPýùÄ,CýÃýâ5`~±GóÒC%,¶ÿ`¬`%0¸Gß
+##}?^4¨ÐR4],ú¢?IøN!ØI´$)TYxH\b Þ°I
+BÀ¿£~êߣ~ÞæÕÊ÷¶õιxlïqæRÔqºÕÕÌÆµG5T¡`X±s72«©WSVÉ*jíe«Ã3Ìnó¦
+ѾlÞöo¶Ûjââå³qÑ&®êÝÕKº·unêÔÄJ§»¼Þtï
+÷½Å0ÃÃLÛ)ûܳbîð»±vH+V.iÄ9ræ¦\l6î¤Q$Ä%J!¢Iµi·( ÔéÜ338sf#fj®µrâܹÞ/{yz··4g\ËåÎïJpU#4¤CÇbîÍ0«5Si±)©¥P
+b¦Õ@4ÔÚ¨7NmM*Ms7s|Ms»¹»®ø$ 2$
+BI è¤À²,´,¶P²ÊU*Ûm([Bb1IjÚQ[JÕjµ)hTmQX°´«BÕÙDUP¥--¥jRÙQUU%¥YiV[-µUEUe¶ªËj¨[(ZU¨¡R¥ËÕÒIl¡l Ê ¨,¶Ê[(ÄDR
ª-²Z"ª( U%²
²@>`5;"NVVÚ)Àà2A]¢ª 4R8ÒÔ¦¦L3´bC¦ÕN
`1z«¶ëT¶¶rp!Ò+»J¬á!¨¢î«rh,ÀÐjDX Ój§egw¢u¾n÷Û¨'psUè6\Û¢f§
+t]nVb4ÖÂ$><A$WPÈ1!$,"BÄ DȰ¢ÂÉZ,IVÔBRÈ!TI*?Wä-
+[üóF¨RÞM0Dýâpú~zªª£¯¶QEQOë ùÿvªªª®È¤R)E"öxýøþ;§Zºu«§Zºu©0L&LF_7
+^Z ` `àAá³{ÞÍîlÑMOêÜïÐ pXñèÎɶìA¶ìNaÃ`¶Ä¹Á¦Å135Áml.^¹§Y=r\½sN³:z䢪¯Æ|¦
+2¶Äµ:Ô0Ør×Ú½¼`;da@ïïêÔií
íw¶ÜfÕ·¦þi¯.'DHùÃ>ä"B¢Hü¯èÑý!¨ûÃõR>þÚ&z~Þ:dbQ)G|;ôØ=^>YÇ¡¨îöwf5ÝÌ4ç±=zÿ·Û|ôç¯$j:ÑñkþàéÏ~ÐÜŰSóuu· s¼68WØ
+¹ç« m°Þ¶÷ÛáñÛsàúúëÜê¼!7õ `u
+=câµgÏ.Õci5*Z.·¿@= òÈPõ>!$Jæå³¸°YÖÝ(ý£dy1®¦gA]çiòÎfa(S(DI% Û 4àÍÉ&LÅîôßÊ㣪¶Ú·êëj¶8ä§ !fffffffffUUU]íݶ¶¶Ûm·â{H@÷!^|ùôÌÌÌÌÀ $ ! I@ ü&&¤EQEî{ä@~ |
Årå\©½«»w[»mMï{Þý½Òa4bªªªàª¶Ûoa'nÝ·ß}øïDè$ð×óm¾<êÕw·ví»Õµw½ë{Úªª¶Ý-U¶Õ½üHx èK.T©SÀ 330
+QQtmDUE÷v®®êò¦ö®íÞµníµ7½ïk ñÏLyLävkÀëÁÍÝhMoE¥S{é9{6nuãyf@1µ`ÉÉHdü4Ý*÷¾¿Ø%<ü:®$ì3çç·XÅø=ÿ{Ï?L3<2ðÑøÇÝRECp*P²Pì,ï¦'~s HBKñPFB«b¬U±V*ÅY
+þÁUUU~hDçý/³óüÁÉæ?åùæD¥¶²ÞÜ%(µ¹K-þAùFCÂ}Ù$û°ÿYþ£ºI¹¼Üæóssr7òãã£Å>Ãó¦+Á1&LÃ#2fd4ÒfÉeTû
+0ý^ÏïÓ¡ú$Íf¤j'êý?§ôóúútéÒ(ù"4+ÔBDûðHH|é÷>D Ó?G:¾g·[%HQÆ»i²gY!%Bq¾MUí Ml×ZÎoÇlèõ8j}&3àøÍ²RÐ@©«
¡ç gMw/|x6xM8¬ÖÍÍ<l©zYÞ^ØÂºlë{£}f÷m¤IøSbqsó;@û©'=7ú»uîúTE"
¡d¡·ißô8׿¨ñ
+v¸
+ÃyNY^A9^!íÎ&6fb^þAë¦ÿ£l¶ì'Mô©ÍÊaV·ÝukMÆñ®ìS~qÙÆ¸F_Ni½ó½Ð
+³ã¿=Уë6Øw¦Ïð4½uß.7ÃÀNQÆûñÀé[:}n×ez¡Ö7Û«\3Y;±M!(§hD
kõ»l.Þx×ÝåÏ!¶úvæÚ¾=°4g{fsviu1¢Jôîs:cÀ$ìN%U=Æú»1Ëy¯MÞ¡Å$QH¡hY(m6Õκn;³¯<M8¬fC|az
+ò¶îç
+wã<p qÇMg&r3¦Dt©Î£5$Pz4fàn2À´W;½ÄHãyÑa÷äIÉ ÖôBMJÃg¦ÀèÐ&Ûßc/VñB$=ÉêëÃU×{nhèk×&)´52Ê&úföÚÝ¡B=¢xC^ï>}ºuÍcZ*H¢BвPÒo=c×éïð^6Ã$IíæO*PÄHÃ
à ïäç7Â9«æùã¥÷·*®è
+_FÉäóàÕð¸»jy5|y4tzÚ:É(èc³][¥íº$Yæ)¢mª©¨<`æ0,7ñ×|ã¶ygtD â8¢¤)-%
+¶¼°Qk (K4À=4SgFµ½hÍo' ¼®ûnívhåáªÉáÑÛÅHX ´&¤P,6m&»«.fV3.'ÅH[¡N4ÆzéÓ[noÕlZBFóÛsa³swÇ
+£#nWTg\%åªñ¬í<a´BÉdÖÌ+ÐòãO.þ;4öN¶cëãºw<~Üé'¡ãzÄdá8ÈÏÂÞ´¾Ï#wçL»ÌB$;¼]
+îòØl馳0ÍMd0T¾m'&tã £a Îfç,fp@¦^ì72O[Â
+3Û¯ªz7¹ãÓ|.Õv:txNñ£¦´Õ;Jv9Óºkm©ì |5é9ðæøïǾìÛqÉÈwäC´äÝÑsÒã;®ûMòt=Ðã$
+^69ǧ`B at y{6:´Ök»!mÛ[6ê!Ûý°
+Éç¹²Yb9vå¹öi²k9d {RY4RPÀ´¤¥¤ñ¢aG¡ Ö¨¥](]ãÒúkáx
+Å
+ðÛ¥½5FîZ2á4fäÍ3YnÎÉÃÑUÓS½÷Iïöóß? 0õ©Ã^ð7½Å úã½Äc!á.ß±MVÁPö-3þ÷¶èïBë~9²¦ù7¸º ¡$}@²T6
+á¤ÜÎòpeðjáêÏ
+<ï`OxÀÂoña«oµ³uäI¸ Ìȳî jÃYZÛô7Æ $ÄeÈw:è°.ÛÃQ¢ý }#ïâþ×ø×"®Jm9 ÖçÊt¤ÄÄ<G#Ëþ;eðrNÁÅ
ÅËVJ¤
+Sh© ÖçW)ÒñQÛ/ÐʰqaqrÕ¢ç ¥©Ú*Bu¹ÕÊt¤ÄÄ<GTvËà42¤ìX\\µh¹À)dª@¥6nur)11ÁÕ²ø
+©;-Z.p
+Y*)M¢¤'[\§JLLCÄpuGl¾C*NÁÅ
ÅËVJ¤
+Sh© ÖçW)ÒñQÛ/ÐʰqaqrÕ¢ç ¥©Ú*Bu¹ÕÊt¤ÄÄ<GTvËà42¤ìX\\³e`²U REHN·:¹NàêÙ|T§·¶ÿEþfççìÜà Í*U© ¨°ßÊ ^"4Ê a9û)õÚç~ÚöÒ?¼*PRöíÛêWøáÞpQ÷Ib`úLóçQHûÃð03?ô?~ão#°b¯éü{ÃL#ðþ_࿱Úl8¶¬·úÃaÔdkñ|-¶Ûm¶ØOVúÛþEÂñ[çygî¹§ö
+ÿgîoÁº<øyùÛæô÷XÓ Çð{þâ? ;È|£òOÓYþ!eYBË(Ye·
+E´>àAþajr,²Ü,²Ý²7û~ÀÈ÷p&wî
+(Kë"Cý°TèÊÿ[`I¹ýAüMÆ=Hïôô
+7þ ê;Ñ`<' zÓ#Ô(|³èf!òÆ#Ø706Xh&¢>Øòæ8ÃwV=ð
+Æsc¿">Áõì?}p§ñé<ÂHØb1'Ü$<i"$5¨h¶£#A"cqâðÈD["È
²!l["È
²!lyñFÏHùÃÒãpæ#AóàÈà`. cácA`ø#a²
+"E£ýÂ=cå)EªýE}ØzFí
+(öÁâ¬6pÆ¿zLBäs
+Cl"à7Ñä>çµÜðmÀ3:ÈïÛx½aù#çè¹G]C´"CÃaà5 ÈgÎA!Òy,h.a xH$0(¾cæ> püa§¼z{ǶD÷u&3 Ql(Ôç°£ÕØ6ãMCÈSÈ&$$=nÈÐh¾>ÿ°O®!Ôj#q=ÃØ|R ¡ô é
+Gö_0õ÷z?þ`|
+íFXçNú'Æà<GÔÔq´ÒsÍÎòCODHÄ<R'á|ïÖ(t¯@!Ð|B9 =Âl#!ëÒ`z§£^¢OHì8òBBÏß;ÆD9ÑD¡5ïp:DÙuõ5u èÖ ! ?âmª:¢j"FE"0,$ïû«º'Òð
N¢tuÿÇyûEòÎëJXyÆ_ß"¤ô !n$÷öIïuè£Ì<D
<£í!Ô2(yÃçEHñyÛ<¡ï${Qê߯#gê<Çöò 9h:©·®ÃQºI"GA"`Q´"CêÈî
+ùFÃâ>10#îøiÀ`9èÐuý¨ÏqI!înÙÑÞ4죰¸Â$9G®½d$* DZµFÁ¨zÄÔuÄ$ù] ôØj#Èyü`F¢5Æá9tàEܼáqÉ¡ý¹H$9¶ïù/"B½Ú¯B/ÛDHj4ÀW§Ìv ½Â9CÈw÷pG@ 8æ#yë°Mð#ÍÀT$ÿÃídô§ì2ÀÄÅeñqÈsá¸ýþ!#Ä<»ÌC"=#¼3 ÒÉôÎá£Q(v|ãà$ÃÀEТ<$;@v>ù$Bü]ÉáBBzbÄ
\ No newline at end of file
Added: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/8ia64-4s2c.output
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/8ia64-4s2c.output (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/8ia64-4s2c.output 2010-11-24 09:21:55 UTC (rev 7494)
@@ -0,0 +1,53 @@
+Machine (phys=0 Backend=Linux)
+ Socket #0 (phys=6147)
+ L3Cache #0 (9216KB line=128)
+ L2Cache #0 (256KB line=128)
+ L1Cache #0 (16KB line=64)
+ Core #0 (phys=0)
+ PU #0 (phys=0)
+ L3Cache #1 (9216KB line=128)
+ L2Cache #1 (256KB line=128)
+ L1Cache #1 (16KB line=64)
+ Core #1 (phys=1)
+ PU #1 (phys=4)
+ Socket #1 (phys=6144)
+ L3Cache #2 (9216KB line=128)
+ L2Cache #2 (256KB line=128)
+ L1Cache #2 (16KB line=64)
+ Core #2 (phys=1)
+ PU #2 (phys=1)
+ L3Cache #3 (9216KB line=128)
+ L2Cache #3 (256KB line=128)
+ L1Cache #3 (16KB line=64)
+ Core #3 (phys=0)
+ PU #3 (phys=5)
+ Socket #2 (phys=6145)
+ L3Cache #4 (9216KB line=128)
+ L2Cache #4 (256KB line=128)
+ L1Cache #4 (16KB line=64)
+ Core #4 (phys=1)
+ PU #4 (phys=2)
+ L3Cache #5 (9216KB line=128)
+ L2Cache #5 (256KB line=128)
+ L1Cache #5 (16KB line=64)
+ Core #5 (phys=0)
+ PU #5 (phys=6)
+ Socket #3 (phys=6146)
+ L3Cache #6 (9216KB line=128)
+ L2Cache #6 (256KB line=128)
+ L1Cache #6 (16KB line=64)
+ Core #6 (phys=1)
+ PU #6 (phys=3)
+ L3Cache #7 (9216KB line=128)
+ L2Cache #7 (256KB line=128)
+ L1Cache #7 (16KB line=64)
+ Core #7 (phys=0)
+ PU #7 (phys=7)
+depth 0: 1 Machine (type #1)
+ depth 1: 4 Sockets (type #3)
+ depth 2: 8 Caches (type #4)
+ depth 3: 8 Caches (type #4)
+ depth 4: 8 Caches (type #4)
+ depth 5: 8 Cores (type #5)
+ depth 6: 8 PUs (type #6)
+Topology not from this system
Added: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/8ia64-4s2c.tar.bz2
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/8ia64-4s2c.tar.bz2 (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/8ia64-4s2c.tar.bz2 2010-11-24 09:21:55 UTC (rev 7494)
@@ -0,0 +1,18 @@
+BZh91AY&SY?NÍ UË¥ÿУxçÿó5onÿïßð jø`>½à[à 5=ÍÞñÛÞÌ#Ðt$¨ >øè Pý( §¨ESóG½U(ýUGêMC&&`CF@ÓF 5OÂ%Q=OQ¦@ Ñ 4OR ¨Ó@ `4` j20¨h
+=@` #&d1 R" £M#Dz4©ê ~¦£2ê?R2SÔgª|ÈöýB?PÿA O¼Ed##çúñðÀÚ³èú}¿Wæ÷èÆ3¾»í¾ñ DE@ xT£UÅQV HPå"3·¯¡Ã£×µëUÀV*í!VµÄ:yR³NbVYeRÂð¼/ÆHM1ïßfèÆÃVeJRÖiR¥7½ëDo{ÞË»°ÆsaYgH\Ö1½cÓMc
+c
+c
+c
+aJ*JRZÓFW7.j÷³zÞó¼ï,²Ê¡Ye3jµzÕ*fg $ÌK»´ÒÔf)ÝK£S.xb¬ÇJÔtIK[ÎvÆã7¼L"Y%¢I Ø
+oy@´ &äEQ`î*®5kZÅ
+E A²,QDX²LÈ*)ÔATUSF,F(¤5 2""*$Ë ¨Äb]øÐ'0ÚªêÚ¯C\Ëaa¥¥-¢BŹf YÀsj²sK
+°0ÐòÉ!¨l2GvÛJ¤7EÊ©,*U)UIÕr$Nh\BEÔÐ$üH!Q¨"À¬dAdZjx¢nQ9Ê'«(J<2£Ã(ñõp<P° 8` gô££º)ó¸dà8d·
2ækiÖ°×\¥²Ê[)l¥²Ê[ ö 2ô³b®²îU(iR©CLºJeÔªPÓ.®êèÛ.ìJuU¥÷ÉiÖ%,erü¬Ø£ò1ëóz¬³$
ðGZÎÎÜæîîîµ'¦jDòï5óVp[J"L$¹$m¤y
+ØÅÝÞ~¿w»ßw`¶tõÆ1U; ì;1U-Ök¿¿¼ Þ÷½ï{Þ÷½ï{UUU^7µmV¶ÛJRT\DFµÊ#"#"#"#"#"#"#"#.Zð@)P¤¶[% ÛoBI$I$¶DMÈË+Èd
JªªòQQS¤G
+¶îêªk*QUS"ÆFFG\˲«³³²»:ª¡ýýà ox#
UUSfÕUUM]+U])+«mºÌ·VÚGÙ¾3·otÓ,ÌfïK¸Ó,Ê©ª´©ÄDi õqCcÊx§ÕªG~}®þøýÖ)$P´P¥ qAÜéìêC T HéüãúB¼{ǾI<õØ>Áø8©#DüéH¤rRå¢âââX`ÀXkú>`Ò 8P2â§Óíͯ×jd\ÐQÃTà ¥À" *H"|o`ÀHõi=5#Hm1ÍLF"Lh,(ZÍh%ÊS54.eE%AQ¢¬ëxÒøh¥9\êÞ `DC&X¤²Ü$q®3LPHûdÖ¡¤?IN>qÎ
$QAº>Ñî;+ó8s]á¢×´EQh"X©Âø§:kXàN¼ê&YÜ6àfaMEDi´ìÓ[Üj»{ßsVøc#\hÓ6Ða ܶwëçÓ¤yÍVfLpâ0bªS~0ÒQ!AÜ"4»ZTXU\.'YoHé8èfûuP¤B*(4:j¹÷n¡Åhf«8iUKíµ¦*v^]WvXA"F¸V qÁ;Y#Èr(Ñ@
æ¬íPßZ«\fãQ#¬(e¥UB7ã*bs{¹ýdH|¹]Jß^mk
+`´ê²ÃR\Õ%åÁ¦ò°°w¤yE
+I"¢sJR¼ xtjQ'\Áæ#0Ez´90S
+1
+D¡F"0CÀ¡H0d`hµ4r³ ÊJ©*Ût.:{vsnËn/Ýñj\ª[6\«jnq¶ZkH'PÐ(GÃJ¢ªp°»"DëèRH¡9tÌ9ݳE'i`U½|kZDØ=Å$F M ÙtÐ$\é©!ÖBEoZÈíPã|ïvg2E»låcû:òA¼ætöS¤ìèË0¬ÎZÀÁrNÚã%ºÜ/˶%IQC"&ú"h_ (¥ÈÐT¬ÞQUé\.æâ¦n4®) åï¦zÒKQETÒç&úñvnÚ÷Ó³u4ÂæUZi¤UVµ8¨èj:2äDßå
+Rª®Í{GN#xÀæçpØò$N]½2D!B$¦·/wæävsoÔ(:Ü6i¦-ÓM\¦rË7w®hÎd½ïjÖPÑ7"o°è»Òc
+p3Y[ÑôL4ÎSÌ2DÚH.ñ¤aƦc9¤)¦1Vc«1[§æä'XkÜaÑ|Úh¢eDSïi à´ ÕQ+ at J":réÍf®·órKrs.îªjnùÛsRunÍf®·órKrs.îªjnùÛsRunÍf®·órKrs.îªjnùÛsRunÍf®·órKrs.îªjnùÛsRunÍf®·órKrs.îªjnùÛsRunÍf®·órKrs.îªjnùÛsRunÍf®·órKrs.îªjnùÛzç]wÆÛí¶vÛ¢ÖÂããX£uG1Ú<ÿFÊx=/Ñ«ïGõ}®/ü3øýÚ;Qíj
à1ØüËõú?ưߪªª°&Iô¯mûssçÏÜÆ±6î~¬GGò9Áåüb1ðôp"ÄXÿ[àGÖH ~â$N¹¾?I¤>OØ<9ÇÖ(àÞÑülÒ#Ò#8ü°GÀGGÈ#ÑÄy0ØIô"nGý`v©DÐ$Yp! :DWcðÜFáÍ [Á6D4"¾";ĤªªIAåñHò¡)ª×Zw~2Æ=aÌE
+4ëÝ:çQÀa$O çÈ=B<,F¼"P¤I«¦¦DXÄ¿(GÛä¾DJjD]HÁÑÌGLGVDrXùxû5°yDPó¢Hsüðö÷"zH¡>¯ |úz|]ÕØäÚ
¡1=¾WäâDçíñÈDõMR#lc«&¡Çå¿¿«6Aï'³>êÖòøöù$æÚD ñ8a¯/Ètú»÷9yáCëÑà#:sQ'¡õü¦2#°Gï½E"wdIæH](àØT £TuÁbPêëñù0#(2(Etvô^ÄHÚDÈlH1£Ùa·¤0 "k¸ì;ØEì°tÈuê#ÊÃéræj¼ã$Aû(¤¨#Ø#£ %XÄVDHêÞ"»P
É qqp'ÈAÿrE8P?NÍ
\ No newline at end of file
Deleted: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/8ia64-4s2c.tar.gz
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/8ia64-4s2c.tar.gz 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/8ia64-4s2c.tar.gz 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,16 +0,0 @@
- ÊÖ9K íÝÛØ
ûºÂIxþÈRîÁ4f& 6r)°$DXÕ=5O?¤T¬R±Ö9»ÉåAïõ¡;¶Û)kkë¬}W¹ÿ7²«?ý0YGBÿ£)Bvþµñþüã3?c3²ÌîuÝÏMöÃ0Û;ºâñÔÇ~¸ß4]½ÿ×UÇâ
-a¹{ÿéé4Ïw ®þÆyp./úúçÁ³þFõ_W?׫jâïAzý½-rÖÁ¿¨÷ó¶ú:Ñ× ¥þÞ®þ!7õGðëõ_'ø$Ô?Ër×Õ?wEÁú#¸]ÿîßü·} âëï}÷;]ýëYõoC³k6O¢/Brýmw7Àó?Ôú·ÛcU®§ú¾û°6qH_`©÷·ëoí¨þÞôçÿlæ¿ûåõJðË>ûñ{¿#$UÿíÓ©^»å¡\})7Õ²^ß<ÆMýga¤ÿnh©¹ñ×KªþWÍ1Jó×ÜÖÿøúo»Pÿx½×HÿI«Éúßå9õa¼þ÷<¨"Rÿ«rµ¤]ÀÈþq!¸n9Úé?ë~dÿARýëýºúü5Hêÿg®ïÿ
þþõIýOõÿV)ÇH¿ÿ·®0¼þ#°!ÿ^òõ"ÑÙ¶Çúþ±"õpSÿÆÎÿ.gÿÃ?u[ýµ\}áI@%ý·O¹¯ÿÝÔ?e[RúzèWý\í!èÿÞÿAýÏ¥øU#ÑÿªÙVÇj¿zZvéÜhÜÖ¿ÿwúG`ìÏ èÿòé´låéԬ겮ۧ_9FüõÐQÿ¨~ÝúÿÛòXÝo,¿ÛǸ©ÿ÷þ_WðþÂPúu"Ñÿþñë}uìW §ªÐDúúß{Kÿ?r*^1éúÏ0þæ?@ÔzÿçÿÈsÿÚ?T#ÑÿôþðÞÿÁç?ÎþOÛcó¸ÙòD þþWðúþÝHôñÐÿ
-ÁPüªèzÿ{ïÿ ÿBÎ
-ªèâÿàý?Ê_7¢þ?ÀÿÁþ?¡ôèD¢ÿéýãõ¿÷ÖSÿ¸þ×MºþÆÿÁü_úOïÿÈGõ·®`ÿé.¶tèE¢ÿÉýÝ=ß;ÿÿ@ ôu#ÑÿäþóÎÿé©?íOíñqÕÖͧ
Hôñ°ÿùºèÿÁç?ÿ¡þ!þêÕ¯Qÿ6ÿÇËó_æJðá'<¨B¢ÿéýãýÞ;öÿ
ôÏÿ(y½¤ëßcüÿARÿùüWûÙÿ
°°L ÑDÿù/Ô?ÎÑDÿÓû?2æ|'>ïëºZSýJèâÿ`þ;Gå«F¢ÿùÏèÿÐDÿÿõaAõ«FÔÿGÌáþOC èÿÐDÿÿõáÎ,¸D1éú7ÿ¡ÿ¤þóÍyÍÿ`þº?t#Ñ? ÿ#ìÿ@ øu#Ñ? ÿÃQÿÿ¡þ!þö pþn$úÌáüÌÖDÿÿ÷@ üu#êÿò?ØÿÇ0ó_t"Ñ?dþ÷@àú_7Qú·É7ô
-ó<÷ÿLÑ èÿ@Yÿ¶94»fó$ú"$×ßv¿*X©õo·Çª\/Oõ}÷amâ>øõÿÿÛìÿAÿ3.tªÿÃöéT¯ÊÝòP®¾jY¯oãöú?õ_0ÿCn| äõªÿUsÒü5ñýÿ×ù?ìÿcàóÝô´ú¬ÿ]¨ãþ?×ÿºÔÿ¥ÿ/<FdÿǸ\·íô9±ÿ ©þçç?éÍàøþ_8¯3k|XúO¿ÿo|ÿß/ xýG`7 jF¢ÿyóíeÿõùϺèòý߸þsþe[Rúzè±ÿÏpÿ/?éF¢ÿyóíeÿçB`þ³n$úwÿ½ìÿ£þ!PýºõÿùÏ9ïÿ!% ÿW'ýO¿ÿo¼þ÷ù?lÈ©xŤë?Ãø?¸ÿ¤þóå?_ù?xþÀügÝHô?½ÿ#¼÷pÿ³ÿãÓöØ<n¶<èC¢ÿ×ôèF¢ÿþOÜÿ©þç;ø?ÿùoºèáÿ°¼ÿ@ùëFÔÿGø?xÿa(ý:èÞüçÿû?0pý¯tý;ÿ#§ÿ¤þÓû?òQýÿÂt[:@ô"Ñÿ¼ó¿ýôÿC ôu#Ñ?dþ7¯ÿ8ÿ[7ýCæsÿ/æèF¢Hþ¡þ0ÿC7ýCò?¨T¿nDýÿYçÛÿóÿ %üÿþ§÷÷zoÙÿÐ?ÿ£äõ®ñpþ3Iýçó\=ÿaÿÂÂ2D3ýCæ¿Ðÿó_t#ÑÿôþùßÏûú¡®ÖT¿R$úø?øü£òU#Ñ?ÄÿÁë?ú?t#Ñ?ÄÿAýCXPýªõÿùÌÿ0þHôñpÿ;³àŤëß`üþúÏ7ÿå*ÿý_tèF¢Hþû?(~ÝHôÉÿàþÌÿÐDÿù/ìÿBàüÝHôÿBýC`þ³n$úÌáþ¿nDýDþûÿpþN$úGÌaþ'®ÿu¥ÿlùxC¯ð8ÿÇsÿÏÖsþÈú·Í¡Ù5'Ñ!¹þÖnIÈúH»=Våzyªï»k÷įÿ_üߦ`ÿÂhýoéÿÖEªþÛ§S½*wËC¹úRnªe½¾yÛëÿ0Òè þä]!(y½¤êÕ£4M|ÿÿåù¿wìÿCàõ^7"ý'þ%ëêÂxýÏÍ`ºÔ
ÿ¥ÿ/<FdÿǸñÝëlæcÿARýÏÏìÌûÿ\ßÿýýë??úO¿ÿo|ÿÏüg6p f$ú7ÿÙ×ÿìÿa`þ³n$ú|ÿß·®ÿ¼ÿð±lKJ_/ýCò¹ÿû}ºèÞügwÉæü?ÌÖDÿóîÿsügêÕ¯QÿÿÌûC èÿÕDÿÓïÿ¯ÿ=ó?@ØSñI×ðpþ7IýçË~}þ3ÿóu#ÑÿôþðÞÿÁç?ÎþOÛcó¸ÙòD þ!þ^ÿ!Ðÿ¡þ!þú¿!0ÿY7ýÏÿüìÿ ÿóßt#Ñ?ÄÿÁû¿nDýÿ÷ÿÐÿ¡þçÍ~öpþ®ÿu®Éÿ`þ/Iý§÷ä£ú[W°ÿÁt[:@ô"Ñÿ¼ó¿ý|þÒ×DÿùßúÇÀùߺèâÿ`ÿó?t#Ñ?$ÿÏ 0ÿC7ýCüÔ?ª_7¢þÿ¬ó¿ó?%æÓÿ¡þ§÷÷zïØÿÐ?ÿ£äõ®ñpþIýçó\íÿeÿÂÂ2D3ýCæ¿Pÿ8ÿE7ýOïÿÈÿñø¼¯êjMõ+E¢ÿùï¯þ!þæ?C ÿC7ýCüÔ?Õ¯QÿÿÁýÐÿ¡þ!þêÂYpbÒõo0þþúÏ7ÿå5ÿùoèþÐDÿüP°ÿâ×DÿüGýc`þn$úø?ØÿÀù/ºè2ÿ
ó 0ÿY7ýCüÜÿòרÿÈÿ`ÿÂPÎÑDÿù/ÜÿëÝDé?}äËz
Çù?û¦èÎ ô ¬Û]³y}ëo±ôÿ@H»=Våzyªï»k÷įÿ_üߦàõÂhýq7.RõØ>êU¹[ÊÕrS-ëõÍcÜ^ÿ±þùrãsJ^/©ú_5Ç(Í_ßÿÿÃüo|þ¯þVÿõ¿Ëõa´þ¿ãú_ú¿ôÿ
Çìÿ3¾{Í1ìÿ HªÿùùEìÿóýýë??úO¿ÿo|ÿß- èÿ`7 jF¢@þs`ÿóu#Ñÿäûÿ¾qýgþ3e[Rúzè²ÿó¿ 0üI7ýCò¹ÿóu#Ñ?dÿõêרÿÈæþ?C èÿÕDÿÓïÿ¯ÿ¹ÿ
-´ÿj
&]ÿÆÿèÿ@ ©ÿ|ùÏWþæ¿@`þ³n$úÞÿ1ÿáòÏ ý¶Çæq³å@ýCü¼þC ÿC7ý#üþoÜÿ©þùÏþoÌÓDÿÿïÿ!PþºõÿþÞÿCJ@ÿN$úä?sþ®ÿu®ÿô0è^áñþËü úOïÿÈGõgþ
-Ó]lé ÑDÿóÎÿ¶üúÿ!Púºèó¿?pþ·n$úçüïßÌÿÐDÿóæXæ aþn$ú×ÿaÿêרÿ?ëüo{ñpÿ?¡ÿó¿u!Ñÿôþ0Ö¿·ìÿCèÿQòzI׿Gø?BÆùÏ$õÏÿqõüý_ËÍHô?ïüËü ÿ¢þ§÷dÌÿøN|Þ×uµ¦ú"Ñ?ÄÿÁç?¯þ!þ^ÿ!Ðÿ¡þ!þêÂêW¨ÿÈÿ`þ¡ôèD¢ÿû¿ Ü·(&]ÿ3ÿ%§ÿ¤þóÍêÏù/(èþÐDÿóæ¸Kþýÿ(~ÝHôÉÿ þ!0ÿC7ýCæ¿°ÿó_t#Ñ?bþç?``þ³n$úÌáþ/¿nDýÿYó?ç¿ JÀù/:è2ÿ
û? pý¯(ý§[>ÞÐ+<ÎÿñÜÿ3
õþõoC³k6O¢/Brým÷+ú ¤Ö¿Ý«r½<Õ÷ݵû@â×ÿ/þïîÀë?ñúfP]¤êÿ°}:Õ«r·<«/å¦ZÖëǸ½þcýÿ!ï
-AÉë%Uÿ«æ¥ùkâûÿ/Ïÿ¹ÿÿëF¤ÿ¤Õ¿dýïò@ýCÿ-×ÿºÔÿ¥ÿ/<FdÿǸñÝëlæ2ÎTÿóóÿíYúO¿ÿo|ÿo9ÿ
-Ü ¨þùÏÜÿùϺèòý߸þ3ÿÃDz-)}½HôÙÿÇü'ì÷éF¢Dþ³åþ_ÌÖDÿügêÕ¯QÿÿÌûC èÿÕDÿÓïÿ¯ÿ½·ÜÿÁWLºþ3ÿûÿ Hê?_þóÿçÌÖDÿÓû?Æó?\àþ/gÿǧí±yÜly"ÐDÿÿ¯ÿèÿÐDÿÿý¸ÿS7ýÏÿüìÿ þ!0ÿM7ýCü¼ÿ@ùëFÔÿGø?xÿa(ý:èÞüçÿû?0pý¯tý;ÿ#Ðÿ@Rÿéýù¨þÌÿ@aº- zèÞùßÏþúÿ!Púºèó¿?pþ·n$úçüïßì÷êF¢Dþçc`þn$úGø?¨T¿nDýÿYçÛÿóÿ %üϪèzÿÇxÿ§÷ýýó?J^/éú÷ÿç?CÔ>ÿÇUþû¿ è2ÿ
þ_ÿ¢þ§÷dÌÿøN|Þ×uµ¦ú"Ñ?Âÿaùü£òU#Ñ?ÄÿÁë?ú?t#Ñ?ÄÿAýCXPýªõÿùÌÿ0þHôñpÿ;³àŤëß`üþúÏ7ÿå*ÿý_tèF¢Hþû?(~ÝHôÉÿàþÌÿÐDÿüö!pþn$úÌ¡þ!0ÿY7ýCæ¿pÿÊ_7¢þ?"ÿýC 8ÿE'ýCæ¿pÿ7®ÿu¥ÿôÈ7ô
-ó<÷ÿLa=ç¿@¬Û]³y}ëo±õGZÿv{¬ÊõòTßwÖ&î_ÿ¿ø¿MÁþÑúßÐÿTý¶O§zUîrõ¥ÜTËz}ó·×ÿa¤ÿþ>úG_PòzIÕÿª9FiþøþÿËóïØÿÀçÿºé?iõ/Yÿ»<PÿÆët©ÿKÿ_xÈþq!8ã»×ÙÌËþ¤úÿØ÷ÿ¹¾ÿúû?Ö~$õ~ÿßøþùÏ(là@ÍHô?oþ³;¯ÿÙÿÃÀügÝHô?ùþ¿o\ÿÿácÙ¾^$úä?sÿ?ú}u#Ñÿ¼ùÏîÿÌùÿ¬þçÝÿç.ùÏÔ?ª_7¢þ?"ÿ÷ÿÐÿ«þ§ßÿ7^ÿ{æ°!§â®ÿáÿàüoúÏÿ|åÿ`þ?æ?ëF¢ÿéýá½ÿÏ ý¶Çæq³å@ýCü¼þC ÿC7ýCòéÿÀý^ºèÞüçgÿýßÿ¦þ!þÞÿC üu#êÿ#ü¼ÿ0þHô?oþó³ÿóß pý¯tý;Lþó!Hê?½ÿ#Õߺý¦»ØÒ¢þçÿí.ó¿ùü¥¯þ!ó¿©ÿþ!ùìÿ@`þn$úäðùæèF¢ÿú@õëFÔÿuþ·cþ¡Ãüoú?t!ÑÿôþñþOï-ûúç¼^Òõ>¼Wx²ÿó Hê?ÿãêùû¿ è2ÿ
úÀù/ºèzÿGÆüïÄç}ýPWkª_)ýCüÌà¨|ÕHôñ0ÿýºèâÿ þ!,¨~ÕúÿüîÿÄ0þHôð0ÿÃYpbÒõo0ó_
-ú?Hê?ßü×üæ¿a ûC7ýCò?Øÿ@ñëF¢Hþõùºèâÿ`ÿç¿èF¢ÈüÎÀügÝHôñpÿÊ_7¢þ?"ÿýC 8ÿE'ýCæ¿pÿ®ÿus[ÿ§Nùëåék»<4¿t²??×ûMz
ç±ëÿüüüÏòþ¯÷ººþgɯ7ô
-ó=÷ÿMa=ç?A¬Û]³y}ëo»_ÖAjýÛí±*»å@}¿^Äßÿ¿ìÿ0¯ÿF÷ÿê"UÿíÓ©^»å¡\})7Õ²^ß<Æíûÿ0ÖÁü¹ñ%¯Tý¯cæ¯þ÷âÿñ|þ÷ÿºé?iõ/Yÿ»<PÿÆÏÿ¸þ×E¤þ/ÏÿÇìÿ3¾{Í\³ÿ ©þçç¿væý¿ö²ÿ×±þ$õ~ÿïøþ¿[ ðù?¸X3ýÏÿn/û©Ì×DÿïÿýÆõó_0|,ÛÒ×Dÿý¿ûÿ!0üM7ýÏÿnÏû-çÿB`þ»n$úwÿ¯=ïÿ¥þ1Pýºõÿùï9ïÿ!% ÿW'ýO¿ÿw¼þ÷ù_lÈ©xŤë?}3`¯ðdÿ÷ÿAÔ¾ü÷+ÿÏÿÿ®þ§÷÷þîÿpö|ÚÇÍ'}HôñðúþÝHôñÐÿ ý^ÝHô?oþû³ÿúÀüGÝHôñðþå¯Qÿáÿàý?¡ôèD¢ÿyóß/þîÿÀÀõ¿nÒõï0þOÿIý§÷ä£ú3ÿ
é.¶tèE¢ÿÉýÝ=ß;ÿýÿ(}ÝHô?¹ÿü÷2ÿÃOûS{|\µu³ç©@!ýCüÜÿùºèÿQPÿÿ¡þ!þêÕ¯Qÿ>ÿG^áüü7£þ!%ü¤þ§÷÷zoÙÿÐ?ÿ£äõ®?£ÿâÈ{ÿG°ÿARÿùüWùìÿBXX&hF¢ÿùæ¿çsÿÎÑDÿÓû?2æ|'>ïëºZSýJèâÿ`ÿ£òU#Ñÿ|þaý|àý?ú?t#Ñÿ|þAÿyFýcXPýªõÿùÌÿ@ÿn$úÏÿ1\ÿ½úGpgÜ¢týLþ¥ÿ¤þóÍyÍÿìÿB ûC7ýCò?øüůþ!ù¼ÿÀüÝHôñ°ÿyϺè2ÿ
úÀügÝHôÉÿ`þ;Ê_7¢þ?"ÿú0ó_t"Ñ?dþý¸þ×MþdËÇz
Gæ\ú¦°ÝËèÿ Yÿ¶94»fó$ú"$×ßc9ÿBjýÛí±*×ËS}ß}X¸$aý?ø¿mÆçÿFëÿ;ú¿uªÿÃöéT¯ÊÝòP®¾jY¯oãöú?ôú[ê@n|NÉë%Uÿ«æ
¥ùkâûÿ/Ïÿ½§ÿ¯÷ºé?iõ/Yÿ»<§þ!×ÿLÐE¤þ/ýá1"û?Æ
àïÿe®ÿÎþÏü$ÕÿüüÇμÿÏó3æ?CÔúýãûë8ÿ
-Ü ¨þçËÎÿ.gÿóu#ÑÿäûÿÞ_ÿ}Æû˶¤ôõ"Ñ?bÿ÷ÿ``øn$úwþ·;ïÿsôÿB`þ³n$úwÿ;ïÿ£þ1PýºõÿùÏÌÿÁ0þ_Hô?ýþ¿ñúß{Gÿ?hÿÕLºþ3ÿÃÐÿ@Rÿùò¯æ3ÿóu#ÑÿôþðÞÿÁç?ÎþOÛcó¸ÙòD þþWðúþÝHôñÐÿ
-yoºèÞüçgÿýßÿ¦þ!þÞÿC üu#êÿ#æóþÂPú?t"Ñÿ¼ùÏÿç?`àú_7éúwÿó!Hê?½ÿ#Õߺý¦»ØÒ¢þçÿýìÿàó¾n$úÌÿöÔ?ÎÿÖDÿÿû?ÿ¡þ!ù|þùºèâÿ þ!Pýºõÿgó¼<ÿeþ¡Ãüoú?t!ÑÿôþñþOïûúç¼^Òõï1þÎÿ ©ÿ|þ«ý¿ìÿBXX&hF¢Èüêç¿èF¢ÿéýó?¾÷õC]©~¥Hôñ0ÿ£òU#Ñ?ÂÿáÿþÝHôðPÿT¿jDýÄüîÿ0þHôñPÿîÌ[@®ñXú?Hê?ßü×üæ¿a ûC7ýCò?Øÿ@ñëF¢Hþõùºèâÿ`ÿç¿èF¢ÈüÎÀügÝHôÉÿàþ¿nDý@þûÿpþN$úÌáþ\ÿëæ×õ¿oÖU²Ýã½Â#üÆ
àï^gòàèÿQÿþ²ßò-¬ÿëù¿{ãüÑõï¹ðçúÅú;»Nöýël(Bwý·üã^þùöÊDú^aý£ëo
ÇÔßÇÕ_ú^aý£ë/=ôï£êÿÛ/¬\ý»¾²û¨ZÁ1nÝÿ0öñþB_Öå¶n?ÌÜ
_øðãù¿}O§Ùåçͱª7ûîõ¾»ªü¹:ÿò®ty¾øq׬Êݲÿ¢\ÿ9M»ÿʶÒÿSRÎÿNxÑù?:ÿKßÒ+Êõ]ÿ¯Õ×zÿÐHqãüo¬)Æçcèÿðãßϧç
ÿU}ýÔ´åîÏzLæÅ"Ø_þzõ¿«êòûÖ/ì]ööOÕúùÝeÀßåÅõðU[ÿüúøÜ:»È¯^ðÓ¾¼~_ä6·þêÿ^o¶WïòB6zÁw9~Á6¿üú_³{Á¯ÿ5?ÖÇöéúÏÏsï®ÿs¢Þ}¹úò¯Þäßê]õßå¦:]^°°Yè¾ú×dy8¼|çûæÙ7û«?á»Ëëô¿ù©¼ß½¼ÂúðæÿÛ?÷ÝW¿{Í¿õ&ÿÚ<îWo?Ç·/øÇ®¼¿þm{çrw]ÇÍ对¼úij÷¿{õqs 'åúoÇÝÿÇÝÿIßÒ+ÊÏÿ)õ÷ÂcÖ6ªþÒ·ô
-ëWÿuÝ}PÝ%Ap[÷ÿïý_Ærþ^rurþêQtý;ÿÿöSrý§Ô?Êì÷
-nÿßùÿ²þC ý¼¨"Eÿ
ðó×ÿ¾¥WëB!¢ÿ~v· @
\ No newline at end of file
Deleted: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/8ia64-4s2c.tar.gz.output
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/8ia64-4s2c.tar.gz.output 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/8ia64-4s2c.tar.gz.output 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,53 +0,0 @@
-Machine (phys=0)
- Socket #0 (phys=6147)
- L3Cache #0 (9216KB)
- L2Cache #0 (256KB)
- L1Cache #0 (16KB)
- Core #0 (phys=0)
- PU #0 (phys=0)
- L3Cache #1 (9216KB)
- L2Cache #1 (256KB)
- L1Cache #1 (16KB)
- Core #1 (phys=1)
- PU #1 (phys=4)
- Socket #1 (phys=6144)
- L3Cache #2 (9216KB)
- L2Cache #2 (256KB)
- L1Cache #2 (16KB)
- Core #2 (phys=1)
- PU #2 (phys=1)
- L3Cache #3 (9216KB)
- L2Cache #3 (256KB)
- L1Cache #3 (16KB)
- Core #3 (phys=0)
- PU #3 (phys=5)
- Socket #2 (phys=6145)
- L3Cache #4 (9216KB)
- L2Cache #4 (256KB)
- L1Cache #4 (16KB)
- Core #4 (phys=1)
- PU #4 (phys=2)
- L3Cache #5 (9216KB)
- L2Cache #5 (256KB)
- L1Cache #5 (16KB)
- Core #5 (phys=0)
- PU #5 (phys=6)
- Socket #3 (phys=6146)
- L3Cache #6 (9216KB)
- L2Cache #6 (256KB)
- L1Cache #6 (16KB)
- Core #6 (phys=1)
- PU #6 (phys=3)
- L3Cache #7 (9216KB)
- L2Cache #7 (256KB)
- L1Cache #7 (16KB)
- Core #7 (phys=0)
- PU #7 (phys=7)
-depth 0: 1 Machine (type #1)
- depth 1: 4 Sockets (type #3)
- depth 2: 8 Caches (type #4)
- depth 3: 8 Caches (type #4)
- depth 4: 8 Caches (type #4)
- depth 5: 8 Cores (type #5)
- depth 6: 8 PUs (type #6)
-Topology not from this system
Copied: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/96em64t-4n4d3ca2co.output (from rev 7493, mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/96em64t-4n4d3ca2co.tar.gz.output)
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/96em64t-4n4d3ca2co.output (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/96em64t-4n4d3ca2co.output 2010-11-24 09:21:55 UTC (rev 7494)
@@ -0,0 +1,382 @@
+Machine (phys=0 total=528473984KB Backend=Linux)
+ NUMANode #0 (phys=0 local=132101504KB total=132101504KB)
+ Socket #0 (phys=1)
+ L3Cache #0 (16384KB line=64)
+ L2Cache #0 (3072KB line=64)
+ L1Cache #0 (32KB line=64)
+ Core #0 (phys=0)
+ PU #0 (phys=0)
+ L1Cache #1 (32KB line=64)
+ Core #1 (phys=1)
+ PU #1 (phys=4)
+ L2Cache #1 (3072KB line=64)
+ L1Cache #2 (32KB line=64)
+ Core #2 (phys=2)
+ PU #2 (phys=8)
+ L1Cache #3 (32KB line=64)
+ Core #3 (phys=3)
+ PU #3 (phys=12)
+ L2Cache #2 (3072KB line=64)
+ L1Cache #4 (32KB line=64)
+ Core #4 (phys=4)
+ PU #4 (phys=16)
+ L1Cache #5 (32KB line=64)
+ Core #5 (phys=5)
+ PU #5 (phys=20)
+ Socket #1 (phys=0)
+ L3Cache #1 (16384KB line=64)
+ L2Cache #3 (3072KB line=64)
+ L1Cache #6 (32KB line=64)
+ Core #6 (phys=0)
+ PU #6 (phys=1)
+ L1Cache #7 (32KB line=64)
+ Core #7 (phys=1)
+ PU #7 (phys=5)
+ L2Cache #4 (3072KB line=64)
+ L1Cache #8 (32KB line=64)
+ Core #8 (phys=2)
+ PU #8 (phys=9)
+ L1Cache #9 (32KB line=64)
+ Core #9 (phys=3)
+ PU #9 (phys=13)
+ L2Cache #5 (3072KB line=64)
+ L1Cache #10 (32KB line=64)
+ Core #10 (phys=4)
+ PU #10 (phys=17)
+ L1Cache #11 (32KB line=64)
+ Core #11 (phys=5)
+ PU #11 (phys=21)
+ Socket #2 (phys=2)
+ L3Cache #2 (16384KB line=64)
+ L2Cache #6 (3072KB line=64)
+ L1Cache #12 (32KB line=64)
+ Core #12 (phys=0)
+ PU #12 (phys=2)
+ L1Cache #13 (32KB line=64)
+ Core #13 (phys=1)
+ PU #13 (phys=6)
+ L2Cache #7 (3072KB line=64)
+ L1Cache #14 (32KB line=64)
+ Core #14 (phys=2)
+ PU #14 (phys=10)
+ L1Cache #15 (32KB line=64)
+ Core #15 (phys=3)
+ PU #15 (phys=14)
+ L2Cache #8 (3072KB line=64)
+ L1Cache #16 (32KB line=64)
+ Core #16 (phys=4)
+ PU #16 (phys=18)
+ L1Cache #17 (32KB line=64)
+ Core #17 (phys=5)
+ PU #17 (phys=22)
+ Socket #3 (phys=3)
+ L3Cache #3 (16384KB line=64)
+ L2Cache #9 (3072KB line=64)
+ L1Cache #18 (32KB line=64)
+ Core #18 (phys=0)
+ PU #18 (phys=3)
+ L1Cache #19 (32KB line=64)
+ Core #19 (phys=1)
+ PU #19 (phys=7)
+ L2Cache #10 (3072KB line=64)
+ L1Cache #20 (32KB line=64)
+ Core #20 (phys=2)
+ PU #20 (phys=11)
+ L1Cache #21 (32KB line=64)
+ Core #21 (phys=3)
+ PU #21 (phys=15)
+ L2Cache #11 (3072KB line=64)
+ L1Cache #22 (32KB line=64)
+ Core #22 (phys=4)
+ PU #22 (phys=19)
+ L1Cache #23 (32KB line=64)
+ Core #23 (phys=5)
+ PU #23 (phys=23)
+ NUMANode #1 (phys=1 local=132124160KB total=132124160KB)
+ Socket #4 (phys=4)
+ L3Cache #4 (16384KB line=64)
+ L2Cache #12 (3072KB line=64)
+ L1Cache #24 (32KB line=64)
+ Core #24 (phys=0)
+ PU #24 (phys=24)
+ L1Cache #25 (32KB line=64)
+ Core #25 (phys=1)
+ PU #25 (phys=28)
+ L2Cache #13 (3072KB line=64)
+ L1Cache #26 (32KB line=64)
+ Core #26 (phys=2)
+ PU #26 (phys=32)
+ L1Cache #27 (32KB line=64)
+ Core #27 (phys=3)
+ PU #27 (phys=36)
+ L2Cache #14 (3072KB line=64)
+ L1Cache #28 (32KB line=64)
+ Core #28 (phys=4)
+ PU #28 (phys=40)
+ L1Cache #29 (32KB line=64)
+ Core #29 (phys=5)
+ PU #29 (phys=44)
+ Socket #5 (phys=5)
+ L3Cache #5 (16384KB line=64)
+ L2Cache #15 (3072KB line=64)
+ L1Cache #30 (32KB line=64)
+ Core #30 (phys=0)
+ PU #30 (phys=25)
+ L1Cache #31 (32KB line=64)
+ Core #31 (phys=1)
+ PU #31 (phys=29)
+ L2Cache #16 (3072KB line=64)
+ L1Cache #32 (32KB line=64)
+ Core #32 (phys=2)
+ PU #32 (phys=33)
+ L1Cache #33 (32KB line=64)
+ Core #33 (phys=3)
+ PU #33 (phys=37)
+ L2Cache #17 (3072KB line=64)
+ L1Cache #34 (32KB line=64)
+ Core #34 (phys=4)
+ PU #34 (phys=41)
+ L1Cache #35 (32KB line=64)
+ Core #35 (phys=5)
+ PU #35 (phys=45)
+ Socket #6 (phys=6)
+ L3Cache #6 (16384KB line=64)
+ L2Cache #18 (3072KB line=64)
+ L1Cache #36 (32KB line=64)
+ Core #36 (phys=0)
+ PU #36 (phys=26)
+ L1Cache #37 (32KB line=64)
+ Core #37 (phys=1)
+ PU #37 (phys=30)
+ L2Cache #19 (3072KB line=64)
+ L1Cache #38 (32KB line=64)
+ Core #38 (phys=2)
+ PU #38 (phys=34)
+ L1Cache #39 (32KB line=64)
+ Core #39 (phys=3)
+ PU #39 (phys=38)
+ L2Cache #20 (3072KB line=64)
+ L1Cache #40 (32KB line=64)
+ Core #40 (phys=4)
+ PU #40 (phys=42)
+ L1Cache #41 (32KB line=64)
+ Core #41 (phys=5)
+ PU #41 (phys=46)
+ Socket #7 (phys=7)
+ L3Cache #7 (16384KB line=64)
+ L2Cache #21 (3072KB line=64)
+ L1Cache #42 (32KB line=64)
+ Core #42 (phys=0)
+ PU #42 (phys=27)
+ L1Cache #43 (32KB line=64)
+ Core #43 (phys=1)
+ PU #43 (phys=31)
+ L2Cache #22 (3072KB line=64)
+ L1Cache #44 (32KB line=64)
+ Core #44 (phys=2)
+ PU #44 (phys=35)
+ L1Cache #45 (32KB line=64)
+ Core #45 (phys=3)
+ PU #45 (phys=39)
+ L2Cache #23 (3072KB line=64)
+ L1Cache #46 (32KB line=64)
+ Core #46 (phys=4)
+ PU #46 (phys=43)
+ L1Cache #47 (32KB line=64)
+ Core #47 (phys=5)
+ PU #47 (phys=47)
+ NUMANode #2 (phys=2 local=132124160KB total=132124160KB)
+ Socket #8 (phys=8)
+ L3Cache #8 (16384KB line=64)
+ L2Cache #24 (3072KB line=64)
+ L1Cache #48 (32KB line=64)
+ Core #48 (phys=0)
+ PU #48 (phys=48)
+ L1Cache #49 (32KB line=64)
+ Core #49 (phys=1)
+ PU #49 (phys=52)
+ L2Cache #25 (3072KB line=64)
+ L1Cache #50 (32KB line=64)
+ Core #50 (phys=2)
+ PU #50 (phys=56)
+ L1Cache #51 (32KB line=64)
+ Core #51 (phys=3)
+ PU #51 (phys=60)
+ L2Cache #26 (3072KB line=64)
+ L1Cache #52 (32KB line=64)
+ Core #52 (phys=4)
+ PU #52 (phys=64)
+ L1Cache #53 (32KB line=64)
+ Core #53 (phys=5)
+ PU #53 (phys=68)
+ Socket #9 (phys=9)
+ L3Cache #9 (16384KB line=64)
+ L2Cache #27 (3072KB line=64)
+ L1Cache #54 (32KB line=64)
+ Core #54 (phys=0)
+ PU #54 (phys=49)
+ L1Cache #55 (32KB line=64)
+ Core #55 (phys=1)
+ PU #55 (phys=53)
+ L2Cache #28 (3072KB line=64)
+ L1Cache #56 (32KB line=64)
+ Core #56 (phys=2)
+ PU #56 (phys=57)
+ L1Cache #57 (32KB line=64)
+ Core #57 (phys=3)
+ PU #57 (phys=61)
+ L2Cache #29 (3072KB line=64)
+ L1Cache #58 (32KB line=64)
+ Core #58 (phys=4)
+ PU #58 (phys=65)
+ L1Cache #59 (32KB line=64)
+ Core #59 (phys=5)
+ PU #59 (phys=69)
+ Socket #10 (phys=10)
+ L3Cache #10 (16384KB line=64)
+ L2Cache #30 (3072KB line=64)
+ L1Cache #60 (32KB line=64)
+ Core #60 (phys=0)
+ PU #60 (phys=50)
+ L1Cache #61 (32KB line=64)
+ Core #61 (phys=1)
+ PU #61 (phys=54)
+ L2Cache #31 (3072KB line=64)
+ L1Cache #62 (32KB line=64)
+ Core #62 (phys=2)
+ PU #62 (phys=58)
+ L1Cache #63 (32KB line=64)
+ Core #63 (phys=3)
+ PU #63 (phys=62)
+ L2Cache #32 (3072KB line=64)
+ L1Cache #64 (32KB line=64)
+ Core #64 (phys=4)
+ PU #64 (phys=66)
+ L1Cache #65 (32KB line=64)
+ Core #65 (phys=5)
+ PU #65 (phys=70)
+ Socket #11 (phys=11)
+ L3Cache #11 (16384KB line=64)
+ L2Cache #33 (3072KB line=64)
+ L1Cache #66 (32KB line=64)
+ Core #66 (phys=0)
+ PU #66 (phys=51)
+ L1Cache #67 (32KB line=64)
+ Core #67 (phys=1)
+ PU #67 (phys=55)
+ L2Cache #34 (3072KB line=64)
+ L1Cache #68 (32KB line=64)
+ Core #68 (phys=2)
+ PU #68 (phys=59)
+ L1Cache #69 (32KB line=64)
+ Core #69 (phys=3)
+ PU #69 (phys=63)
+ L2Cache #35 (3072KB line=64)
+ L1Cache #70 (32KB line=64)
+ Core #70 (phys=4)
+ PU #70 (phys=67)
+ L1Cache #71 (32KB line=64)
+ Core #71 (phys=5)
+ PU #71 (phys=71)
+ NUMANode #3 (phys=3 local=132124160KB total=132124160KB)
+ Socket #12 (phys=12)
+ L3Cache #12 (16384KB line=64)
+ L2Cache #36 (3072KB line=64)
+ L1Cache #72 (32KB line=64)
+ Core #72 (phys=0)
+ PU #72 (phys=72)
+ L1Cache #73 (32KB line=64)
+ Core #73 (phys=1)
+ PU #73 (phys=76)
+ L2Cache #37 (3072KB line=64)
+ L1Cache #74 (32KB line=64)
+ Core #74 (phys=2)
+ PU #74 (phys=80)
+ L1Cache #75 (32KB line=64)
+ Core #75 (phys=3)
+ PU #75 (phys=84)
+ L2Cache #38 (3072KB line=64)
+ L1Cache #76 (32KB line=64)
+ Core #76 (phys=4)
+ PU #76 (phys=88)
+ L1Cache #77 (32KB line=64)
+ Core #77 (phys=5)
+ PU #77 (phys=92)
+ Socket #13 (phys=13)
+ L3Cache #13 (16384KB line=64)
+ L2Cache #39 (3072KB line=64)
+ L1Cache #78 (32KB line=64)
+ Core #78 (phys=0)
+ PU #78 (phys=73)
+ L1Cache #79 (32KB line=64)
+ Core #79 (phys=1)
+ PU #79 (phys=77)
+ L2Cache #40 (3072KB line=64)
+ L1Cache #80 (32KB line=64)
+ Core #80 (phys=2)
+ PU #80 (phys=81)
+ L1Cache #81 (32KB line=64)
+ Core #81 (phys=3)
+ PU #81 (phys=85)
+ L2Cache #41 (3072KB line=64)
+ L1Cache #82 (32KB line=64)
+ Core #82 (phys=4)
+ PU #82 (phys=89)
+ L1Cache #83 (32KB line=64)
+ Core #83 (phys=5)
+ PU #83 (phys=93)
+ Socket #14 (phys=14)
+ L3Cache #14 (16384KB line=64)
+ L2Cache #42 (3072KB line=64)
+ L1Cache #84 (32KB line=64)
+ Core #84 (phys=0)
+ PU #84 (phys=74)
+ L1Cache #85 (32KB line=64)
+ Core #85 (phys=1)
+ PU #85 (phys=78)
+ L2Cache #43 (3072KB line=64)
+ L1Cache #86 (32KB line=64)
+ Core #86 (phys=2)
+ PU #86 (phys=82)
+ L1Cache #87 (32KB line=64)
+ Core #87 (phys=3)
+ PU #87 (phys=86)
+ L2Cache #44 (3072KB line=64)
+ L1Cache #88 (32KB line=64)
+ Core #88 (phys=4)
+ PU #88 (phys=90)
+ L1Cache #89 (32KB line=64)
+ Core #89 (phys=5)
+ PU #89 (phys=94)
+ Socket #15 (phys=15)
+ L3Cache #15 (16384KB line=64)
+ L2Cache #45 (3072KB line=64)
+ L1Cache #90 (32KB line=64)
+ Core #90 (phys=0)
+ PU #90 (phys=75)
+ L1Cache #91 (32KB line=64)
+ Core #91 (phys=1)
+ PU #91 (phys=79)
+ L2Cache #46 (3072KB line=64)
+ L1Cache #92 (32KB line=64)
+ Core #92 (phys=2)
+ PU #92 (phys=83)
+ L1Cache #93 (32KB line=64)
+ Core #93 (phys=3)
+ PU #93 (phys=87)
+ L2Cache #47 (3072KB line=64)
+ L1Cache #94 (32KB line=64)
+ Core #94 (phys=4)
+ PU #94 (phys=91)
+ L1Cache #95 (32KB line=64)
+ Core #95 (phys=5)
+ PU #95 (phys=95)
+depth 0: 1 Machine (type #1)
+ depth 1: 4 NUMANodes (type #2)
+ depth 2: 16 Sockets (type #3)
+ depth 3: 16 Caches (type #4)
+ depth 4: 48 Caches (type #4)
+ depth 5: 96 Caches (type #4)
+ depth 6: 96 Cores (type #5)
+ depth 7: 96 PUs (type #6)
+Topology not from this system
Added: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/96em64t-4n4d3ca2co.tar.bz2
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/96em64t-4n4d3ca2co.tar.bz2 (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/96em64t-4n4d3ca2co.tar.bz2 2010-11-24 09:21:55 UTC (rev 7494)
@@ -0,0 +1,142 @@
+BZh91AY&SYYd 3ÿÿçyìÿÿð}ï_ÿÿßð
+ #ø`|îñ@ P_l @ (ÞáÇ ð^«"RjǼÞ<Z÷G$IDAA@ À w_3ß1@À¾Üà ßx¢à ëß 6ã
+b
(.,Àu ¼äÀSë< æxòOëç[£
+õÇxèÀ=sà®6ÚÌz-àµhàu\@ s@ =£T½USÔ¨~©©¦ ¦ dÀ j=R©JzP
+3I5R
+4 C@ I¢ªjP 6£Ñ=A
+ ¡ =@ "PÔd 5#Mú 4Ð64 h4 hÕDh4G¨ Ô4zÔ=@@~¦)ê0zL£Ô4z©§õÈÿpñ ¿IüùE'¨
+Ðù
'
++
&"Äþ¸ù)?ÄèeBÓÂP÷©$Åà=pv@kBT²#%HaRÈJý8"¢¢Ð$E E7ÔÏÕ>·Ö¾ÅZ©Í[®®UÔuÒ®º«ª¥SªÚÏ{ÇÖW¤ãNëöëÓ{ÁÛE}+¦÷¶_k¾g3Ìݯ¡Ðöe½äáí&Ë{ÐO¥)â[Þ})EãÎÚN]Å:rë®Rë{Ôú®uÕÛ]U
+ðîð×yÆÜqóùÕ9¶ûo¸î¾÷GGâH¼^ÓÄ$ñáYzoeó*¯Þºoºµ´C»tô¼É½®êý¯´áêà=G/{Ý$~ç½t}¾>î¿]¼Îmn·GíÑáF¯F·£[Ñç&×y½gUÉUtÕÉUa«ô%<«ÓË qïEî÷³ÔÙ¦m@:§P¥¶öu êÔ©ï¾ õ êÔ¨GxêÔ©¶ÞÓÓÓ¯_mö¶öu õ êׯ^ @:m)Þ=|êêÔ¨P GÓ¨P¤Ónm êu´§[Ju´§[JÑÞ:u ê-hÐ @:u êÔ¨úu+¶60 @:u êÔ¨ê :¢a:Û@:u êÔ¨P @:u6i£§êÔ¨RmÏÞº]>rI%WwI$u/»mÕ>îîUI'I%T»ºJã}ÝUÝ:»§WWrîí©¯¤rwwwvʶ«»u®ç½}Ùokc#§¹ÎtWÛÕ·»Þ·S¾¯Üºynô³6û1ºÞîIUÝÒIKîæÛuO»»¤RIÒIU$îîªI'wrîîîîî®îînTo¤ª»ºI#©}ÜÛn©÷wtªI:I*¤Ý$ªNîî]ÝÝÝÝÕÝÝɾ9Ìëí²êg_I#©}Ý}}rIUîé%Tr××}ÝÝ;§ÒI'wvUvóéÝ÷m÷võWIÒúd¸®]G*«§TDê_w9.\¹u;»ºIU$$fÎîu&ÉÝÜ»»·Nèö³»ººêtI*»ºI#©}ÜÛn©÷wtªI:I*¤ÝÒUI$îî]ÝÝÝÝÕÝÝÙj×/w.\¹råÒ(¹råÝË.î!råˤQE.Õ¨¢åËw.]vråË(¡éí¥===:téÞõTéÓ§N:téÕ\¹råË.\ºIË.\»»g¯Kê½9:wMÉ$«»ºIKÜÛuM÷wI*¤¤ªIÝÝ%TNîåÝÝÝÝ
Ý]ÝÝÞîë6´iÜ´÷jèÛt¤ôðIJE(E<N Ó)ÁàpE8"N )H¥§S)ÁàäúN§StàÝ"M§S)Áàò=ÄS)ÁàPpE8"N§SqÁàpIJE(E8"§S)Ááò¼N§¤RS)ÁàpE8"N Ó2;i¡àpE8"N§S)ÁààpE8"N§S)ÁàpIJE:lS)Áàx'¯6Ëj$éÓ»§N=:)'N:{ºté¼§N7ÞI³Ó§N»§E$tôé8ééé²°:t4÷6ßM:ztéÓ§FútéÓ§N:tS¾¾¾ºwÛJmM$«»ºIKÜÛuM÷wI*¤ºIU$Ý>I;»wwwwuwwsr¤}$«»ºIKÜÛuM÷wI*¤¤ªIÝÝ>I;»wwwwuwwr»¾»V¢(¢(ºíZåË».\»»1bÅËH¢)vEË.]ܹuÚµË.]ܹrëµk.\¹r)vEQråËU.\¹råË.]w|¹råÍÂ|,ınqðÞõÖ·~Ä{ÂÜ!àå}ëj¾õµ^õµ^õµ^õµ^õµ^ö[¾¶«ï[Uï[Uï[Uï[owmªõõªúúÕzúÕzøwkåïvÚ¯_Z¯_Z¯_Z¯_Z¯_[ݻ֫wÖ«îõªû½j¾ïw½zÕ{½j¾äÞ@äî@äîR.÷ FûWݽåïvÚ¯tÝ[:n7VΫgMÕ³¦âÏun7j§ºÕN~Õ»íµSÝj§uªÖªwZ©Ýj§uªÖ«îsT÷´Ý«JÁMó;)ÜÁNæ
+w0S¹Ìî`§s;¥ª[è4wA£º
+ÐhîGt; ÑÝè4wÕ7ÑEîáßFøB;#¸»»ÇÂź
+\~¸?s`QE.\¹ræ1cÆ1cÂI ÂI r¤ÄE.´k]sýqë¯=:.÷6ßN :ÛUªÞÕº·wVêÝÞ÷·wVêÝÝ[ª«AP"HÖtîîî^æÛéÀÇUmV«{VêÝÝÝÝÞ÷îêÝ[«wv«zÕm E$¬Æ±âI¼q1"Eªö÷m¯ovÚöÚVv¬êÎÙÜÁw´QIE%;ÐÓKAAEAKÁÁÅÓäæs999¹ÎnNNNNNknW'3§K¥ræ¹9¹s9årrssÍÁÄààݾóss}¦ÆÖkVto¹¯K§áC}KwÝvïwnðRûÞ=»²"ÑDÜm¼i<æx×Lá Q¨êájÕ5®<ߦļ
ååê³Á¢^W*«Ë¯&¶pN×*·*åÙÚ輤Uojܪª»;¶F¹D/ª¶«U½«Rµ*¹r÷x\`¹Uj··ww{ÞÊUvow¶%ÈHZ»VêÝÝÕmåP.^Þîݶj©jÕɶÛéi½¿rywsm½ûVý«S]"m´ÞÞ¿ZiòîæM¶Í¦ï¤M¦÷g]«÷wtR)#M-[ö©óz·{s2ؤi§ÒIù´kîí«ºIm¶ZQn,Ë»zm¶¤^õ@
åÕKíZ·vRF*ç9e(ѼÛZV¶²µ¶Ò½ÔæYZ½7bO®Õ¯w{FÝZm7Sº¬W[mbªQI¨ÖDM
+!u \*µnÚHf£«½{»¶X&¢m·îâMoÚµEÑH¤´Þý«wíMO¢Im6ÚoÚµDrI"Iinýª&Ûm7$Oµ-Z¹6¤R6mjÅQ¦m©yU·Û«wfE ªÛ"I at j;KRµ"H±XÅF"°D!HÀ10c"$ZÅß9N§F5:<óm®m÷2uétíôWÐÞ¶ñö4ñ®Lá &g:®>¹«§±oKÊ籿/,ºz
=Ïm£ìâ ä}6¢{<=Àç³ÙsSz*P|CÙ}zÏA_gtO
+óRö<ÜòôO
+ósÉä[^ÛfS%òy<¶áÉ
+¥t¥Dgj"vÆbï3øðð¾&棫½_¦Ä¼
ååëgD¼®UWw{Ó®UnU˳»Þðº«{VåʪäM[«v4ÒÝûTM8¤6Û}©UW-[Ë»·m¼ª
ËÛÝÝÞòÝ[¶d\¦©$M[²þµiµ"qfKµq´ÛæÙ7nR×ëm-kY$QT,$ê¯ovÚö÷m¯m¥C¡êΨíÁÁ§y9;àPQE%ï¶Ã³°ìÅ-GNkÉÉÉÍÊæss999®y¹ÎnkÁÄèåÊçÉÉÌ÷ÙàyÀáÃàp9P¥²¹Ñ¾ ëx´ëb§F¼Ómsi¦¹ÅÑ¡D.¡#«
VÛYÕpZ»ÞÝ×
+Òò«Wî×%ÅQU«¼¤RJyªÝ}JóíMO¢I1¶ñ»Oæj|ÜJ¸s%zQtI>®Ìϱ&¢äÚI®µ;Zb¶r÷\¡WUµÃn5U@ÛbHØ \ÒÒÚªö÷m¯ovÚöÚVv®si§3$!#:åÎÔµ-Z·J
+wÛaÙØv
+bö]iÌääææs9¹×<ÜÎNgNJåÍrs9råsÊääæçÁÀpáÈp8ÁK(RÙYØDÎ0îæØ
+ºÔp#Ý)»»»Ãç=EÇËi|£ÊZ§ `O£à
+&\ªp(Å Æ"(C¡ zs¹uÄ«I´¬ABU[]J«mJÚËjªª!)$Ù`+î$ ¡´¥)iURÈ0X"1b"Á N¤±/+ܺ¤«Må*V«]U[nUm©[mÊ @)y$°GN{¡!¤È³ZÙm--(¥ ÄAA°`¢ÌKÊ÷.©*ÓjÉZVºVÕUVܪÛR¨E=,§=ÐÒdS[-¡mÛDDYH0Q1(v,Ìò½ËªJ´Ú²*j¶×U¶Õmµ[mT ¢Eå+áf"ÒÛ-²ÛjªXàDDDF""Á!È@ôçzwVVE at H@%j¶ªêµ[UªÚªáÎrpÛÛ)iCÒÁÓèHi2)-²ÚÒÑDD)pF
+""""'B@ô9ܹ\J´Ú²*j¶åuZWU¶Õj¶ªµT@g³Ág%}ÐÒdSZ[Kl¶Ëmª+,8ÁDDDDDb1:,ļªîo:¬U¦²* F Ëj©ÕiZªÛj¶Ú¶ª RI"btáéCÈ)im-¥¶ÕT¤ ÁEDDDDDX$ Ù ôçzwqÒÞc^cmm§²CN{UT²CÉÆ10]6g?±»Ø¡X©TµF¦FLÈÉÞåÜìÙcƦ8I$8 8pá»äzN==1cÆ1cÍ6lÙÏ4¹K22d¦b¦f&21J²`ÄÂ#:a e2ôËÔD½| ¿8._z/Ïü¶ËmikQ¥® ¶Ú¥%H¤kú µUbZ¬UV EXIeUUV0
+K_µUV*°KUUÀJª û pÏÊ O@ ²ªªðªªªÆÕUUb«IfffeÀ¶ _8,ù7áÇù?@ý?Ф¾E}±V*ÅX«ýU±V+ú1_Ò5ª[T¶©m`OÓQòÅh¿"¬U±V*ÅX«éò×EX«b¬U±V*§Í\J|ÕÁ$§u͵k3EZµ¢33È
¿ö úUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU_óøªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªª¸ #²**E
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+í2îS!¡R¡yLå2**ÈnS!¡R¡R¡yLå2**ÈnS!¡R¡R¡yLå2ÑBþ
+d3*ö´ÈkEÊd3*Èd¨[EÊd3*ÈkEÊd3*ÈkEÊd2T+*ÈkEÊd3*Èo>óÅd÷ Åd¶ÛIFT1Y*É1 ÇöÛdݶâZöÜRK°x¬¶Ü[&í·Ö¬
õ¸¶M÷Ųnõ¸¶Mß³·É»ñn-_Á1Y+rb$=ñn-_Á1Y+ø&+%>-ÄIN·%:ÜDëqUÁÉW+%\¬8ñÉo[dÝëql½n-u+%ä¬õ¸¶M޷ɺ#ü~¸¶MԬǡÉhVJô¬Çqâ$O [qP1I 1I) âxC©1
+LDb$>M·Éº¬+%¢1Y/zÜ[&ëVAÇ¡Éhb²^VKCÐÅd´1Y+ ãÄH8ñ
+GRb$&"AIàÅd·mŲh¤+%¡É|¬¼æÐ弿Ðå¼çæ 'ìäüd>
+Â)?ìXµ
¬ZÂÖ-b»Áxÿ°/ pÛîóñlmão
+_Ö+kZØÞÛ÷²üýGUÔa;ÙàÌûs:xw·Ùv°Î÷¤_jI/öîù»mãtÛzÓmÓmënÛxÝ6Þ¶í·¶Ûm¶ÛmÑUUUEUUUWÐ µ67ßUn9ÅmSòcü®È{Ó5k<½TôôñÊJ½½}» ^mùW³³=«Æ{{ðKá)òI/¸ ¾mÅ» ç*¦q·\Þ÷ã¾¼üÚXæ÷°hs9Îg9àw(Ûæp0ç9Ì=ÕUUv×<s¸ü~5nîë÷½íîï{{»ÞÞî÷·»½í ö{{»ÞÞî÷·»½íîï{{»ÞÞî÷¶ÒI}ú¿VÀY% dA¢UÞÿ,Ön¥øÏyªúIº¡Vç¡s
+²¾¬¬°øÁi8zi«Yì9ÒªÑ0Qéûà±¶Ùi$ØÖ+@=ü_óóv»~`s5$Ëm IgÓ¤Én§¸I%¸' B |¤WÂXÈÐæÜ¨.À_ /æÿ\ò ^ ¹óðñ¼õ¯fÚðùwã|k~7Ö$ä!U-£mV
+(JñÈ*¬ßnÓ3m÷Ù÷Ý»<A}`»Ð.ð/ÎùÁ} ¼@¸ú`/ \èâ Zî¸/h.AnÞ pÞ¼¸¼ñ©U°/ÌDZ÷Ð|ùõáù3ã8À ¨"¢*"¢/ï"¬U±_Ô-ª[T¶©m~EX«b¬U±V*Èà|ð>gÆqOb¬U±_
µKjÕ-¯È«b¬WámRÚ¥µKj| x)>I
+*aÜX¦qbf&Å·åÛÕ@s$È${À| "díܰ3Ëy¶ÛZH H $`É $ @@ $6Ð2@ Ø"(Á 6$ I#l a l0h À@ #H À>ý$}BI,ÝÝ èoÄúiý^» °I4°Çf`y{/WÕöÚøÞ«ÓÓÓÓ{ß§=/ÓÓÓÐXI$Ö hÐI½íŬ X ° X£@ $ff`÷·°`Ö I °FxñàÌÌ ÞöâÖ , X , Ñ¥<x33 7½¸µ 4i`'ÌÀ
+ïn-`À À
+ I#33 7½¸µE
+ @P £@ $ff`÷·°`À ` $ÞÜZÀ 4 Fff o{qk , hÐI½íŬ X °I¬ Ñ 330{ÛX °` °FHÌÌÀ
+ïn-`À À
+ I#33 7½¸µ 4h$ÌÌ ÞöâÖ , X , Ñ 330{ÛXP E
+4 Fff o{qk ,$Ak 4h$ÌÌ ÞöâÖ , XI$Ö hÐI½íŬ X °I¬ Ñ 330{Û -` $X£@ $ff`÷·°`ÀI$°FHÌÌÀ
+ïn-`À$H-` $ÞÜZÀ I$ZÀ
+ I#33 7½¸°k I µ4 Fff o{q`J I$P £@ $ff`÷· , ZÀI$°FHÌÌÀ
+ïn, X µ$H-` $ÞÜX °k I$ZÀ
+ I#33 ]¶µ °IÑ 330{Û -` $X£@ $ff`÷· , ZÀI$°FHÌÌÀ
+ïn, X µ$H-` $ÞÜX °k I$ZÀ
+ I#33 7½¹ , ZÀI$ /FHÌÌÀm`À¬$A`ôh$ÌÌvÚÖ , ZÀI$ /FHÌÌÀmé@X5 I °JPI#33 ÒçÈ 0d° @ $`É ` I l$ @
+ #m$ lâ $¶ "$l 8 # B 0IgÊÄÄKÌ}:téæ*}÷ßÚûãvII@ÛpÀB HÚÙ$ À b"FÐ6É Ø¤Q7Û$ #hd l@¢¦6É 7ÓmD FÔ$#h =ñÅï{ÀÕUTUUUEUUTUUEUUTUUEUUTUEUUTUTUUUTTUEUUUUEU\HCÙUUUVر2@ $`É`@ $F I Ù#H I#m$ @
+ÜQ$ @@ $6Ð2@ ÂdQD! 2@ $` È Fò$ÏlRk$h" lH$$ HÛ0 !Dd2F @6bÁ0m $a$l À``R5`Ñ
Á 06ðlA 6
+±H A m¶ÛiUUUUUQUUUUQUUUUQUUUUUUQUUUQQUUUUUUq!HCeUUUUÄ1
+â ;ªPççZçm¶óß}ü÷ßóf~lÏÍù³.ëÞõû3=»»æÛ~Ié$wîïß¿~ùÎrï@jMîåéV«UªÕzM*ÛÖ¶åÝóÖf/Yíï¿~ëïß¿}ffk«Ð )¥Þ«oZUª×¯*òºò<ªü³=µ¾m½ô7Û'¶nÏI6s33|æ®JZïnsnq½·µí»»ÔK6m{mzM.ãäç9¬Úï#7s½r ÒîÝiº].K¥Ö¨z׳³6½ºÝçrnyɹç&æ·~|ùóç×Ï>wª¨ªªª¨ªªªª¨ªªªªª¨ªªªªªªªªªªªªª¨¨ªªªªª«ôHCá!
+UUUWÒ
+ªª¢ªªª*ªª¢ªª*ªª¢ªª*ªª¢ªªªªªª¢ªªª¢¢ª**ªªªªªã*¢¨*¨ª(*ªª(UUUQUTQªªª¢,b¢ªªªª©²ªªªªìªªª¿¸ @}yÌϳê"[Ç%´¶QûraæÜÉQychGíéÓÀÆf#{¡E(#ÝgKtU2vúéÏ,-d«:qì׫¯´â+§§¬<hzQAJ|êzfsÛå<âÎl¡B«.ÙC.Ø2b¬UJ0m9¤ò¨úØ[b¨{±¥%<Û_õ+¼ØÔCÐUÛE fºFÖuï<ò¼|§^/$,$ (+T°d¥P=L®·kp0¿)îÜ]õΰv®múë;gt3$I$¾ÝÖv×» L è~o»èÛéÞÆKã0bcæª0TòÚ¨ÅLmßN\8 0áà ÙÚ«µeUUvõ|xçS¯SËÔöÀ UUUÛªÕUUvÕjªªª»u×]u×]uÐ @yUUUvóí]«½kUªïRªªûvk,Ë2M¦j
+ á§l»eâ`0
+
+
+1GÄÃñÉL|øyjZ§©å© B:õh @ÎÎNÍ4ÓM4ÓL0`ÛoËȯ"¼ò+Äâq8
+ÍÍÍͶÛo¶¨RþÊgõ¸û÷p6[)l¶Rû¸0ÅL2SÃa²Sà ùO©øëS¦0XÄ`Éd
+Yr3LÊfOÈh-ÍÔ¿ p¸Gâ~!øÄNN
J
+(¡J
+E()¢
() ¡BP ¡B
J)R
JZ((RJJE(¡J.
+pqGvuHüä¦Wc`
+U(¥J(RJ(R ¡R¢()¢(¡J
+(¥J
+¥ RT¢8Jpp§#8p0XÅ1c(ÆTÃÆ)LC½
+li
+¤6ÚCb@ÚC`ÒHm!!´6Á°m!´ÒHl`@ÚÁ6 ´ÒÒÒChm"È(E´Ì,e3'ü=ÿßúÿ!ñà}OÔð®T?h>Ò»îû©AJ¥RJPP)T
+P4*U!T
"JUAB¥¥R4UE)C@¥PU%?ô~._{ï}íÛ·nÝ»vî÷Å3VjÍY«0Ã!B!B¿2¥R©T7bË.VíÛ·nÝ»wlD~f `"@b21#1#I1#I1H`Æ`Æ111,FHÆ1cÆ"1b#Æ1cÆ1cÉÉÉ1cÆ1DcÄDHÄHÄADÄ 1T#0c0c0 °c+XeX! ÈÉT¥Áí°Ìý¨yÆô²U×w8-ÿG4·¸ÉÂedÂxÞ̨«ðe¬"®Ø\G#è¢yÉ#dQERJþjº9¶[#\ìU+¶JmhÞUèfòãUÌÆf'vÕ¸Ø#K
+ôZRRé¹Á%PvÀw@ûêÁX¨8Äc rfnÙ¼lQtõ³[#º4RRd%°>W¼yÉ>¹`ÜIIîäØbk ©ïYnÃ3fãd*ç
\Å`2mC¨¾m¡½±Æô¸QæûÐ Æ[%i
+ñqÄ{î 7î»ÅyµW"Û¯YMl¬²¥Vµ>Þûðk(V[k±"»N¼W½NhQa[;'=¯<O\gO×bÚX(°==ô¶
FÙ{²RØ*ÅP¦ÙCʱV*Îzi/)¤ÜëQPUØ T¢Ñ¶î¨÷ÔÊëÚ*¬v¾óq*WÝEΧxùæ|O} OçàQ2æ|g?<k»c}¹Í¶É $M·ë[m®8¸ è¢ÒBHú@ñwçÉæóóóø UUUÛªÕUUvÕjªªª»u×]u×]uÐ gZÖµÀ 8Òlh×K ¢ò
+ÇPȱ!bY 2,
e%°°_ü?îÈCª/Uüp>¨ª+HY
+(DUüp>ÿ¬S_½ú´ü7æyy¶1£¿¸Y°^Çø]Â['øGê¼ÑçÞå±n0Ý@5 á:ìðÁT_áÏ>Û,ôÞÞJ&`U L[ϱÎ1§rvI~Ä{óÍY{Q7èg¨±xWǶNàJã(¨¾ÀAð><r¾O$
+ûhª áñIâ3¿p{Îô½¨íêÏ»\$dHAÁsã ès©íöïí %C×x. °yd½üiìÌc)w¼:ñ9Q2ydª s£êèÉm«Wã}ÍÔLðü}bì¹hsKZÅ¡hÈ}¸c^8EØ+nûÞú}C
DÊR]´4Ô,D
æ0W"³ÅáUqÞ0õ³Ðãâ+λƧ¶sÛB¶¥6
+áå¡×ÑT)jÄV*ËÍ1¶¦¥Xª ¤õ©I¼YÖÆµiIîÓ[Í1«vº[Ú+*]´ÊýÚkZõ¡ç]nãàÉôBüò²
ÌQfsc ìµøç{2o$BI5XÕm¾µO° <\3,ÛAî Î$®Òªª»{ªªíÏë¯/Yåë<ýx ÕUUvêµUU]µZªªª®Ýu×]u×]t åUUUÙYÚµZªí®ËìÏï©TMý¤Oai!$) Or湸$ (FH½ÄöóÔåD¢¡É{,6DMF)0mÕ¦ZÑfðuë ëIÅx.«Áw]ti`[ÎÑa{¸ÛûrX)ç¹Tp?&;¼ c#]ô¢nª¥â
+¦Ë" ¬ñ,H"¢"+ÌAѬüs
³"ÛÉÝÆtï²NLéha0ÞÚ2=ôÔ$¨&+×X(àMíkA1VLïÛjÌbmeFLÆÑ
+Ì +xí}ØJ¿ºa n¡=6Ìí°ºaG7}ÑÛ¾z$\)n¤ìÊÒoÜÚÙ,aÃM
+Nq)8ÞlçzNïÚÐ-Àû(ª ñ:£µíbBñ³bKX)¼ÕÏ.Ö*ÅR±_¯Â÷bhø°ÜÆ5
Ê
CCÆäJm*<e´+Îγ®¾ø¶ú̧q^yï±T=²²d¶Ù9çµF´Ëeµb©lª«B¨Uíb* ¡.¶{ämÊÐb¥ÏÑ$Î&Å-C)õ-z\®ÒÜÓ*±Úe Ðõ¡"$+XÌv~p [`}E[Êg®93ä{ÖÜëZ¶¡©$I%³µ`ÿ( û¹ßïÏ<séh UUUÛªÕUUvÕjªªª»u×]u×]uÐ UUhMä$Ú*Èä>¾0 ¨mÑUÊ¤Ë ^ì;ÞÍkÛ$Æ]µÛíIÊ:áÔÁÉ̼¼"Äй2¢_å¯O>d1{9ì ÂÒ&Ѻ½@@^;ìÇj&]Ä,æÂ8ÉìÔ®®"Ø"®
2eD¥N g|·eí`Ì-ÈH dGQ6:2
+X2j,«¥]:= Ë£¥ÅµÅõ "DXÌK8á \bÞqÁ¥'u°#×)&Â
+*Á³Ô²ðoºñW \wÖr¢kh}U ëÄÇ]
¶-b}ÎnZW%TX¢¦j±áÙ{ÃDB÷
¬¢,mî2*ï³ÛB¼ï¥j½¶[´m
+¯¾+ë`m)<âøÉi¥X«-«o¸4EEYÛT8m)¬¦¤´³Äêx$c#í¡ÚKJL}aëB8ò¦Wz]¢²¡ÐËÎn'òxõP!$B Â"XªÃ2eL,#k0aÁac1L¢) È"ÈY AARc2LÌLf&M
ñ33Ú¥¾1V`³f0½Ê`brm< TÎ:Æs¿PÔ¾¤I$/zÖxãÀ8/r}{\eI "9¾oιã=kZÐ kZÖµ¬ëZÖ¨ ºl,A· ÈôòBÒëIÊ^+Ç3ÌÑ|pøeEQVA"*þÆá
+,YQVX
XÄéSM%*4N0^Ýô2
+XÉ^à^o#3lÆT×BÌfCÍæy(ϧÐT /ÐÙç×ÖÇL{mL±a-vȲwÙÚÙ×\ôä-Ìm`,@$2Ï'*&L!ÏV¤¿P´²ÂZ0!"´Ú*ÈZGZ
+OEÑz#³7À8ÀÀpzèÚ_˰»'r0Ék¤TM÷ñk9µ@ÄÏI -d± ñÂG[dc$
HH>yʳ«(°ìê'yçt.)3Ã.A~YTûeP¢¨ aDDðqhù
iPø~¨¿rÔÖ£5ªo}ì´¤¥ 1Â÷¼90xûN0õ³Fò«[
+ßb¨tñ|mo¨mbjcÏ_QX ¡ÖK=Yëe5§xb"¬Sl¡eUX«/vP˶ðæ4-(êM˺!ÖuȤgKJ,¾ó/:Ù2&áûfǯÚ[ÚUc²µXÌçÞY¹hHBâ* A« Uf1fPÅYY0YFXafUÀÊ0020ʰa| ÁöLz[qÈïÅø®wñm$IW;ùgwµUWns|âO\ ß9͵%X´©, ɺÏÅö©Usñ}RûÞ?`©òÚ%\Èëµ,X/4äÁÌßJ$Þ,º´I¹`×´ßkì¼F&/%¡kH(VÑbªD"Íò¡´´,ÙÑléDÐ7d$k:
+Aj´e¤qeZÒv-ÈÂ-âKÑÄq1hhòáDÐfU-$f-h¥ÍHºÛZÉ~NL êJîºi°jÕª£F$ ZBxüùóç>Å¥[F¥^:\m|å3¹LÊ5-ihù÷¸
¥
-,)ï9Âs¸01=ÖfxîuŨ¨wÕ}lÞ_-*«[YëçzÐí%¥&jù%Yê=ÊMJ±V]2íDV*ÅPÇvSÎc
+ÚP8óÔí°ª
g\b´ gÛÏ}ògz`ÀPÈá0}ºeÛnWÅfW³[uÉÃÇ>òÍÌ@$ '>¹ìø 7 Aè |\6Ús|ZÓ~· oÖÛu¾·È ÞöÚúÆúç!pÉĶXUвo§¿( Mûò*¥õ%T¢% mÝãy%íã£~'$°plm0Á²1exwB H©pzém$äÒr@?>ë×{äú¨ ¢@ÛNð/;ß
jña9áàB$# ,T¿yn6ã
UÕÄ#«$Ѧ4ïѧ²Î¶øc,ÄÆÆ.ÖRÚìç #²µ&çsFZµ4i¥©¦"ÖÕ×q³jÐÖj¾TÝ«³*Ì3,fU´ç²ïr¾ç|2"²
³ÌK߬. BCF
+]´HÏþ¹ßIÑ:wêK»s®»ÉP E=JAñûÞý;é7Uܦ*ÄeS¦CXïÔ. Þévâï¹øÒ±¶ÅÔM¹ $U ¹çG1êÖ´ZÅíiibfé¯5Ù+P¢êT¨-m¯§¡ô¥-
K
÷[/¾»N[3ÞZÊ7ʨVÎwÔVsv³Ç8×ÖYr%s+ij¤Q6²ziÞ3
+Ù7x³.Ø2ÄVÕ
+me5EX«/lébT¢Þö*ÎÚkB´m(( y½|Þ{ìñóÚ`S Ø÷Là3_']ØÕ{6bؼÅÌLC ¾æ> Füfqé_³sò¯¯»ñ§¿âÛl?( ^}õWÉ/ÉIR¥]òÏ´|²l¢`Ë¥îêb F0~®¥E ø3h(!!I>yóä9ºm¶VÄ¥!BÒJKÔ,é#Ô:;ûfwRubbXX«È±V*ÅXG¦hMu׸Ìé¤ÛÛ*¶7{'T·¼5&¤´¦D´ÔµEY10¦¥kR5*gº6µÙ[ÄÅèáãÙ·~Ý©9jK
+ÉTBÌ"Î?VÙ Xd@¤~ºvDèv@`éË»c®MwmmzRIaFD'¶'dRP
+'m'Sa,^Âf-ù°Þ VLÀ±Q01P,!!õH hEPQ#0&$
`°I0?>$! >Ê"ÀF"³J2:J0
+$±ÉPÄP¢*¥Y± È Âup¸Á.£hÙ°A,#£9ÊãgªNÊ7ÜöOA at oZæ×æZýw÷x»[Zß®3óÀÈÎq6¾/^ZýªU|¾4üwçÀ 8 ?S÷æ|óüãÕEQ_Îø
+¨ª*ÈB at a$Ü;<º8Q-bÊ'«ÅRwù=<Ýýð]z´÷º÷RytôÎAt)DÚù1
qÐ Õ(wåÀêm©§ÉçÀwÒy®õèõçØ.ܰ¼ÎL¨ï·~\yúzzfþηÍoÆúÊ åwßZ®7üfÖï9ß à ü¿
|¾^Ëñ0¢qbu5Æû(ZÊ&7!¨mT¢qÐ ã>ÿÁþÿvÇÝø}Æc
+Ä*Õ_ü¼ó³gÿ±küìZµ¾¥ëÝÒv߯$öl1köI-ZÇ_Rõîi;o×{6µû$e×ÍzóG´·ëÉ=ZýKV±×Ô½{£ÚNÛõäÍ-~É%«Xëê^½Ñí'múòOfÿdÕ¬uõ/^èö¶ýy'³a_²IjÖ:ú¯t{IÛ~¼Ù°Å¯Ù$µk}K׺=¤í¿^IìØb×ìZµ¾¥ëÝÒv߯$öl1köI-ZÇ_Rõîi;o×{6µû$c¯©z÷G´·ëÉ=ZýKV±×Ô½{£ÚNÛõäÍ-~É%«Xëê^½Ñí'múòOfÿdÕ¬uõ/^èö¶ýy'³a_²IjÖ:ú¯t{IÛ~¼Ù°Å¯Ù$µk}K׺=¤í¿^IìØb×ìZµ¾¥ëÝÒv߯$öl1köI-ZÇ_Rõîi;o×{6µû$c¯©z÷G´·ëÉ=ZýKV±×Ô½{£ÚNÛõäÍ-~É%«Xëê^½Ñí'múòOfÿdÕ¬uõ/^èö¶ýy'³a_²IjÖ:ú¯t{IÛ~¼Ù°Å¯Ù$µk}K׺=¤í¿^IìØb×ìZµ¾¥ëÝÒv߯$öl1köI-ZÇ_Rõîi;o×{6µû$c¯©z÷G´·ëÉ=ZýKV±×Ô½{£ÚNÛõäÍ-~É%«Xëê^½Ñí'múòOfÿdÕ¬uõ/^èö¶ýy'³a_²IjÖ:ú¯t{IÛ~¼Ù°Å¯Ù$µk}K׺=¤í¿^IìØb×ìZµ¾¥ëÝÒv߯$öl1köI-ZÇ_Rõîi;o×{6µû$c¯©z÷G´·ëÉ=ZýKV±×Ô½{£ÚNÛõäÍ-~É%«Xëê^½Ñí'múòOfÿdÕ¬uõ/^èö¶ýy'³a_²IjÖ:ú¯t{IÛ~¼Ù°Å¯Ù$µk}K׺=¤í¿^IìØb×ìZµ¾¥ëÝÒv߯$öl1köI-ZÇ_Rõîi;o×{6µû$c¯©z÷G´·ëÉ=ZýKV±×Ô½{£ÚNÛõäÍ-~É%«Xëê^½Ñí'múòOfÿdÕ¬j/^èö¶ýy'³a_²IjÖ5J¯t{IÛ~¼Ù°Å¯Ù$µk}K׺=¤í¿^IìØb×ìZµ¾¥ëÝÒv߯$öl1köI-ZÆ©Rõîi;o×{6µû$cT©z÷G´·ëÉ=Z
ýKV±×Ô½{£ÚNÛõäÍ-~É%«Xëê^½Ñí'múòOfÿdÕ¬j/^èö¶ýy'³a_²IjÖ5J¯t{IÛ~¼Ù°Å¯Ù$µk}K׺=¤í¿^IìØb×ìZµ¾¥ëÝÒv߯$öl1köI-ZÇ_Rõîi;o×{6µû$cT©z÷G´·ëÉ=ZýKV±ªT½{£ÚNÛõäÍ-~É%«Xëê^½Ñí'múòOfÿdÕ¬uõ/^èö¶ýy'³a_²IjÖ5J¯t{IÛ~¼Ù°Å¯Ù$µk¥K׺=¤í¿^IìØb×ìZµ¾¥ëÝÒv߯$öl1köI-ZÇ_Rõîi;o×{6µû$c¯©z÷G´·ëÉ=ZýKV±ªT½{£ÚNÛõäÍ-~É%«XÕ*^½Ñí'múòOfÿdÕ¬j/^èö¶ýy'³a_²IjÖ5J¯t{IÛ~¼Ù°Å¯Ù$µk¥K׺=¤í¿^IìØb×ìZµR¥ëÝÒv߯$öl1köI-ZÆ©Rõîi;o×{6µû$cT©z÷G´·ëÉ=ZýKV±ªT½{£ÚNÛõäÍ-~É%«XÕ*^½Ñí'múòOfÿdÕ¬uõ/^èö¶ýy'³a_²IjÖ5J¯t{IÛ~¼Ù°Å¯Ù$µk¥K׺=¤í¿^IìØb×ìZµR¥ëÝÒv߯$öl1köI-ZÆ©Rõîi;o×{6µû$cT©z÷G´·ëÉ=ZýKV±ªT½{£ÚNÛõäÍ-~É%«XÕ*^½Ñí'múòOfÿdÕ¬j/^èö¶ýy'³a_²IjÖ5J¯t{IÛ~¼Ù°Å¯Ù$µk¥K׺=¤í¿^IìØb×ìZµ¾¥ëÝÒv߯$öl1köI-ZÆ©Rõîi;o×{6µû$cT©z÷G´·ëÉ=ZýKV±ªT½{£ÚNÛõäÍ-~É%«XÕ*^½Ñí'múòOfÿdÕ¬j/^èö¶ýy'³a_²IjÖ5J¯t{IÛ~¼Ù°Å¯Ù$µk,|&¾Ý|1ýÆ1cÆ=~Ot·Ä|e¿ ~ÛíÌ]©
BÂØ%U±?ø÷ÅU]
+æ5?Ý?O_Û"N½tTSïþø,¿Wîat¡~[lfÏæüÚ|@·Ö_¦ e>RI3kûÓé À ÷«Fÿ /Ò}÷ËÀÂ@¾P_ÙhÃ8gM
Ak+0é°Àû¦±ÔýÙü`½?/éôË.gÓÝïÖ½óáþ^@]&ÜÇyôýtúg/¸°-À_Ý÷`èúÀ/°Ô .N.êÀtrê@«äòJ 0¨ÈºM§ôÍÁ%|¯Ø/@_4ìÞp^³ìÀ-o /x.À^*azÀ^WP^´, ¾KØÄ×8@| /`Ss`_ÐùÀ^`É5: ½eP [§ _ åtûÒ¨*ààÀ\÷dýð[àrV ´R.ð]A`/×@w´`ZÐ-Ázܼ
+ ´SÔçØÌ¹ìî<À°ìJ 5üøPºxt+¼TP°À_X-À¿HÕ
&)0¤ÅXLL'Ì`¸ÜÀ¿Xôì_0/P,¬Kh&îòyLÃS´ð¹ÞÀ¹4°. X Xçà.ιgߢîxÀ[Ð,©}²¨¥^ ½³ -} ]qÔ/¤ö °¹Ìªï{ÁxýGp¨óÜÆ1-ÁlÔP «ÐT¥} »×Èñ.¶ñ};fßéÏïñù×°.À°ØÎµ>2N©ì@aÅ*Ð.@·´
+½ ¾À½ +â7rÄlÀíx]ົÀIóÐ. ]0{{Àº
+}g¸à> _Ó´ªìK¸@æ³ÄÀSÐÜ/Û>è}3/~ -ÒÃEë:zÐ´Þ >0,æÚ@¶ÓªüâÔ²|ç©ð·àÔÏ*ù@.AP´^ËÔùÁW-À½À¼êP)>2ýWp.ð»øAyÏP[Éâ©áêÙÜÈzÀ.À¸ÀTz~U©ÿ9à¨,<§¨
+X$øHP\wòØlærÀx`Zìlí? qìê½Ò¨ø«|À/íña1ÅOP/pï@| º®à¨*ÜØô;§p.A|À«Àúlò0ö÷ªuö'°ÆA~à/¯x/P[h _h ]à°Æ
+¼Auànæ\âwöë|¼UOP.Azï`,²E]à»åP°.{Á| °à¶ °úà¹~̰¨/ÿMê´P ^ÉÀ«åð@`.rh<`,°½ÑPp;ÁlÜp ,¾©í÷¥P ¾¾ ]A&[ ¸í»WÆðó7À,ö´óÍÌá*ÜíRð¸/ÕáÜ*Pê4Ô/×@pàóÕL Þ{¸Ú¤AçP\ ½À¾0_¸àÈ*ä /p.À½À/ ]| µØ ²w ¼ yØÑöའY
^Ùîÿ¬ªõ¿ªU¸/o{Ï@UñÁP·`)öÞ-äÀìÔ
+^ °
+X}@»| / _@*Ôä¸#@/(¨ ôR÷{`÷$RÿâîH§
+K,
\ No newline at end of file
Deleted: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/96em64t-4n4d3ca2co.tar.gz
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/96em64t-4n4d3ca2co.tar.gz 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/96em64t-4n4d3ca2co.tar.gz 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,230 +0,0 @@
- ÜbJ ìý_sÛÚ¶å ×:b?vGìʰðGʧ®LGU9ºª£¢²²ûQSº´ÂÞ¦¢o^×§o´|%R¤¸016=¿ÌkùîÃL¬5æX×íÝ_m½ùëoõmZôÕbõÿ17Å®i]SÿwY×ã?ò²¬RQÕeªÚê4³ÿ¼Â÷ÇM¿þã|Z®_ï¿ø{wëGÅ¿ëÃú?¬WY/3ë_uuÙvm·]5-õWp¬þï÷ßþe5Ëgnwõ>¬ÿ¶äMÝ>Õ¿+´ÓÖÝ?þ(fùô7^ÿ¡Øw«õÿðþ(þù¯wßnWëûÛíÿõ¿Ü}Û^w¿mî¾þs{9üñ/ý_÷_lÓþó¯ÕíÝ×ÿaûcu½ûùoý_wÿþúcüOý?þÏÿçÿåÿøoðÿú£úmû¿ü¯ÿ÷?7w÷ßÛÿh9~Èÿþ¿þßãoÛ6ÿ¡¾êþ¹èïþx¼ÿ¿ÿö²MWõÿïÿüÏÏ?ïý×?ÆÓò÷¶µ[>ÿrÕúnøÅø¿høïþ`÷«þá~±ûÍÕ?ÿåáûðûÇáÇ»[Ü=lîWß~þÙ Û?¾Þýëöèö#Êþ÷_ýk¿ý¨íÿ±ýÏýñ¯Ýýq{÷ÇÃãÝÇÅ=®ÿxèïþøkq÷Çâß®þ>ñÇ»?þÚ¬·¿Y¿éÿXüµú×í_Ûÿ±Ôþ±øú/_¿?~þãvóøG¿x¸ÿ㯿þíù·íÕãö¿vûÿªíÿ÷ÇçÍ¿þxüñ¸ý¾ýÂÿí¯mÿ§}Û^¿ß67Ãg?|Ûþ'Wßî7«õ·7¯Û»ûãîqøVÛ²ýãß6ë?¾öÿåæë_ÿü´Z®þº¾&¥ô®¶_ÞÏßx[ï*pÓ½_~ûëîÛf÷ýííö;}ÿÚð¯?>Ýoÿí
-óçõÕîOþõ~½ùÞýçÃê¿ßÿø«ÿÖ/ïÿÿôÏ>¿öʽö ×^Áµ·íÿ¡¼z·k¯ºÐk¯pí-ßáÅW\¿ÛÅ.ôâK.¾ªæâ{åÎW¿ÛÅW_èÅw¼ã+^|×\{¯\{å»]{Í
^{Ç;¾ã×^ɵ÷ʵ÷~oí
^{Ç;¾×^ÇÅ÷·zÝè.ôâ;Þñ¿øªï¯{·ïêB/¾ã_uüÎÇBËk_õnßõ
^|Ç[¾ã_ŵ÷·ºñº»q¼ç;qçc{ãïõÂQ^êþÆñ¦ïÄ5æ×®¾æý®¾KÝá8Þõ¥ã÷>[þ^]_y©[ÇÛ¾ãW_ââ;¼øª÷Ûá(/uãxÛwâÖÇÇßìê»ÔMãmßñ«¯b¡ùoöÒq©ÛÇÛ¾úø½×®¾ô~Wߥîsoû_}[þf·¾KÝç8Þö¿ø*ö9þfWߥntoûN\}¬5¿rõµï·ÞR]êNÇñ¶¯9Þö±àòÚÕ÷~÷¾êRw:·}ǯ>Ü-¯\|Íû·TºÑq¼í;~ñUltü½,Õ¥ntoûN\}¬5ï_}Õõ¸z¿A¢êRw:ê DÕ¾×¼ï·ÚW]êNG3áê«Ypyåê«ßo¨ºÔvÊÕÇË+W_zÇ«ïRw:º W_¹ïovõ]êVÇñ¾ïø<Qb¹ï5Ë;.÷]êVÇñ¾ïøÕW³âòÚ½ïýV\Ò¥nuïûN\}¬¸¼rõ]ïwõ]êVÇñ¾ïøÕ×àî{mÅåý:Ò¥îuïû%V¯mÞt©{Çû¾ãW_Íjóßë7]ê^Çñ¾ïøÕ×°ÚüÊÕwõ~{éR÷:÷}'®>V_»÷½ã÷R÷:÷}'Æ)qXý½vÚÒ¥îuïû_}5«Í/AºÔ½ã}ßñ«¯aµùµ'ï;®÷]ê^Çñ¾ïÄÕÇjókOÞ÷»÷Õº×q¼ï;>Tp¼vï{?wi}©{Çû¾Ó¼¬6¿æ2x¿}ÞúR÷:÷}ǯ¾Õæ×¼ïØ\_ê^Çñ¾ïøÕײÚüËàû¾KÝë8Þ÷*J¸^»÷½ã÷R÷:÷}ǯ¾Õæ×®¾÷2¨/u¯ãxßwbÕæ¿×4y}©{Çû¾ãW_Ëjók}ßûùûêKÝë¸0UÔ²âòÊÕ×½ã½ïR÷:®'\}+.¯=yßoµ¹¹Ô½rÊyÐW,¹\~å»My©åñµ¿¿×³·¹ÔÝãßñ¹¢5Wn~Å;Þü.u·
ãxçwüêëXsyÍgð~»Í¥îvèü_~W,ºü½Î*j.u»ãDçwâòÃã÷ÚTåû9LKÝï8Þù,jñø½öÞñ~>æR÷;w~ǯ¾ç×]ÞqÍïR÷;Nt~Ç/¿+ÿ^g¤6ºáq¢ó;~ù]³äüÚÇû={ÛKÝñ8Þù-jqùý½üõí¥nxïü_}+ί9]ÞoʽÔýßñËï%ç×^{ßoɹ½Ô
-ßñËï%ç¿×tQ{©;Ç;¿ÓEx
-^Ûí}ÇÎïR7<w~ǯ¾ç×ö;Þñê»ÔýßñËï%ç×]Þñò»Ô
-ßñËï%ç×r$ß/ɯ½Ôãßù"¼³×ÞKÝð8Þù¿ú:V_{ë}?§Kw©û':¿ãßKί¼öVï·ÛÛ]êÇÎïøåwÍókßûMxt»ãqü òãF×,»¼öð}?«Uw±;ÇO*?~ùë.¯<}ß1¾»Ô-rÊYåeÉÂËk×ß;vºéQN9¼¬0û½fxyÇçïÅn{oÿO]³öòÓþ¿»íq¼ý;~ù/¯½ý¾ãÚߥî{hÿN\%«/¯ÜÿÚw|ü^êÎÇöïÄõWáøû{àvu±{ÇÛ¿£FXþ^Ûø}¿ÛßÕÅî}oÿ_~eÁêóßËuuu±SN./KV_»ÿ½ãõw±»SÎ./+Vÿ^ñ~W»ûq¼ý;1oïïïµúru±ÇÛ¿ã_Y°úüÚíïý6ß®.vócÊæeÉêókÖ¿÷6¿ºØÝ)G«Ï¯Í¼½ïþêbw?·ÇÊóÁkýß;.ÿ]ìîÇñþïÔõÇòókËï÷ü½¾ØÝ)%Ëϯõï·üw}±ÛS2/+_ëÿÞ/ïåúb·?÷ÇGÊ÷ÁkæÓ÷s\_ìöÇñþïÔõÇúókëïxý]ìöÇÍËõç¿ùþúb÷?¦i^V¬?¿òþ!ÞûÇßëöÞüõ·ú6-új±úXþã_wÝûÕ,QliëzøgÙ5Åø»ÿ{÷cÙþ£,«ª«Ë®(«eÓÍ?þ(fùô7ø¾½ªÖüñOËÕr«ïný¨øÒò¿ßýõ6ý×ÿ4Þ±ªkË®»ºúãËþçöWÿóúîn÷?êt]WuªêáWÿùû¿üËöëøOOwºòª¾*ÆÿÐ4tûô«º)¯®vøÍýïýÃËß
n)ßüOÍý¿>}Îötµý¬rüÏ|üÖ?û]W]ESVÃoþ×ûåçgÿâÏþÛß<û÷~öÿmõßýoÝþêØÿÖáßûÙ¬.¯«ëÿÍóÿÔ¿ÿæÃöVðãÅ¿Àö»?èÿ·¾ßÜ}ê_þ½ÿ§o«oÿÇöñë[ºÝ¢xxñÅU7~ÿõkÿéÙ§º«Ýføoú¿úO_ý×Õ×ãwúÿùÿëÍî¥Û_þ§ÿÿyõýÛânï_{üÍYýõ×ýæ»ßþÛ_WíÕVµW»í~µ¹»½ùþëÿÝʦÿCÿß¿¶wïÕâçwêÔ\wé*µÝ³_þ·ÇÿöÿÝÕóÿØùüýÛÿ±º½ÞÞÆâ~_Þ_ÒͳÏþøY=ÿñÿùø¯·/þøaøãí-}÷UQßÚ{«QÏ+÷ÿís÷?ÎúÃM¾kc÷ÿ§û]Û?ß>î4³þ[!øýÿHýoïþõ~Û1Ïsä׿iRIý¼QÿíÏ»¿A~ý»bûש¿óê¿}E4\yõoú·5õp~ý·ÿ¯l']yõoÿQTE»½
-P¹õ߬V_WË9Böý¿ªê¦¥þ
-&×óy}×ßÞ<Hú7ֲܯÿ¶ÿ«XÿQðT?'ÿP?|sþ=¬ÿ§õï~ñ¥_ÞÝÜßû·ô_ÕþÛjô¯ D¹¡¬ÿa³ñæ¯ÿÔuìÿH¨Ñhlú?§ûÔÿWeBÿ
-Ìý9Â]äBÉÕÿèÉ\®¼õ¿²Ùÿ0þ÷ßnïþ:÷2ȯ*êú+0Õ0Pño÷ÿí~ý»aÿç¿?©èªÿ7Oï°ôÿk
-p+»~½¹|Åû÷þ?è¿kÛý+ sIÿ³<ÿËþ¯K¼ÿKøoßîÿåþî»@PLúgÞþüç]´ìÿK¨P~hLú_¬>ßï¾-~ì^ -¼ÿ´§ÿ¶ëØÿвþÿ{ÿãñfõ/7ýããjqßoîÿõ~óãð3òõߥ®Eÿ
-JÐØÖÿ?÷ë»Ûíonþê~Æ[ú/Þÿ®Âÿ#áµ-ý¬Jü¿Iÿß¾ÿõén=t wãâxûùßè¿+пº¸no\ú/<ýù/ ¦úÏæÿ¨öèÿ4$Ü¡1éßÓÿþ%àÿIÿsù?ÞÿRпý¦çþ=ý¬ÿHàùþ=ýø¿$àÿIÿ³ù?Þÿ·/ è_ÁòmýßÑÿþ%<srLüÿÇ%cÒÿlþýþ¿éZüßèÿccÐrÍÿ ÿ_©þ³ù?:æßñ¬9, a1éßÑÿÿWû?±1éß3ÿ÷? äÄÆ¤Oÿý¿òCcÒ¿§ÿÿ§ÖccÒ¿gþùJ¦Cc[ÿwôÿ#á¹cÒÿqÑô?ÿc?ÿ¿Áÿ-bÜÿC½a1è¿tÍÿàü ¦ú{æÐÿI ÿ#6&ý{æ ¼¹ÅƤÿÙüÏÿþ%|üö¸Y_·mî1éßÓÿÁùxþÇÆ¤Oÿþ/ ø?bcÒ¿gþþo äÄÆ¶þïèÿ@ÿ^³täý@þÇ%cÒ¿gþþo ôÿ±ÉÒ{®ãã%ÂÏöi«ÿ¢©ÈÿYÿÍêaõuµüu!dÕ¿Øþ½ªÏÿ¤þþLÿæóú®¿½y¼ÿ´ýÒ§¿¼þ¨S7ø?%Øûÿ-5ýÿ¥2Uÿ¿¬?ýâK¿¼»¹¿=úo÷ÿÕþÛí ý+àøçØLÕÿbµ>©ùçäë?u%ïÿØÿIÿguÿúÿüG
-æþ¿á.r¡dê·üù÷þW6Cþ7ë?þLªÿ¸ýS}ä׿þ:õ`©ÿãyóßcýS[ãÿ ÀÀXôæø_Þûÿ¨ÿ®-XÿÀûl,ú?sü//ÿùçó¿!ÿ]ùϱ±èÿÌñ¿ ÏÿÔÿ¨ý¿ØXôæø_ÿwÔÛÌÿJÀÿþÏÿ ÿ.ìÿI(i BcZÿ?oü/oÿÔÓÖø%¼¶¥ýûÿEÿgÿñüoöõßøÿ$ÔÅ5'@fºþ_ÿGÂÿ¡ÀRÿùüõ¡ÿþOùϱ±èßÕÿþ%àÿEÿ³ù?ÞÿRËü·ý¦çþ]ý¬ÿHàùþ=ýþ/ ø?bcÑÿ|þ÷ÿTâÿ@þslLëÿþô/aÏÉAþ[0,úÏÿ±ßÿ7]ÿ[ýl¦ë?ùú?Èÿ`©ÿ|þùßw¢lÓU$,ý»ú?ØÿÀ
þOl,úwÍÿàýOù±±èßÏÿQ¯è_ at Bù¡±èß5ÿÿ§ÖccÑ¿kþùJ¦CcZÿ÷ôÿ#aÏÉÁùÁ°è>ÿÇ~þÿ[ĸÿzÃ2]ÿ¥¯ÿó$XêïÿAÿ'üØXôïêÿ@ÿðÄÆ¢ÿùüÏÿýKøøíq³þ¾îÛÜ bÑ¿kþç?Jàùþ]ýø¿$àÿEÿ®ùø¿%ÿÓú¿§ÿýKxÍÒýùEÿ®ùø¿%ÐÿÇ&KÿõÕÙç
-?ßÿ±ý}U´þ ¹õ߬V_WË9BVýfðÿÔ-õ0¹þÏë»þöæñþÓö[[üf²úÿ±þMCþÉmùâOh".Éúÿeþyè_úåÝÍýí±Ïx»ÿ¯öôß&ÎÿÒÀú_l&ë±ZÒüsòõ_øÿ4ðäMÿçtÿúÿªbý_Âþ¿,ÿ,·Ðÿÿäê·÷Ãrþú_¹Õ9濲þãÏ´ú@Õ¹A~ýS1ìÿRLõ?s ðíþ¿Ý¯xÿ ÀÀôæ `Öûÿ¨ÿ®íXÿÿ?6&ý9 ø¦þËþ¯Kä¿I ÿ96&ý9 ÿü¯õ ÊIÿg ¾ÿ´§ÿ¶ë8ÿEþߨôæ `¾þ»Ôÿ(¡¤mýÿ¼À·ô_¼ÿ7]Eþ§äúÙÿÿ=0éÿÌÀ·ÿÍþ;ü?êâ cÐáéÿHþ¦úÏæÿ¨öèÿ4ÿþý-úÿ#6&ýÏåÿ8xÿK]Bÿ>ô[@\Lú÷ô°þ#çlLúwñ;ÿóðÄÆ¤ÿÙüïÿ©Ãÿ-üØØÖÿýè_ÂS
-ÈIÿ³ù?öýM×âÿ@ÿþkþG
ÿC©þ³ù?:æß²MW5°ôïÿÁþöbcÒ¿gþïÈÿIÿþú 寤ÏüüXÿIÿ~ùuAþ§éßÐØÖÿýäÿHxªçÄĤÿÙüûùÿM×ÿ)aÜÿC½a1è¿tõpþSý=ó?èÿ$ÿþ=ó?пü±1é6ÿÇáó?¡ ¿=nÖßÃm;A at Lú÷ô0ÿ/çlLú÷ôàÿÿ#6&ý{æàÿ@þGllëÿþô/á©äÄĤÏüüßèÿc¥ÿtväÇ
íÿ(ºþ¶¨ñ(Èÿfõ°úºZþȹòê¿ý󪪷ú\ÿÍçõ]{óxÿiû-O~3YýÿXÿ¦Iä?HÜÿTôÿÎdýÿòþ<ô/ýòîæþöØg¼ÝÿW{úoSÂÿ-¡A¹¡¬ÿÅj}JóÏÉ×bÿOÇ¿ÇÆ¦ÿsºÿIýUâÿ0½ÿ¯¶üYUôÿM®þwëÿy1\ yëe[sþ³iõ÷*ù¿±þÌÿ©0Õ¶ù¿v¿þëRÑ1þ=æÿFý3ÿ§ÿlLú÷È~zþ³þ/üçØôï1ÿ7
êù?¬ÿÇÆ¤ù¿QÿÌÿ©Àÿþ=òwïÿüw
-%
- at hlëÿó£þÿSñbK?ó
-ÿïÅcÒÿlóÍþ;ÎP× þOÿGjñ(0Õß#ÿùçþýòccÒ¿§ÿýKÀÿþçò¼ÿqþ·ý¦çþ=ý¬ÿHàùþ=ýø¿$àÿIÿùÏOþüßÈmýßÑÿþ%<Õü·ôïÿüSÿ-þo ôÿ±1èÿì0èAáÙù%þ¦úÏæÿèÿ}'Ê6]ÕX@ÂbÒ¿£ÿÿ¯öbcÒ¿gþïÈÿIÿþú 寤OÿþO ¬ÿÆÆ¤Ïüò?%Lÿƶþïèÿ ÿGÂS
-8ÿ#&&ýÏæÿØÏÿoð÷ÿPoXú/]ó?8ÿG©þùôÈÿIÿùè_þØô?ÿãðùпß7ëïá¶Í &ý{ú?8ÿQÏÿØôïéÿÀÿ%ÿGlLú÷ÌÿÀÿ-üØØÖÿýè_ÂKGîä\<&ý{æàÿ@ÿ,ýWçZ>^0(ü|ÿG»ÕÑÿ"!·þÕÃêëjù#çBÈ«ÿöÏ«ªò©¿?ë¿ù¼¾ëooï?m¿µåÉo&¯ÿêß4Ìk0õÿã5ýÿ3Yÿ¿¼?ýâK¿¼»¹¿=öo÷ÿÕþÛÄþ¿Ídý/VëSN¾þSÇü§^ÿccÓÿ9Ýÿ¤þ¿*Yÿ`îÿëî"J®þwëÿy1\)yëeÛÿ+aZýÇýÊgþ¯Ýå?WÔ_©þ³Íÿµûõ'ÿYD*:& cÒ¿Ëü_»ËÆÿ/ÿlLúwÉn9ÿ[ùϱ1éßeþ¯ÝÍÿ±ÿ/ý¿Øôï2ÿ×îæÿØÿÿ76&ý»ä?ïÿÛ¢%
- at hlëÿóínþÿ×¶ô³~¨ñÿ^2&ýÏ6ÿ×èüg
-uqÍ 1è¿põ0ÿ%ÁTüçÝþýòccÒ¿£ÿ£EÿðÄÆ¤ÿ¹üï©Kè_Â~ÓsIÿþÖ$ðüIÿþü_ðÄÆ¤üçvÿÿ[ùϱ±ÿ;ú?пgN?àÿ¸dLúwÉÞéó5ÐÿÇÆ ÿäêÿHø?ê?ÿ£cþ÷(ÛtUc IÿùìÿH`ÿ'6&ý{æðþ'üØôïéÿ ÿP~hLú÷ôàÿÀúolLú÷Ìÿ ÿSBÉôohlëÿ~þDþçNI?pþÇEcÒÿlþýüÿÿ·qÿõÅ ÿÒ
ÕÿÁù?LõwÌÿ ÿÓ@þGlLú÷ô ø?bcÒÿlþÃçþ%|üö¸Y_·mî1éßÓÿÁùxþÇÆ¤Oÿþ/ ø?bcÒ¿gþþo äÄÆ¶þïÿþ%¼féÈûüKƤÏüüßèÿc¥ÿê\ÇÇK
ïÿè¶ú/ó_$dÖ³zX}]-d]yõßþyU¥ÿ©õß|^ßõ·7÷¶_Úòô×ÿõoêõ? öþ&âRªÿ_Ö~ñ¥_ÞÝÜßý·ûÿjOÿmUÓÿKàøçØLÕÿbµ>©ùçäëÛþáÿÀÊ]lLú?«ûÔÿ¬ÿk0÷ÿÌ^4úß-ÿg~Æp¥äÿMKþ¯Iõ·Î_ίÕ55õW`©ÿãóßCýSËúTtL Æ¢ÿ3Çÿ2ßÿ»qþ¯Àÿ/ÿl,ú?sü/3ÿùçóõ ä?ÇÆ¢ÿ3Çÿ&<ÿSÿ_û±±èÿÌñ¿Lÿo7Îÿ±ÿ§ÿol,ú?süoþ»Trþ 4¦õÿóÆÿ2÷ÿý7mMþ»×¶ô³`ÿÿb±èÿÌñ¿3ÿ;þ»üg uqÍ ®ÿÂ×ÿQáÿP`©ÿ|þúpÿþOùϱ±èßÕÿþ%àÿEÿ³ù?ÞÿRÛ úMÏ- .ý»ú?XÿÀó?6ý{ú?
-ü_ðÄÆ¢ÿùüïÿ©Àÿ-üçØÖÿý ýKØsrÿþçóì÷ÿMWàÿ@ÿéúO¾þÿKýçótÌÿ¾e®j, a±èßÕÿÁþöbcÑ¿gþGÃûò?bcÑ¿«ÿþ_BBù¡±èß5ÿÿ§ÖccÑ¿kþùJ¦CcZÿ÷Ìÿ ÿG¾ó?baÑÿ|þýüÿÿ·qÿõeºþK_ÿçÿH°Ôß5ÿþOù±±èßÕÿþ%àÿEÿóù?ÿ
-úðñÛãfý}1Ü·¹Ä¢Wÿç?Jàùþ]ó?ðIÀÿþ=ó?8ÿIù±1ÿ{ú?п×,ù?ÐD\*ý»æàÿ@ÿ<ýæËs
ïÿh·ú/aþÿ?¹õ߬V_WË9B^ýëÁÿSùïÔßÉõß|^ßõ·7÷¶ßÚòä7×ÿõoõ æþ¿ ¸P&ëÿùç¡_|éw7÷·Ç>ãíþ¿ÚÓ*Öÿ%°ÿÉú_¬Ö§4ÿ|ý§®cýOBþCcÓÿ9Ýÿ¤þ¿bþK½ÿá.r¡äê·÷÷þWó?¬ÿø3þãPuîe_ÿT$æÿ$êæ àÛý»_ÿ®"ÿUB*:& cÒÿyïÿí8ÿ×2ÿ#Î=6&ý9 ø¦þËþ¯«xÿ@þslLú?s 0ÿù_
-ûÿ*þÏ |[ÿiOÿmײÿ/ÿolLú?s 0_ÿ]êðÿK(i Bc[ÿ?o ð-ýïÿMWáÿðÚ~Öåh æ&r¡ôæ àÛÏÿæ@ÿ-ç?H¨kNAÿg
-Ïö0ÿ%ÁTÿÙüõáþýòccÒ¿§ÿýKÀÿþçò¼ÿ¥.¡ úMÏ- .&ý{ú?XÿÀó?6&ý{ú?ðIÀÿþgó¼ÿ§ÿ·òcc[ÿ÷óè_Â3'Ç´È»hLúÍÿ±ßÿ7]ÿ[ýlúO®þÿSýgótÌÿ¾e®j, a1éßÓÿÁþöbcÒ¿gþïÈÿIÿþú 寤GÿùÿXÿIÿùäJ(þ
-mýß1ÿü ÏÓ~àüƤÿÙüûùÿ
-þoãþê
-Aÿ¥«ÿó$êïÿAÿ'üØôïéÿ@ÿxsIÿ³ù?ÿ ýKøøíq³þ¾nÛÜ bÒ¿§ÿó%ðüIÿùø¿$àÿIÿùø¿%ÿÛú¿cþúð¥#ëò?.þó?ÈÿÖ@ÿ,ý·gG~¼`PøÙþ²Úê¿h··ürë¿Y=¬¾®?r.¬úÛ¿WUuËù?&×óy}×ßÞ<ÞÚ~kËßL^ÿ?Ô¿iþO ÓÚþ«ý?¡¸P&ëÿ÷ç¡_|éw7÷·Ç>#¯ÿôߦþ_£±¬ÿÅj}JóÏy[ÿÕþë¡%DÿÈMÿçtÿúÿüo
-úÿ««?¯¶Ðÿÿäê·þ÷÷þW¶uËúiõ÷*ù¿±þ©HõW`ªÿlóí~ý9ÿSD*:& cÒ¿Çüߨÿ®Åÿ«å¿Øôïÿüôü'ÿMùϱ1éßcþoÔ]0ÿ¯¡Bù¡1éßcþoÔÛuÿ"ÿolLú÷ÈÞ½ÿ§ÿ 4¶õù¿QÿMWÿ!á©þß«½?á&r¡ô?Ûü_s æÿ5ÔÅ5'@Æ ÿÂÕÿÑàÿP`ª¿GþóÏýú?
-ä?ÇÆ¤Oÿúÿ#6&ýÏåÿ8xÿK]Bÿ>ô[@\Lúwô4¬ÿHàùþ=ýø¿$àÿIÿùÏOþüßÈmýßÑÿþ%<Õü·ôïÿüäÿÀÿ-þ?6ý=(<×ÿ1ä?âÿðÇTÿÙüó¿ïDÙ¦«HXLú÷ô°ÿ#ýØôïÿÁûò?bcÒ¿gþý¿ò¿ccÒ¿§ÿÿ§ÖccÒ¿gþùJ¦Cc[ÿwôÿ#á©ÿþgóìçÿ7ø¿Eû¨7,ý
®ùÿ#ÁTÏüú? äÄÆ¤Oÿúÿ#6&ýÏæÿ8|þ'ô/áã·ÇÍúûb¸ms'IÿþÎÀó?6&ý{ú?ðIÀÿþ=ó?ðK ÿ#6¶õGÿúðTò?bbÒ¿gþþo ôÿ±ÉÒs®ãã%ÂóüESvø?dÖ³zX}]-d]Yõ/¶¯ªÆó?©¿?Së¿ù¼¾ëooï?m¿´åé/&«ÿëßÔ
-þO Óúÿ½*úÿKeªþYúÅ~yws{ô3Þîÿ«=ý·UÃû¿©ú_¬Ö'5ÿ|ý§®äý_ûÿ±1éÿ¬îRÿ_ÿ¨ÁÜÿW#ÜE.Lýïÿ3?c¸RòÖÿÊfÈbýÇIõ·ª³/üúWÝðþGýý±ÔÿÌñ¿ óßiøë<ÿ¤¢c00ý9þ7iþ¯ ÿÀûl,ú?süoJþs[ÿ&üçØXôæøßçê:æ%°rþÏÿ4ÿWpþü¿±±èÿÌñ¿IùÏ%þ? %
- at hLëÿçÿMÿkkò?$¼¶¥ýûÿEÿgÿñüoæÿ
-ü¿êâ 3]ÿ
¯ÿ£Äÿ¡ÀRÿùüùô"ÈEÿ®þô/ÿGl,úÍÿqðþÚýKøÐoznq±èßÕÿÁúÿ±±èßÕÿÿKþØXô?ÿã0ÿ¹Àÿ-üçØÖÿý ýKØsrÿþçóä?·þo ôÿ±®ÿäëÿ¨ñ(°Ô>ÿGÇüï;Q¶éªÆþ]ýìÿH`ÿ'6ý»æðþ'üØXôïêÿ ÿP~h,ú÷ôø?%°þþ]ó?ÈÿP2ýÓú¿gþù?öÿþçóìçÿ7ø¿Eû¨7,Óõ_úú?8ÿG¥þ®ùôÈÿEÿ®þô/ÿGl,úÏÿqøüoпß7ëïá¾Í ý»ú?8ÿQÏÿØXôïÿÿKþØXôïÿÿ[ù±1ÿ{æ ¯Y:² ÿãb±èß1ÿ£#ÿ[ýl²ôê³=Ï~¶ÿcÛøo'íàÿÂÿáOný7«Õ×ÕòGÎ
WÿzðÿÔMKýL®ÿæóú®¿½y¼ÿ´ýÖ'¿¬þ¬Ó$æ?$úÿú×ÐD\(õÿËüóÐ/¾ôË»ûÛcñvÿ_íé¿Mý? Åf²þ«õ)Í?'_ÿ©ëÿÀäVllú?§ûÔÿW%ùo¦÷ÿõ?ëþÿ¢ÉÕÿn ï3$oý¯ÏÿcýÇiõ7ªs/üú§¢æüo ¦ú9 øvÿßî׿cýOC*:& cÒÿyïÿÝ8ÿ×±ÿ/ÿlLú?s ðMýý_Çú¿òccÒÿùÏÿºhYÿÀúlLú?s ðmý§=ý·ìÿÀÿþÏ Ì×8ÿSCIÛúÿyoé¿<xÿoºù /¶ô3¨ñÿ^<&ý9 øöó¿9ÐGþº¸ÆþOÿÇ0ÿÿÃSýgóÔû?ôÈIÿþýKÀÿþçò¼ÿ¥.¡ úMÏ- .&ý{ú?XÿÀó?6&ý{ú?ðIÀÿþgó¼ÿ'ÎÐ@þsllëÿþô/á©ä¿ÅĤÿÙüûýÓµø¿%ÐÿÇÆ ÿäÿÁùßLõÍÿÑ1ÿûNmºª±Å¤Ïüö$°ÿþ=ó?xÿ@þGlLú÷ôÐÿKH(?4&ý{ú?ðJ`ý76&ýûåÔÿ©¡dú74¶õGÿù?jÀù
11é6ÿÇ~þÿ[ĸÿzÃbÐéêÿàü ¦ú{æÐÿI ÿ#6&ý{æ ø?bcÒÿlþÃçBÿ>~{ܬ¿/Û6wôïéÿàüG <ÿccÒ¿§ÿÿü±1éß3ÿÿ·ò?bc[ÿwô /,¹?ÿqñôïÿÿ[ýl²ôßµçZ>^0(ülÿG¶ú/ÚÿÜúoV«¯«å!«þÅöïUU=ä?Q&×óy}×ßÞ<ÞÚ~kËßL^ÿ?Ô¿ijò$d·ýå«¿¢¸P&ëÿ÷ç¡_|éw7÷·Ç>#¯ÿôߦõ ÿÉú_¬Ö§4ÿ·õ_íé¿,Áè_ ûÿ±±éÿîRÿ_Uø$dõÿåýÿoD®þwëÿy1\ yëeÛ$ÖL«ÿ¸ÿS¹ÌÿõOÅðþGýý1Õ¶ù¿v¿þä?HEÇ``Lú÷ÿõßµä?hàý?6&ý{ä??=ÿÿ@þslLú÷ÿõ_øÿ4°ýþ=æÿvýAþ«ü¿±1éß#ÿy§ÿº`ÿOþØØÖÿæÿFý7]Âÿ+á©çûÙÿÿ0é¶ù¿æ@ÿäh¨kNAÿ
«ÿó¿%êïÿü´ÿCÿ'üçØôïéÿ@ÿðÄÆ¤ÿ¹üï©cþ[Ã~ÓsIÿþÖ$ðüIÿnþÎÿVÿ#6&ý{ä?ïÞÿSÿ[ùϱ±ÿûù?8ÿQÃü·PôïÿüäÿÀÿ-þ?6ý'Wÿù¿LõÍÿÑ1ÿûNmºª±Å¤Oÿû?ØÿIÿù5ïÈÿIÿþú 寤ÏüüXÿIÿùäJ(þ
-mýß1ÿü NÎÿ
Iÿ³ù?öóÿüß"Æý?ÔþKWÿçÿH0Õß3ÿþOù±1éßÓÿþ%àÿIÿ³ù?ÿ5úðñÛãfý}1ܶ¹Ä¤Oÿç?Jàùþ=ó?ðIÀÿþýò?jÎÒ@þGllëÿþô/áÀÉAþG(Lú÷ÌÿÀÿ-þ?6YúoÚs-/~¾ÿ£Üê¿hÿÜúoV«¯«å!«þÅöïUUÝâÿ0¹þÏë»þöæñþÓö[[üf²úÿ±þMCþìþ÷CIÿÿ{0Yÿ¿¼?ýâK¿¼»¹¿=öo÷ÿÕþÛÄùXÿÍdý/VëSN¾þëó
ß5pü{llú?§ûÔÿWëÿ&ôÿeùçnþÿòÉÕÿný?ï3$oý¯lëõÓê?îÿT>óånþ¯ þ
-Lõmþ¯Ý¯?çHEÇ``Lúwÿ+Çù?ò5àÿIÿ.ùÏ?ÿä¿I ÿ96&ý»Ìÿ»ù?Öÿ%°þþ]æÿÊÝüç¿HÀÿþ]òËÝùßä?J(i Bc[ÿ÷ÿ+wçÿ!á©yþßÿïoIÿ³Íÿ5úçüo
-uqÍ 1è¿ðô¤ÿSý]òwû?ôÈIÿþô/ÿGlLúËÿqðþºþ%|è7=·¸ôïéÿ`ýGÏÿØôïéÿÀÿ%ÿGlLúwÉþéÿÀÿ-üØØÖÿýè_ÂS
-ÈIÿ.ùÏ;ý·ø¿%ÐÿÇÆ ÿäÿQâÿP`ªÿlþùßw¢lÓU$,&ý;ú?ðÿj`ÿ'6&ý{æðþ'üØôïéÿ ÿP~hLú÷ôàÿÀúolLú÷Ìÿ ÿSBÉôohlëÿþò$<Õó?bbÒÿlþýüÿÿ·qÿõÅ ÿÒ5ÿó$êïÿAÿ'üØôïÿþ%àÿIÿ³ù?ÿ ýKøøíq³þ¾nÛÜ bÒ¿§ÿó%ðüIÿþü_ðÄÆ¤ÏüüßÈÿmýßÑÿþ%<Õüôïÿÿ[ýl²ôuu®åãÂÏ÷lÿ¼*Úí?ðÈÿfõ°úºZþȹ²ê_lÿ^UÕÃü?õ÷grý7×wýíÍãý§í·¶<ùÍdõÿcý¦¦ÿ`kûéÿ/Éúÿåýyè_úåÝÍýí±ÏÈêÿGý·©fþKç?Çf²þ«õ)Í?çmýW{ú¯H8ô/×ÿØØôN÷?©ÿ¯8ÿSCVÿ_»ÁOúÿß\ýïÖÿó>c¸@òÖÿʶaþK´úû?Ïü_=Îÿ5¬ÿI0Õ¶ù¿v¿þ]ÿWB*:& cÒ¿Ëü_½Ëæý_þÿØôïÿüóùÿ_ùϱ1éßeþ¯×ÿÉÒÀö_lLúwÿûÿ!ýÀÿþ]òGý×ùðÿÄÆ¶þï1ÿWó?ý ;ù§÷ÿýÈ
bÒÿlóÍþÛí¡uqÍ 1è¿ðôÔ-þ¦ú»ä?ïöèÿ4ÿþ=ýè_þØô?ÿãàý/u5úð¡ßôÜâbÒ¿§ÿõ <ÿccÒ¿§ÿÿü±1éß%ÿù§ÿÿ·òcc[ÿwô O5 ÿ-&&ý»ä?ïôÏùèÿccÐrÍÿ(ñ
(0Õ6ÿGÇüï;Q¶éªÆþýüþ_
-ìÿÄÆ¤ÏüÞÿ$ÿþ=ýôÿÊIÿþüXÿIÿùäJ(þ
-mýßÑÿAþ'ç¤ÿÙüûùÿ-þoãþê
-Aÿ¥kþçÿH0Õß3ÿþOù±1éß3ÿýKÀÿþgó>ÿkô/áã·ÇÍúûb¸ms'IÿþÎÀó?6&ý{ú?ðIÀÿþ=ó?ðK ÿ#6¶õGÿúpàä ÿ#&ý{æàÿ@ÿ,ý·õ¹
-?ßÿQmõ_´CÿÿÃÜúoV«¯«å!«þÅöïUUÝVÔ_Áäúo>¯ïúÛÇûOÛomyòÉêÿÇú7
-þ
-yýÿÏzÑÿÿ6LÖÿ/ïÏC¿øÒ/ïnîo}ÆÛýµ§ÿ6Õä¿H`ý/6õ¿XOiþ9ùúßþý ¼þÇÆ¦ÿsºÿIýU2ÿ-aBÿ_îÆ@éÿ/\ýïÖÿó>c¸@òÖÿÊù/
-Óê?îÿT>óÕnþ¯ þ
-Lõmþ¯Ý¯èÿ%¤¢c00&ý»ÌÿUãü_Kÿ/ÿlLúwÉþùüÇÿ/üçØôï2ÿWëÿ-ùO*þ]æÿý·ÿ'ÿolLúwÉßÿù?JÐØÖÿ=æÿªqþ§bþGÂS
-òöÿ~ÅMäB1é¶ù¿æ@ÿþ_ uqÍ 1è¿ðôó?ø?ü1Õß%ÿy·ÿCÿ§üçØôïéÿ@ÿðÄÆ¤ÿ¹üï©Kè_Â~ÓsIÿþÖ$ðüIÿþü_ðÄÆ¤üçþüßÈmýßÑÿþ%89È
Iÿ.ùÏ;ý·ø¿%ÐÿÇÆ ÿäÿQâÿP`ªÿlþùßw¢lÓU$,&ý;ú?ðÿj`ÿ'6&ý{æðþ'üØôïéÿ ÿP~hLú÷ôàÿÀúolLú÷Ìÿ ÿSBÉôohlëÿþò$898ÿ#&ýÏæÿØÏÿoð÷ÿPoXú/]ó?8ÿG©þùôÈÿIÿùè_þØô?ÿãðùпß7ëïá¶Í &ý{ú?8ÿQÏÿØôïéÿÀÿ%ÿGlLú÷ÌÿÀÿ-üØØÖÿýè_ÂS
-ÈÿIÿùø¿%ÐÿÇ&Kÿ×͹
-?ßÿ±ý{UÑ ÿÜúoV«¯«å!«þÅPÿªn9ÿGÂäúo>¯ïúÛÇûOÛomyòÉêÿÇú7MÿSBVÿuôW4Êdýÿòþ<ô/ýòîæþöØgdõÿ£þÛTÓÿK(¤Éú_¬Ö§4ÿ·õ_íéüúüccÓÿ9Ýÿ¤þ¿"ÿ[C^ÿ?Bÿÿ«ÿÝúÞgHÞú_Ù6¬ÿHVÿqÿ§òÿkvùÏÌÿI0Õ¶ù¿v¿þ]Mþ«TtL Ƥù¿fÿÌüüÿ±1éß%ÿùçóý? ä?ÇÆ¤ù¿ÝúÇü
-寤ù¿±ÿþýÀÿþ]òGý×ìÿk(i Bc[ÿ÷ÿ÷ÿ9ÿIÄÁNþéýÿc¿â&r¡ô?Ûü_s ÎÐP× þWÿGÿC©þ.ùÏ
-ç
-!ÿ96&ý{ú?пü±1é.ÿÇÁû_êjô/áC¿é¹ÄŤGÿGËúÿ±1éßÓÿÿKþØôïÿüÓÿÿ[ùϱ±ÿ;ú?п'ùo¡0éß%ÿù§ÿÿ·úÿØô<ýÛ¿ÿC©þ³ù?:æß²MW5°ôïéÿ`ÿGû?±1éß3ÿ÷? äÄÆ¤Ïüú 寤OÿþO ¬ÿÆÆ¤Ïüò?%Lÿƶþïèÿ ÿGÂó?BaÒÿlþýüÿÿ·qÿõÅ ÿÒ5ÿó$êïÿAÿ'üØôïéÿ@ÿðÄÆ¤ÿÙüÏÎ×ðñÛãfý}1ܶ¹Ä¤Oÿç?Jàùþ=ýø¿$àÿIÿùø¿%ÿÛú¿£ÿýK8prÿ
-þ=ó?ðK ÿMþ«s-/~¾ÿ£Úê¿hÿÜúoV«¯«å!«þÅpÿ¯êó$L®ÿæóú®¿½y¼ÿ´ýÖ'¿¬þ¬ÓÔø?%dõÿÿþCMÿÿ{0Yÿ¿¼?ýâK¿¼»¹¿=öYýÿ¨ÿ6qþéf²þ«õ)Í?çmýW{ú¯ÿÁñï±±éÿîRÿ_UìÿKÐÿ×õõúÿß\ýïÖÿó>c¸@òÖÿʶ©XÿQ0þãþOå3ÿWíæÿõW`ªÿlóí~ý9ÿ[D*:& cÒ¿Ëü_µÿ£ÿÿ?6&ý»ä?ÿ|þÿ&üçØôï2ÿWíÎÿfþWëÿ±1éßeþoÐÛqþü¿±1éß%ÿ¹ÚÍÿáÿPÒ Æ¶þï1ÿWíæÿÈÿðT<ÿoÿ÷7Á¤ÿÙæÿýsþ·º¸æÀô_¸ú?Jü
-LõwÉþ¹ÿCÿ'üçØôïéÿ@ÿðÄÆ¤ÿ¹üï©«Ñ¿ý¦çþ=ý¬ÿHàùþ=ýø¿$àÿIÿ.ùÏãûêðK ÿ96¶õ?ÿG
þ%<Õü·ôïÿ¼Óÿ[ýlúO®þÿSýgótÌÿ¾e®j, a1éßÓÿÁþöbcÒ¿gþïÈÿIÿþú 寤7ÿG7, ¡¬ÿÆÆ¤Ïüò?%LÿƶþïÿAþ§pþGLLúÍÿ±ÿßàÿ1îÿ¡Þ°ô_ºú?8ÿG©þùôÈÿIÿþô/ÿGlLúÍÿqøü¯Ñ¿ß7ëïá¶Í &ý{ú?8ÿQÏÿØôïÿÿKþØôïÿÿ[ù±±ÿ;æ O5 ÿ#&&ý;æÿþ?6Yúo¯Ïµ|¼`Pøùþ´ÕÑø?$äÖ³zX}]-ä\Yõ/¶¯ªê!ÿúû3¹þÏë»þöæñþÓö[[üf²úÿ±þMSÿ aBÿ_½ò+e²þyúÅ~yws{ì3Þîÿ«=ý·©Æÿ-áåf²þ«õ)Í?'_ÿõ0þ4è?46ýÓýOêÿ·oè_Áþ¿ú³ÚBÿÿ;«ÿÝúÞgHÞú_Ùnÿ:ë?¦ÕÜÿ©|æÿÒnþ¯¥þ
-Lõmþ¯Ý¯?ù"RÑ1þ]æÿÒnþõ? øÿccÒ¿KþsbþOùϱ1éßeþ/ëÿøÿ4T(?4&ý»Ìÿ¥]þ3ù¯ðÿÆÆ¤üç´ËfÿOBIÛú¿Çü_Úå?ãÿðT¼ýÿ_q¹PLúmþ¯9Ð?ùêâ cÐáêÿàüo ¦ú»ä?ÿôÐÿI ÿ96&ý{ú?пü±1é.ÿÇÁû_êÿÖð¡ßôÜâbÒ¿£ÿó¿5ðüIÿþü_ðÄÆ¤üçþüßÈmýßÑÿþ%<Õü·ôïÿüÓÿÿ[ýlúO®þò%ê?ÿ£cþ÷(ÛtUc Iÿþö$°ÿþ=ó?xÿ@þGlLú÷Ìÿ ÿP~hLú÷ôàÿÀúolLú÷Ìÿ ÿSBÉôohlëÿþò$898ÿ#&ýÏæÿØÏÿoü߯ý?ÔþKWÿçÿH0Õß3ÿþOù±1éßÓÿþ%àÿIÿ³ù?ÿ5úðñÛãfý}1ܶ¹Ä¤ÏüÎÀó?6&ý{ú?ðIÀÿþ=ó?ðK ÿ#6¶õGÿúðTò?bbÒ¿gþþo ôÿ±ÉÒWkùxÁ ð<ÿGÑ-þ¹õ߬V_WË9BVýíß«ªºMÔ_Áäúo>¯ïúÛÇûOÛomyòÉêÿÇú7Mbý_B~ÿ_¿ö+e²þyúÅ~yws{ì3²úÿQÿm"ÿACIÿÉú_¬Ö§4ÿ·õ_íé¿.Xÿ×À;66ýÓýOêÿ«ù/ Yý=Bÿÿ«ÿÝúÞgHÞú_Ù6%ë?
-¦ÕÜÿ©\çÿ*ê¯ÀTÿÙæÿöç¿9ÿ[E*:& cÒ¿çüþ_ øÿccÒ¿cþs"ÿMùϱ1éßsþù_ ÊIÿnómÇù/ðÿÆÆ¤Ïügöÿ$4 ¡±ÿûÍÿUø%ìä¿õûÿ¿&ýÏ6ÿ×pþ÷;Q× þWÿGÿC©þùÏôÈIÿþò5àÿIÿsù?ÞÿRÇü·ý¦çþ=ý¬ÿHàùþ=ýø¿$àÿIÿ~ùÏ©Ãÿ-üçØØÖÿýè_Âü·PôïÿÜâÿ@ÿþ«ÿü_ ¦úÏæÿèÿ}'Ê6]ÕX@ÂbÒ¿gþû?ØÿIÿù¼ÿI ÿ#6&ý{ú?èÿ%$þ=ýø?%°þþ=ó?ÈÿP2ýÛú¿ãùßäÿH8prpþG(LúÍÿ±ÿßàÿ1îÿ¡Þ°ô_ºú?8ÿG©þùôÈÿIÿþô/ÿGlLúÍÿqøü¯Ñ¿ß7ëïá¶Í &ý{ú?8ÿQÏÿØôïéÿÀÿ%ÿGlLú÷ÌÿÀÿ-üØØÖÿó?п'ù¡0éß3ÿÿ·úÿØdéÿº:×òñAáçû?¶¯*Úó_$äÖ³zX}]-ä\Yõ/úWuKþÉõß|^ßõ·7÷¶ßÚòä7Õÿõoòÿ5dõÿåÑ_ÑD\(õÿËûóÐ/¾ôË»ûÛcÕÿúoSMþÎÍdý/VëSÎÛú¯öô_þ4È?46ýÓýOêÿ«
-ÿ¼þþÿ7"Wÿ»õÿ¼Ï.¼õ¿²mXÿ0þãþÏÙÁùõOÅö×Ô_©þ³Íÿµûõ'ÿYD*:& cÒ¿Ëü_³ÿÃÿ/ÿlLúwÉn8ÿ[ùϱ1éßeþo·þÏù_ØþIÿ.ócÿ?, ¡øccÒ¿Kþs³Ëfÿ_þØØÖÿ=æÿ]þ3ùïjpæþÿ±_q¹PLúmþ¯9Ð?ùÏêâ cÐáêÿ¨ð(0Õß%ÿùçþýòccÒ¿§ÿýKÀÿþçò¼ÿ¥®Fÿ>ô[@\Lú÷ô°þ#çlLúwó´ù¯ðÄÆ¤üçfÿÿ[ùϱ±ÿûù?*ô/áÀÉAþ[(LúwÉþéÿÀÿ-þ?6ý'WÿGÿC©þ³ù?:æß²MW5°ôïéÿ`ÿGû?±1éß1ÿó¿5ÿþ=ýôÿÊIÿùø?%°þþ=ó?ÈÿP2ýÛú¿cþù?ÿ
-þgóìçÿ7ø¿Eû¨7,ý®þÎÿ`ª¿gþýò?bcÒ¿§ÿýKÀÿþgó>ÿ9ÿ]ÃÇoõ÷ÅpÛæNþ=ýÿ(çlLú÷ÌÿÀÿ%ÿGlLú÷Ëÿ¨9ÿIù±±ÿ;ú?п'ù¡0éß3ÿÿ·úÿØdé¿>ûÈ
-?ßÿ±ý}U4Ãü7þrë¿Y=¬¾®?r.¬úÛ?¯ªºÁÿ#arý7×wýíÍãý§í·¶<ùÍdõÿcýü?
-YýÿËJúÿËg²þyúÅ~yws{ì3Þîÿ«=ý·ó¿4ÐþÇf²þ«õ)Í?'_ÿ©Ãÿ§ýÇÆ¦ÿsºÿIýU²þ/azÿ?þ:»È
«ÿÝúÞgHÞú_Ùù¯¬ÿø3þãþOå3ÿWóÃþ/õ÷ÇTÿÙæÿÚýúwïÿRÑ1þ]æÿqþ¯aý_þÿØôïÿüóùOþòccÒ¿Ëü_1Îÿ5¬ÿK¨P~hLúwÿ+Æù¿ó_$àÿIÿ.ùÏãûjÉPÒ Æ¶þï1ÿWó?%ù^légýPâÿý
-0é¶ù¿æ@ÿ-þ uqÍ 1èÿìaÀAá¹þªÅÿ¡ÀTüçÝþýòccÒ¿§ÿýKÀÿþçò¼ÿ¥®Bÿ>ô[@\Lú÷ô°þ#çlLú÷ôàÿÿ#6&ý»ä?ÿôàÿ@þsllëÿþô/á©ä¿ÅĤüçþüßèÿccÐrÍÿ(ñ(0Õ6ÿGÇüï;Q¶éªÆþýø5°ÿþ=ó?xÿ@þGlLú÷ôÐÿKH(?4&ý{ú?ðJ`ý76&ý{æÿ)¡dú74¶õGÿù?jÀù11é6ÿÇ~þÿ[ĸÿzÃbÐéÿÁù?Lõ÷Ìÿ ÿ@þGlLú÷Ìÿ@ÿðÄÆ¤ÿÙüÏÿ
-ýKøøíq³þ¾nÛÜ bÒ¿§ÿó%ðüIÿþü_ðÄÆ¤ÏüüßÈÿmýßÑÿþ%¼°täý@þÇoIÿùø¿%ÐÿÇ&KÿÍÙG¾¼`Pøùþr«ÿ¢é8ÿEBný7«Õ×ÕòGÎ
Uÿbû÷ªªîÿÔßÉõß|^ßõ·7÷¶ßÚòä7ÕÿõoÄú¿ÉýýâOh".Éúÿåýyè_úåÝÍýí±ÏÈêÿGý·)ñþ/¡Dº¡¬ÿÅj}JóÏy[ÿÕþSס È?66ýÓýOêÿ«ù/ úÿºþ³ÞBÿÿ;«ÿÝúÞgHÞú_ÙÖäÿJVÿqÿ§òÿ+wùÏõW`ªÿlóí~ýÉ ÀÀôï2ÿWîòYÿÿ?6&ý»ä?ÿ-üçØôï2ÿWîæÿXÿP¡üÐôï2ÿWîæÿÿÿ76&ý»ä?ïÿ©ãü' %
- at hlëÿóånþüw O5Èõÿ²ÿÿ{`ÒÿlóÍþÉÖP× þÏíÿ(ð(0Õß%ÿy·ÿCÿ§üçØôïèÿhпü±1é.ÿÇÁû_ê*ô/áC¿é¹ÄŤOÿë?xþÇÆ¤Oÿþ/ ø?bcÒ¿KþóÎÿÑâÿ@þsllëÿþô/á©ä¿ÅĤüçþ9ÿQýlúO®þÿC©þ³ù?:æß²MW5°ôïÿÁþöbcÒ¿gþïÈÿIÿþú 寤OÿþO ¬ÿÆÆ¤Ïüò?%Lÿƶþïçÿ¨ÈÿðTÎÿIÿ³ù?öóÿüß"Æý?ÔþKWÿçÿH0Õß1ÿþOù±1éßÓÿþ%àÿIÿ³ù?ÿ ýKøøíq³þ¾nÛÜ bÒ¿§ÿó%ðüIÿþü_ðÄÆ¤ÏüüßÈÿmýß1ÿýKxªù11éß3ÿÿ·úÿØäé¿9×òñAáyþ¢-Èÿ[ÿÍêaõuµüs!dÕ¿Øþ½ªªùêïÏäúo>¯ïúÛÇûOÛomyòÉêÿÇú7M¢ÿ0µÿ¿zù'4Êdýÿòþ<ô/ýòîæþöØgdõÿ£þÛT3ÿ%¡d04õ¿XOiþ9oë¿ÚÓÿöè_òMÿçtÿúÿó?5Lèÿ¯®þ¼ÚBÿÿ;«ÿÝúÞgHÞú_ÙÖ-ë?
-¦ÕÜÿ©\çÿ:ê¯ÀTÿÙæÿöç¿ñÿ«HEÇ``Lú÷ÿcý_ïÿ±1éß1ÿ9ÿ.üçØôï8ÿײþ/¡Bù¡1éßqþ¯cþWþߨôïÿÌü¯ 4¶õÇügò_%<Õ ÛÿËþÿoIÿ³Íÿ5ùÏø$ÔÅ5'@Æ ÿÂÕÿÑàÿP`ª¿gþ3ýòccÒ¿§ÿýKÀÿþçò¼ÿ¥.¡ úMÏ- .&ý{æ?³þ#çlLú÷ôàÿÿ#6&ý;æ?wø¿%ÿÛú¿£ÿýKxªùo11éß1ÿ¹Åÿ-þ?6ý'OÿG]àÿP`ªÿlþùßw¢lÓU$,&ý{ú?ØÿÀþOlLú÷ÌÿàýOù±1éß3ÿþ_BBù¡1éßÓÿÿS뿱1éß3ÿüO %Ó¿¡±ÿ;ú?ÈÿðTÎÿIÿ³ù?öóÿüß"Æý?ÔþK×üÎÿ`ª¿gþýò?bcÒ¿§ÿýKÀÿþgó>ÿúðñÛãfý}1ܶ¹Ä¤Oÿç?Jàùþ=ýø¿$àÿIÿùø¿%ÿÛú¿£ÿýKxªù11éß3ÿÿ·úÿØäé¿;×òñAáyþ¢-8ÿEBný7«Õ×ÕòGÎ
Uÿm᪪û?õ÷grý7×wýíÍãý§í·¶<ùÍdõÿcý¦fý_ÂÄþ¿Úûe²þyúÅ~yws{ì3Þîÿ«=ý·©fý_Â5Ê
-Ídý/VëSN¾þëaI ýàø÷ØØôN÷?©ÿ¯*æ¿$Lèÿ«êÏjýÿï@®þwëÿy1\ ç¯ÿU[ýmS²þ£`ZýÇýÊgþ¯Úå?WÔ_©þ³Íÿµûõ'ÿQD*:& cÒ¿Ëü_5Îÿÿ ÿlLúwÉ®ÿBþslLúwÿ«vóøÿ$°þþ]æÿªÝüù¯ðÿÆÆ¤üçñý¿.ðÿI(i Bc[ÿ÷ÿ«vóÿ&á©yþß
-ÿïoIÿ³Íÿ5ú'ÿCC]\sD`ú/\ó;ü
-Lõ÷ÌfýGùϱ1éß3ÿýKÀÿþçò¼xÿûÿþ%|è7=·¸ôïÿÿSÏÿØôïÿÌüü±1éß3ÿÿ§òcc[ÿwÌFÿj@þ[LLú÷ÌfþKýlúO®ù ÿSýgótÌÿ¾e®j, a1éß3ÿÿ¯öbcÒ¿gþþ äÄÆ¤Ïüú 寤Ïüæ%°þþ=ó?ðJ(þ
-mýß/ÿ#ÿ#á©ÿþgóìçÿ7þO
-ãþê
-Aÿ¥«ÿó$êïÿñsÿþOù±1éß3ÿõ_ ø?bcÒÿlþÃçÍó_ÂÇoõ÷ÅpÛæNþ=ó?ðJàùþ=ó?Xÿÿ#6&ý»äT»üüßÈÿmýß1ÿÿ·§ÿþ=ó?xþK ÿMþ««s-/~¶ÿ£è¶ú/ÚmKÿC at ný7«Õ×ÕòGÎ
WÿíWUÝâÿ0¹þÏë»þöæñþÓö[[üf²úÿ±þMCþýÿÓ%ýÿe3Yÿ¿¼?ýâK¿¼»¹¿=öo÷ÿÕþÛðÿH ýÍdý/VëSN¾þëóß5°ÿþÏéþ'õÿUÉúéý¹åϲ¤ÿ¿hrõ¿[ÿÏûáÉ[ÿ+Ûü_ Óê?îÿT.ócýS±ý5õ`ªÿlóí~ýÉ ÀÀôï1ÿ7ê¿k9ÿOïÿ±1éß#ÿùéùÏú¿òccÒ¿ÇüߨÿºÀÿ§¡Bù¡1éßcþo×ÿìÿiÀÿþ=òwú¯æÿ%4 ¡±ÿ;ÌÿúoºDþ»§Lõÿ²ÿÙô?Ûü_s ò?4ÔÅ5'@Æ ÿÂÕÿQáÿP`ª¿GþóÓþýòccÒ¿§ÿýKÀÿþçò¼ÿ¥®Fÿ>ô[@\Lú÷ô°þ#çlLúwó´ù¯ðÄÆ¤üçÝûêðK ÿ96¶õ?ÿG
þ%ürrLûü·Ç¤üç'ÿþo ôÿ±1è?¹ú?ü
-LõÍÿÑ1ÿûNmºª±Å¤Oÿû?ØÿIÿùÿüØôïéÿ ÿP~hLú÷ÌÿÀÿ)õߨôïÿAþ§éßÐØÖÿó?ÈÿðËÉýçüô?ÿc?ÿ¿Áÿ-bÜÿC½a1è¿tõpþSý=ó?èÿ$ÿþ=ýè_þØô?ÿãðù_£ ¿=nÖßÃm;A at Lú÷ôpþ£ÿ±1éß3ÿÿü±1éß/ÿ£æü'
-äÄÆ¶þïèÿ@ÿ^X:ò ÿãÂ1éß3ÿÿ·úÿØäé¿:×òñAáçû?ÚþvÿÀÿáOný7«Õ×ÕòGÎ
WÿíWUÝàÿ0¹þÏë»þöæñþÓö[[üfòúÿ¡þMCþcÿ¿-ýÿ%3Yÿ¿¼?ýâK¿¼»¹¿=öo÷ÿÕþÛÄù_8þ96õ¿XOiþ9ùúOþ?
-
-úMÿçtÿúÿªdý_½ÿá.r¡äê·þ÷÷þW·ÖL«ÿ¸ÿsöbp~ýSÈ`ªÿlóí~ý»ùo ©è Iÿ.óí8ÿÇùðÿÇÆ¤üçÝóÿòccÒ¿Ëü_;Îÿ5ìÿK`ÿ/6&ý»Ìÿµ»ù?öÿ%àÿIÿ.ùÏíîüoò%4 ¡±ÿ{Ìÿµ»ó¿ñÿHxmK?ëz4 s¹PLúmþ¯9Ð?ù?êâ cÐáêÿ`þK©þ.ùÏ?ýôÈIÿþô/ÿGlLúËÿqðþÇù*>ô[@\Lú÷ô°þ#çlLúwô´ø¿$àÿIÿ.ùÏ?ýø¿%ÿÛú¿£ÿýKxæäöùoIÿ.ùÏ?ýø¿%ÐÿÇÆ ÿäêÿhñ(0Õ6ÿGÇüï;Q¶éªÆþ=ýìÿH`ÿ'6&ý{æðþ'üØôïèÿhéÿ%$þ=ó?ðJ`ý76&ý{æÿ)¡dú74¶õGÿù?99¦ýÀùIÿ³ù?öóÿüß"Æý?ÔþKWÿçÿH0Õß3ÿþOù±1éßÓÿþ%àÿIÿ³ù?ÿ ýKøøíq³þ¾nÛÜ bÒ¿gþç?Jàùþ=ýø¿$àÿIÿùø¿%ÿÛú¿£ÿýKxÍÒõùIÿùø¿%ÐÿÇ&Kÿg'~¼dPøÙþm/PTESrþÌúoV«¯«å
¬!«þÅöÏ«Á BýLÿæóú®¿½y¼ÿ´ýÒ§¿¼þ¨S׬ÿK0÷ÿ#¬"\*SõÿËúóÐ/¾ôË»ûÛ£ñvÿ_íé¿Öÿ%0ÿ©ú_¬Ö'5ÿ|ý§®dýO+w±1éÿ¬îRÿ_VÌI0÷ÿW#ÜE.Lýïÿ3?c¸RòÖÿʦ!ÿW¤úÛ?ÕÙA~ý·?vÔ_¥þgÿåÍõOmÍû¿TtL Æ¢ÿ3ÇÿòÞÿGýwMÇú¿üÿ±±èÿÌñ¿¼üç§ç?þ ä?ÇÆ¢ÿ3Çÿ&<ÿSÿ_C
òCcÑÿãyþßQÿmW0ÿ/ÿol,ú?süoþ»Tpþ 4¦õÿóÆÿòöÿGý7m"ÿ]Âk[úÙ?°ÿ±XôæøßÏÿæ@ÿþ uqÍ ®ÿÂ×ÿÑàÿP`©ÿ|þú`ÿþOùϱ±èßÕÿþ%àÿEÿ³ù?ÞÿÒð×Ñ¿ý¦çþ=ýÿ¥çl,úwõàÿÿ#6ýÏçÿ8xÿOþo ìÜÆÆ´þïéÿ@ÿöä¿Ã¢ÿùüûýÓvø¿%ÐÿÇfºþÏëÿòñøc©ÿ|þùßw¢lÓU$,ý»ú?ØÿÀþOl,úwÍÿàýOù±±èß5ÿþ_ùÿ±±èßÕÿÿS뿱±èß5ÿüO %Ó¿¡1ÿ{ú?Èÿ°ïäàüXXô?ÿc?ÿ¿Áÿ-bÜÿC½a®ÿÒ7ÿó$XêïÿAÿ'üØXôïêÿ@ÿðÄÆ¢ÿùüÏÿýKøøíq³þ¾îÛÜ bÑ¿«ÿó%ðüEÿ®þü_ðÄÆ¢×üüߨ¹iýßÓÿþ%¼féÈÿ»È¥bÑ¿kþþo ôÿ±ÉÒÙíùxÎ ð³ýE»ÕÑÿ"!·þÕÃêëjù#çBÈ«=øê¦£þ
-&×óy}×ßÞ<ÞÚ~kËßLVÿ?Ö¿ièÿ5Øûÿjø&âB¬ÿ_æ~ñ¥_ÞÝÜßû·ûÿjOÿÛ×öÿ% ÜØLÖÿbµ>¥ùçäë?uóxýMÿçtÿúÿªdýO¹ÿ¯F¸\(¹úßm ä}Æp¥äÿ-ù¿¦ÕÜ ªÎ½ò뺤þ
-Lõ?s ðíþ¿Ý¯ÇùRÑ1þÏ Ì{ÿôßµøÿ5àÿIÿg ¾©ÿò ÿëïÿÈIÿg æ?ÿë¢eÿ_+w±1éÿÌÀ·õöôßvähÀÿþÏ Ì×8ÿICIÛúÿyoé¿<xÿoº
-ÿ×¶ô³~¨ðÿ^2&ý9 øöó¿9ÐGþ³º¸æÀô_xú?ó_LõÍÿQìÿÐÿi ÿ96&ý;ú?Zô/ÿGlLúËÿqðþºþ%|è7=·¸ôïéÿ`ýGÏÿØôïéÿÀÿ%ÿGlLúÍÿqðþÈÔ@rkllëÿþô/ácâø?.þgóì÷ÿM×âÿ@ÿþkþG
ÿC©þ³ù?:æß²MW5°ôïÿÁþöbcÒ¿gþïÈÿIÿþú 寤OÿþO ¬ÿÆÆ¤¿üí?Ñ¿éßÐØÖÿýäÿHxîäôç\4&ýÏæÿØÏÿoð÷ÿPoXú/]ýÿ#ÁTÏüú? äÄÆ¤Ïüô/ÿGlLúÍÿqøüOè_ÂÇoõ÷ÅpÛæNþ=ýÿ(çlLú÷ôàÿÿ#6&ý{æàÿ@þGllëÿþô/á5KGÞä\2&ý{æàÿ@ÿ,ý§î\ËÇ
íÿØöÛGJ[ÿ!!·þÕÃêëjù#çBȪ±ýóªªügêïÏäúo>¯ïúÛÇûOÛomyòÉëÿú7
-óß,ýõïBq¡LÖÿ/ïÏC¿øÒ/ïnîo}ÆÛýµ§ÿ6±ÿ¯¡A¹¡¬ÿÅj}JóÏÉ×]0ÿ©üØØôN÷?©ÿ¯JÖÿ$Lïÿ±Ï?w§¿Óÿ_,¹úßÿç}Æpäÿmݰþ£`ZýÇýÊeþo¬*ó©¿?¦úÏ6ÿ×î×ù?©è Iÿó£þ»ó?4àÿIÿùÏ?ÿüw ä?ÇÆ¤ù¿QÿuѲþ/ä¶Øôï1ÿ7ê¿í:æ%àÿIÿùÏ»÷ÎÿQÒ Æ¶þï0ÿ7ê¿é*ò_%¼ØÒÏü¡ªðÿ^:&ýÏ6ÿ×èù?
-uqÍ 1è¿põÔø?êïÿüäÿ ÿ@þslLú÷ô ø?bcÒÿ\þ÷¿Ô%ô/áC¿é¹ÄŤGÿGÃúÿ±1éßÓÿÿKþØôïÿüäÿÀÿ-üçØØÖÿýè_ÂS
-ÈIÿùÏOþüßèÿccÐrõtø?ê?ÿ£cþ÷(ÛtUc Iÿþö$°ÿþ=ó?xÿ@þGlLú÷Ìÿ ÿ@þwlLú÷ôàÿÀúolLú÷Ìÿ ÿSBÉôohlëÿþò
$<Õó?bbÒÿlþýüÿÿ·qÿõÅ ÿÒÕÿÁù?Lõ÷Ìÿ ÿ@þGlLú÷ô ø?bcÒÿlþÃçBÿ>~{ܬ¿/Û6wôïÿÁùxþÇÆ¤Oÿþ/ ø?bcÒ¿gþþo äÄÆ¶þïèÿ@ÿ^X:2 ÿãò1éß3ÿÿ·úÿØäé¿9×òñAágû?n«ÿ¢-Zü
-rë¿Y=¬¾®?r.¼úoÿ¼ªêü ë¿ù¼¾ëooï?m¿µåÉo&«ÿëß4äÿk°ôÿÅýÿ¥3Yÿ¿¼?ýâK¿¼»¹¿=öo÷ÿÕþÛÿСÜÐLÖÿbµ>¥ùçäë?uùO8þ=66ýÓýOêÿ«ÿéýÿÕ?¯®èÿ/\ýïÖÿó>c¸@òÖÿʶ)YÿQ0þãþOå2ÿ7Ö?uEýê?Ûü_»_Îÿ ÀÀôï1ÿ7ê¿kñÿjÀÿþ=òÿ¬ÿK ÿ96&ý{Ìÿú¯æÿ5°þþ=æÿFý·ìÿÀÿþ=òwïÿÛ¢%
- at hlëÿó£þ®"ÿCÂ-ýÌ®ðÿ^<&ýÏ6ÿ×èù
-uqÍ 1è¿põø?êïÿüsÿþOùϱ1éßÑÿÑ¢ ø?bcÒÿ\þ÷¿Ô%ô/áC¿é¹ÄŤOÿë?xþÇÆ¤Oÿþ/ ø?bcÒ¿Gþóîýó¿EÿÛú¿£ÿýKxªùo11éß#ÿù§þ[üßèÿccÐrõ$ü
-LõÍÿÑ1ÿûNmºª±Å¤Ïüö$°ÿþ=ó?xÿ@þGlLú÷ôÐÿKH(?4&ý{ú?ðJ`ý76&ý{æÿ)¡dú74¶õ?ÿG"ÿGÂS
-8ÿ#&&ýÏæÿØÏÿoð÷ÿPoXú/]ýÿ#ÁTÇüú?
-äÄÆ¤Oÿúÿ#6&ýÏæÿ8|þ×è_ÂÇoõ÷ÅpÛæNþ=ýÿ(çlLú÷ôàÿÿ#6&ý{æàÿ@þGllëÿùè_ÂKGîä\<&ý{æàÿ@ÿ,ý_mùxÁ ð³ýåöÏ«¢-Zü
-rë¿Y=¬¾®?r.¬úÛ¿WUõÿLýý\ÿÍçõ]{óxÿiû-O~3yýÿPÿ¦aþ[C^ÛuìW4Êdýÿòþ<ô/ýòîæþöØgäõÿþÛT3ÿ%¡lnd&ë±ZÒüsÞÖµ§ÿí?п^ÿccÓÿ9Ýÿ¤þ¿*YÿÕÿ_ÐÿÿFäê·þ÷Ãrþúß ÿ²mXÿ0þãþOå2ÿ7Öüg¦úÏ6ÿ×î׿KÌKHEÇ``Lú÷ÿõOþ³
-üÿ±1éß#ÿùéùÏþòccÒ¿Çü_Ùÿ,¤Bù¡1éßcþoÔ?ùÏ*ðÿÆÆ¤üçÝû?ùÏ"JÐØÖÿæÿFýÿ¬â`'ÿôþÿ±_q¹PLúmþ¯9ÐGþº¸æÀô_¸ú?È`ª¿GþóÓþýòccÒ¿§ÿýKÀÿþçò¼ÿÿ¬âC¿é¹ÄŤÿG½óàÿÀó?6&ý»ø?êÿù ø?bcÒ¿Gþóîýügä?ÇÆ¶þïçÿ ÿYÃü·Pôïÿ<öÿM×¢ ôÿ±1è?¹ú?jü
-LõÍÿÑ1ÿûNmºª±Å¤Oÿþ_ ìÿÄÆ¤Ïüæ%ÿþ=ó?èÿ%$þÝò?ºaIý`ý76&ý{æàÿP2ýÛú¿cþù?ÿ
-þgóìçÿ7]Gþ§qÿõÅ ÿ³íÿàü ¦ú{æÐÿI ÿ#6&ý{ú?пü±1é6ÿÇáóóß5|üö¸Y_·mî1éßÓÿÁü¿ÿ±1éßóüü_ðÄÆ¤ÏüüßÈÿmýß1ÿýK8prÿ
-þ]ò?~ú?ðK ÿMþ«³-/~¶ÿ£h·ú/Úaþÿ?¹õ߬V_WË9B^ýü§ªnðÿH\ÿÍçõ]{óxÿiû-O~3YýÿXÿ¦!ÿOC^ÿÿÊýÿ%3Yÿ¿¼?ýâK¿¼»¹¿=öo÷ÿÕþÛÄù_Pnl&ë±ZÒüsòõ:üôþÏéþ'õÿUÁú¿{ÿ?Â]äBÉÕÿný?ï3+%oý¯lëÄúiõ÷*ù¿±þ©Hä?K0Õ¶ù¿v¿þ]Åü·TtL Ƥù¿Qÿ]Ûÿ,ÿlLú÷È~zþóþ/üçØôï1ÿ7ê¿.öÿ%°rþ=æÿFý·øEàÿIÿùÏ»÷ÿí úWPÒ Æ¶þï0ÿ7ê¿é*ü?^ÛÒÏú¡
-ÀÜD.þgÿkôOþº¸æÀô_¸ú?ÿ`ª¿GþóÓþýòccÒ¿§ÿýKÀÿþçò¼ÿqþý¦çþ=ý¬ÿHàùþý-þ/ ø?bcÒ¿GþóOÿGÿ[ùϱ±ÿûù?Jô/ácÚä¿]4&ý{ä??ù?ðK ÿAÿÉÕÿÑàÿP`ªÿlþùßw¢lÓU$,&ý{ú?ØÿÀþOlLúwÌÿ ÿ[ù±1éßÓÿAÿ/!¡üÐôïÿÿS뿱1éß3ÿüO %Ó¿¡±ÿ;æÿ#ácÚÿqÑô?ÿc?ÿ¿Áÿ-bÜÿC½a1èÿìÃÀ
gû?8ÿG©þùôÈÿIÿþô/ÿGlLúÍÿqøüOè_ÂÇoõ÷ÅpÛæNþ=ýÿ(çlLú÷ÌÿÀÿ%ÿGlLúwÌÿàü'
-äÄÆ¶þïèÿ@ÿ^³tdý@þÇEcÒ¿gþþo ôÿ±ÉÒYkùxÁ ð<ÿGÑÿ"!·þÕÃêëjù#çBÈ«ÿöÏ«ªò©¿?ë¿ù¼¾ëooï?m¿µåÉo&¯ÿêß4Ìk0÷ÿÛÑÿ_.õÿËûóÐ/¾ôË»ûÛcñvÿ_íé¿Mìÿk`r#6õ¿XOiþ9ùúOóÈMÿçtÿúÿªdýO¹ÿ¯G¸\(¹úßÿç}Æp¥äÿmMþ¯iõ÷*×ù¿ú+0Õ¶ù¿ýùoòU¤¢c00&ý{Îÿáÿÿ?6&ý{æ?óþ/üçØôï8ÿÇù_ØÿIÿùÏìÿKÀÿ
þ=ó9ÿIBIÛú¿ãüþ ¯mégþP×ø/þgÿkÈ~'êâ cÐáêÿ`þK©þùÏôÈIÿþô/ÿGlLúËÿqðþºþ%|è7=·¸ôïÿÌúÿ±1éßÓÿÿKþØôïÿÿ[ùϱ±ÿ;ú?пNi?ÿvÁôïÿÿ[ýlúO®þÿSýgótÌÿ¾e®j, a1éßÓÿÁþöbcÒ¿gþïÈÿIÿùôÿÈÿIÿþüXÿIÿùäJ(þ
-mýßÑÿAþN)?pþÇEcÒÿlþýüÿÿ·qÿõÅ ÿÒÕÿÁù?Lõ÷Ìÿ ÿ@þGlLú÷ô ø?bcÒÿlþÃçBÿ>~{ܬ¿/Û6wôïÿÁùxþÇÆ¤Oÿþ/ ø?bcÒ¿gþþo äÄÆ¶þïèÿ@ÿ^³tdþ@þÇcÒ¿gþþo ôÿ±ÉÓÿõ¹
-ÏómAþÜúoV«¯«å!¯þÛ?¯ªzÿ£þþL®ÿæóú®¿½y¼ÿ´ýÖ'¿¼þ¨Ó$æ?$Øûÿ«þÿr¬ÿ_Þ~ñ¥_ÞÝÜßû·ûÿjOÿmJìÿI`þ;6õ¿XOiþ9ùúп^ÿccÓÿ9Ýÿ¤þ¿*É`îÿ¯F¸\(¹úßÿç}Æp¥äÿmS±þ£`ZýÇýÊsþ¯NÔ_©þ³ÍÿíÏãÿW ÀÀôï8ÿÿOþÿØôïÿÌû¿òccÒ¿gþ3ûÿ*þ=çÿØÿÿ76&ýûå?×ó¿JÐØÖÿýæÿþ ¯mégýp
ÿ÷1é¶ù¿æ0ÿù? uqÍ 1è¿põ0ÿ%ÁTÇügú?
-ä?ÇÆ¤Oÿúÿ#6&ýÏåÿ8xÿK]þ%|è7=·¸ôïéÿ`ýGÏÿØôïéÿÀÿ%ÿGlLú÷ÌÆÿ-ÉíØØÖÿóÑ¿gN?àÿ¸dLú÷ÌÆÿ-þ?6ý'WÿGÿC©þ³ù?:æß²MW5°ôïéÿ`ÿGû?±1éß3ÿ÷? äÄÆ¤Oÿý¿òÿccÒ¿ÿ£+Èÿ×ÀúolLú÷Ìÿ ÿSBÉôohlëÿùäÿHxîäôç\4&ýÏæÿØÏÿoð÷ÿPoXú/]ýÿ#ÁTÏüú? äÄÆ¤Oÿúÿ#6&ýÏæÿ8|þ×è_ÂÇoõ÷ÅpÛæNþ=ýÿ(çlLú÷ÌÿÀÿ%ÿGlLú÷ÌÿÀÿ-ÛØØÖÿó?п×,y?ÿqÉôïÿAþ·úÿØdé?]kùxÁ ð³ýÛ^ ¨v{KÀÿ! ·þÕÃêëjù#çBȪ±ýóªª[ü?&×óy}×ßÞ<ÞÚ~kËßL^ÿ?Ô¿iÈÑ`éÿëÿe²þyúÅ~yws{ì3Þîÿ«=ý·ó?40þÉú_¬Ö§4ÿ|ýoÿÿGù±±éÿîRÿ_¬ÿKÞÿ×[þ¬kúÿ&Wÿ»õÿ¼Ï.¼õ¿²[ÖL«ÿ¸ÿS¹ÌÿõOÅÿGýý1Õ¶ù¿v¿þÿ-"1éßcþoÔ×ÿ¨ÿlLú÷È~zþÿ&üçØôï1ÿ7ê¿.ZÖÿ%T(?4&ý{Ìÿúo;ÎÑÿ76&ý{ä?ïÞÿùJÐØÖÿæÿFý7]Eþ[ú?
Ô5þßKǤÿÙæÿýsþ·º¸ÆþWÿGÿC©þùÏ?÷èÿ4ÿþ=ýè_þØô?ÿãàý/u ýKøÐoznq1éßÑÿѰþ#çlLú÷ôàÿÿ#6&ý{ä??ù?ðK ÿ96¶õGÿúðTòßbbÒ¿Gþóÿÿ·úÿØô<ýCþ#þLõÍÿÑ1ÿûNmºª±Å¤Oÿû?ØÿIÿù¼ÿI ÿ#6&ý{æÐÿK ÿ;6&ý{ú?ðJ`ý76&ý{æÿ)¡dú74¶õGÿù?jÀù11é6ÿÇ~þÿ[ĸÿzÃbÐéÿÁù?Lõ÷Ìÿ ÿ@þGlLú÷ô ø?bcÒÿlþÃçBÿ>~{ܬ¿/Û6wôïéÿàüG <ÿccÒ¿§ÿÿü±1éß3ÿÿ·ò?bc[ÿwô /,?ÿqùôïÿÿ[ýl²ôUkùxÁ ðóýÛ?¯¶$ÿCBný7«Õ×ÕòGÎ
Uÿbû÷ªªîÿÔßÉõß|^ßõ·7÷¶ßÚòä7Õÿõoõ myäW4Êdýÿòþ<ô/ýòîæþöØgdõÿ£þÛTóþ/óc3YÿÕúæó¶þ«=ý×Ã-ý ÿ!66ýÓýOêÿ«ù/ Yý9Bÿÿ«ÿÝúÞgHÞú_Ù6õÓê?îÿT>óõ.ÿõ? ¦úÏ6ÿ×î×ÿ¿TtL Ƥù¿zÿÃÿ§ÿlLúwÉþùü'ÿ]ùϱ1éßeþ¯ÞÍÿÿ(í¿Øôï2ÿ7öÿÃúÿ76&ý»ä?ú¯æ%àÿmýßcþ¯çûÿjp®ÿ·|ýWÜD.þgÿkôÏù/êâ cÐáêÿ¨ð(0Õß%ÿùçþýòccÒ¿§ÿýKÀÿþçò¼ÿ¥íè_Á~ÓsIÿþÖ$ðüIÿnþ¶ãü_
-ø?bcÒ¿Kþs½ËÆÿ-üçØØÖÿýüúpàä ÿ-&ý»ä?ÿôàÿ@ÿþ«ÿ£Áÿ¡ÀTÿÙüó¿ïDÙ¦«HXLú÷ô°ÿ#ýØôïÿAþ¿ò?bcÒ¿§ÿþ_ùß±1éß3ÿÿ§ÖccÒ¿gþùJ¦Cc[ÿwÌÿ ÿGÂó?BaÒÿlþýüÿÿ·qÿ
õÅ ÿÒÕÿÁù?Lõ÷Ìÿ ÿ@þGlLú÷ô ø?bcÒÿlþÃçþ%|üö¸Y_·mî1éßÓÿÁùxþÇÆ¤Ïüü_ðÄÆ¤¿üó4ÿÛú¿£ÿýK8prÿ
-þ=ó?ðK ÿMþ¯ÏüxÁ ðóýÛ¿WmYâÿP[ÿÍêaõuµüs!dÕ¿ê_ÕCþ3õ÷grý7×wýíÍãý§í·¶<ùÍdõÿcýùo
-YýuôW4Êdýÿòþ<ô/ýòîæþöØgdõÿ£þÛT3ÿ%¡d <4õ¿XOiþ9oë¿ÚÓ]0ÿ©¡Aþ¡±éÿîRÿ_U¬ÿIÈëÿGèÿ#rõ¿[ÿÏûáÉ[ÿ+Ûõ Óê?îÿT>ó
-ùÏBLõmþ¯Ý¯ÿ ÀÀôï2ÿ×ÿ,ÿlLúwÉnÈBþslLúwÿkÈR¡üÐôï2ÿ×ÿ,ÿolLúwÉnÈRÒ Æ¶þï1ÿ×ÿ,ä`'ÿôþÿ±_q¹PLúmþ¯9ÐGþº¸æÀô_¸ú?È`ª¿KþsCþ³òccÒ¿§ÿýKÀÿþçò¼ÿÿ¬âC¿é¹ÄŤOÿë?xþÇÆ¤7ÿùÏ*ðÄÆ¤üçüg!ä?ÇÆ¶þïèÿ@ÿä¿
¤üçüg!ôÿ±1èÿì0èAáÙþÿSýgótÌÿ¾e®j, a1éßÓÿÁþöbcÒ¿gþïÈÿIÿþþ_ñÿ±1éß3ÿÿ§ÖccÒ¿gþùJ¦Cc[ÿwôÿ#áÀÉÁù¡0é6ÿÇ~þÿ[ĸÿzÃbÐéêÿàü ¦ú{æÐÿI ÿ#6&ý{ú?пü±1é6ÿÇáóóß5|üö¸Y_·mî1éß3ÿó%ðüIÿþü_ðÄÆ¤ÏüüßÈÿmýßÑÿþ%89Èÿ
Iÿùø¿%ÐÿÇ&Oÿõ¹
-ÏómYáÿP[ÿÍêaõuµüs!dÕ¿ê_ÕCþ3õ÷grý7×wýíÍãý§í·¶<ùÍdõÿcýùo
-YýMÿÿ»1Yÿ¿¼?ýâK¿¼»¹¿=öYýÿ¨ÿ6ÕÌI(éÿC3YÿÕúæó¶þ«=ý×óäþÏéþ'õÿUÅú¼þþÿ7"Wÿ»õÿ¼Ï.¼õ¿²mXÿ0þãþOEþóåcªÿlóûóß©KÌKHEÇ``Lú'ÿùâÁÿþɾxÈIÿä?_<ÊIÿä?_<øccÒ?ùÏOIÛú?ùÏÎÁNþéýÿc¿â&r¡ô?Ûü_s8ÿGþº¸æÀô_ÿ|ùêOþóÅCþslLú'ÿùâÁÿþçò¼ÿÿ¬âC¿é¹ÄŤò/ÿ±1éüçÿGlLú'ÿùâ!ÿ96¶õò/§ÿþɾxèÿccÐrõtø?ê?ÿ£cþ÷(ÛtUc Iÿþö$°ÿþ=ó?xÿ@þGlLú÷Ìÿ ÿP~hLú÷ôàÿÀúolLú÷Ìÿ ÿSBÉôohlëÿþò$898ÿ#&ýÏæÿØÏÿoü߯ý?ÔþKWÿçÿH0Õß3ÿþOù±1éßÓÿþ%àÿIÿ³ù?ÿÿ®áã·ÇÍúûb¸ms'Iÿùÿ(çlLú÷ôàÿÿ#6&ý{æàÿ@þGllëÿþô/áÀÉAþG(Lú÷ÌÿÀÿ-þ?6Yúo«s-/~¾ÿ£Úê¿hþÿ?¹õ߬V_WË9BVýáþ_ÕmAýL®ÿæóú®¿½y¼ÿ´ýÖ'¿¬þ¬ÓàÿÑÕÿ ¸P&ëÿ÷ç¡_|éw7÷·Ç>#«ÿõߦÄþéf²þ«õ)Í?çmýW{úO]þ%ÿþÏéþ'õÿUÉü· ý]ÿ¹¥ÿ¿|rõ¿[ÿÏûáÉ[ÿ+[æ¿4L«ÿ¸ÿsöbp~ýSZê¯ÀTÿÙæÿÚýúwý¿TtL Ƥù¿jÿkéÿ%àÿIÿ.ùÏ»ç?çi ÿ96&ý»ÌÿU»ù?ò$T(?4&ý»Ìÿ
-úo9ÿOþߨôïÿ<¾ÿ'ò44 ¡±ÿ{ÌÿUãüOÅü§dúë½?á&r¡ô?Ûü_s ÿó%ÔÅ5'@Æ ÿÂÕÿQãÿP`ª¿KþóOÿ
ýòccÒ¿§ÿýKÀÿþçò¼ÿ¥.¡ úMÏ- .&ý;ú?Ö$ðüIÿþü_ðÄÆ¤üçþüßÈmýßÑÿþ%<Õü·ôïÿüÓÿÿ[ýlúO®þÿSýgótÌÿ¾e®j, a1éßÓÿÁþöbcÒ¿gþïÈÿIÿùôÿÈÿIÿþüXÿIÿùäJ(þ
-mýßÑÿAþ§pþGLLúÍÿ±ÿßàÿ1îÿ¡Þ°ô_ºú?8ÿG©þùôÈÿIÿþô/ÿGlLúÍÿqøüOè_ÂÇoõ÷ÅpÛæNþ=ó?8ÿQÏÿØôïéÿÀÿ%ÿGlLú÷ÌÿÀÿ-üØØÖÿýè_ÂS
-ÈÿIÿùø¿%ÐÿÇ&OÿgùòAáyþ¢Ýþþ¹õ߬V_WË9BVýíß«ªzȦþþL®ÿæóú®¿½y¼ÿ´ýÖ'¿¬þ¬Ó0ÿaZÿ_Òÿÿ&LÖÿ/ïÏC¿øÒ/ïnîo}ÆÛýµ§ÿ6±ÿ¯õ¿ØLÖÿbµ>¥ùçäë?uÌj ÿ!66ýÓýOêÿ«õ? úÿ²ü³ÜBÿÿ;«ÿÝúÞgHÞú_ÙÖõÓê?îÿTÿ}ùê?Ûüßþüwê*ú ©è Iÿÿ}ñàÿIÿùÏó?ÈIÿÿ}ñT(?4&ýsþ÷Åÿ76&ý{æ?ãÿPÒ Æ¶þÏùßÎS
-2ý¿åÞp¹PLúmþ¯9ÿÃÿ+¡.®9"0ý=8(<ÛÿQáÿP`ª¿gþ3ýòccÒ¿§ÿýKÀÿþçò¼ÿ¥.¡ úMÏ- .&ý{ú?XÿÀó?6&ý;ú?Zü_ðÄÆ¤Çüçÿ·ò_bc[ÿ÷óè_ÂS
-ÈIÿùÏø¿%ÐÿÇÆ ÿÄùß©þ³ù?:æß²MW5°ôÏùßû?±1éß1ÿ#ñþ'üØôÏùßùß±1éó¿/ÖccÒ¿gþùJ¦Cc[ÿçüïKç©ÿþgóìçÿ7ø¿Eû¨7,ý®þÎÿ`ª¿gþýò?bcÒ¿§ÿýKÀÿþgó>ÿúðñÛãfý}1ܶ¹Ä¤Oÿç?Jàùþ=ó?ðIÀÿþó?8ÿIù±±ÿ;ú
?п§ÿþ=ó?ðK ÿMþ«ú\ËÇ
íÿ(Úþ¶Àÿ!!·þÕÃêëjù#çBÈ«ÿöÏ«ªnÈ0¹þÏë»þöæñþÓö[[üf²úÿ±þMCþ¿iýÿ¿ÿPÒÿ_4õÿËûóÐ/¾ôË»ûÛcñvÿ_íé¿Mù/ ´ÿ±¬ÿÅj}JóÏÉ×ê:ò$ðäMÿçtÿúÿªÄÿ'azÿ?Ìþ:»È
«ÿÝúÞgHÞú_ÙÖ-ë?
-¦ÕÜÿ©\æÿÆú§"uÔ_©þ³Íÿµûõ'ÿQD*:& cÒ¿Çüߨÿ®%ÿAþÿØôïÿüôüçý_ùϱ1éßcþoÔ]àÿÓP¡üÐôï1ÿ7ê¿íÈÕÿ76&ý{ä?ïÞÿSÇü¿ 4¶õù¿QÿMWáÿðbK?ÿöÿ/þgÿkôOþº¸æÀô_¸ú?ÿ`ª¿GþóÏýú?
-ä?ÇÆ¤Oÿúÿ#6&ýÏåÿ8xÿK]Bÿ>ô[@\Lúwôpþ·ÿ±1éßÓÿÿKþØôïÿüäÿÀÿ-üçØØÖÿýè_Â/'ÇÄð\6&ý{ä??ù?ðK ÿAÿÉÓÿQø?ê?ÿ£cþ÷(ÛtUc Iÿþö$°ÿþ=ó?xÿ@þGlLú÷Ìÿ ÿP~hLú÷ôàÿÀúolLú÷Ìÿ ÿSBÉôohlëÿþò$ü»#÷Îÿø0é6ÿÇ~þÿ[ĸÿzÃbÐéÿÁù?Lõ÷Ìÿ ÿ@þGlLú÷ô ø?bcÒÿlþÃçBÿ>~{ܬ¿/Û6wôïéÿàüG <ÿccÒ¿§ÿÿü±1éß3ÿÿ·ò?bc[ÿwô /,~ÀÿqÙôïÿÿ[ýl²ôßmùxÁ ð³ýeÚê¿h··ürë¿Y=¬¾®?r.¬úÛ¿WUuKþÉõß|^ßõ·7÷¶ßÚòä7×ÿõoòÿ5Lhû¯^ùMÄ
2Yÿ¿¼?ýâK¿¼»¹¿=öyýÿ ÿ6%ò_$l f²þ«õ)Í?çmýW{úO]þ%4È?46ýÓýOêÿ«ÿ)ýÿÕW[èÿrõ¿[ÿÏûáÉ[ÿ+Ûù/ Óê?îÿT.ócýS1¼ÿQLõmþ¯Ý¯ðÿJHEÇ``Lú÷ÿõßµ-ùOXþIÿùÏOÏüÿÈIÿó£þë¢%ÿIB
òCcÒ¿Çüߨÿ¶cþGþߨôïÿ¼{ÿOûJÐØÖÿæÿFý7]
ÿWÂS
-òöÿ~ÅMäB1é¶ù¿æ@ÿÿ¨¡.®9"0ý®þÿSý=òîÿÐÿi ÿ96&ý{ú?пü±1é.ÿÇÁû_êÿÖð¡ßôÜâbÒ¿£ÿ£aýGÏÿØôïéÿÀÿ%ÿGlLú÷È~òàÿ@þsllëÿþô/áÀ
ÉAþ[(Lú÷È~òàÿ@ÿþ§ÿ£&ÿW©þ³ù?:æß²MW5°ôïéÿ`ÿGû?±1éß3ÿ÷? äÄÆ¤Ïüú 寤OÿþO ¬ÿÆÆ¤Ïüò?%Lÿƶþïèÿ ÿGÂó?BaÒÿlþýüÿÿ·qÿõÅ ÿ³ÿÁù?Lõ÷Ìÿ ÿ@þGlLú÷ô ø?bcÒÿlþÃçBÿ>~{ܬ¿/Û6wôïéÿàüG <ÿccÒ¿§ÿÿü±1éß3ÿÿ·ò?bc[ÿwô O5 ÿ#&&ý{æàÿ@ÿ,ý§ö\ËÇ
íÿ(ºþvûürë¿Y=¬¾®?r.¼úoÿ¼ªêü ë¿ù¼¾ëooï?m¿µåÉo&«ÿëß4äÿkÐÿÿú¡¤ÿ¿x&ëÿ÷ç¡_|éw7÷·Ç>ãíþ¿ÚÓó_hÿc3YÿÕúæ¯ÿÔuä?I ÿ!66ýÓýOêÿ«ÿéý¹åÏméèÿ/\ýïÖÿó>c¸@ÎÿÚþ¾*Ûë?¦ÕÜÿ©|æÿ
-Îÿbªÿlóí~ý»÷ ©è Iÿóãþ_×âÿÕÿ?6&ý»ä?ïÿù ä?ÇÆ¤ù¿ñù_Ìÿk¨P~hLú÷ÿõß²ÿ'ÿolLúwÉ.ÿRÒ Æ¶þï0ÿ7>ÿÞÿE¼ØÒÏü¡,ñÿ^:&ýÏ6ÿ×è翺¸æÀô_¸ø?Fý§¢.ñ(0Õß#ÿyWú?ä?ÇÆ¤Oÿúÿ#6&ýÏåÿ8xÿK]þ%|è7=·¸ôïéÿ`ýGÏÿØôïéÿÀÿ%ÿGlLú÷ÈÞ½ÿsþ·òcc[ÿ÷ó0ÿ©á©ä¿ÅĤüçúoñK ÿAÿÉ5ÿó¿%ê?ÿ£cþ÷(ÛtUc Iÿ.çÿ-ýØôïÿQ¢äÄÆ¤ó¿ÎÿBþwlLúw9ÿ»àüo!¬ÿÆÆ¤ÏüÎÿP2ýÛú¿ÇùßçyªçÄĤÿÙüûùÿø?Tû¨7,ý®ùþ¦ú{æ°ÿ#üØôïÿþ%àÿIÿ³ù?ÿ5úðñÛãfý}1ܶ¹Ä¤Ïüö$ðüIÿùÌÿJÀÿþ=ó?Øÿ@þGllëÿùè_ÂKGæä\>&ý;æÿþ?6Yúos-/~~þGµÕÑ
-þ¹õ߬V_WË9BVý·
/ªªò©¿?ë¿ù¼¾ëooï?m¿µåÉo&¯ÿêß4þ_Âþ¿:üMÄ
2Yÿ¿¼?ýâK¿¼»¹¿=öo÷ÿÕþÛÄþ¿kÉú_¬Ö§4ÿ|ý×á¼þÇÆ¦ÿsºÿIýU±þ'aBÿ_UV[èÿrõ¿[ÿÏûáÉ[ÿ+Ûí_cýGÀ´úû?OþsÅùßBLõmþ¯Ý¯èÿ%¤¢c00&ý»ä?Wÿ-ÿlLúwÉþùügþGùϱ1éß%ÿ¹âüo!ÊIÿ.ùÏçÁÿþ]ò+æÿ4 ¡±ÿ{ä?Wÿ-ä©yûÿ¿â&r¡ô?Ûü_s òÿ4ÔÅ5'@Æ ÿÂÓÿ1ÌÿàÿðÇTüçû?ôÈIÿþýKÀÿþçò¼ÿ¥.¡ úMÏ- .&ý{ú?XÿÀó?6&ý{ú?ðIÀÿþ=òüø¿%ÿÛú¿£ÿýK8prÿ
-þ=òê¿Åÿ-þ?6ý'×üÎÿ`ªÿlþùßw¢lÓU$,&ý{æ°ÿ#ýØôïÿÁûò?bcÒ¿§ÿþ_BBù¡1éßÓÿÿS뿱1éß/ÿ£.ÈÿP2ýÛú¿£ÿü NÎÿ
Iÿ³ù?öóÿüß"Æý?ÔþKWÿçÿH0Õß3ÿþOù±1éß3ÿýKÀÿþgó>ÿúðñÛãfý}1ܶ¹Ä¤Oÿç?Jàùþ=ýø¿$àÿIÿùø¿%ÿÛú¿£ÿýKxªù11éß3ÿÿ·úÿØdéÿª9×òñAáçû?¶^mYâÿP[ÿÍêaõuµüs!dÕ¿Øþ½ªªü'êïÏäúo>¯ïúÛÇûOÛomyòÉêÿÇú7MMþÌþ¿:ò+e²þyúÅ~yws{ì3²úÿQÿmªYÿP2 Éú_¬Ö§4ÿ·õ_íé¿,Áè_ òMÿçtÿúÿªÂÿ#!«ÿ¯ªÝà'ýÿoC®þwëÿy1\ yëeÛÔ¬ÿ(Vÿqÿ§òÿ«wó¬ÿI0Õ¶ù¿v¿þÿ)"1éßeþ¯Þå?óþ/ÿlLúwÉÞ=ÿkòß$ÿþ]æÿêÝüó¿*þ]æÿÆþûпü¿±1éß%ÿ¹Þå?ÿ(¡¤mýßcþ¯çûÿvòßðÿV¯ÿÈ
bÒÿlóÍþÿ×P× þWÿGÂÿ¡ÀTüçþú? ä?ÇÆ¤Oÿúÿ#6&ýÏåÿ8xÿK]þ%|è7=·¸ôïéÿ`ýGÏÿØôïæÿh»ÿü±1éß%ÿ¹æüo!ä?ÇÆ¶þïèÿ@ÿä¿
¤üçþüßèÿccÐrõ´ø?ê?ÿ£cþ÷(ÛtUc Iÿþö$°ÿþ=ó?xÿ@þGlLúwôtôÿÈÿIÿùø?%°þþ=ó?ÈÿP2ýÛú¿£ÿü NÎÿ
Iÿ³ù?öóÿüß"Æý?ÔþKWÿçÿH0Õß3ÿþOù±1éßÓÿþ%àÿIÿ³ù?ÿ5úðñÛãfý}1ܶ¹Ä¤ÏüÎÀó?6&ý{ú?ðIÀÿþ=ó?ðK ÿ#6¶õGÿúpàä ÿ#&ý{æàÿ@ÿ,ý§ës-/~¾
ÿcûûªhürë¿Y=¬¾®?r.¬úÃý¿ª[Îÿ0¹þÏë»þöæñþÓö[[üf²úÿ±þMðJÈìÿ_üpEÿñLÖÿ/ïÏC¿øÒ/ïnîo}ÆÛýµ§ÿ6ÿ ¡C¹¡¬ÿÅj}JóÏÉ×Íü·òbcÓÿ9Ýÿ¤þ¿ªØÿ0½ÿ¿ÚòçÕýÿE«ÿÝúÞgHÞú_ÙÖë?
-¦ÕÜÿ©|æÿÝü_Aýê?Ûü_»_öÿE¤¢c00&ý»Ìÿãü_Ëú¿üÿ±1éß%ÿ¹`þ_ùϱ1éßeþ¯ØÍÿ±þ/¡Bù¡1éßeþ¯ØÿMþ«ü¿±1éß%ÿy|ÿOóÿJÐØÖÿ=æÿqþ§âü7 /¶ô3¸ºÂÿ{éô?Ûü_s ÎÒP× þOÿGâüo ¦ú»ä?ïöèÿ4ÿþ=ýè_þØô?ÿãàý/u ýKøÐoznq1éßÓÿÁúÿ±1éßÓÿÿKþØôïÿüÓÿÿ[ùϱ±ÿ;ú?п§ÿþ]òwúoñK ÿAÿÉ5ÿ£Äÿ¡ÀTÿÙüó¿ïDÙ¦«HXLúwôàÿÕÀþOlLú÷ÌÿàýOù±1éßÓÿAÿ/üïØôïéÿÀÿ)õߨôïÿAþ§éßÐØÖÿýäÿHxªçÄĤÿÙüûùÿÿbÜÿC½a1è¿tÍÿàü ¦ú{æÐÿI ÿ#6&ý{æ ø?bcÒÿlþÃçBÿ>~{ܬ¿/Û6wôïéÿàüG <ÿccÒ¿§ÿÿü±1éß3ÿÿ·ò?bc[ÿwô /,?ÿqùôïÿÿ[ýl²ôß¶çZ>^0(ü|ÿGµÕÑÿ"!·þÕÃêëjù#çBȪ±ý{UUùOÔßÉõß|^ßõ·7÷¶ßÚòä7Õÿõoü SúÿúðW4Êdýÿòþ<ô/ýòîæþöØgdõÿ£þÛT³þ/¡Dº¡¬ÿÅj}JóÏy[ÿÕþëáþðúþÏéþ'õÿU
ÿGÂþ¿®ÿ¬·Ðÿÿäê·þ÷÷þW¶
-ù¿¦ÕÜÿ©|æÿª]þsEýê?Ûü_»_òE¤¢c00&ý»ÌÿU»ügú øÿccÒ¿KþsÅùßBÈIÿ.óÕnþÿ¯
-寤ù¿j7ÿÇü¿ü¿±1éß%ÿy|ÿ¯üJÐØÖÿ=æÿªÝüùïj·ÿð+n"Iÿ³Íÿ5ú'ÿYC]\sD`ú/\ýþ¦ú»ä?ïöèÿ4ÿþý-úÿ#6&ýÏåÿ8xÿK]Bÿ>ô[@\Lú÷ô°þ#çlLú÷ôàÿÿ#6&ý»ä?W»ügüßÈmýßÑÿþ%89È
Iÿ.ùÏ;ýsþ£úÿØô\ý ÿSýgótÌÿ¾e®j, a1éß3ÿý ìÿÄÆ¤ÏüÞÿ$ÿþ=ýôÿÊIÿþüXÿIÿùäJ(þ
-mýßÏÿÈÿpàäàüPô?ÿc?ÿ¿Áÿ-bÜÿC½a1è¿tõpþSýó?èÿ4ÿþ=ýè_þØô?ÿãðù_£ ¿=nÖßÃm;A at Lú÷ôpþ£ÿ±1éßÓÿÿKþØôïÿÿ[ù±±ÿ;æ O5 ÿ#&&ý{æàÿ@ÿ<ý_kùxÁ ð<ÿGÑÿ"!·þÕÃêëjù#çBȪ±ý{UUùOÔßÉõß|^ßõ·7÷¶ßÚòä7Õÿõoü úÿò_ÑD\(õÿËûóÐ/¾ôË»ûÛcñvÿ_íé¿M5þo ¬ÿÅf²þ«õ)Í?'_ÿã?пýƦÿsºÿIýUáÿ0¥ÿ/ÿ,·Ðÿÿäê·þ÷÷þW¶
-ù¿¦ÕÜÿ©\çÿjê¯ÀTÿÙæÿöç¿ÉV ÀÀôï9ÿGÿ/ÿlLú÷ÌÆÿ#üçØôï9ÿÿWB
òCcÒ¿Ûü_7, ¡øccÒ¿gþ3þ? %
- at hlëÿùÏä¿KxªAÞþÿÁ¯¸\(&ýÏ6ÿ×ÿüNÔÅ5'@Æ ÿÂÕÿQáÿP`ª¿gþ3ýòccÒ¿§ÿýKÀÿþçò¼ÿ¥®Fÿ>ô[@\Lú÷ô°þ#çlLú÷ÌÆÿ%ÿGlLú÷ÌÆÿ-üØØÖÿóÑ¿'ùo¡0éß1ÿó5ÐÿÇÆ ÿäãÿH;ÿù¿LõÍÿÑí×ó?Emºª±Å¤Oÿû?ØÿIÿ.ù ÿò?bcÒ¿§ÿõ_ 寤ÏüÿXÿIÿ.ùiÿÁû¿éßÐØÖÿ=üiÿAþ¯
'ç¤ÿÙüûùÿ
-þoãþê
-Aÿ¥kþçÿH0Õß3ÿüG äÄÆ¤Oÿúÿ#6&ýÏæÿ8|þ×è_ÂÇoõ÷ÅpÛæNþ=ýÿ(çlLú÷ÌÿÀÿ%ÿGlLú÷Ëÿ¨9ÿIù±±ÿ;ÿþ%<Õüôïÿÿ[ýl²ô¶ãã%ÂÏöíVÿESÿ!!³þÕÃêëjù#ëBÈ«ÿöÏ«*
-ùOÔß©õß|^ßõ·7÷¶_ÚòôÕÿõoêù úÿW~àÙKeªþYúÅ~yws{ô3Þîÿ«=ý·Uÿ[oÿÅj}RóÏÉ×ÿ¶ýcÿOúIÿguÿúÿ²Âÿ#ÁÜÿW#ÜE.Lýïÿ3?c¸RòÖÿʦ-YÿQ0©þãöOuöe_ÿªk8ÿ[¥þgÿåÍõOmMþTtL Æ¢ÿ3Çÿ2ßÿÛqþü7
-øÿccÑÿãyùÏOÏÞÿ%ÿþÏÿðüOç?h`å.6ý9þçÿõßvûÿðÿÆÆ¢ÿ3Çÿ&è¿K%ó?JÐÖÿÏÿËÜÿôß´ ÿ×¶ô³`ÿÿb±èÿÌñ¿3ÿ;þ»ü/ uqÍ ®ÿÂ×ÿÁüKýçóÔû?ôÈEÿþü7
-ø?bcÑÿlþ÷¿ÔÖè_Â~ÓsEÿ®þÖ$ðüEÿ®þü_ðÄÆ¢ÿùüïÿ©Àÿ-üçØÖÿ=ýè_Âü·`Xô?ÿc¿ÿoZÎÿÖ@ÿéúO¾þÎÿ`©ÿ|þùßw¢lÓU$,ý»æ°ÿ#ýØXôïÿÁûò?bcÑ¿«ÿþ_BBù¡±èßÕÿÿS뿱±èß5ÿüO %Ó¿¡1ÿ;ú?jò$ì;98ÿ#ýÏçÿØÏÿoð÷ÿPoX¦ëÿüÃÀ
gû?8ÿG¥þùôÈÿEÿ®þô/ÿGl,úÏÿqøüoпß7ëïá¾Í ý»ú?8ÿQÏÿØXôïêÿÀÿ%ÿGl,úwÍÿÀÿ-üØÖÿ=ó?п×,ù?àÿ¸T,úwÍÿÀÿ-þ?6Yú¯Ú³=Ï~¾ÿ£Ûê¿hþÿ?¹õ߬V_WË9B^ýëÁÿS7õW0¹þÏë»þöæñþÓö[[üfòúÿ¡þMXÿ`íÿëÝ4Êdýÿ2ÿ<ô/
ýòîæþöØg¼ÝÿW{úoùÿÍdý/VëSN¾þSGþ§Ü±±éÿîRÿ_ÌIÞÿ×[þ¬éÿ/\ýï6 ò>c¸@òÖÿÊù/
-Óê?n Uç^ùõOE]Q¦ú9 øvÿßî׿cýOC*:& cÒÿyïÿÝ8ÿ×ÿ$ÿlLú?s ðMýý_Çú¿òccÒÿùÏÿzû÷Ñ¿»±1éÿÌÀ·õöôß²ÿ'ÿolLú?s 0_ÿ]Mþ 4¶õÿó ßÒyðþßtó?^léçÿÀþÿ
cÒÿo?ÿýwÿ(¡.®± Æ ÿÂÕÿQàÿP`ªÿlþú`ÿþOùϱ1éßÑÿÑ¢ ø?bcÒÿ\þ÷¿Ô%ô/áC¿é¹ÄŤOÿë?xþÇÆ¤Oÿþ/ ø?bcÒÿlþ÷ÿÔáÿ@þsllëÿþô/ácâø?.þgóì÷ÿM×âÿ@ÿþ«ÿ#áÿP`ªÿlþùßw¢lÓU$,&ý{æ°ÿ#ýØôïÿÁûò?bcÒ¿§ÿþ_BBù¡1éßÓÿÿS뿱1éß3ÿüO %Ó¿¡±ÿûù?ù?þÝÉûçüô?ÿc?ÿ¿Áÿ-bÜÿC½a1è¿tõpþSýó?èÿ4ÿþ=ýè_þØô?ÿãðù_£ ¿=nÖßÃm;A at Lú÷ôpþ£ÿ±1éßÓÿÿKþØôïÿÿ[ù±±ÿ;æ /,~ÀÿqÙôïÿÿ[ýl²ôÕkùxÁ ð³ýåöÏ«¢-Éÿ[ÿÍêaõuµüs!dÕ¿Øþ½ªªû?õ÷grý7×wýíÍãý§í·¶<ùÍäõÿCý¦fý_BfÛuäW4Êdýÿòþ<ô/ýòîæþöØgäõÿþÛTóþ/¡lnd&ë±ZÒüsÞÖµ§ÿz AÿÈMÿçtÿúÿí úWÕÿ_ÐÿÿFäê·þ÷÷þW¶MËúiõ÷*ù¿±þ©¨Yÿ`ªÿlóí~ýñÿHEÇ``Lú÷ÿõßµøÿ4àÿIÿùÏOÏòß%ÿþ=æÿFý×EGþ£
-寤ù¿]ÿ?üúÿ76&ý{ä?ïô_ÌÿJ(i Bc[ÿwÿõßtý ;ùoø¯^ÿ7ŤÿÙæÿýsþº¸æÀô_¸ú?ü
-Lõ÷Èþ¹ÿCÿ§üçØôïéÿ@ÿðÄÆ¤ÿ¹üï©«Ñ¿ý¦çþýä?iàùþ=ýø¿$àÿIÿùÏOþüßÈmýßÑÿþ%89È
IÿùÏOþüßèÿccÐòôlÿþ¦úÏæÿèÿ}'Ê6]ÕX@ÂbÒ¿§ÿý ìÿÄÆ¤ÏüÞÿ$ÿþ=ó?èÿ%ÿþ=ýø?%°þþ=ó?ÈÿP2ýÛú¿£ÿü NÎÿ
Iÿ³ù?öóÿ[üß"Æý?ÔþK×üÎÿ`ª¿gþýò?bcÒ¿§ÿýKÀÿþgó>ÿkô/áã·ÇÍúûb¸ms'IÿþÎÀó?6&ý{ú?ðIÀÿþ=ó?ðK ÿ#6¶õGÿúpàä ÿ#&ý{æàÿ@ÿ,ý§³-/~¶ÿ£è¶ú/Úáýÿ?¹õ߬V_WË9B^ýûU7ú+\ÿÍçõ]{óxÿiû-O~3YýÿXÿ¦©ÈÙÿïÿpEÿÙLÖÿ/ïÏC¿øÒ/ïnîo}ÆÛýµ§ÿ6%üß:Éú_¬Ö§4ÿ|ý§ü
-ìÿÇÆ¦ÿsºÿIýUâÿ0½ÿFAÿ¼º¢ÿ¿hrõ¿[ÿÏûáÉ[ÿ+[ÎÖ0þãþOå2ÿ7Ö?ù? ¦úÏ6ÿ×î׿cýOC*:& cÒ¿Çüߨÿ®mÿÀûlLú÷Èþùügý_ùϱ1éßcþoÔ]´¬ÿI¨P~hLú÷ÿõß²ÿ'ÿolLú÷ÈÞ½ÿ'üÿJÐØÖÿæÿFý7]Åü[úù?°ÿáô?Ûü_s ÿó$ÔÅ5'@Æ ÿÂÕÿQãÿP`ª¿GþóÿþOùϱ1éßÓÿþ%àÿIÿsù?ÞÿùO">ô[@\Lúwô4¬ÿHàùþ=ýø¿$àÿIÿùÏOþüßÈmýßÑÿþ%ürrLûü·Ç¤üç'ÿþo ôÿ±1è?¹ú?:ü
-LõÍÿÑ1ÿûNmºª±Å¤Oÿû?ØÿIÿù¼ÿI ÿ#6&ý{æÐÿKH(?4&ý{ú?ðJ`ý76&ý{æÿ)¡dú74¶õGÿù?~99²àüßþgóìçÿ7ø¿Eû¨7,ý}ø ðlÿçÿH0Õß3ÿþOù±1éßÓÿþ%àÿIÿ³ù?ÿ ýKøøíq³þ¾nÛÜ bÒ¿gþç?Jàùþ=ýø¿$àÿIÿùø¿%ÿÛú¿£ÿýKxaéÈÿüǤÏüüßèÿc¥ÿ«ê\ËÇ
íÿ(·^mÑâÿP[ÿÍêaõuµüs!dÕ¿Øþ½ªªü'êïÏäúo>¯ïúÛÇûOÛomyòÉëÿú7M"ÿABnÛ_¿þ+e²þyúÅ~yws{ì3òúÿAÿmªYÿPÒÿf²þ«õ)Í?çmýW{úßþýKàø÷ØØôN÷?©ÿ¯Jü?²úÿzþÿ7"Wÿ»õÿ¼Ï.¼õ¿²mJÖL«ÿ¸ÿsöbp~ýSQ³þ'ÁTÿÙæÿÚýúsþ§TtL Ƥù¿Qÿ]ÿWþÿØôïÿüôü'ÿMùϱ1éßcþoÔ]0ÿ¯õÿØôï1ÿ7ê¿í:ü?ðÿÆÆ¤üçÝû]ÿ(¡¤mýßaþoÔÓUìÿK8ØÉ?ýCÿ÷÷¤ÿÙæÿý3ÿ¯¡.®9"0ý®þÿSý=òîÿÐÿi ÿ96&ý;ú?Zô/ÿGlLúËÿqðþºþ%|è7=·¸ôïéÿ`ýGÏÿØôïéÿÀÿ%ÿGlLú÷ÈÞ½ÿsþ·òcc[ÿwô NòßBaÒ¿GþóOý·ø¿%ÐÿÇÆ ÿäêÿHø?ê?ÿ£cþ÷(ÛtUc IÿùìÿH`ÿ'6&ý{æðþ'üØôïéÿ ÿP~hLú÷ôàÿÀúolLú÷Ìÿ ÿSBÉôohlëÿ~þDþ'ç¤ÿÙüûùÿ
-þoãþê
-Aÿ¥«ÿó$êïÿAÿ§üØôïéÿ@ÿðÄÆ¤ÿÙüÏÿýKøøíq³þ¾nÛÜ bÒ¿§ÿó%ðüIÿþü_ðÄÆ¤ÏüüßÈÿmýß1ÿýK8prÿ
-þ=ó?ðK ÿMþÏ>òåÂóüE[Ôø?äÖ³zX}]-ä\Yõ/¶¯ªêó$L®ÿæóú®¿½y¼ÿ´ýÖ'¿¬þ¬Ó$ürûÿþÿ·b²þyúÅ~yws{ì3²úÿQÿmâü
-ÿÉú_¬Ö§4ÿ·õ_íé?1ÿ-ùÇÆ¦ÿsºÿIýU²ÿ/!«ÿ/Gèÿ#rõ¿[ÿÏûáÉ[ÿ+ÛºcýGÁ´úû?ç_>¦úÏ6ÿ·?ÿºDþTtL ƤÎÿ¾xðÿÇÆ¤Ïügæ$ÿþ9ÿûâaý?6&ýsþ÷Åÿ76&ýûå?3ÿ'ÿOllëÿÿ}éìäþ¡Äÿû{aÒÿlóÍaþ3ù_êâ cÐÿÙÃÂsýÃùø?ü1Õß1ÿþOùϱ1éßÓÿþ%àÿIÿsù?ÞÿRпý¦çþ=ý¬ÿHàùþ=ýø¿$àÿIÿùÏø¿%ÿÛú¿£ÿýK8prÿ
-þ=óñK ÿAÿó¿/SýgótÌÿ¾e®j, a1éó¿/öbcÒ¿gþïÈÿIÿÿ}ñ$þ9ÿûâaý76&ý{æÿ)¡dú74¶õÎÿ¾tÿ
-þgóìçÿ7ø¿Eû¨7,ý®ùÿ#ÁTÏüú? äÄÆ¤Ïüô/ÿGlLúÍÿqøüOè_ÂÇoõ÷ÅpÛæNþ=ýÿ(çlLú÷ôàÿÿ#6&ý{æàÿ@þGllëÿþô/áÀÉAþG(Lú÷ÌÿÀÿ-þ?6yú?ÛòñAáyþ¢-ü
-rë¿Y=¬¾®?r.¬úo_TUÝÿ"arý7×wýíÍãý§í·¶<ùÍdõÿcýü
-¹ýEÿÿ[1Yÿ¿¼?ýâK¿¼»¹¿=öYýÿ¨ÿ6Õä¿H( Ídý/VëSÎÛú¯öô_-!úÀñï±±éÿîRÿ_øÿ$dõÿÕýÿoD®þwëÿy1\ yëe»ýk¬ÿVÿqÿ§"ÿùò1Õ¶ù¿ýùïÔ%æ¿%¤¢c00&ýÿ|ñàÿIÿä?_<ä?ÇÆ¤ò/ÖÿccÒ?ùÏþߨôOþóÅSÒ Æ¶þOþó¥s°ú
-ÿïï
Iÿ³Íÿ5ùÏäÿH¨kNAÿùÏ©þä?_<ä?ÇÆ¤ò/ü±1é.ÿÇÁûùÏ*>ô[@\Lú'ÿùâáùþɾxðÄÆ¤ò/òcc[ÿ'ÿùÒ9prÿ
-þɾxèÿccÐrÍÿ¨ð(0Õ6ÿGÇüï;Q¶éªÆþ=ó?ØÿÀþOlLú÷ÌÿàýOù±1éßÓÿAÿ/øÿØôïéÿÀÿ)õߨôïÿQsþéßÐØÖÿýäÿH8prpþG(LúÍÿ±ÿßàÿ1îÿ¡Þ°ôöaà³ýÿ#ÁTÏüú? äÄÆ¤Ïüô/ÿGlLúÍÿqøüOè_ÂÇoõ÷ÅpÛæNþ=ýÿ(çlLú÷ôàÿÿ#6&ý{æàÿ@þGllëÿþô/áÀÉAþG(Lú÷ÌÿÀÿ-þ?6Yú¯ÏüxÁ ðóýÛßWEÓqþÜúoV«¯«å!«þÅöïUUÝP ë¿ù¼¾ëooï?m¿µåÉo&«ÿëß4 ÿ§ÜþÿÙWôÿÏdýÿòþ<ô/ýòîæþöØg¼ÝÿW{úoù:Éú_¬Ö§4ÿ|ý'æ¿EðúþÏéþ'õÿUÉþ¿éýÿÕ?¯®èÿ/\ýïÖÿó>c¸@òÖÿÊü_
-Óê?îÿT>óÅîüïDýê?Ûü_»_Îÿ ÀÀôï2ÿWìæÿðÿKÀÿþ]ò>ÿYÿ@þslLúwÿ+Æù¿ý? ÊIÿ.óÅ8ÿGþü¿±1éß%ÿ¹ØÍÿqþ 4¶õù¿b7ÿGþ»[úY?\áÿý
-0é¶ù¿æ@ÿ-þ uqÍ 1è¿põø?êïÿüsÿþOùϱ1éßÓÿþ%àÿIÿsù?ÞÿRпý¦çþ=ý¬ÿHàùþ=ýø¿$àÿIÿ.ùÏ;ÿùÈmýßÏÿQ¢ O5 ÿ-&&ý»ä?ïôßàÿ@ÿþÏíÿ¨ñ(0Õ6ÿGÇüï;Q¶éªÆþ=ýìÿH`ÿ'6&ý{æðþ'üØôïéÿ ÿP~hLúwôtø?%°þþ=ó?ÈÿP2ýÛú¿cþù?jÀù11é6ÿÇ~þÿ[ĸÿzÃbÐéêÿàü ¦ú{æÐÿI ÿ#6&ý{ú?пü±1é6ÿÇáó?¡ ¿=nÖßÃm;A at Lú÷ôpþ£ÿ±1éß3ÿÿü±1éß3ÿÿ·ò?bc[ÿwÌÿ@ÿ^X:ò~ ÿã7À¤Çüò¿5ÐÿÇ&Kÿmw®åãÂÏ÷T[
ýmÑáÿP[ÿÍêaõuµüs!dÕ¿Øþ½ªªÿõ÷grý7×wýíÍãý§í·¶<ùÍdõÿcý¦fÿOÂþÿêðW4Êdýÿòþ<ô/ýòîæþöØgdõÿ£þÛT³ÿ'¡d04õ¿XOiþ9oë¿ÚÓ=XÑ¿ ^ÿccÓÿ9Ýÿ¤þ¿ªÿ0¡ÿÇ>wôÿN®þwëÿy1\ yëeÛ0ÿ%aZýÇýÊgþ¯çÿêDýê?Ûü_»_ÿ.ÑÿKHEÇ``Lúwÿ«Æù?ò4°üþ]ò>ÿñÿK ÿ96&ý»ÌÿUãú?ùO*þ]æÿª]þ3þ øccÒ¿Kþóøþ¿ý'úWPÒ Æ¶þï1ÿWó?ù O5ÈÛÿ?ø7ŤÿÙæÿýwÿ(¡.®9"0ý®þÿSý]òîÿÐÿI ÿ96&ý{ú?пü±1é.ÿÇÁû_êjô/áC¿é¹ÄŤOÿë?xþÇÆ¤Oÿþ/ ø?bcÒ¿Kþsµ;ÿÿ·òcc[ÿ÷óTè_Âü·Pôïÿ¼Ó?ç?h ÿAÿÉÕÿQãÿP`ªÿlþùßw¢lÓU$,&ý{ú?ØÿÀþOlLú÷ÌÿàýOù±1éßÓÿAÿ/!¡üÐôïæÿè%!ô/õߨôïÿAþ§éßÐØÖÿó?ÈÿpàäàüPô?ÿc?ÿ¿Áÿ-bÜÿC½a1è¿tõpþSý=ó?èÿ$ÿþ=ýè_þØô?ÿãðù_£ ¿=nÖßÃm;A at Lú÷ôpþ£ÿ±1éß3ÿÿü±1éß3ÿÿ·ò?bc[ÿwÌÿ@ÿj@þGLLúwÌÿ ÿ[ýl²ô_ëøxÉ ðóýåVÿES6ø?dÖ³zX}]-d]Yõ/¶¯6¨¿©õß|^ßõ·7÷¶_ÚòôÕÿõoêç¿)ýÿÁ%ýÿ¥2Uÿ¿¬?ýâK¿¼»¹¿=úo÷ÿÕþÛªaþKû±ªÿÅj}RóÏÉ×êJò$ ÿØôV÷?©ÿ/ñÿk0÷ÿåw%Sÿ»åÿÌÏ®¼õ¿²iÖLªÿ¸ýS}ä׿êÎÿ`©ÿãóßCýS[óþ/!±èÿÌñ¿Lÿ_9Îÿÿ¦Î=6ý9þÿüóùÏüòccÑÿãÿ©ãü
-ÊEÿgÿeúËq
þ¯ ÿMþߨXôæøßýw©`þGBIÓúÿyãóþó5¼¶¥ýûÿEÿgÿñüoöõßø$ÔÅ5'@fºþWÿGÝáÿP`©ÿ|þú`ÿþOùϱ±èßÑÿÑÿ¦7·ØXô?ÿãàý/µ5úð¡ßôÜâbÑ¿«ÿõ <ÿccÑ¿«ÿÿü±±è>ÿÇÁû*ðK ÿ96¦õOÿú°çä ÿ-ýÏçÿØïÿó¿5ÐÿÇfºþoþçK°Ô>ÿGÇüï;Q¶éªÆþ]ó?ØÿÀþOl,úwÍÿàýOù±±èßÕÿAÿ/!¡üÐXôïêÿÀÿ)õߨXôïÿQÿ)¡dú74¦õOÿù?öÿþçóìçÿ7ø¿Eû¨7,Óõ_úú?8ÿG¥þ®ùôÈÿEÿ®ùè_on±±è>ÿÇáó¿Fÿ>~{ܬ¿/û6wXôïêÿàüG <ÿccÑ¿«ÿÿü±±èß5ÿÿ·ò?bcZÿ÷ô ¯Y:² ÿãb±èß5ÿÿ·úÿØdé¿kÎö|<gPøùþ´ÕÑÿ"!·þÕÃêëjù#çBȪÿöů¨ªº©¿Éõß|^ßõ·7÷¶ßÚòä7Õÿõoù ùÝþÕk¿¢¸P&ëÿùç¡_|éw7÷·Ç>#«ÿõߦÿ·²Aº¬ÿÅj}JóÏy[ÿÕþëù
-<¹ccÓÿ9Ýÿ¤þ¿ªÈÕÿ_ÐÿÿFäê·÷÷þW¶äÿjVÿq¨:÷2ȯ*÷?êï©þg ¾Ýÿ·ûõï8ÿCC*:& cÒÿYïÿ£þ»ÿ¿üÿ±1éÿÌÀ7õ_ô]Âÿ#üçØôæ `þó¿.Zü¿*þÏ |[ÿiOÿmGþü¿±1éÿÌÀ|ýw5ç?i(i Bc[ÿ?o ð-ýïÿMðÿJ8ØÉëöÿ+Lú?s ðíçs ÿÿº¸æÀô_¸ú?Jü
-LõÍÿQîÿÐÿI ÿ96&ý{ú?пü±1é.ÿÇÁû_êÿÖð¡ßôÜâbÒ¿§ÿõ <ÿccÒ¿§ÿÿü±1é6ÿÇÁû"ÿQùϱ±ÿûù?*ô/áÀÉAþ[(LúÍÿ±ßÿ7]ÿ[ýlúO®þò%ê?ÿ£cþ÷(ÛtUc Iÿþö$°ÿþ=ó?xÿ@þGlLú÷ôÐÿKH(?4&ý»ù?ºaIý`ý76&ý{æÿ)¡dú74¶õÇüò$898ÿ#&ýÏæÿØÏÿoð÷ÿPoXú/]ýÿ#ÁTÏüú? äÄÆ¤Oÿúÿ#6&ýÏæÿ8|þ×è_ÂÇoõ÷ÅpÛæNþ=ýÿ(çlLú÷ÌÿÀÿ%ÿGlLú÷ÌÿÀÿ-üØØÖÿó?п'ù¡0éß1ÿüo
-ôÿ±ÉÒYkùxÁ ð³ýÅöïUE3ôÿø?üÉÿfõ°úºZþȹòê¿ýóªªü?&×óy}×ßÞ<ÞÚ~kËßLVÿ?Ö¿iÈÿÓßÿüPÒÿ_.õÿËûóÐ/¾ôË»ûÛcñvÿ_íé¿Mÿ¥ý¿ØLÖÿbµ>¥ùçäë?uøÿ4ÿþÏéþ'õÿUÁú¿sÿ_p¹Prõ¿[ÿÏûáJÉ[ÿ+[æ¿4L«ÿ¸ÿsöbp~ýSõW`ªÿlóí~ý»
-ÿ¯TtL Ƥù¿Qÿ]Ûÿ$Î=6&ý{ä??=ÿÙÿ@þslLú÷ÿõ_
-ùO*þ=æÿFý·ÿ'ÿolLú÷ÈÞ½ÿ'öÿ54 ¡±ÿ;Ìÿúoº
-ÿ×¶ô3Øÿï¥bÒÿlóÍþ[ÎP× þWÿGÿC©þùÏOû?ôÈIÿþô/ÿGlLúËÿqðþ:æ?5|è7=·¸ôïéÿ`ýGÏÿØôïéÿÀÿ%ÿGlLú÷ÈþéÿhñK ÿ96¶õ?ÿGþ%¼prLûü·Æ¤üçúoðK ÿAÿÉÕÿQãÿP`ªÿlþùßw¢lÓU$,&ý{ú?ØÿÀþOlLú÷ÌÿàýOù±1éßÓÿAÿ/üïØôïèÿàü?
-¬ÿÆÆ¤Ïüò?%LÿƶþïÿAþN)?pþÇEcÒÿlþýüÿÿ·qÿõÅ ÿÒÕÿÁù?Lõ÷Ìÿ ÿ@þGlLú÷ô ¼¹ÅƤÿÙüÏÿþ%|üö¸Y_·mî1éßÓÿÁùxþÇÆ¤Ïüü_ðÄÆ¤ÏüüßÈÿmýß1ÿýKxÍÒùùIÿùäk ÿMþ¯ÎüxÁ ð³ýåöÏ«¢-:ü
-rë¿Y=¬¾®?r.¬ú÷ÿªæÿ©¿?ë¿ù¼¾ëooï?m¿µåÉofBÿß$ú ¹ÝþÕë¿¢¸P&ëÿ÷ç¡_|éw7÷·Ç>#¿ÿoSÍü²Aº¬ÿÅj}JóÏy[ÿûÿúÀñï±±éÿîRÿ_qþ§¬þÿjþÿ7"Wÿ»õÿ¼Ï.¼õ¿²mÿ0þãþOå2ÿ7Ö?5ëLõmþ¯Ý¯ðÿJHEÇ``Lú÷ÿõßµä?iÀÿþ=òÿøÿ%ÿþ=æÿFý×ùOXÿIÿó£þÛ®Ãÿ#ÿolLú÷ÈÞ½ÿoÿþ4 ¡±ÿ;ÌÿúoºÄþ¿üÓ?\áÿý½0é¶ù¿æ@ÿç?J¨kNAÿ
«ÿ£Äÿ¡ÀTüç§ýú? ä?ÇÆ¤Oÿúÿ#6&ýÏåÿ8xÿK]þ%|è7=·¸ôïéÿ`ýGÏÿØôïéÿÀÿ%ÿGlLú÷ÈÞ½ÿ§ÿ·òcc[ÿ÷óTè_Âü·PôïÿüSÿÿ þ?6ý=(<ÛÿQãÿP`ªÿlþùßw¢lÓU$,&ý{ú?ØÿÀþOlLú÷ÌÿàýOù±1éßÓÿAÿ/!¡üÐôïæÿè%!ô/õߨôïÿAþ§éßÐØÖÿó?ÈÿpàäàüPô?ÿc?ÿ¿Áÿ-bÜÿC½a1è¿tõpþSý=ó?èÿ$ÿþ=ýè_þØô?ÿãðù_£ ¿=nÖßÃm;A at Lú÷ôpþ£ÿ±1éß3ÿÿü±1éß3ÿÿ·ò?bc[ÿwÌÿ@ÿä¤Çüò¿5ÐÿÇ&Kÿ×gùòAáyþ¢-ü
-rë¿Y=¬¾®?r.¬úo_TUÝrþÉõß|^ßõ·7÷¶ßÚòä7ÕÿõoÿSB^ÿ_ûMÄ
2Yÿ¿¼?ýâK¿¼»¹¿=öYýÿ¨ÿ6qþþ?4õ¿XOiþ9oë¿ÚÓÿðAÿ
-llú?§ûÔÿW%ûÿ²úÿzþÿ7"Wÿ»õÿ¼Ï.¼õ¿²Ýþ5ÖL«ÿ¸ÿSqþ÷åcªÿlóûóß©Kä¿HHEÇ``LúçüïÿlLú÷ÌfþGùϱ1éó¿/
-寤Îÿ¾xðÿÆÆ¤¿ügæÿD4 ¡±ÿsþ÷¥s°zÿÿد¸\(&ýÏ6ÿ×Îÿÿ%¡.®9"0ý=8(<×ÿ1ÿÿÃSýóéÿ4ÿþýÿ©ÿGlLúËÿqðþºþ%|è7=·¸ôïéÿ`ýGÏÿØôïéÿÀÿ%ÿGlLú÷ÌÆÿ-üçØØÖÿýè_Âü·PôïÿÜâÿ@ÿþç_>¦úÏæÿèÿ}'Ê6]ÕX@ÂbÒ?ç_<ìÿÄÆ¤ÏüÞÿ$ÿþ9ÿûâI(?4&ýsþ÷ÅÃúolLú÷Ëÿ¨9ÿCCÉôohlëÿÿ}é898ÿ#&ýÏæÿØÏÿoð÷ÿPoXú/]ýÿ#ÁTÏüú? äÄÆ¤Ïüô/ÿGlLúÍÿqøüOè_ÂÇoõ÷ÅpÛæNþ=ýÿ(çlLú÷ôàÿÿ#6&ý{æàÿ@þGllëÿþô/áÀÉAþG(Lú÷ÌÿÀÿ-þ?6Yú¯ºs-/~¶ÿ£è¶ú/Úó_$äÖ³zX}]-ä\yõîÿUÝâÿ0¹þÏë»þöæñþÓö[[üf²úÿ±þMCþ¼þÿð+úÿf²þyúÅ~yws{ì3Þîÿ«=ý·ó?4t(74õ¿XOiþ9ùúOç¿kàÉþÏéþ'õÿUÉú¿éýÿÕ?¯èÿ/\ýïÖÿó>c¸@òÖÿʶ!ÿW´úû?ËüßXÿTÔú+0Õ¶ù¿v¿þä?HEÇ``Lú÷ÿõßµþ øÿccÒ¿GþóÓóõ ä?ÇÆ¤ù¿QÿuÁù_*þ=æÿFý·ìÿÀÿþ=òwïÿuÁùOJÐØÖÿæÿFý7]"ÿ]Â-ýüØÿ¿pLúmþ¯9Ð?ùÏêâ cÐáêÿ(ñ(0Õß#ÿùiÿþOùϱ1éßÓÿþ%àÿIÿsù?ÞÿRW£ úMÏ- .&ý{ú?XÿÀó?6&ý{ú?ðIÀÿþ=òwïÿ©Ãÿ-üçØØÖÿýüúðËÉ1ñüIÿùÏ?õÏùèÿccÐrõÔø?ê?ÿ£cþ÷(ÛtUc Iÿþö$°ÿþ=ó?xÿ@þGlLú÷ôÐÿKH(?4&ý»ù?ºaIý`ý76&ý{æÿ)¡dú74¶õÇüò$
ü»#÷Îÿø0é6ÿÇ~þÿ[ĸÿzÃbÐéêÿàü ¦ú{æÐÿI ÿ#6&ý{ú?пü±1é6ÿÇáó¿Fÿ>~{ܬ¿/Û6wôïéÿàüG <ÿccÒ¿gþþ/ ø?bcÒ¿gþþo äÄÆ¶þïÿþ%¼°tLøÿÇecÒ¿cþùßèÿc§ÿæ\ËÇ
ïÿh·ú/Úü ¹õ߬V_WË9B^ý·^UuÓRë¿ù¼¾ëooï?m¿µåÉo&¯ÿêß4ù Öþ¿¢ÿ¿h&ëÿ÷ç¡_|éw7÷·Ç>ãíþ¿ÚÓûÉú_¬Ö§4ÿ|ý'æ?DðäMÿçtÿúÿª$ÿMÂôþ¿ÚògEÿÙäê·þ÷Ã7ÿU¶Û¿Æúiõ÷*Îÿ¾|Lõmþoþ;u¬ÿiHEÇ``LúçüïÿlLú÷Ìfý_ùϱ1éßeþ¯ÝÍÿÑÿK¨P~hLúwÿkwó<ÿ%àÿIÿ~ùÏÌÿ(i Bc[ÿçüïKçÅ~þìÿ_8&ýÏ6ÿ×ìõÿÌÿ©¨kNAÿ
ÿ£ýù/ ¦ú»ä?õï*üßÈIÿ.þvô´è_þØô?ÿãàý/u ýKøÐoznq1éßÓÿÁúÿ±1éßÓÿÿKþØôïÿÜîüÌK ÿ96¶õÿÇnÿ·Bÿ~99&þÿã²1éß%ÿy§ÎÒ@ÿþç_>¦úÏæÿèÿ}'Ê6]ÕX@ÂbÒ?ç_<ìÿÄÆ¤ÏüüÈÿIÿÿ}ñ$þ9ÿûâaý76&ýûålÿþLÿƶþÏùßο;9ràüßþgóìçÿ7þO
-ãþê
-Aÿ¥kþGÿC©þù¬ÿH ÿ#6&ý{æ ø?bcÒÿlþÃçBÿ>~{ܬ¿/Û6wôïÿÿSÏÿØôïÿÁú¯ü±1éß3ÿÿ§ò?bc[ÿwÌÿ@ÿ^X:&üÿã²1éß3ÿù/ ôÿ±ÉÒÝkùxÁ ð³ýÛ^`ûPiò?$äÖ³zX}]-ä\Yõ/¶¯ªêúK\ÿÍçõ]{óxÿiû-O~3yýÿPÿ¦aÿOÃôþ¿~þ'4Êdýÿòþ<ô/ýòîæþöØg¼ÝÿW{úoSÍüÆ¿b3YÿÕúæ¯ÿí?ØÿÐ ÿÐØôN
÷?©ÿ¯Jæ?%úÿ-Ö5ýÿE«ÿÝúÞgHÞú_ÙÖ
-ë?
-¦ÕÜÿ©\æÿÆúsþ·
-Sýgÿk÷ëOþTtL Ƥù¿QÿÿÿlLú÷ÈþùüO¬ÿI ÿ96&ý{ÌÿúçüoÊIÿó£þ9ÿ[þߨôïÿ¼{ÿgþODIÛú¿ÃüߨÎÿVñbK?ëaëÿï¥cÒÿlóÍþÉÿÓP×XcÐáêÿ¨ñ(0Õß#ÿùÉÿAÿ'üçØôïéÿ@ÿðÄÆ¤ÿ¹üï©Kè_Â~ÓsIÿþõ <ÿccÒ¿§ÿÿü±1éß#ÿùÉÿÿ[ùϱ±ÿ;ú?п§ÿþ=òüø¿%ÐÿÇÆ ÿäêÿàüo ¦úÏæÿèÿ}'Ê6]ÕX@ÂbÒ¿§ÿý ìÿÄÆ¤ÏüÞÿ$ÿþ=ó?èÿ%$þ=ýø?%°þþ=ó?ÈÿP2ýÛú¿£ÿü O5àüô?ÿc?ÿ¿Áÿ-bÜÿC½a1è¿tõpþSý=ó?èÿ$ÿþ=ýè_þØô?ÿãðùпß7ëïá¶Í &ý{æpþ£ÿ±1éßÓÿÿKþØôïÿÿ[ù±±ÿ;ú?п¬Èÿø0éß3ÿÿ·úÿØdé¿<;òãÂÏöÛ¿WíöðÈÿfõ°úºZþȹòê¿ýóªªDýL®ÿæóú®¿½y¼ÿ´ýÖ'¿¬þ¬ÓT¬ÿKÞÿÿú¡¢ÿ¿\&ëÿ÷ç¡_|éw7÷·Ç>ãíþ¿ÚÓÈÒrc3YÿÕúæ¯ÿÔ±þ¯üØØôN÷?©ÿ¯Jæ¿$ûÿj»È
«ÿÝúÞgWJÞú_ÙÖ¬ÿHVÿqÿ§rÿëÏùß*Lõmþ¯Ý¯Wÿ"!1éßcþoÔ?ç«Àÿþ=òÿìÿI ÿ96&ý{Ìÿúçüo¬ÜÅÆ¤ù¿QÿÿÿolLú÷ÈÞ½ÿ3ÿ'¢¤mýßaþoÔ?ç«xmK?óªÂÿ{±ô?Ûü_s òÿ4ÔÅ5'@Æ ÿÂÕÿQáÿP`ª¿GþóÓþýòccÒ¿§ÿýKÀÿþçò¼ÿ¥ùO
-úMÏ- .&ý{ú?XÿÀó?6&ý;ú?Zü_ðÄÆ¤üçþÿ·òcc[ÿ÷óè_Â'Ç´È»`Lú÷È~òàÿ@ÿþÏ~¾ÿ£Ýù?Zü
-LõÍÿÑí׿KÜÿ%mºª±Å¤Oÿû?ØÿIÿ.ù-þ!äÄÆ¤Oÿë¿ÈÿIÿù<ÿ%°þþ]ò?Ú]þïÿJ¦Cc[ÿwÌÿ ÿGÂ'Ç8ÿã¢1é6ÿÇ~þÿ[ĸÿzÃbÐéÿÁù?Lõ÷Ìÿ ÿ@þGlLú÷ô ø?bcÒÿlþÃçBÿ>~{ܬ¿/Û6wôïéÿàüG <ÿccÒ¿gþþ/ ø?bcÒ¿cþç?i ÿ#6¶õGÿúð¥#óò?.þ=ó?ðK ÿMþ»ê\ËÇ
íÿ(ÓVÿE[Ôø?äÖ³zX}]-ä\YõïÿU=Üÿ©¿?ë¿ù¼¾ëooï?m¿µåÉofBÿß$Öÿ%ä·ýåk¿¢¸P&ëÿ÷ç¡_|éw7÷·Ç>#¿ÿoSÍû¿ÎÍdý/VëSÎÛú?Üÿ/пܱ±éÿîRÿ_ÌIÈêÿËúÿß\ýïÖÿó>c¸@òÖÿʶîXÿQ0þãþÏÙÁùõOÅðþGýý1Õ¶ù¿v¿þä?HEÇ``Lú÷ÿõßµø5àÿIÿùÏOÏÿþÿþ=æÿFý×óÿØþIÿó£þÛüW
-øccÒ¿Gþóîý?uìÿIÀÿÛú¿Ãüߨÿ¦«ðÿJ8ØÉëöÿ+Lúmþ¯9Ð?óÿêâ cÐáéÿàüo
-¦ú{ä?ÿÜÿ¡ÿÓ@þslLú÷ô ø?bcÒÿ\þ÷¿Ô1ÿáC¿é¹ÄŤOÿë?xþÇÆ¤Oÿþ/ ø?bcÒ¿Gþóÿÿ·òcc[ÿwô NòßBaÒ¿GþóOý·ø¿%ÐÿÇÆ ÿäÿAþ¯SýgótÌÿ¾e®j, a1éßÑÿÿWû?±1éß3ÿ÷? äÄÆ¤Oÿý¿òCcÒ¿§ÿÿ§ÖccÒ¿gþùJ¦Cc[ÿwôÿ#áÀÉÁù¡0é6ÿÇ~þÿ[ĸÿzÃbÐéÿÁù?Lõ÷Ìÿ ÿ@þGlLú÷Ìÿ@ÿðÄÆ¤ÿÙüÏÿþ%|üö¸Y_·mî1éßÓÿÁùxþÇÆ¤Oÿþ/ ø?bcÒ¿gþþo äÄÆ¶þïèÿ@ÿä¤Ïüüßèÿc¥ÿº9×òñAáçû?¶¿¯¶ ÿCBný7«Õ×ÕòGÎ
Uÿb
û÷ªªn©¿Éõß|^ßõ·7÷¶ßÚòä7Õÿõoòÿ5ä÷ÿO?Tôÿ¿õÿËûóÐ/¾ôË»ûÛcñvÿ_íé¿Mù/
-Ê
-Ídý/VëSN¾þë¡%DÿÐllú?§ûÔÿW%þ? þËUEÿÑäê·þ÷÷þW·ÖL«ÿ¸ÿSùÌÿ»ù¿ú+0Õ¶ù¿v¿þÌÿHEÇ``Lúwÿ+vóø$àÿIÿ.ùÏ»çbýOùϱ1éßeþ¯×ÿöÿ$T(?4&ý»Ìÿ»ù?æ%àÿIÿ.ùÏç)i Bc[ÿ÷ÿ+vóä¿Jx±¥õðõÿ÷Ò1é¶ù¿æ@ÿÌÿi¨kNAÿ
«ÿ#áÿP`ª¿KþóOÿýòccÒ¿§ÿýKÀÿþçò¼ÿ¥.¡ úMÏ- .&ý{ú?XÿÀó?6&ý;ú?Zü_ðÄÆ¤üçþüßÈmýßÑÿþ%<Õü·ôïÿüÓÿÿ[ýlúO®þÿSýgótÌÿ¾e®j, a1éßÓÿÁþöbcÒ¿gþïÈÿIÿþþ_BBù¡1éß3ÿÿ§ÖccÒ¿gþùJ¦Cc[ÿwôÿ#á©ÿþgóìçÿ7ø¿Eû¨7,ý®þÎÿ`ª¿gþýò?bcÒ¿§ÿýKÀÿþgó>ÿúðñÛãfý}1ܶ¹Ä¤ÏüÎÀó?6&ý{ú?ðIÀÿþ=ó?ðK ÿ#6¶õGÿúðÂÒõù¿&ý{æàÿ@ÿ<ýwçZ>^0(<ÏÿQ´ç¿HÈÿfõ°úºZþȹ²ê_lÿ^UÕ-õ0¹þÏë»þöæñþÓö[[üf²úÿ±þMðJÞÿ_ÑÿÿLÖÿ/ïÏC¿øÒ/ïnîo}ÆÛýµ§ÿ6Õ¼ÿKèPnh&ë±ZÒüsòõ_þ4è?46ýÓýOêÿ+ò¿5úÿ-^]Ñÿ_4¹úßÿç}ÆpäÿmMþ¯iõ÷*×ù¿ú+0Õ¶ù¿ýùoòU¤¢c00&ý{Îÿáÿÿ?6&ý{æ?³þ'üçØôïÿÌþ
-寤Ïù?æÿ%àÿIÿùÏÿ$¡¤mýßqþüw /¶ô³~¶þñÿ^:&ýÏ6ÿ×ÿüNÔÅ5'@Æ ÿÂÕÿÑàÿP`ª¿gþ3ýòccÒ¿§ÿýKÀÿþçò¼ÿ¥.¡ úMÏ- .&ý{æ?³þ#çlLú÷ôàÿÿ#6&ý{æ?ãÿ@þsllëÿþô/á©ä¿ÅĤÏügüßèÿccÐòôÔþ¦úÏæÿèÿ}'Ê6]ÕX@ÂbÒ¿§ÿý ìÿÄÆ¤ÏüÞÿ$ÿþ=ó?èÿ%$þ=ýø?%°þþ=ó?ÈÿP2ýÛú¿£ÿü O5àüô?ÿc?ÿ¿Áÿ-bÜÿC½a1è¿tÍÿàü ¦ú{æÐÿI ÿ#6&ý{ú?пü±1é6ÿÇáó?¡ ¿=nÖßÃm;A at Lú÷ôpþ£ÿ±1éßÓÿÿKþØôïÿÿ[ù±±ÿ;ú?п¬Èÿø0éß3ÿÿ·úÿØdé¿9ÛòñAáçû?Êþ¦ëð(Èÿfõ°úºZþȹ²ê_lÿ^UÕ
-þ ë¿ù¼¾ëooï?m¿µåÉo&«ÿëß4ä¿hÜÿ_½øe²þyúÅ~yws{ì3²úÿQÿmbÿ_CÉ`h&ë±ZÒüsÞÖµ§ÿÔqþ»Ü±±éÿîRÿ_¬ÿKÐÿcWôÿ¿¹úßÿç}Æpäÿm]±þ£`ZýÇýÊgþ¯ÜÍÿ%ê¯ÀTÿÙæÿÚýúsþ·TtL Ƥù¿r7ÿÇú¿ÿbcÒ¿KþóÏç?ùoÈIÿ.óåîüoÖÿ%T(?4&ý»Ìÿãüç¿hÀÿþ]òËÝüùJÐØÖÿ=æÿÊÝüùjëÿeÿÿ÷À¤ÿÙæÿýsþ·º¸æÀô_¸ú?Jü
-LõwÉþ¹ÿCÿ'üçØôïéÿ@ÿðÄÆ¤ÿ¹üï©Kè_Â~ÓsIÿþÖ$ðüIÿþü_ðÄÆ¤üçÿ£Åÿ-üçØØÖÿýü%úðTòßbbÒ¿KþóNÿ
-þo ôÿ±1è?¹ú?jü
-LõÍÿÑ1ÿûNmºª±Å¤Oÿû?ØÿIÿù¼ÿI ÿ#6&ý{ú?èÿ%$þýþO ¬ÿÆÆ¤Ïüò?%LÿƶþïÿAþ§pþGLLúÍÿ±ÿßàÿ1îÿ¡Þ°ôöaà³ýÿ#ÁTÏüú? äÄÆ¤Oÿúÿ#6&ýÏæÿ8|þ'ô/áã·ÇÍúûb¸ms'IÿþÎÀó?6&ý{æàÿÿ#6&ý{æàÿ@þGllëÿùè_ÂS
-ÈÿIÿùäk ÿMþ«s-/çÿ(Úíáÿ[ÿÍêaõuµüs!dÕ¿Øþ½ªªü'êïÏäúo>¯ïúÛÇûOÛomyòÉêÿÇú7M"ÿAÂÔþ¿|ù'4Êdýÿòþ<ô/ýòîæþöØg¼ÝÿW{úoSÂÿ-õ¿ØLÖÿbµ>¥ùçäë?uûØÿMÿçtÿúÿªÄÿ#aBÿ_[èÿrõ¿[ÿÏûáÉ[ÿ+Û:±þ£`ZýÇý³óëOþ³
-SýgÿÛÿN]Åû¿TtL Ƥò/ÞÿccÒ?ùÏùϱ1éüç§Bù¡1éüçÿolLú'ÿùâ)i Bc[ÿ'ÿùÒyªA¶ÿýÿßþgÿkçÿðÿH¨kNAÿùÏ©þä?_<ä?ÇÆ¤ò/ü±1é.ÿÇÁûùÏ*>ô[@\Lú'ÿùâáùþɾxðÄÆ¤ò/ò_bc[ÿ'ÿùÒyªùo11éüçþ?6ý'WÿGÿC©þ³ù?:æß²MW5°ôïéÿ`ÿGû?±1éß1ÿ#ñþ'üØôïéÿ ÿP~hLú÷ÌÿÀÿ)õߨôïÿAþ§éßÐØÖÿó?ÈÿðTÎÿIÿ³ù?öóÿüß"Æý?ÔþKWÿçÿH0Õß3ÿþOù±1éßÓÿþ%àÿIÿ³ù?ÿ ýKøøíq³þ¾nÛÜ bÒ¿§ÿó%ðüIÿùø¿$àÿIÿùÿ¤üØØÖÿýè_ÂS
-ÈÿIÿùø¿%ÐÿÇ&KÿgøòAágû?íß«¦¬ñ(Ȭÿfõ°úºZþȺòê¿ýóªó©¿?Së¿ù¼¾ëooï?m¿´åé/&«ÿëßÔ5ó¦öÿ/`áRªÿ_Ö~ñ¥_ÞÝÜßý·ûÿjOÿmU³ÿ'åÆfªþ«õIÍ?'_ÿ©+ÿÀÊ]lLú?«ûÔÿùoÌý9Â]äBÉÔÿnù?ó3+%oý¯lÖ$Lªÿ¸ýS}ä׿þõ`©ÿãyóßcýS[³ÿ'!±èÿÌñ¿Ì÷ÿAÿ]Óáÿ@çþÏÿËË~zþ³ÿ'üçØXôæøßçê:æ%T(?4ý9þçÿõßvëÿðÿÆÆ¢ÿ3Çÿ&è¿Kìÿk(i BcZÿ?oü/sÿÐÓ&ü^ÛÒÏþýÿÅ¢ÿ3ÇÿÎxþ7ûúï
-æ%ÔÅ5'@fºþÏëÿ¨[ü
-,õÏÿQìÿÐÿi ÿ96ý»ú?пÞÜbcÑÿlþ÷¿Ô2ÿ©áC¿é¹ÄÅ¢Wÿë?xþÇÆ¢Wÿþ/ ø?bcÑÿ|þ÷ÿTàÿ@þslLëÿþô/aÏÉAþ[0,úÏÿ±ßÿ7mÿ[ýl¦ë?ùæø?Xê?ÿ£cþ÷(ÛtUc Eÿþÿ¯ÞÜbcÑ¿kþïÈÿEÿ®þú 寢WÿþO ¬ÿÆÆ¢×üò?%LÿÆ´þïéÿ ÿG¾ó?baÑÿ|þýüÿÿ·qÿõeºþKßüÎÿ`©¿kþýò?bcÑ¿kþúÀ[l,úÏÿqøü¯Ñ¿ß7ëïá¾Í ý»ú?8ÿQÏÿØXôïêÿÀÿ%ÿGl,úwÍÿÀÿ-üØÖÿ=ýè_Âküx¸T,úwÍÿÀÿ-þ?6YúOÕÙç
-?ßÿÑmõ_´Ãû?þrë¿Y=¬¾®?r.¼ú×ÿ§njê¯`rý7×wýíÍãý§í·¶<ùÍäõÿCý&ÿ ÁÖöÿúe²þúÅ~yws{ì3Þîÿ«=ý·)áÿ@ûÉú_¬Ö§4ÿ|ýÿ ãßccÓÿ9Ýÿ¤þ¿*ñÿHÞÿcnKGÿÉäê·÷÷þW¶ÿ¬aZýÇ
- ³óëÄüSýÏ |»ÿo÷ëß±þ§!1éÿÌÀ¼÷ÿnÌnÿs'6&ý9 ø¦þËþ¯cý_ùϱ1éÿÌÀüç]´¬ÿI`ý?6&ý9 ø¶þÓþ[öÿDàÿIÿg æë¿Køÿ54 ¡±ÿ7 øþË÷ÿ¦«ÿðbK?óÿïÅcÒÿo?ÿý·ÿ ¡.®9"0ý®þÿSýgóÔû?ôÈIÿþô/ÿGlLúËÿqðþ:ò4|è7=·¸ôïèÿhXÿÀó?6&ý{ú?ðIÀÿþgó¼ÿ§ÿ·òcc[ÿwô O5 ÿ-&&ýÏæÿØïÿ®Åÿ-þ?6ý'OÿG]àÿP`ªÿlþùßw¢lÓU$,&ý{ú?ØÿÀþOlLú÷ÌÿàýOù±1éß3ÿþ_BBù¡1éßÓÿÿS뿱1éß3ÿüO %Ó¿¡±ÿ;ú?ÈÿðTÎÿIÿ³ù?öóÿüß"Æý?ÔþK×üÎÿ`ª¿gþýò?bcÒ¿§ÿýKÀÿþgó>ÿúðñÛãfý}1ܶ¹Ä¤Oÿç?Jàùþ=ýø¿$àÿIÿùø¿%ÿÛú¿£ÿýKxaéÈýüǤÏüüßèÿc¥ÿúú\ËÇ
íÿ(Ëþ¶Àÿ!!·þÕÃêëjù#çBȪ±ý{UU·ÿ#arý7×wýíÍãý§í·¶<ùÍäõÿCý¦Æÿ)arÿ_½øe²þyúÅ~yws{ì3Þîÿ«=ý·©æý_Â5Ê
-Ídý/VëSN¾þëÁþðäMÿçtÿúÿüo
-úÿªús[úÿß\ýïÖÿó>c¸@òÖÿʶ)YÿQ0þãþOå2ÿ7Ö?uEýê?Ûü_»_òE¤¢c00&ý{ÌÿúïZò4àÿIÿùÏOÏæÿ$ÿþ=æÿFý×
þ?
-ÊIÿó£þÛüW
-øccÒ¿Gþóîý¿.ÿPÒ Æ¶þï0ÿ7ê¿é*ÎðT\ÿ/ûÿ¿&ýÏ6ÿ×èü
-uqÍ 1è¿põpþ·Sý=òîÿÐÿi ÿ96&ý;ú?8ÿ[þØô?ÿãàý/u ýKøÐoznq1éßÓÿÁúÿ±1éßÓÿÿKþØôïÿ¼{ÿOþo ä?ÇÆ¶þïèÿ@ÿj@þ[LLú÷Èþ©ÿÿ·úÿØô\ý ÿSýgótÌÿ¾e®j, a1éß3ÿý ìÿÄÆ¤ÏüÞÿ$ÿþ=ýôÿÊIÿþüXÿIÿùäJ(þ
-mýßÏÿÈÿðTÎÿIÿ³ù?öóÿüß"Æý?ÔþKWÿçÿH0Õß1ÿþOù±1éßÓÿþ%àÿIÿ³ù?ÿ5úðñÛãfý}1ܶ¹Ä¤Oÿç?Jàùþ=ýø¿$àÿIÿùø¿%ÿÛú¿cþúðTò?bbÒ¿gþþo ôÿ±ÉÒ{¶åãÂÏ÷T[ýmÿCBný7«Õ×ÕòGÎ
Uÿbû÷ªªn:ê¯`rý7×wýíÍãý§í·¶<ùÍdõÿcý&±þ/aZÿ_íÿ MÄ
2Yÿ¿¼?ýâK¿¼»¹¿=öo÷ÿÕþÛDþkÉú_¬Ö§4ÿ|ý§õ
-ä?ÄÆ¦ÿsºÿIýU2ÿ%aBÿÏüçoD®þwëÿy1\ yëåp»`ýGÀ´úû?Ïü_5Îÿ
-ïÔßSýgÿk÷ëÏþ¿TtL Ƥù¿jwþ7ý¿üÿ±1éß%ÿ¹bþ_ùϱ1éßeþ¯çÿü*þ]æÿªÝüù¯ðÿÆÆ¤üçj7ÿÿOBIÛú¿Çü_µÿãü7 O5ÈôÿV{ÂMäB1é¶ù¿æ@ÿÿ¤¡.®9"0ý®þÎÿ`ª¿KþóOÿýòccÒ¿§ÿýKÀÿþçò¼ÿ¥.¡ úMÏ- .&ý{ú?XÿÀó?6&ý;ú?ÈÓÿ#6&ý»ä?ÿôàÿ@þsllëÿþô/á©ä¿ÅĤüçþüßèÿccÐrõ´ø?ê?ÿ£cþ÷(ÛtUc Iÿþö$°ÿþ=ó?xÿ@þGlLúwô´ôÿÈÿIÿùø?
%°þþ=ó?ÈÿP2ýÛú¿£ÿü O5àüô?ÿc?ÿó¿Uû¨7,ý}ø ðlÿçÿH0Õß3ÿþOù±1éßÓÿþ%àÿIÿ³ù?ÿ ýKøøíq³þ¾nÛÜ bÒ¿gþç?Jàùþ=ýø¿$àÿIÿùø¿%ÿÛú¿£ÿýKxªù11éß3ÿÿ·úÿØd鿩ϵ|¼`Pøùþr«ÿ¢Ý¾àÿ[ÿÍêaõuµüs!dÕ¿Øþ½ªªü'êïÏäúo>¯ïúÛÇûOÛomyòÉêÿÇú7M"ÿA´þ¿(júÿßÉúÿåýyè_úåÝÍýí±ÏÈêÿGý·©fý_BtC3YÿÕúæó¶þ«=ýOô¯ýÿØØôN÷?©ÿ¯Jü?&ôÿuýg½
þÿw Wÿ»õÿ¼Ï.¼õ¿²ÖL«ÿ¸ÿSùÌÿä?1Õ¶ù¿v¿þ]Åü·TtL Ƥù¿üg!¼ÿÇÆ¤üçüg!ä?ÇÆ¤ù¿üg!ÊIÿ.ó%ùÏBðÿÆÆ¤üçüg!%
- at hlëÿó%ùÏBjíÿeÿÿ·À¤ÿÙæÿý·ø$ÔÅ5'@Æ ÿÂÕÿAþ³Sý]òKò
ÿþ=ýè_þØô?ÿãàýügúMÏ- .&ý;ú?ÈÖÀó?6&ý{ú?ðIÀÿþ]òKò
ÿÛú¿£ÿýKxªùo11éß%ÿ¹$ÿYýlúO®þÿSýgótÌÿ¾e®j, a1éßÓÿÁþöbcÒ¿gþïÈÿIÿùôÿÊIÿþüXÿIÿùäJ(þ
-mýßÑÿAþ§pþGLLúÍÿ±ÿßàÿ1îÿ¡Þ°ô_ºú?8ÿG©þùôÈÿIÿþô/ÿGlLúÍÿqøüOè_ÂÇoõ÷ÅpÛæNþ=ó?8ÿQÏÿØôïéÿÀÿ%ÿGlLú÷ÌÿÀÿ-üØØÖÿýè_ÂS
-ÈÿIÿùø¿%ÐÿÇ&KÿWç:>^2(ü|ÿÇöÏ«¢©8ÿEBfý7«Õ×ÕòGÖ
Uÿbû÷ªjûOê¯`jý7×wýíÍãý§í¶<ýÅdõÿcýºaÿOÂÔþÿù%ýÿÅ2Uÿ¿¬?ýâK¿¼»¹¿=úo÷ÿÕþÛü
-ìÿÅfªþ«õIÍ
?'_ÿ©+ÙÿÀñï±1éÿ¬îRÿ_&æ¿%ûÿr»È
©ÿÝòægWJÞú_Ù´äÿJTÿqû§:û2ȯյ¬ÿI°ÔÿÌñ¿Ìùï¡þ©mðÿIHEÇ``,ú?sü/ÓÿWóïÿèÜccÑÿãùÏ?ÿø$ÿþÏÿðü¯?BÿXÿEÿgÿeúëqþ¯Äÿ#ÿol,ú?süoþ»TâÿPÒ Æ´þÞø_æüß ÿ¦ÙÿðÚ~æ%þßËÅ¢ÿ3ÇÿÎxþ7ûúïJò%ÔÅ5'@fºþWÿÇàÿÇÿá¥þóù?êýú?
-ä?ÇÆ¢Wÿúÿ#6ýÏæÿ8xÿKmþ%|è7=·¸Xôïêÿ`ýGÏÿØXôïêÿÀÿ%ÿGl,úÏÿqðþJüßÈiýßÓÿþ%¼prLüÿÇåbÑÿ|þýþ¿é
-üßèÿc3]ÿÉ7ÿ£Äÿ¡ÀRÿùüó¿ïDÙ¦«HX,ú÷ôàÿÕÀþOl,úwÍÿàýOù±±èßÕÿAÿ/!¡üÐXôïêÿÀÿ)õߨXôïÿAþ§éßÐÖÿ=ýäÿHxéäðç\4ýÏçÿØÏÿoð÷ÿPoX¦ë¿ôÍÿàü ú»æÐÿI ÿ#6ý»æ ¼¹ÅÆ¢ÿùüÏÎ×ðñÛãfý}1Ü·¹Ä¢Wÿç?Jàùþ]ýø¿$àÿEÿ®ùø¿%ÿÓú¿§ÿýKxÍÒûùEÿ®ùø¿%ÐÿÇ&KÿÝõÙç
-?ßÿ¶ú/Úáýÿ?¹õ߬V_WË9BVý·7þ¢ªê® þ
-&×óy}×ßÞ<ÞÚ~kËßLVÿ?Ö¿ièÿ5dwûW¯þ&âB¬ÿ_æ~ñ¥_ÞÝÜßû¬þÔjæ¿$
-ÒÌdý/VëSÎÛú¯öô_pè_ ûÿ±±éÿîRÿ_U¬ÿIÈêÿ¯Fèÿ#rõ¿Û ÈûáÉ[ÿ+[ÎÖ0þãPuîe_ÿTÔÌÿI0ÕÿÌÀ·ûÿv¿þ]Mþ«TtL Ƥÿ3 ³ÞÿGýwmÇüÞÿccÒÿoê¿<èÿºü ä?ÇÆ¤ÿ3 óÿuÑ1ÿ'¡Bù¡1éÿÌÀ·õöûòßEàÿIÿg NÐÿ_CIÛúÿyoé¿<xÿoºÿWÂÁNþþ_öÿ'Lú?s ðíçs ÿÿº¸æÀô_¸ú?ü
-LõÍÿQìÿÐÿi ÿ96&ý{ú?пü±1é.ÿÇÁû_êÿÖð¡ßôÜâbÒ¿£ÿ£eýGÏÿØôïéÿÀÿ%ÿGlLúÍÿqðþ_ø¿%ÿÛú¿£ÿýK8prÿ
-þgóì÷ÿM×áÿ@ÿþ§ÿ£!ÿW©þ³ù?:æß²MW5°ôïéÿ`ÿGû?±1éß3ÿ÷? äÄÆ¤Ïüú 寤OÿþO ¬ÿÆÆ¤Ïüò?%Lÿƶþïèÿ ÿGÂó?BaÒÿlþýüÿÿ·qÿõÅ ÿÒ5ÿó$êïÿAÿ'üØôïéÿ@ÿðÄÆ¤ÿÙüÏÿýKøøíq³þ¾nÛÜ bÒ¿§ÿó%ðüIÿþü_ðÄÆ¤ÏüüßÈÿmýßÑÿþ%89Èÿ
Iÿùø¿%ÐÿÇ&Kÿ×ç:>þÿíÝnãØ¥ïÏSäÔ¹7ä¾;ÄA'0Ó »1SV)
ô±YÙ|û!)Û-NÁ,9¾)M¦æ¨J[Æ^±ö)ÂÇû?Ú÷
¬ø?LH\ÿýöq{¿]ÿLú!$Ö(:ÿë¯ÏÔõßÛ»Û§Í×öK[¿ÿÅ$ÕÿýúEÉþ Éõÿ/õÿÕ2Uÿ¯ÖÇfù½Y¯n7w¿üËõ8ÓÕ> P®o¦ê¹Ý½«ùcÒõëÀþ¿ ÿîþGUÿêÿ<2ÿm¸þ=\E®DýÚÿÑýRÒúyYÓÿ1aÒú÷Û?aôÏ }ýC]ÖßÉúÿKÿîëÿªdÿßÕL :F¢ÿãþ¿²ÿËÉ0ÿ¿o$ú9þÿü|ÿgÿÏò}#ÑÿÈñ¿ ÷ÿüW#èÜùF¢ÿãþß~ÿ¿Îéÿÿ×7ýÿ ÿ:²ÿoCNàQÿÜø_âü_¿ÿ_øÿLxkK?ñEÀÿ{½Hô?rüoÄý¿<×ÿaBÝpc¦ë?Óõpþ· õÏÿQö¨ÿl ÿÙ7ýkú?2ôoþßHô?ÿcðü+æ?møÜì.~è_ÕÿAÿÇîÿ¾è_ÕÿÿËü¾è>ÿÇàù?æø¿M ÿÙ7¢þ¿¦ÿýpâäøÿÇõ"Ñÿ|þóú¿¬3üß&Pÿûfºþ£®ÿ#âÿ°@²þóù?jæy·Hô¯ÿÁþ ìÿøF¢ÕüÿL ÿÃ7ý«ú?¨ÿM(ß5ý«ú?ð@ÿ×7ý«æÿiBÎô¯kDýEÿGIþ §N /8ÿãªè>ÿÇyþÿÛ~ÿõºeºþs]ÿçÿ YÍüê?ÈÿðDÿªþôoþßHô?
ÿcxÿ¯Ð¿ _ö»ËîºÍÀ!ý«ú?8ÿÑîÿ¾è_ÕÿÿËü¾è_5ÿÿ· äøFÔÿ×Ìÿ@ÿ&¼eéH}AþÇõ"Ñ¿jþþo¨ÿ}¤ÿ¢íù8¦SøxÿGû÷!«2Î1!uý÷ÛÇíývý3å´þYïÿ)8ÿÇÉë¿ÿ¶[5w·O¯í·¶~÷Iªÿûõ/ËÿÓée~ü'WÊdý¿å÷f½ºÝÜýê3.×ÿáLÿU<ÿ@ùïÉú_nwïiþtýǺæùßý»F¦ÿ1Õÿ¤ú?°ÿo þoù#Ï©ÿ¯Tý6 Ò>£û¤õÿòª ÿ×iëßo
±?ôõY×ÿaýõÿÈÀËõu¾þuàþoBÌj& #ÒÿÈÀ¤çÿ^ÿuUáÿ7ÿ¿oDú9 xQÿù þ«ý?ÈöHÿ# ÓïÿEFþ»
-$·ùF¤ÿõÏô_Õ5óÿ&àÿõHÿ# Óõ_· èßÀ5²þÿ¸ÀKúÏÏÿeMþ»
-'[úI/ºü¿×Hÿ# /ßÿËþ+üÿ&Ù
-'@8F ÿLÕÿðX ZÿÙüÅpÿúÏò}#Ò¿¦ÿýÿÃ7"ýÏåÿ<ÿÅ:¢>7ûK_Dú×ôÐÿ1û¿oDúWôTø¿LÀÿáþgóÿc
ÿÛò}#ëÿëù?rôoÂËÿæþgó×ÿeÍùo6PÿûF ÿ¨êÿ(ñX ZÿÙü5ó¿¿¼[Dú×ô°ÿcû?¾é_1ÿ#òügù¾é_ÓÿAýoBDù®é_3ÿÿ§ ô}#Ò¿fþù&äLÿºFÖÿWÌÿ ÿÇ5àüô?ÿã<ÿ¿ÄÿmD¿ÿzÝ"ЮêÿàüDë¯ÿAýgù¾é_ÓÿþMÀÿáþgóïÿýðåái¿û±ì.Û\ "Ò¿¦ÿóMàþïþ5ó?ðÿÃ7"ý+æpþ
-äøFÖÿWô N,I/Èÿøô¯ÿÿÛêߤé?µ|Ð)<Íÿµ ü¤®ÿ~û¸½ß®¦üÖ?kßBQ²þ&L^ÿý·Ýª¹»}Ú|m¿µõ»ßLRý߯Y²ÿgÃôú?+¨ÿ¯Éúõþ<6ËïÍzu»¹ûÕg\®ÿÃþ«É1ñ/ßLÖÿr»{OóǤë?Ö5ûÿ&ðøïþÇTÿêÿ3ÿmÂôú¿hù£(
¨ÿ¯TýúÿiÑý@ÒúyUäô,¶þýþÏèfpúúsþ·¢õmþï|þ;Öû¿ 1« tHÿÿ}õàÿ÷HÿùÏþ ä?ûF¤Îÿ¾zÊwHÿÿ}õàÿõHÿùÏÌÿS ¸FÖÿçüïkçdK?éEÿ÷ Òÿlóåpþÿ¿ EvØ1ýgªþÿ¢õW̦þ³ügßô¯èÿàüOðøF¤ÿ¹üç¿XôoÂçfßp ðHÿþú?&pÿ÷Hÿþü_&àÿðHÿùÏþoÈö¬ÿ¯èÿ@ÿ&¼¬ùo>é_1ÿ¹Äÿmõ¿oúÿ}ýÖ6ÿGÍüïo"¯â¢Àâþ9ÿûêaÿÇ7"ýkæðügù¾éó¿¯ò]#Ò?ç_=ô}#Ò¿fþù&äLÿºFÖÿçüïkçe
-8ÿÃ'"ýÏæÿ8Ïÿ/ñÑïÿ¡^·ô«ú?8ÿÇÑú+æPÿÙ@þoDú×ô ðøF¤ÿÙüÃûDÿ&|yxÚï~,»Ë6Wô¯éÿàüG¸ÿûF¤Mÿþ/ðøF¤Íüüß&ÿáYÿ_1ÿýpbéH{AþÇ@¤Íüüß&Pÿû&Iÿõè#_Nè>Þÿ[ýgUûHÿÃÔõßo·÷ÛõÏBÒúgíûB(ºë?ë¯ÏäõßÛ»Û§Í×ö[[¿ûÍ$Õÿýúe¤ÿoÂú¿xã¯("®Éúõþ<6ËïÍzu»¹ûÕg$Õÿ½þ«yþ7!Gº®¬ÿåv÷湬ÿp¦ÿX×èßù»F¦ÿ1Õÿ¤ú?äÌ0¥þïÆ>Ôÿ×Nªþýÿ´Ïè~ iý¿¼*Jú?L[ÿ~ÿ'èÌÿÅÃü_Åú[ ZÿÙæÿªóõçüO#bV3èþUæÿâaþÿ¯ øÿ}#Ò¿JþóáþÉ3ügßô¯2ÿûù?æÿm(ß5"ý«ÌÿÅ~þ¯æüðÿúF¤üçxÈfÿÏÀ5²þ¿Æü_<ä?ãÿ5áe
-ÒöÿÅEäJé¶ù¿r æÿm(²Np@ÿ£;
'û?
-üÖ_%ÿùÙÿAýgùϾé_ÓÿþMÀÿáþçòÿbÍü·
-}Ã%À/"ý+ú?Jú?&pÿ÷Hÿþü_&àÿðHÿ*ùÏó¿
-!ÿÙ7²þ¿¢ÿý0prÿæ
-þUòýø¿M þ÷@ÿQÕÿAþ¯ ¢õÍÿQ3ÿûÈ«¸(°¸E¤Mÿû?&°ÿãþ5ó?xþ3üßô¯ÿAýoBDù®é_ÓÿÿÓú¿¾é_3ÿüOr¦]#ëÿ+ú?Èÿ1aàäàüWô?ÿã<ÿ¿ÄÿmD¿ÿzÝ"ЮêÿàüDë¯ÿAýgù¾é_ÓÿþMÀÿáþgóïÿýðåái¿û±ì.Û\ "Ò¿fþç?Àýß7"ýkú?ðÿÃ7"ýkæàÿ6üßÈúÿþôoÂËÿáþ5ó?ð@ýï$ý7c-'t
-ïÿþ³ª- ðºþûíãö~»þòCHZÿ¬}_E7ÿÏúë3yý÷ßv«æîöióµýÖÖï~3Iõ¿þeYPÿ0¡þï^,¨ÿ?õÿêýylßõêvs÷«ÏHªÿ{ýW±`þË
-@×LÖÿr»{OóÇ\Ö8Óÿôo Ç¿ûF¦ÿ1Õÿ¤ú?pþ§
-êÿÅâEõÿG UÿþÚgt?´þ_^þÓÖ¿ßÿ :ó¡ÿ+8ÿÛÑúÏ6ÿW¯©ÿMYÍ cDúWÿýüùo6ÐþóHÿ*ùÏÏ÷æL ÿÙ7"ý«Ìÿ
Cþ3ç?@ÿß7"ý«Ìÿõõ×BÿàÿõHÿ*ùϽþÿ 9kdýù¿ÐÏÿpþ£
-/kæÿ]àÿý ô?Ûü_9ÐMþ Evà è?SõüÖ_%ÿ9pþ·!ä?ûF¤Mÿú7ÿoDúËÿ1xþíKôoÁçfßp ðHÿþú?&pÿ÷Hÿjþª®ñÿÃ7"ý«ä?Cþ3þoÈö¬ÿ¯çÿèß5 ÿÍ'"ý«ä?Îÿ6úß7ýGUÿç ZÿÙü5ó¿¿¼[Dú×ô°ÿcû?¾é_1ÿ£àùÏò?|#Ò¿¦ÿúßò]#Ò¿fþþOèÿúF¤Íüò?MÈþu¬ÿ¯ÿAþ /kÀù>é6ÿÇyþÿÛ~ÿõºE ÿ\ÕÿÁù?&Ö_3ÿúÏò?|#Ò¿¦ÿýÿÃ7"ýÏæÿÞÿôo§ýîDz»ls%pHÿþÎ4û¿oDú×ÌÿÀÿeþßô¯ÿQpþ
-äøFÖÿWô ^Öüô¯ÿÿÛêß$é?/ÇZ>Nè>ÚÿUþ³*ÃÿaBêúï·ÛûíúgÊ!mýÛ?¡(É1aòúï¿íVÍÝíÓækûßýfêÿ~ýËólXÿ¿XPÿ_/õÿêýylßõêvs÷«Ï¸\ÿ3ýW12ÿeóß¾¬ÿåv÷æI×äüW#пodúSýOªÿCÿÏqý¿èá*r¥¤êÿÐÿOûîÖÿË«¢¢ÿcÁ´õï÷Êü_¿þ1ëòY}Dë?Ûü_u¾þìÿ³ @Çô¯1ÿ×ë¿®*òLÀÿïþ5ò_îÿ<ÿ@þ³oDú×ÿëõ_dûÿ&ïþ5æÿzýWuÍþ¿ ø}
#Ò¿Fþóáù?ÖÌÿS ¸FÖÿWÿëõ_Öÿ omé'¾è¢ ¹\)"ýÏ6ÿWôÏùO6Ù
-'@8F ÿLÕÿÁü ¢õ×È~Þÿ¡þ³ügßô¯éÿ@ÿ&àÿðHÿsù?ϱèßÏ;áàþý%ý¸ÿûF¤Mÿþ/ðøF¤üçÿþoÜö¬ÿ¯èÿ@ÿ&89¦½ ÿíé_#ÿùÅÿÿÛêßô5ýEÿÃÑúÏæÿ¨ÿýMäU\X@Ü"Ò¿¦ÿýØÿñHÿù<ÿ@þoDú×Ìÿ þ7üoßô¯éÿÀÿiý_ßô¯ÿAþ§ 9Ó¿®õÿýäÿpâäòó?®þgóçÿsþ·ýþêu@ÿ¹jþçÿ ZÍüê?ÈÿðHÿþôoþßô?ÿcxÿèß/OûÝewÙæJàþ5ýÿh÷ßô¯éÿÀÿeþßô¯ÿÿÛvn}#ëÿ+ú?п oY:_ÿqÅô¯ÿÿÛêߤé´åãNáãýíûBVÖø?LH]ÿýöq{¿]ÿLù!¤ûç!eÎú[0yý÷ßv«æîöióµýÖÖï~3iõ·þeÿÇêÿó¯Éúõþ<6ËïÍzu»¹ûÕg\®ÿÃþ«È1ùoßLÖÿr»{OóǤë?Ö5ûÿ&pü»odúSýOªÿCÆü· âúùÏ«&UÿþÚgt¿´þ_^ôL¶þýþOÐÿ+óõ·@´þ³ÍÿUçëÏþ¿1« tHÿ*óåaþüðÿûF¤üçùCÈöHÿ*óåáüoü&Ðÿ÷Hÿ*óe?ÿWÑÿ7ÿ¯oDúWÉ.óìÿS ¸FÖÿ×ÿ+ûùÿ omé'¾Xàÿ½^Dúmþ¯èól(²Np@ÿªÿó¿M¿JþóaÿúÏò}#Ò¿¢ÿ£Dÿ&àÿðHÿsù?ϱfþÓÏ;áàþ5ýôLàþïþ5ýø¿LÀÿáþUòþβÉmßÈúÿþôoÂcâü×Hÿ*ùÏýø¿M þ÷@ÿQÕÿñX ZÿÙü5ó¿¿¼[Dú×Ìÿ`ÿÇö|#Ò¿fþÏ&ÿáþ5ýÔÿ&ÿïþ5ýø?M ÿëþ5ó?Èÿ4!gú×5²þ
¿ÿ#ÿc©cÂÎÿ¸jDúÍÿqÿÏùßVôû¨×-ý>¼Sx²ÿóL¿bþõ
-äøF¤Mÿú7ÿoDúÍÿ1¼ÿGôo§ýîDz»ls%pHÿþÎ4û¿oDú×ôàÿ2ÿoDú×ÌÿÀÿm;·¾õÿó?п oY:R_ÿq½ô¯ÿÿÛêß$é?>òåNáãýu«ÿ¬Êðºþûíãö~»þòCH[ÿöÏC(ºügÖ_Éë¿ÿ¶[5w·O¯í·¶~÷I«ÿ»õ/Kæ¿mÖÿÅó+e²þ_½?Íò{³^Ýnî~õëÿp¦ÿ*²ÿoã_¾¬ÿåv÷æI׬ÿ´ýßÈô?¦úTÿþ Óëÿ¢å¢ þ¿jRõèÿ§}F÷IëÿåÝåþÓÖ¿ßÿ :óõaþ¯dý-ÿlóÕùúÿhDÌj& #Ò¿Êü_}ÿ#ÿÁÿ}#Ò¿JþsÍü!ä?ûF¤ù¿ú0ÿGÿÏò]#Ò¿Êü_ÝÏÿ±ÿgþ_ßô¯ÿ\òÿ7!§ p¬ÿ¯1ÿWò9ÿÍ-ýôìÿ_9"ýÏ6ÿWôOþ
-EvØ1ýììÿàüoDë¯ÿüìÿ þ3ügßô¯éÿ@ÿ&àÿðHÿsù?ϱèßÏ;áàþ5ýôLàþïþýÿmþßô¯ÿüìÿÀÿmùϾõÿýèßW'Ç´ä¿]9"ý«ä??û?ð@ýïþ£ªÿ£ÂÿahýgóÔÌÿþ&ò*.
-, né_ÓÿÁþ ìÿøF¤ÍüÿL ÿÃ7"ý+ú?*ê"ÊwHÿùø?M ÿëþ5ó?Èÿ4!gú×5²þ¿¢ÿü^É/8ÿã# Òÿlþóüÿÿ·ýþêu@ÿ¹ªÿóL¿fþõ äøF¤Mÿú7ÿoDúÍÿ1¼ÿGôo§ýîDz»ls%pHÿùÿh÷ßô¯éÿÀÿeþßô¯ÿÿÛò?|#ëÿ+ú?п 'ôä\9"ýkæàÿ6úß7Iú/F[>Nè>ÚÿÑÖYÈʺÄÿaAêúï·ÛûíúgÊ!iý³öÏC(Jü?&L^ÿý·Ýª¹»}Ú|m¿µõ»ßLZýßYÿb þGBq¥LÖÿ«÷ç±Y~oÖ«ÛÍݯ>ãrýÎô_EÎÿ°¡D¹®¬ÿåv÷æI׬9ÿÝÿ}#ÓÿêRýrúÿ&L¯ÿCË!Pÿ_5©ú?ôÿÓ>£û¤õÿòªÈèÿX0mýûý 2ÿׯ̺ü?Ö_ÑúÏ6ÿW¯?ç³ @Çô¯1ÿ×뿮ȴÿ¿oDú×È~¹ÿÿfùϾé_cþ¯×ôÿM(ß5"ýkÌÿõú¯jαÿ¯oDú×È><ÿGòmÈ) \#ëÿ+Ìÿõú/ëüN¶ô^ü¿ þgÿ+úçüoì #Цéÿ5þDë¯ÿü¼ÿCýgùϾé_ÑÿAþ£
-ø?|#Òÿ\þÁó_¬ú7ás³o¸øE¤Mÿý¸ÿûF¤Mÿþ/ðøF¤üçÿþoÈö¬ÿ¯èÿ@ÿ&¼¬ùo>é_#ÿùYÿ%þo¨ÿ}#ÐTÍÿø?,ÿlþùßßD^ÅEÄ-"ýkæ°ÿcû?¾é_3ÿç?ÈÿðHÿþê"ÊwHÿþü&ÐÿõHÿù5ù&äLÿºFÖÿWôÿcÂËpþODúÍÿqÿ_âÿ6¢ßÿC½nèôaàÂýÿchý5ó?¨ÿL ÿÃ7"ýkæ ðøF¤ÿÙüÃû@ÿ&|yxÚï~,»Ë6Wô¯éÿàüG¸ÿûF¤Mÿþ/ðøF¤Íüüß&ÿáYÿ_ÑÿþM8±t¤½ ÿã Ò¿fþþo¨ÿ}¤ÿztäÇ ÂÇû?b«ÿ¬ÊJü¤®ÿ~û¸½ß®¦üÖ¿]ø,
¢"ÿÅÉë¿ÿ¶[5w·O¯í·¶~÷Iªÿûõ/ËÈýßYÙOýíLÖÿ«÷ç±Y~oÖ«ÛÍݯ>#©þïõ_ÅürÀ]3YÿËíî=ÍsYÿáLÿí?п ܹ}#ÓÿêRýðÿÛTÿêÿDªþýÿ´Ïè~ iý¿¼*ÿ2aÚú÷û?Agþ/öóÝóë¯hýgÿ«Î׿øMYÍ cDúWÿýüùO6àÿ÷Hÿ*ùÏÏ÷üÿ&ÿìþUæÿbßÿ'ÿÉò]#Ò¿Êü_ìçÿjüÿ&àÿõHÿ*ùÏñÿÌþ 9kdýù¿ØÏÿü¿&vò/Ç>³ÿÿé¶ù¿r ÿÿ Evà è?ÓôÄÿ¢õWÉ>ìÿPÿÙ@þ³oDúWôpþ
-ø?|#Òÿ\þÁó_¬ÿ¶ás³o¸øE¤Mÿý¸ÿûF¤Mÿþ/ðøF¤üçgÿþoÈö¬ÿ¯èÿ@ÿ&俹B¤üçþ9ÿÁêßô?:ºSxrþù¿&Ö6ÿGÍüïo"¯â¢Àâþ5ó?Øÿ1ýßô¯ÿÁó äøF¤Mÿõ¿ ÄÿûF¤MÿþOèÿúF¤½ü"#ÿÓé_×ÈúÿþòL898ÿÃ"ýÏæÿ8Ïÿ/ñÑïÿ¡^·ô«ú?8ÿÇÑúkæPÿ@þoDú×Ìÿ@ÿ&àÿðHÿ³ù?÷ÿþMøòð´ßýXvm®é_ÓÿÁù&pÿ÷Hÿþü_&àÿðHÿùø¿M ÿÃ7²þ¿¢ÿý0prÿá
-þ5ó?ð@ýï$ýç£|9¡SøhÿGÖ¾/deWÿãÿÐ'uý÷ÛÇíývý3å¶þíPøL¼þûo»Uswû´ùÚ~këw¿¤ú¿_ÿ²$ÿÏôúø¢ þ¿Z&ëÿÕûóØ,¿7ëÕíæîWq¹þgú¯"çÙÀñϾ¬ÿåv÷æI׬ñÿÙþ}#ÓÿêRý2úÿ&ëÿ¢«ÈªÿCÿ?í3º_JZÿ/¯ÿ²aÚú÷û?Aeþ¯_ÿÅõ·@´þ³ÍÿUçë_ü¿&ĬfÐ1"ýkÌÿõú¯«ü'ðÿûF¤üçû?û&ÿìþ5æÿzýYIþ ôÿ}#Ò¿Æü_¯ÿóÿÀÿëþ5òÏÿýr
- ×Èúÿ
-ó½þË:ÇÿgÂ[[ú/
-ü¿×Hÿ³ÍÿýWÿhBÝpcú=Ø)<ÕÿÑåÿâÿÐG´þùÏÏû?Ô6ÿìþý%ú7ÿoDúËÿ1xþ5ó6|nö
- ¿ô¯éÿ ÿc÷ßô¯éÿÀÿeþßô¯ÿüâÿÀÿmùϾõÿýèß'ÇÄø?®þ5òõ_âÿ6úß7ýGÕüÿÃÑúÏæÿ¨ÿýMäU\X@Ü"Ò¿fþû?&°ÿãþ5ó?xþ3üßô¯éÿ þ7!¢|×ô¯éÿÀÿiý_ßô¯ÿQÿiBÎô¯kdýEÿù?&:9&¼àü«F¤ÿÙüçùÿ%þo#úý?ÔëþsUÿçÿ ZÍüê?ÈÿðHÿùèßü¾é6ÿÇðþп _ö»Ëî²ÍÀ!"ýkú?8ÿÑîÿ¾é_ÓÿÿËü¾é_3ÿÿ· äøFÖÿWô Þ²t¤¾ ÿãzé_3ÿÿ· Ôÿ¾IÒ¸kù8¡SøxÿGÝê?«òÿ©ë¿ß>nï·ë)?´õoÿ<¢"ÿÅÉë¿ÿ¶[5w·O¯í·¶~÷I«ÿ»õ/ËÈýßaý_PD\)õÿêýylßõêvs÷«Ï¸\ÿ3ýW±`þËåºf²þÛÝ{?&]ÿí?È2ýßÈô?¦úTÿüÿ6L¯ÿCË!Pÿ_5©ú?ôÿÓ>£û¤õÿòªË¢ÿ£Ï´õï÷Îü_ÝÏÿ%ëohýgÿ«Î׿¦ÿgCÌj& #Ò¿Êü_ÝÏÿÕøMàùß7"ý«ä?îÿôÿm ÿÙ7"ý«ÌÿÕ}ÿ¿¢ÿgB@ù®é_eþ¯¯ÿÙÿ3ÿ¯oDúWÉîõ_dä?S ¸FÖÿ×ÿ«ûùHþ '[úé/Øÿ¿rDúmþ¯è¿fþ×"»áÇô©ú?"þDë¯ÿüìÿ þ3ügßô¯éÿ@ÿ&àÿðHÿsù?ϱ.п }Ã%À/"ýkú?èÿÀýß7"ý«ù?ªºÆÿeþßô¯ÿüìÿÀÿmùϾõÿýèßW'Ç´ä¿]9"ý«ä??û?ð@ýïþ£ªÿ£ÂÿahýgóÔÌÿþ&ò*.
-, né_ÓÿÁþ ìÿøF¤ÍüÿL ÿÃ7"ý+ú?jê"ÊwHÿùø?M ÿëþ5ó?Èÿ4!gú×5²þ¿¢ÿü^É/8ÿã# Òÿlþóüÿÿ·ýþêu@ÿ¹ªÿóL¿fþõ äøF¤Mÿú7ÿoDúÍÿ1¼ÿèß/OûÝewÙæJàþ5ó?8ÿÑîÿ¾é_ÓÿÿËü¾é_3ÿÿ· äøFÖÿWô N,é/Èÿ¸rDú×ÌÿÀÿmõ¿oô_u|Ò)|´ÿ#þ³2ü$®ÿ~û¸½ß®&ýÖ?kßBìü¬¿>S×ÿm·jîn6_Û/mýþVÿwë_%û&ëÿÃ?Ôÿ×ÊTý¿Zå÷f½ºÝÜýò3.×ÿáLÿU(É1ùoßLÕÿr»{WóǤë?Ö9ûÿ&°ÿïþGUÿêÿ<2ÿm¸þ_ôp¹Rõhÿ'~F÷Kßÿkÿ<äeEþ¯ Ö¿ßþ £éëêþ õ9þ6ÿݯ¬Jü&ĬfÐ1ýÿK{þïõ_WÏÿ&ðüïþGÿ¥å?¿Üÿñÿ@þ³o$ú9þxÿýüó?6ïþGÿ¥ù{ýWuÎýßü¿¾èäø_¢þûçÿãÿ1!§ p¨ÿ?nü/mÿ¿×Ù½ýp´?ýûÿWDÿ#ÇÿFÜÿËsý×ùÏ&Ù
-'@8fºþ3%ÿG<ø?È6A²þóù?³õù6ÿìþuüñàÿ@ÿ&àÿðDÿ³ù?Nÿ÷æ¿møÜì.~è_Ïÿëÿ§ Üÿ}#Ñ¿ªÿÿ ø?|#Ñÿ|þÁóÌÉ5[ßúÿ*þxð Îä¿9C¢ÿùüçõYgø¿M þ÷ÍtýGÕü*ÃÿadýçóÔÌÿþ&ò*.
-, nè_5ÿÿ¯ ìÿøF¢Õüü&ÿáþuüÅ!ÿúßòÿ}#Ñ¿ÿ£8ø?ÿ5þ¯o$úWÍÿÀÿiBÎô¯kDýÍüòL8srpþ3$úÏÿqÿ_Öø?mè÷ÿP¯[¦ë?×Íÿ(ñX YÕüú?&ÿáþUó?п ø?|#Ñÿ|þáý¿Dÿ&|yxÚï~,»ë6WHô¯ÿÿÓîÿ¾è_5ÿþ¯ ø?|#Ñ¿jþþOعõ¨ÿ¯ÿþMxËÒüü«E¢Õüæ¿L þ÷MþÃøÌc:
ödU«ÿ¬êæ¿ðèºþûíãö~»þòCH[ÿ>ÿ¥àü&¯ÿþÛnÕÜÝ>m¾¶ßÚúÝo&©þï׿,#ù¿&ëÿEÿ"âJ¬ÿWóÏc³üÞ¬W·»_}Æåú?é¿çÿöÍdý/·»÷4Lºþc]óüoBþ]#ÓÿêRýØÿ·A^ÿ3ÿyͤêÿ°öÝ/%ÿ÷óßôô¶þýPû3H_ÿÅõ·@´þ# /×ÿÕùú×ÿ¯ 1« tHÿ# Óÿ«~þ¯"ÿÅüÿ¾éä àEýçú¯<ÿ@þ³oDú9 ~ÿ/²ýÊwHÿ# /ë?鿪köÿMÀÿëþG ¦ë¿5ù&ä ®õÿÇ
- ^Ò>xþ/ëÿÇ·¶ô^,z0+E¤ÿïÿå@ÿç?Pd7 áþ3Uÿó_&Ö6ÿG1ôPÿ@þ³oDú×ô ðøF¤ÿ¹üç¿XGôoÂçfßp ðHÿþþ Üÿ}#Ò¿¦ÿÿ ø?|#ÒÿlþÁó¬ñÀä¶odýEÿú7áÈÉ1íùoWHÿ³ù?Îëÿ²®ð@ýïþGAw
-OöÔø?,ÿlþùßßD^ÅEÄ-"ýkú?Øÿ1ýßô¯ÿÁó äøF¤ÍüêÈÿ÷Hÿþü&ÐÿõHÿùä3ýëYÿ_ÑÿAþ GNi/8ÿãªé6ÿÇyþÿÛ~ÿõºE ÿ\ÕÿÁù?&Ö_3ÿúÏò?|#Ò¿¦ÿýÿÃ7"ýÏæÿÞÿ#ú7áËÃÓ~÷cÙ]¶¹8D¤ÍüÎ4û¿oDú×ôàÿ2ÿoDú×ÌÿÀÿm;·¾õÿýèß·,I/Èÿ¸jDú×ÌÿÀÿmõ¿oô_×c-'t
-íÿÈc«ÿ¬Êsü¤®ÿ~û¸½ß®¦üÖ?kßBÑÍÿ³þúL^ÿý·Ýª¹»}Ú|m¿µõ»ßLZýßYÔÿ&$ýáÍ¿¢¸R&ëÿÕûóØ,¿7ëÕíæîWVÿwú¯bÁü 9஬ÿåv÷湬ÿp¦ÿþèß öÿ}#ÓÿêRý8ÿÓ¤ú?ôPÿ Rõèÿ§}F÷IëÿåUÉùÏ&L[ÿ~ÿ'¨Ìÿõë³ù?Dë?Ûü_u¾þu$ÿÕÕL :F¤ù¿^ÿuU3ÿcÏÿ¾é_#ÿùùþ_ÿbùϾé_cþ¯×UÌÿP¾kDú×ÿ;Ôÿíпø}#Ò¿FþóAÿEÆþ 9kdý
ù¿^ÿ%ç?1ØÉ¿èÿeÿÿ#!Òÿlóå@ÿÿ`CÝpcúÏTýÿ¢õ×È~ñPÿ@þ³oDú×ô ðøF¤ÿ¹üç¿X3ÿmÃçfßp ðHÿþú?&pÿ÷Hÿjþª®ñÿÃ7"ýkä?¿ø?ð@þ³odýEÿú7aàä ÿÍ"ýkä?¿ø?ð@ýïþ£ªÿü_Dë?ÿ£fþ÷7WqQ`qHÿþöL`ÿÇ7"ýkæðügù¾é_ÑÿQSÿ@ü¿oDú×ÌÿÀÿiý_ßô¯ÿAþ§ 9Ó¿®õÿýäÿ0prpþ+DúÍÿqÿ_âÿ6¢ßÿC½nè?Wõpþ ¢õ×Ìÿ þ3üßô¯éÿ@ÿ&àÿðHÿ³ù?÷ÿýðåái¿û±ì.Û\ "Ò¿fþç?Àýß7"ýkú?ðÿÃ7"ýkæàÿ6üßÈúÿþôoÂÀÉAþ+Dú×ÌÿÀÿmõ¿oô¿¸kù8¡SøxÿGûç!«òÿ©ë¿ß>nï·ë)?¤õÏÚ÷
PtùO¬¿>×ÿm·jîn6_Ûomýî7Tÿ÷ë_ù&¤ÕÿáWEq¥LÖÿ«÷ç±Y~oÖ«ÛÍݯ>#©þïõ_Åþ¿ 9஬ÿåv÷湬ÿp¦ÿ¢AÿðøïþÇTÿêÿðÿTÿ3ÿùáHÕÿ¡ÿöÝ$ÿWUFÿÇiëßïÿù¿¢ÿ+éÿ ZÿÙæÿªóõçüO#bV3èþUæÿ:ý×5þ_ðÿûF¤üççû?ùo&ÿìþUæÿCþ3ó¿&ïþUæÿÃüþðÿúF¤
üçâ0ÿGþ£ 9kdýù¿â0ÿÇþ¿ ü÷÷ÿõW\D®þgÿ+Ïô_eÌÿÛPd7 áþ3MÿGQãÿ°@´þ*ùÏýê?ÈöHÿzþªFÿ&àÿðHÿsù?ϱ.п }Ã%À/"ýkú?èÿÀýß7"ýkú?ðÿÃ7"ý«ä?ÿmùϾõÿýèßü7Wô¯ÿ|ÐÿÛêßôUó?þDë?ÿ£fþ÷7WqQ`qHÿùìÿÀþoDú×ÌÿàùÏò?|#Ò¿¦ÿúßâÿ}#Ò¿¦ÿÿ§ ô}#Ò¿bþçØ3ýëYÿ_ÑÿAþ 'ç¸B¤ÿÙüçùÿþo#úý?ÔëþsUÿçÿ ZÍüê?ÈÿðHÿùèßü¾é6ÿÇðþ_ ¾<<íw?Ýe+CDú×ôpþ£ Üÿ}#Ò¿¦ÿÿ ø?|#Ò¿fþþoÈÿð¬ÿ¯èÿ@ÿ&ä¸B¤Íüüß&Pÿû&MÿÕXËÇ ÂÓüYÿaBêúï·ÛûíúgÊ!iýÛ¿,¢ªX&¯ÿþÛnÕÜÝ>m¾¶ßÚúÝo&©þï׿,úÿ&¤ÕÿYAýÿ±¬ÿWïÏc³üÞ¬W·»_}FRýßë¿ä?ØSÿ»f²þÛÝ{?æ²þÃþû ÈðLÿcªÿIõÌTÿ=ÔÿTýúÿiÑý@ÒúyÕ¾þÓÖ¿ßÿ ªçÓÿ3A´þ³ÍÿÏ3ÿgEÌj& #Ò¿æüÏÿ&àÿ÷HÿùÏä¿@þ³oDú×ÿ#ÿÑò]#Ò¿æüþðÿúF¤ÅügæmÈ) \#ëÿ+Îÿ±ÿoÂ`'ÿÿ·xû¯¸\)"ýÏ6ÿW2ÿ÷(²Np@ÿªÿ£Àÿahý5ó©ÿL ÿÙ7"ýkú?п ø?|#Òÿ\þÁó_¬ôoÂçfßp ðHÿþþ Üÿ}#Ò¿¦ÿÿ ø?|#Ò¿fþ3þoÈö¬ÿ¯èÿ@ÿ&¼¬ùo>é_3ÿÿ· Ôÿ¾è?ªú?jüÖ6ÿGÍüïo"¯â¢Àâþ5ýìÿÀþoDú×ÌÿàùÏò?|#Ò¿fþõ¿ äûF¤MÿþOèÿúF¤Íüò?MÈþu¬ÿ¯èÿ ÿÇó?\!Òÿlþóüÿ*ÃÿmC¿ÿzÝ"Юêÿà
üDë¯ÿAýgù¾é_ÓÿþMÀÿáþgóïÿú7áËÃÓ~÷cÙ]¶¹8D¤ÍüÎ4û¿oDú×ôàÿ2ÿoDú×ÌÿÀÿmù¾õÿýèßüWô¯ÿÿÛêß$é¿^µ|Ð)|¼ÿ#¶úϪ<àÿ° uý÷ÛÇíývý3å´þYû¾ü&¯ÿþÛnÕÜÝ>m¾¶ßÚúÝo&©þï׿,Éÿ·!±þ?<Pÿ&ëÿÕûóØ,¿7ëÕíæîWTÿ÷ú¯bAþ 9õ¿k&ë¹Ý½§ùc.ë?é¿èFBпìÿûF¦ÿ1Õÿ¤ú¿}Dÿ$ÕÿÌ~8Rõèÿ§}F÷IëÿåUÉü ÓÖ¿ßÿ :óñ0ÿW±þÖ¶ù¿ê|ýëÿ×ÕL :F¤ù¿xÿ#ÿÉÿ}#Ò¿JþsäüCÈöHÿ*óñÿLþ å»F¤ù¿xÿÃÿoþ_ßô¯ÿóìÿS ¸FÖÿ×ÿù?ü¿&vò/úÙÿÿHô?Ûü_9Ð?ç?ÚPd7 áþ3UÿGÿÃÑú«ä??û?¨ÿL ÿÙ7"ýkú?п ø?|#Òÿ\þÁó_¬ÿ¶ás³o¸øE¤EÿGEÿÇîÿ¾é_ÓÿÿËü¾é_%ÿùÙÿÿÛò}#ëÿ+ú?п /k@þODúWÉ~öàÿ6úß7ýGUÿù¿&Ö6ÿGÍüïo"¯â¢Àâþ5ýìÿÀþoDú×ÌÿàùÏò?|#Ò¿fþõ¿ å»F¤MÿþOèÿúF¤Íüò?MÈþu¬ÿ¯èÿ ÿÇó?\!Òÿlþóüÿ*ÃÿmC¿ÿzÝ"ЮêÿàüDë¯ÿAýgù¾é_ÓÿþMÀÿáþgóïÿú7áËÃÓ~÷cÙ]¶¹8D¤ÍüÎ4û¿oDú×ôàÿ2ÿoDú×ÌÿÀÿmù¾õÿýèßüWô¯ÿÿÛêß$é¿ùqB§ðñþ¼ÕVuÏÿø?ôI]ÿýöq{¿]ÿLù!$Ö¾/¢ÊX&¯ÿþÛnÕÜÝ>m¾¶ßÚúÝo&©þï׿,ñÿØ\ÿ?¿ÔÿÉúõþ<6ËïÍzu»¹ûÕg\®ÿÃþ«É1áåºf²þÛÝ{?&]ÿ±®Ùÿ7ýßÈô?¦úTÿùo&Ôÿ!üZ¨ÿ?©ú?ôÿ
Ó>£û¤õÿòóm¶þýþOÐÿËûù¿Èü ¢õmþ¯:_ÿ:ðüoBÌj& #Ò¿Êü_ÞÏÿUôÿMàùß7"ý«ä?îÿüÈöHÿ*óy?ÿWÒÿ7! |×ô¯2ÿ×鿪ɷÿ¯oDúWÉîÿ#þr
- ×Èúÿóy?ÿÿ3áe
-ý¿ìÿDúmþ¯è¿ÂÿcBÝpcúÏTýÿ¢õWÉ~öPÿ@þ³oDú×ô ðøF¤ÿ¹üç¿Hþ}Ã%À/"ýkú?èÿÀýß7"ý+ú?È·ÿoDúWÉ~öàÿ6ügßÈúÿþôoÂËÿæþUòýø¿M þ÷@ÿ£Ã ;
'û?*üÖ6ÿGÍüïo"¯â¢Àâþ5ýìÿÀþoDú×ÌÿàùÏò?|#Ò¿¢ÿ£¢þ7!¢|×ô¯ÿÿÓú¿¾é_3ÿüOr¦]#ëÿ+ú?Èÿ1áe
-8ÿÃ'"ýÏæÿ8Ïÿ/ñÑïÿ¡^·ô«ú?8ÿÇÑúkæPÿ@þoDú×ô ðøF¤ÿÙüÃûDÿ&|yxÚï~,»Ë6Wô¯ÿÁù&pÿ÷Hÿþü_&àÿðHÿùø¿M ÿÃ7²þ¿¢ÿýð²äøD¤Íüüß&Pÿûfþ¶w«±n!ÂGû?²öÏCÿHÿÃõïþ¯ÑcÒ×?ïFY׿½ç7íW¶OøõÎÖ?ä?ØÐ-çí·ÍþSq³¨²E¨«¿õôÏÍÓÓ§ìðúÏínµY?´ÿÏÍÃ~µ»_5ÿ½êÿÿäEY»ßvî×ÑýÄ¢lòoÛý·¶2ìÿ0T±½Sfü%IÖÿ?WÿÜ<ü¹MùúoÏõñÿØð·ï$úß«þçvßÜÿ˧<<y}úþ¯GïøÇnµ:¼¡}G~SÔ7¡8}Ç=îßѾ§}ÕÑþ¾Üoþ{õú÷í;n<½áËCsò<oßðoõ·£ÏÙÙþ5oø_Ûÿwá?´}Ç
ÿÐÏÝþçÉ'}ÈÿÝmö«¯Íòû¯þ5ÿ±¹_ýf½zzùPdÅâø»l¾ÊpsüMüýaûpü¿ðéSY|Ý_þgóõþèÕÉþýÿqû_íÏ¿}Ï¿¼õ/ù¯ÛËÕÙçñþã¾ùzò×ù"|ÿöc}øÏ¼=úγáß}ß´LI¾þßmÚ_Lû³Høýcÿ×sýGþ³
-¡úgmÖþçdý/¼·×óÿòóçÿrôoBâ¶ÏÑ?[þøóOö®Dý>óû)ý¿¬¦ÿgAòú«ôÿòaÿç^ûå¢}.CÔÿ+ãbqÜÿkÿGÚ?«òxÜÿ«òª$
fî/J²þUúýGòm8ôb²7úíe9û¦WvÖÿ+b}ë£Þ\vÖþ[,bV¾áïg½½öjOÞpÚþ«CÕÿÞp¡ý]jÿeo´ÿÎÿ;OÛoüw¾Õý[ÿ/\èþegÝ¿E¢Ì«ã¯ò¼ûgEqüî_(Ùâè
-Ãî_ûPuüÝ¿ìR÷/;ïþÅv5Ãéj½ÓýËèþý%H¾þõÿròLxiþÑÿóI²þúú7azÿïùÅ=\;®Dý3ÿ_NÿÏäõ·òÿ1ÿoÂÿøÿê²ÈoB¸Iêÿy8ñÿµOʬªNúy\´ËÉâ/I²þüä¿pèÆþ¿ðÿ/º:}Ç©ÿo-caèÿíB/Þ0ðÿeU<ù¸Ð á¢ÿ/¼åÿ;û}Óÿwüz¡þ¿X,Âñ7ñÿïÓâø
-Cÿ_¬ÃñG;y<rKÀp©ÞðÿÕ7'_Ô{À@ð/@òõßÊÿÇü· æ_ßDxIÖ¿ÿý0¡í×ÛþÆ?ò®DýG³þóß&$¯¿Uÿýæ«Pº,úÅùüoÙ> æ7ùéüoUV ÿ$ëߪÿÇü¿ ^L¼ØÿÃþ_ëÅÑxoôÿâ¢Gs³qÐÿU¹¨ÃÑÎûªs^¼Ôÿúñbÿ/ûÿÐó¿ñRÿ/ú1dáäx«ÿw4 ßèÿÕùÉWõÆüï±0^êÿÅKý¿8ìÿÅÅéÅ{ý¿Hÿï/@òõߪÿGþ /æ¿O9ÂóH²þúèߤþßÁë÷Ö_qí ¸þ?8& <
\ No newline at end of file
Deleted: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/96em64t-4n4d3ca2co.tar.gz.output
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/96em64t-4n4d3ca2co.tar.gz.output 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/96em64t-4n4d3ca2co.tar.gz.output 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,382 +0,0 @@
-Machine (phys=0 total=528473984KB)
- NUMANode #0 (phys=0 local=132101504KB total=132101504KB)
- Socket #0 (phys=1)
- L3Cache #0 (16384KB)
- L2Cache #0 (3072KB)
- L1Cache #0 (32KB)
- Core #0 (phys=0)
- PU #0 (phys=0)
- L1Cache #1 (32KB)
- Core #1 (phys=1)
- PU #1 (phys=4)
- L2Cache #1 (3072KB)
- L1Cache #2 (32KB)
- Core #2 (phys=2)
- PU #2 (phys=8)
- L1Cache #3 (32KB)
- Core #3 (phys=3)
- PU #3 (phys=12)
- L2Cache #2 (3072KB)
- L1Cache #4 (32KB)
- Core #4 (phys=4)
- PU #4 (phys=16)
- L1Cache #5 (32KB)
- Core #5 (phys=5)
- PU #5 (phys=20)
- Socket #1 (phys=0)
- L3Cache #1 (16384KB)
- L2Cache #3 (3072KB)
- L1Cache #6 (32KB)
- Core #6 (phys=0)
- PU #6 (phys=1)
- L1Cache #7 (32KB)
- Core #7 (phys=1)
- PU #7 (phys=5)
- L2Cache #4 (3072KB)
- L1Cache #8 (32KB)
- Core #8 (phys=2)
- PU #8 (phys=9)
- L1Cache #9 (32KB)
- Core #9 (phys=3)
- PU #9 (phys=13)
- L2Cache #5 (3072KB)
- L1Cache #10 (32KB)
- Core #10 (phys=4)
- PU #10 (phys=17)
- L1Cache #11 (32KB)
- Core #11 (phys=5)
- PU #11 (phys=21)
- Socket #2 (phys=2)
- L3Cache #2 (16384KB)
- L2Cache #6 (3072KB)
- L1Cache #12 (32KB)
- Core #12 (phys=0)
- PU #12 (phys=2)
- L1Cache #13 (32KB)
- Core #13 (phys=1)
- PU #13 (phys=6)
- L2Cache #7 (3072KB)
- L1Cache #14 (32KB)
- Core #14 (phys=2)
- PU #14 (phys=10)
- L1Cache #15 (32KB)
- Core #15 (phys=3)
- PU #15 (phys=14)
- L2Cache #8 (3072KB)
- L1Cache #16 (32KB)
- Core #16 (phys=4)
- PU #16 (phys=18)
- L1Cache #17 (32KB)
- Core #17 (phys=5)
- PU #17 (phys=22)
- Socket #3 (phys=3)
- L3Cache #3 (16384KB)
- L2Cache #9 (3072KB)
- L1Cache #18 (32KB)
- Core #18 (phys=0)
- PU #18 (phys=3)
- L1Cache #19 (32KB)
- Core #19 (phys=1)
- PU #19 (phys=7)
- L2Cache #10 (3072KB)
- L1Cache #20 (32KB)
- Core #20 (phys=2)
- PU #20 (phys=11)
- L1Cache #21 (32KB)
- Core #21 (phys=3)
- PU #21 (phys=15)
- L2Cache #11 (3072KB)
- L1Cache #22 (32KB)
- Core #22 (phys=4)
- PU #22 (phys=19)
- L1Cache #23 (32KB)
- Core #23 (phys=5)
- PU #23 (phys=23)
- NUMANode #1 (phys=1 local=132124160KB total=132124160KB)
- Socket #4 (phys=4)
- L3Cache #4 (16384KB)
- L2Cache #12 (3072KB)
- L1Cache #24 (32KB)
- Core #24 (phys=0)
- PU #24 (phys=24)
- L1Cache #25 (32KB)
- Core #25 (phys=1)
- PU #25 (phys=28)
- L2Cache #13 (3072KB)
- L1Cache #26 (32KB)
- Core #26 (phys=2)
- PU #26 (phys=32)
- L1Cache #27 (32KB)
- Core #27 (phys=3)
- PU #27 (phys=36)
- L2Cache #14 (3072KB)
- L1Cache #28 (32KB)
- Core #28 (phys=4)
- PU #28 (phys=40)
- L1Cache #29 (32KB)
- Core #29 (phys=5)
- PU #29 (phys=44)
- Socket #5 (phys=5)
- L3Cache #5 (16384KB)
- L2Cache #15 (3072KB)
- L1Cache #30 (32KB)
- Core #30 (phys=0)
- PU #30 (phys=25)
- L1Cache #31 (32KB)
- Core #31 (phys=1)
- PU #31 (phys=29)
- L2Cache #16 (3072KB)
- L1Cache #32 (32KB)
- Core #32 (phys=2)
- PU #32 (phys=33)
- L1Cache #33 (32KB)
- Core #33 (phys=3)
- PU #33 (phys=37)
- L2Cache #17 (3072KB)
- L1Cache #34 (32KB)
- Core #34 (phys=4)
- PU #34 (phys=41)
- L1Cache #35 (32KB)
- Core #35 (phys=5)
- PU #35 (phys=45)
- Socket #6 (phys=6)
- L3Cache #6 (16384KB)
- L2Cache #18 (3072KB)
- L1Cache #36 (32KB)
- Core #36 (phys=0)
- PU #36 (phys=26)
- L1Cache #37 (32KB)
- Core #37 (phys=1)
- PU #37 (phys=30)
- L2Cache #19 (3072KB)
- L1Cache #38 (32KB)
- Core #38 (phys=2)
- PU #38 (phys=34)
- L1Cache #39 (32KB)
- Core #39 (phys=3)
- PU #39 (phys=38)
- L2Cache #20 (3072KB)
- L1Cache #40 (32KB)
- Core #40 (phys=4)
- PU #40 (phys=42)
- L1Cache #41 (32KB)
- Core #41 (phys=5)
- PU #41 (phys=46)
- Socket #7 (phys=7)
- L3Cache #7 (16384KB)
- L2Cache #21 (3072KB)
- L1Cache #42 (32KB)
- Core #42 (phys=0)
- PU #42 (phys=27)
- L1Cache #43 (32KB)
- Core #43 (phys=1)
- PU #43 (phys=31)
- L2Cache #22 (3072KB)
- L1Cache #44 (32KB)
- Core #44 (phys=2)
- PU #44 (phys=35)
- L1Cache #45 (32KB)
- Core #45 (phys=3)
- PU #45 (phys=39)
- L2Cache #23 (3072KB)
- L1Cache #46 (32KB)
- Core #46 (phys=4)
- PU #46 (phys=43)
- L1Cache #47 (32KB)
- Core #47 (phys=5)
- PU #47 (phys=47)
- NUMANode #2 (phys=2 local=132124160KB total=132124160KB)
- Socket #8 (phys=8)
- L3Cache #8 (16384KB)
- L2Cache #24 (3072KB)
- L1Cache #48 (32KB)
- Core #48 (phys=0)
- PU #48 (phys=48)
- L1Cache #49 (32KB)
- Core #49 (phys=1)
- PU #49 (phys=52)
- L2Cache #25 (3072KB)
- L1Cache #50 (32KB)
- Core #50 (phys=2)
- PU #50 (phys=56)
- L1Cache #51 (32KB)
- Core #51 (phys=3)
- PU #51 (phys=60)
- L2Cache #26 (3072KB)
- L1Cache #52 (32KB)
- Core #52 (phys=4)
- PU #52 (phys=64)
- L1Cache #53 (32KB)
- Core #53 (phys=5)
- PU #53 (phys=68)
- Socket #9 (phys=9)
- L3Cache #9 (16384KB)
- L2Cache #27 (3072KB)
- L1Cache #54 (32KB)
- Core #54 (phys=0)
- PU #54 (phys=49)
- L1Cache #55 (32KB)
- Core #55 (phys=1)
- PU #55 (phys=53)
- L2Cache #28 (3072KB)
- L1Cache #56 (32KB)
- Core #56 (phys=2)
- PU #56 (phys=57)
- L1Cache #57 (32KB)
- Core #57 (phys=3)
- PU #57 (phys=61)
- L2Cache #29 (3072KB)
- L1Cache #58 (32KB)
- Core #58 (phys=4)
- PU #58 (phys=65)
- L1Cache #59 (32KB)
- Core #59 (phys=5)
- PU #59 (phys=69)
- Socket #10 (phys=10)
- L3Cache #10 (16384KB)
- L2Cache #30 (3072KB)
- L1Cache #60 (32KB)
- Core #60 (phys=0)
- PU #60 (phys=50)
- L1Cache #61 (32KB)
- Core #61 (phys=1)
- PU #61 (phys=54)
- L2Cache #31 (3072KB)
- L1Cache #62 (32KB)
- Core #62 (phys=2)
- PU #62 (phys=58)
- L1Cache #63 (32KB)
- Core #63 (phys=3)
- PU #63 (phys=62)
- L2Cache #32 (3072KB)
- L1Cache #64 (32KB)
- Core #64 (phys=4)
- PU #64 (phys=66)
- L1Cache #65 (32KB)
- Core #65 (phys=5)
- PU #65 (phys=70)
- Socket #11 (phys=11)
- L3Cache #11 (16384KB)
- L2Cache #33 (3072KB)
- L1Cache #66 (32KB)
- Core #66 (phys=0)
- PU #66 (phys=51)
- L1Cache #67 (32KB)
- Core #67 (phys=1)
- PU #67 (phys=55)
- L2Cache #34 (3072KB)
- L1Cache #68 (32KB)
- Core #68 (phys=2)
- PU #68 (phys=59)
- L1Cache #69 (32KB)
- Core #69 (phys=3)
- PU #69 (phys=63)
- L2Cache #35 (3072KB)
- L1Cache #70 (32KB)
- Core #70 (phys=4)
- PU #70 (phys=67)
- L1Cache #71 (32KB)
- Core #71 (phys=5)
- PU #71 (phys=71)
- NUMANode #3 (phys=3 local=132124160KB total=132124160KB)
- Socket #12 (phys=12)
- L3Cache #12 (16384KB)
- L2Cache #36 (3072KB)
- L1Cache #72 (32KB)
- Core #72 (phys=0)
- PU #72 (phys=72)
- L1Cache #73 (32KB)
- Core #73 (phys=1)
- PU #73 (phys=76)
- L2Cache #37 (3072KB)
- L1Cache #74 (32KB)
- Core #74 (phys=2)
- PU #74 (phys=80)
- L1Cache #75 (32KB)
- Core #75 (phys=3)
- PU #75 (phys=84)
- L2Cache #38 (3072KB)
- L1Cache #76 (32KB)
- Core #76 (phys=4)
- PU #76 (phys=88)
- L1Cache #77 (32KB)
- Core #77 (phys=5)
- PU #77 (phys=92)
- Socket #13 (phys=13)
- L3Cache #13 (16384KB)
- L2Cache #39 (3072KB)
- L1Cache #78 (32KB)
- Core #78 (phys=0)
- PU #78 (phys=73)
- L1Cache #79 (32KB)
- Core #79 (phys=1)
- PU #79 (phys=77)
- L2Cache #40 (3072KB)
- L1Cache #80 (32KB)
- Core #80 (phys=2)
- PU #80 (phys=81)
- L1Cache #81 (32KB)
- Core #81 (phys=3)
- PU #81 (phys=85)
- L2Cache #41 (3072KB)
- L1Cache #82 (32KB)
- Core #82 (phys=4)
- PU #82 (phys=89)
- L1Cache #83 (32KB)
- Core #83 (phys=5)
- PU #83 (phys=93)
- Socket #14 (phys=14)
- L3Cache #14 (16384KB)
- L2Cache #42 (3072KB)
- L1Cache #84 (32KB)
- Core #84 (phys=0)
- PU #84 (phys=74)
- L1Cache #85 (32KB)
- Core #85 (phys=1)
- PU #85 (phys=78)
- L2Cache #43 (3072KB)
- L1Cache #86 (32KB)
- Core #86 (phys=2)
- PU #86 (phys=82)
- L1Cache #87 (32KB)
- Core #87 (phys=3)
- PU #87 (phys=86)
- L2Cache #44 (3072KB)
- L1Cache #88 (32KB)
- Core #88 (phys=4)
- PU #88 (phys=90)
- L1Cache #89 (32KB)
- Core #89 (phys=5)
- PU #89 (phys=94)
- Socket #15 (phys=15)
- L3Cache #15 (16384KB)
- L2Cache #45 (3072KB)
- L1Cache #90 (32KB)
- Core #90 (phys=0)
- PU #90 (phys=75)
- L1Cache #91 (32KB)
- Core #91 (phys=1)
- PU #91 (phys=79)
- L2Cache #46 (3072KB)
- L1Cache #92 (32KB)
- Core #92 (phys=2)
- PU #92 (phys=83)
- L1Cache #93 (32KB)
- Core #93 (phys=3)
- PU #93 (phys=87)
- L2Cache #47 (3072KB)
- L1Cache #94 (32KB)
- Core #94 (phys=4)
- PU #94 (phys=91)
- L1Cache #95 (32KB)
- Core #95 (phys=5)
- PU #95 (phys=95)
-depth 0: 1 Machine (type #1)
- depth 1: 4 NUMANodes (type #2)
- depth 2: 16 Sockets (type #3)
- depth 3: 16 Caches (type #4)
- depth 4: 48 Caches (type #4)
- depth 5: 96 Caches (type #4)
- depth 6: 96 Cores (type #5)
- depth 7: 96 PUs (type #6)
-Topology not from this system
Modified: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/Makefile.am
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/Makefile.am 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/Makefile.am 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,85 +1,121 @@
-# Copyright 2009 INRIA, Université Bordeaux 1
-# Copyright © 2009 Cisco Systems, Inc. All rights reserved.
+# Copyright © 2009-2010 INRIA
+# Copyright © 2009-2010 Université Bordeaux 1
+# Copyright © 2009-2010 Cisco Systems, Inc. All rights reserved.
AM_CFLAGS = $(HWLOC_CFLAGS)
AM_CPPFLAGS = $(HWLOC_CPPFLAGS)
AM_LDFLAGS = $(HWLOC_LDFLAGS)
-# XXX: Add your sysfs tarballs here.
+# Add your expected output file here.
+# By default, it shows the output of `lstopo - -v'.
+sysfs_outputs = \
+ 2amd64-2n.output \
+ 2ps3-2t.output \
+ 4ia64-4s.output \
+ 4ppc-4c.output \
+ 256ppc-8n8s4t.output \
+ 256ppc-8n8s4t-nocache.output \
+ 256ppc-8n8s4t-nosys.output \
+ 8amd64-4n2c.output \
+ 8em64t-4c2t.output \
+ 8em64t-2s2ca2c.output \
+ 8em64t-2s4c-heterogeneous.output \
+ 8ia64-2n2s2c.output \
+ 8ia64-2s2c2t.output \
+ 8ia64-4s2c.output \
+ 16amd64-8n2c.output \
+ 16amd64-8n2c-cpusets.output \
+ 16amd64-8n2c-cpusets.xml.output \
+ 16amd64-8n2c-cpusets_noadmin.output \
+ 16em64t-4s2c2t.output \
+ 16em64t-4s2c2t-offlines.output \
+ 16em64t-4s2c2t-offlines.xml.output \
+ 16em64t-4s2c2t-offlines_noadmin.output \
+ 16em64t-4s2c2t_ncaches.output \
+ 16em64t-4s2c2t_merge.output \
+ 16em64t-4s2c2t.xml.output \
+ 16em64t-2m4c2t.output \
+ 16ia64-8n2s.output \
+ 48amd64-4d2n6c-sparse.output \
+ 64fake-4n2s2ca2c2t.output \
+ 96em64t-4n4d3ca2co.output \
+ 128ia64-17n4s2c.output \
+ 256ia64-64n2s2c.output \
+ 4qs22-2s2t.output \
+ 2s390-2c.output \
+ 1alpha.output
+
+# Each output `xyz.output' must have a corresponding tarball `xyz.tar.bz2'
+# or a corresponding `xyz.source' specifying which tarball to use
sysfs_tarballs = \
- 2amd64-2n.tar.gz \
- 2ps3-2t.tar.gz \
- 4ia64-4s.tar.gz \
- 4ppc-4c.tar.gz \
- 8amd64-4n2c.tar.gz \
- 8em64t-4c2t.tar.gz \
- 8em64t-2s2ca2c.tar.gz \
- 8em64t-2s4c-heterogeneous.tar.gz \
- 8ia64-2n2s2d.tar.gz \
- 8ia64-4s2c.tar.gz \
- 16amd64-8n2c.tar.gz \
- 16amd64-8n2c-cpusets.tar.gz \
- 16amd64-8n2c-cpusets.xml.tar.gz \
- 16amd64-8n2c-cpusets_noadmin.tar.gz \
- 16em64t-4s2c2t.tar.gz \
- 16em64t-4s2c2t-offlines.tar.gz \
- 16em64t-4s2c2t-offlines.xml.tar.gz \
- 16em64t-4s2c2t-offlines_noadmin.tar.gz \
- 16em64t-4s2c2t_ncaches.tar.gz \
- 16em64t-4s2c2t_merge.tar.gz \
- 16em64t-4s2c2t.xml.tar.gz \
- 16em64t-2m4c2t.tar.gz \
- 16ia64-8n2s.tar.gz \
- 48amd64-4d2n6c.tar.gz \
- 64fake-4n2s2ca2c2t.tar.gz \
- 96em64t-4n4d3ca2co.tar.gz \
- 256ia64-64n2s2c.tar.gz \
- 4qs22-2s2t.tar.gz \
- 2s390-2c.tar.gz \
- 1alpha.tar.gz
+ 2amd64-2n.tar.bz2 \
+ 2ps3-2t.tar.bz2 \
+ 4ia64-4s.tar.bz2 \
+ 4ppc-4c.tar.bz2 \
+ 256ppc-8n8s4t.tar.bz2 \
+ 256ppc-8n8s4t-nocache.source \
+ 256ppc-8n8s4t-nosys.source \
+ 8amd64-4n2c.tar.bz2 \
+ 8em64t-4c2t.tar.bz2 \
+ 8em64t-2s2ca2c.tar.bz2 \
+ 8em64t-2s4c-heterogeneous.tar.bz2 \
+ 8ia64-2n2s2c.tar.bz2 \
+ 8ia64-2s2c2t.tar.bz2 \
+ 8ia64-4s2c.tar.bz2 \
+ 16amd64-8n2c.tar.bz2 \
+ 16amd64-8n2c-cpusets.tar.bz2 \
+ 16amd64-8n2c-cpusets.xml.source \
+ 16amd64-8n2c-cpusets_noadmin.source \
+ 16em64t-4s2c2t.tar.bz2 \
+ 16em64t-4s2c2t-offlines.tar.bz2 \
+ 16em64t-4s2c2t-offlines.xml.source \
+ 16em64t-4s2c2t-offlines_noadmin.source \
+ 16em64t-2m4c2t.tar.bz2 \
+ 16em64t-4s2c2t_merge.source \
+ 16em64t-4s2c2t_ncaches.source \
+ 16em64t-4s2c2t.xml.source \
+ 16ia64-8n2s.tar.bz2 \
+ 48amd64-4d2n6c-sparse.tar.bz2 \
+ 64fake-4n2s2ca2c2t.tar.bz2 \
+ 96em64t-4n4d3ca2co.tar.bz2 \
+ 128ia64-17n4s2c.tar.bz2 \
+ 256ia64-64n2s2c.tar.bz2 \
+ 4qs22-2s2t.tar.bz2 \
+ 2s390-2c.tar.bz2 \
+ 1alpha.tar.bz2
-# Each tarball `xyz.tar.gz' must have a corresponoing `xyz.tar.gz.output'
-# file showing the expected output of `lstopo - -v'.
-sysfs_outputs = \
- 2amd64-2n.tar.gz.output \
- 2ps3-2t.tar.gz.output \
- 4ia64-4s.tar.gz.output \
- 4ppc-4c.tar.gz.output \
- 8amd64-4n2c.tar.gz.output \
- 8em64t-4c2t.tar.gz.output \
- 8em64t-2s2ca2c.tar.gz.output \
- 8em64t-2s4c-heterogeneous.tar.gz.output \
- 8ia64-2n2s2d.tar.gz.output \
- 8ia64-4s2c.tar.gz.output \
- 16amd64-8n2c.tar.gz.output \
- 16amd64-8n2c-cpusets.tar.gz.output \
- 16amd64-8n2c-cpusets.xml.tar.gz.output 16amd64-8n2c-cpusets.xml.tar.gz.options \
- 16amd64-8n2c-cpusets_noadmin.tar.gz.output 16amd64-8n2c-cpusets_noadmin.tar.gz.options \
- 16em64t-4s2c2t.tar.gz.output \
- 16em64t-4s2c2t-offlines.tar.gz.output \
- 16em64t-4s2c2t-offlines.xml.tar.gz.output 16em64t-4s2c2t-offlines.xml.tar.gz.options \
- 16em64t-4s2c2t-offlines_noadmin.tar.gz.output 16em64t-4s2c2t-offlines_noadmin.tar.gz.options \
- 16em64t-4s2c2t_ncaches.tar.gz.output 16em64t-4s2c2t_ncaches.tar.gz.options \
- 16em64t-4s2c2t_merge.tar.gz.output 16em64t-4s2c2t_merge.tar.gz.options \
- 16em64t-4s2c2t.xml.tar.gz.output 16em64t-4s2c2t.xml.tar.gz.options \
- 16em64t-2m4c2t.tar.gz.output \
- 16ia64-8n2s.tar.gz.output \
- 48amd64-4d2n6c.tar.gz.output \
- 64fake-4n2s2ca2c2t.tar.gz.output \
- 96em64t-4n4d3ca2co.tar.gz.output \
- 256ia64-64n2s2c.tar.gz.output \
- 4qs22-2s2t.tar.gz.output \
- 2s390-2c.tar.gz.output \
- 1alpha.tar.gz.output
+# Each `xyz.output' may have a corresponding exclude `xyz.exclude'
+sysfs_excludes = \
+ 256ppc-8n8s4t-nocache.exclude \
+ 256ppc-8n8s4t-nosys.exclude
+# Each output `xyz.output' may have a corresponding `xyz.options'
+# file modifying the behavior of lstopo
+sysfs_options = \
+ 16amd64-8n2c-cpusets.xml.options \
+ 16amd64-8n2c-cpusets_noadmin.options \
+ 16em64t-4s2c2t-offlines.xml.options \
+ 16em64t-4s2c2t-offlines_noadmin.options \
+ 16em64t-4s2c2t_ncaches.options \
+ 16em64t-4s2c2t_merge.options \
+ 16em64t-4s2c2t.xml.options
+
if HWLOC_BUILD_TESTS
-if HWLOC_HAVE_LINUX
if HWLOC_HAVE_OPENAT
-TESTS = $(sysfs_tarballs)
+if HWLOC_HAVE_BUNZIPP
+TESTS = $(sysfs_outputs)
+endif HWLOC_HAVE_BUNZIPP
endif HWLOC_HAVE_OPENAT
-endif HWLOC_HAVE_LINUX
endif HWLOC_BUILD_TESTS
-EXTRA_DIST = $(sysfs_tarballs) $(sysfs_outputs)
+EXTRA_DIST = $(sysfs_outputs) $(sysfs_tarballs) $(sysfs_excludes) $(sysfs_options)
TESTS_ENVIRONMENT = $(builddir)/test-topology.sh
+
+
+bin_SCRIPTS = hwloc-gather-topology.sh
+
+install-exec-hook:
+ $(SED) -e 's/abs_top_builddir\/utils/bindir/' -e '/abs_top_builddir/d' -i $(DESTDIR)$(bindir)/hwloc-gather-topology.sh
+
+SUBDIRS = gather
Modified: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/README
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/README 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/README 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,16 +1,16 @@
-*- text -*-
This directory contains tarballs of Linux sysfs hierarchies collected on
-various systems. Each tarball `xyz.tar.gz' comes with the corresponding
-`xyz.tar.gz.output', which gives the expected output of "lstopo -v -"
-for that system.
+various systems. Each tarball `xyz.tar.bz2' comes with the corresponding
+`xyz.output', which gives the expected output of "lstopo -v -" for that
+system.
Together with the `HWLOC_FSROOT' environment variable, these are
used by `test-topologies.sh' to check for any regression introduced in
hwloc detection logic.
A new topology may be added by:
-* running "gather-topology.sh" on the target system and saving the
+* running "hwloc-gather-topology.sh" on the target system and saving the
tarball and output files here.
* if lstopo is not available on the target system, running "lstopo -v -"
on the extracted tarball to generate the corresponding `output' file
@@ -19,5 +19,17 @@
properly handled in "make check" and "make dist".
When adding a XML-based output, make sure that the filename of the
-tarball ends with .xml.tar.gz (so that test-topology may skip it
+tarball ends with .xml.tar.bz2 (so that test-topology may skip it
if XML support is disabled).
+
+If a `xyz.options' file is found, it will override the `lstopo' options
+(`-v -' by default) for generating the output `xyz.output'.
+
+If the output and tarball names do not match, it is possible to specify
+the actual tarball name in a `xyz.source' file.
+If some files should be excluded when extracting the tarball, they may
+be listed in a `xyz.exclude' file. For instance, to exclude `/sys/*/foo'
+from the saved topology, you should add `*/sys/foo' to `xyz.exclude'.
+These features are especially useful when the same tarball should be
+used for different tests with different configurations and thus different
+expected outputs, without having to save multiple copies of the tarball.
Added: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/gather/Makefile.am
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/gather/Makefile.am (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/gather/Makefile.am 2010-11-24 09:21:55 UTC (rev 7494)
@@ -0,0 +1,15 @@
+# Copyright © 2010 INRIA
+# Copyright © 2010 Cisco Systems, Inc. All rights reserved.
+# See COPYING in top-level directory.
+
+if HWLOC_BUILD_TESTS
+if HWLOC_HAVE_LINUX
+if HWLOC_HAVE_OPENAT
+if HWLOC_HAVE_BUNZIPP
+if HWLOC_HAVE_XML
+TESTS = test-gather-topology.sh
+endif HWLOC_HAVE_XML
+endif HWLOC_HAVE_BUNZIPP
+endif HWLOC_HAVE_OPENAT
+endif HWLOC_HAVE_LINUX
+endif HWLOC_BUILD_TESTS
Added: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/gather/test-gather-topology.sh.in
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/gather/test-gather-topology.sh.in (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/gather/test-gather-topology.sh.in 2010-11-24 09:21:55 UTC (rev 7494)
@@ -0,0 +1,77 @@
+#!/bin/sh
+#-*-sh-*-
+
+#
+# Copyright © 2010 INRIA
+# Copyright © 2010 Cisco Systems, Inc. All rights reserved.
+# See COPYING in top-level directory.
+#
+
+abs_top_builddir="@abs_top_builddir@"
+lstopo="$abs_top_builddir/utils/lstopo"
+gather="$abs_top_builddir/tests/linux/hwloc-gather-topology.sh"
+
+# Ensure we're running on linux. If not, then just exit with status
+# code 77 (the GNU standard for a skipped test)
+
+case `uname -a` in
+*[Ll]inux*) good=1 ;;
+*)
+ echo "Not running on linux; skipped"
+ exit 77 ;;
+esac
+
+error()
+{
+ echo $@ 2>&1
+}
+
+if [ ! -x "$lstopo" ]
+then
+ error "Could not find executable file \`$lstopo'."
+ exit 1
+fi
+if [ ! -x "$gather" ]
+then
+ error "Could not find executable script \`$gather'."
+ exit 1
+fi
+
+tmpdir=`mktemp -d`
+
+# make sure we compare things that are comparable
+# (the tarball cannot be "this system")
+export HWLOC_THISSYSTEM=0
+
+echo "Saving current system topology to XML..."
+if ! "$lstopo" "$tmpdir/save.xml" ; then
+ error "Failed"
+ exit 1
+fi
+
+echo "Saving current system topology to a tarball..."
+if ! "$gather" "$tmpdir/save" ; then
+ error "Failed"
+ exit 1
+fi
+
+echo "Extracting tarball..."
+if ! ( cd "$tmpdir" && tar xfj save.tar.bz2 ) ; then
+ error "Failed"
+ exit 1
+fi
+export HWLOC_FSROOT="$tmpdir/save"
+
+echo "Saving tarball topology to XML..."
+if ! "$lstopo" "$tmpdir/save2.xml" ; then
+ error "Failed"
+ exit 1
+fi
+
+echo "Comparing XML outputs..."
+( cd $tmpdir && diff -u save.xml save2.xml )
+result=$?
+
+rm -rf "$tmpdir"
+
+exit $result
Property changes on: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/gather/test-gather-topology.sh.in
___________________________________________________________________
Added: svn:executable
+ *
Deleted: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/gather-topology.sh.in
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/gather-topology.sh.in 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/gather-topology.sh.in 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,57 +0,0 @@
-#!/bin/sh
-#-*-sh-*-
-
-#
-# Copyright © 2009 CNRS, INRIA, Université Bordeaux 1
-# See COPYING in top-level directory.
-#
-
-abs_top_builddir="@abs_top_builddir@"
-lstopo="$abs_top_builddir/utils/lstopo"
-
-name="$1"; shift
-[ -z "$name" ] && echo "Save name needed as an argument" && exit -1
-
-destdir=`mktemp -d`
-
-# Get all files from the given path (either a file or a directory)
-# ignore errors since some files may be missing, and some may be
-# Restricted to root (but we don't need them).
-# Use cat so that we properly get proc/sys files even if their
-# file length is wrong
-savepath() {
- local dest="$1"
- local path="$2"
- find "$path" -type f 2>/dev/null | while read file ; do \
- mkdir -p "$dest/"`dirname $file` ; \
- cat "$file" > "$dest/$file" 2>/dev/null ; \
- done
-}
-
-# Gather the following list of files and directories
-cat << EOF | while read path ; do savepath "$destdir/$name" "$path" ; done
-/sys/devices/system/cpu/
-/sys/devices/system/node/
-/sys/class/dmi/id/
-/proc/cpuinfo
-/proc/meminfo
-/proc/stat
-EOF
-
-# Create the archive and keep the tree in /tmp for testing
-( cd "$destdir/" && tar cfz "$name.tar.gz" "$name" )
-mv "$destdir/$name.tar.gz" "./$name.tar.gz"
-echo "Hierarchy gathered in ./$name.tar.gz and kept in $destdir/$name/"
-
-# Generate the output as well
-if [ ! -x "$lstopo" ]
-then
- error "Could not find executable file \`$lstopo'."
- exit 1
-fi
-# we need "Topology not from this system" in the output so as to make test-topology.sh happy
-export HWLOC_THISSYSTEM=0
-"$lstopo" - -v > "./$name.tar.gz.output"
-echo "Expected topology output stored in ./$name.tar.gz.output"
-
-exit 0
Added: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/hwloc-gather-topology.sh.in
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/hwloc-gather-topology.sh.in (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/hwloc-gather-topology.sh.in 2010-11-24 09:21:55 UTC (rev 7494)
@@ -0,0 +1,87 @@
+#!/bin/sh
+#-*-sh-*-
+
+#
+# Copyright © 2009 CNRS
+# Copyright © 2009-2010 INRIA
+# Copyright © 2009-2010 Université Bordeaux 1
+# See COPYING in top-level directory.
+#
+
+abs_top_builddir="@abs_top_builddir@"
+prefix="@prefix@"
+exec_prefix="@exec_prefix@"
+bindir="@bindir@"
+# this will be changed into $bindir/lstopo during make install
+lstopo="$abs_top_builddir/utils/lstopo"
+
+error()
+{
+ echo $@ 2>&1
+}
+
+name="$1"; shift
+if [ -z "$name" ] ; then
+ echo "$0 <savepath>"
+ echo " Saves the Linux topology files (/sys, /proc, ...) under <savepath>.tar.bz2"
+ echo " and the corresponding lstopo verbose output under <savepath>.output"
+ exit -1
+fi
+basename=`basename "$name"`
+dirname=`dirname "$name"`
+
+if ! mkdir -p "$dirname" ; then
+ error "Failed to create directory $dirname."
+ exit 1
+fi
+
+destdir=`mktemp -d`
+
+# Get all files from the given path (either a file or a directory)
+# ignore errors since some files may be missing, and some may be
+# Restricted to root (but we don't need them).
+# Use cat so that we properly get proc/sys files even if their
+# file length is wrong
+savepath() {
+ local dest="$1"
+ local path="$2"
+ # gather all directories, including empty ones
+ find "$path" -type d 2>/dev/null | while read dir ; do \
+ mkdir -p "$dest/$dir" 2>/dev/null ; \
+ done
+ # gather all files now
+ find "$path" -type f 2>/dev/null | while read file ; do \
+ mkdir -p "$dest/"`dirname $file` ; \
+ cat "$file" > "$dest/$file" 2>/dev/null ; \
+ done
+}
+
+# Gather the following list of files and directories
+cat << EOF | while read path ; do savepath "$destdir/$basename" "$path" ; done
+/sys/devices/system/cpu/
+/sys/devices/system/node/
+/sys/class/dmi/id/
+/sys/kernel/mm/hugepages/
+/proc/cpuinfo
+/proc/meminfo
+/proc/stat
+/proc/device-tree/cpus
+EOF
+
+# Create the archive and keep the tree in /tmp for testing
+( cd "$destdir/" && tar cfj "$basename.tar.bz2" "$basename" )
+mv "$destdir/$basename.tar.bz2" "$dirname/$basename.tar.bz2"
+echo "Hierarchy gathered in $dirname/$basename.tar.bz2 and kept in $destdir/$basename/"
+
+# Generate the output as well
+if [ ! -x "$lstopo" ]
+then
+ error "Could not find lstopo executable in the install or build dir."
+ exit 1
+fi
+# we need "Topology not from this system" in the output so as to make test-topology.sh happy
+export HWLOC_THISSYSTEM=0
+"$lstopo" - -v > "$dirname/$basename.output"
+echo "Expected topology output stored in $dirname/$basename.output"
+
+exit 0
Property changes on: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/hwloc-gather-topology.sh.in
___________________________________________________________________
Added: svn:executable
+ *
Modified: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/test-topology.sh.in
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/test-topology.sh.in 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux/test-topology.sh.in 2010-11-24 09:21:55 UTC (rev 7494)
@@ -2,7 +2,9 @@
#-*-sh-*-
#
-# Copyright © 2009 CNRS, INRIA, Université Bordeaux 1
+# Copyright © 2009 CNRS
+# Copyright © 2009-2010 INRIA
+# Copyright © 2009-2010 Université Bordeaux 1
# Copyright © 2009 Cisco Systems, Inc. All rights reserved.
# See COPYING in top-level directory.
#
@@ -10,11 +12,11 @@
# Check the conformance of `lstopo' for all the Linux sysfs
# hierarchies available here. Return true on success.
-
+HWLOC_top_srcdir="@HWLOC_top_srcdir@"
HWLOC_top_builddir="@HWLOC_top_builddir@"
lstopo="$HWLOC_top_builddir/utils/lstopo"
-topology="$1"
+actual_output="$1"
error()
{
@@ -43,8 +45,18 @@
then
result=1
else
- diff -uBb "$expected_output" "$output"
- result=$?
+ if [ "$HWLOC_UPDATE_TEST_TOPOLOGY_OUTPUT" != 1 ]
+ then
+ diff -uBb "$expected_output" "$output"
+ result=$?
+ else
+ if ! diff "$expected_output" "$output" >/dev/null
+ then
+ cp -f "$output" "$expected_output"
+ echo "Updated $expected_output"
+ fi
+ result=0
+ fi
fi
rm "$output"
@@ -74,17 +86,33 @@
exit 1
fi
+topology="${actual_output%.output}"
+if [ "$topology" = "$actual_output" ] ;
+then
+ error "Input file \`$1' should end with .output"
+ exit 1
+fi
+actual_options="$topology".options
+
+# if there's a .source file, use the tarball name it contains instead of $topology
+if [ -f "$topology".source ] ; then
+ actual_source="$HWLOC_top_srcdir"/tests/linux/`cat "$topology".source`
+else
+ actual_source="$topology".tar.bz2
+fi
+
+actual_exclude="$HWLOC_top_srcdir/tests/linux/$topology".exclude
+[ -f "$actual_exclude" ] && tar_options="--exclude-from=$actual_exclude"
+
result=1
dir="`mktemp -d`"
-if ! ( gunzip -c "$topology" | ( cd "$dir" && tar xf - ) )
+if ! ( bunzip2 -c "$actual_source" | ( cd "$dir" && tar xf - $tar_options ) )
then
error "failed to extract topology \`$topology'"
else
actual_dir="`echo "$dir"/*`"
- actual_output="$topology".output
- actual_options="$topology".options
if test_eligible "$actual_dir" "$actual_output"
then
Modified: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux-libnuma.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux-libnuma.c 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/linux-libnuma.c 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,5 +1,7 @@
/*
- * Copyright © 2009 CNRS, INRIA, Université Bordeaux 1
+ * Copyright © 2009 CNRS
+ * Copyright © 2009-2010 INRIA
+ * Copyright © 2009-2010 Université Bordeaux 1
* See COPYING in top-level directory.
*/
@@ -14,94 +16,167 @@
int main(void)
{
hwloc_topology_t topology;
- hwloc_cpuset_t set, set2;
+ hwloc_bitmap_t set, set2, nocpunodeset;
hwloc_obj_t node;
struct bitmask *bitmask, *bitmask2;
nodemask_t nodemask, nodemask2;
unsigned long mask;
unsigned long maxnode;
+ int i;
hwloc_topology_init(&topology);
hwloc_topology_load(topology);
- /* convert full nodemask/bitmask to cpuset */
- set = hwloc_cpuset_alloc();
+ /* convert full stuff between cpuset and libnuma */
+ set = hwloc_bitmap_alloc();
+ nocpunodeset = hwloc_bitmap_alloc();
/* gather all nodes if any, or the whole system if no nodes */
if (hwloc_get_nbobjs_by_type(topology, HWLOC_OBJ_NODE)) {
node = NULL;
- while ((node = hwloc_get_next_obj_by_type(topology, HWLOC_OBJ_NODE, node)) != NULL)
- hwloc_cpuset_or(set, set, node->cpuset);
+ while ((node = hwloc_get_next_obj_by_type(topology, HWLOC_OBJ_NODE, node)) != NULL) {
+ hwloc_bitmap_or(set, set, node->cpuset);
+ if (hwloc_bitmap_iszero(node->cpuset))
+ hwloc_bitmap_set(nocpunodeset, node->os_index);
+ }
} else {
- hwloc_cpuset_or(set, set, hwloc_topology_get_complete_cpuset(topology));
+ hwloc_bitmap_or(set, set, hwloc_topology_get_complete_cpuset(topology));
}
- set2 = hwloc_cpuset_alloc();
+ set2 = hwloc_bitmap_alloc();
hwloc_cpuset_from_linux_libnuma_bitmask(topology, set2, numa_all_nodes_ptr);
- assert(hwloc_cpuset_isequal(set, set2));
- hwloc_cpuset_free(set2);
+ assert(hwloc_bitmap_isequal(set, set2));
+ hwloc_bitmap_free(set2);
- set2 = hwloc_cpuset_alloc();
+ set2 = hwloc_bitmap_alloc();
hwloc_cpuset_from_linux_libnuma_nodemask(topology, set2, &numa_all_nodes);
- assert(hwloc_cpuset_isequal(set, set2));
- hwloc_cpuset_free(set2);
+ assert(hwloc_bitmap_isequal(set, set2));
+ hwloc_bitmap_free(set2);
-
- /* convert full cpuset to nodemask/bitmask */
bitmask = hwloc_cpuset_to_linux_libnuma_bitmask(topology, set);
+ hwloc_bitmap_foreach_begin(i, nocpunodeset) { numa_bitmask_setbit(bitmask, i); } hwloc_bitmap_foreach_end();
assert(numa_bitmask_equal(bitmask, numa_all_nodes_ptr));
numa_bitmask_free(bitmask);
hwloc_cpuset_to_linux_libnuma_nodemask(topology, set, &nodemask);
+ hwloc_bitmap_foreach_begin(i, nocpunodeset) { nodemask_set(&nodemask, i); } hwloc_bitmap_foreach_end();
assert(!memcmp(&nodemask, &numa_all_nodes, sizeof(nodemask_t)));
- hwloc_cpuset_free(set);
- /* convert empty nodemask/bitmask to cpuset */
+ hwloc_bitmap_free(set);
+ hwloc_bitmap_free(nocpunodeset);
+
+ /* convert full stuff between nodeset and libnuma */
+ if (hwloc_get_nbobjs_by_type(topology, HWLOC_OBJ_NODE)) {
+ set = hwloc_bitmap_dup(hwloc_get_root_obj(topology)->complete_nodeset);
+ } else {
+ set = hwloc_bitmap_alloc();
+ hwloc_bitmap_fill(set);
+ }
+
+ set2 = hwloc_bitmap_alloc();
+ hwloc_nodeset_from_linux_libnuma_bitmask(topology, set2, numa_all_nodes_ptr);
+ assert(hwloc_bitmap_isequal(set, set2));
+ hwloc_bitmap_free(set2);
+
+ set2 = hwloc_bitmap_alloc();
+ hwloc_nodeset_from_linux_libnuma_nodemask(topology, set2, &numa_all_nodes);
+ assert(hwloc_bitmap_isequal(set, set2));
+ hwloc_bitmap_free(set2);
+
+ bitmask = hwloc_nodeset_to_linux_libnuma_bitmask(topology, set);
+ assert(numa_bitmask_equal(bitmask, numa_all_nodes_ptr));
+ numa_bitmask_free(bitmask);
+
+ hwloc_nodeset_to_linux_libnuma_nodemask(topology, set, &nodemask);
+ assert(!memcmp(&nodemask, &numa_all_nodes, sizeof(nodemask_t)));
+
+ hwloc_bitmap_free(set);
+
+ /* convert empty stuff between cpuset and libnuma */
nodemask_zero(&nodemask);
- set = hwloc_cpuset_alloc();
+ set = hwloc_bitmap_alloc();
hwloc_cpuset_from_linux_libnuma_nodemask(topology, set, &nodemask);
- assert(hwloc_cpuset_iszero(set));
- hwloc_cpuset_free(set);
+ assert(hwloc_bitmap_iszero(set));
+ hwloc_bitmap_free(set);
bitmask = numa_bitmask_alloc(1);
- set = hwloc_cpuset_alloc();
+ set = hwloc_bitmap_alloc();
hwloc_cpuset_from_linux_libnuma_bitmask(topology, set, bitmask);
numa_bitmask_free(bitmask);
- assert(hwloc_cpuset_iszero(set));
- hwloc_cpuset_free(set);
+ assert(hwloc_bitmap_iszero(set));
+ hwloc_bitmap_free(set);
mask=0;
- set = hwloc_cpuset_alloc();
+ set = hwloc_bitmap_alloc();
hwloc_cpuset_from_linux_libnuma_ulongs(topology, set, &mask, sizeof(mask)*8);
- assert(hwloc_cpuset_iszero(set));
- hwloc_cpuset_free(set);
+ assert(hwloc_bitmap_iszero(set));
+ hwloc_bitmap_free(set);
-
- /* convert empty nodemask/bitmask from cpuset */
- set = hwloc_cpuset_alloc();
+ set = hwloc_bitmap_alloc();
bitmask = hwloc_cpuset_to_linux_libnuma_bitmask(topology, set);
bitmask2 = numa_bitmask_alloc(1);
assert(numa_bitmask_equal(bitmask, bitmask2));
numa_bitmask_free(bitmask);
numa_bitmask_free(bitmask2);
- hwloc_cpuset_free(set);
+ hwloc_bitmap_free(set);
- set = hwloc_cpuset_alloc();
+ set = hwloc_bitmap_alloc();
hwloc_cpuset_to_linux_libnuma_nodemask(topology, set, &nodemask);
nodemask_zero(&nodemask2);
assert(nodemask_equal(&nodemask, &nodemask2));
- hwloc_cpuset_free(set);
+ hwloc_bitmap_free(set);
- set = hwloc_cpuset_alloc();
+ set = hwloc_bitmap_alloc();
maxnode = sizeof(mask)*8;
hwloc_cpuset_to_linux_libnuma_ulongs(topology, set, &mask, &maxnode);
assert(!mask);
assert(!maxnode);
- hwloc_cpuset_free(set);
+ hwloc_bitmap_free(set);
+ /* convert empty stuff between nodeset and libnuma */
+ nodemask_zero(&nodemask);
+ set = hwloc_bitmap_alloc();
+ hwloc_nodeset_from_linux_libnuma_nodemask(topology, set, &nodemask);
+ assert(hwloc_bitmap_iszero(set));
+ hwloc_bitmap_free(set);
- /* convert first node nodemask/bitmask from/to cpuset */
+ bitmask = numa_bitmask_alloc(1);
+ set = hwloc_bitmap_alloc();
+ hwloc_nodeset_from_linux_libnuma_bitmask(topology, set, bitmask);
+ numa_bitmask_free(bitmask);
+ assert(hwloc_bitmap_iszero(set));
+ hwloc_bitmap_free(set);
+
+ mask=0;
+ set = hwloc_bitmap_alloc();
+ hwloc_nodeset_from_linux_libnuma_ulongs(topology, set, &mask, sizeof(mask)*8);
+ assert(hwloc_bitmap_iszero(set));
+ hwloc_bitmap_free(set);
+
+ set = hwloc_bitmap_alloc();
+ bitmask = hwloc_nodeset_to_linux_libnuma_bitmask(topology, set);
+ bitmask2 = numa_bitmask_alloc(1);
+ assert(numa_bitmask_equal(bitmask, bitmask2));
+ numa_bitmask_free(bitmask);
+ numa_bitmask_free(bitmask2);
+ hwloc_bitmap_free(set);
+
+ set = hwloc_bitmap_alloc();
+ hwloc_nodeset_to_linux_libnuma_nodemask(topology, set, &nodemask);
+ nodemask_zero(&nodemask2);
+ assert(nodemask_equal(&nodemask, &nodemask2));
+ hwloc_bitmap_free(set);
+
+ set = hwloc_bitmap_alloc();
+ maxnode = sizeof(mask)*8;
+ hwloc_nodeset_to_linux_libnuma_ulongs(topology, set, &mask, &maxnode);
+ assert(!mask);
+ assert(!maxnode);
+ hwloc_bitmap_free(set);
+
+ /* convert first node between cpuset/nodeset and libnuma */
node = hwloc_get_next_obj_by_type(topology, HWLOC_OBJ_NODE, NULL);
if (node) {
+ /* convert first node between cpuset and libnuma */
hwloc_cpuset_to_linux_libnuma_nodemask(topology, node->cpuset, &nodemask);
assert(nodemask_isset(&nodemask, node->os_index));
nodemask_clr(&nodemask, node->os_index);
@@ -125,6 +200,81 @@
assert(maxnode = node->os_index + 1);
assert(mask == (1U<<node->os_index));
}
+
+ set = hwloc_bitmap_alloc();
+ nodemask_zero(&nodemask);
+ nodemask_set(&nodemask, node->os_index);
+ hwloc_cpuset_from_linux_libnuma_nodemask(topology, set, &nodemask);
+ assert(hwloc_bitmap_isequal(set, node->cpuset));
+ hwloc_bitmap_free(set);
+
+ set = hwloc_bitmap_alloc();
+ bitmask = numa_bitmask_alloc(1);
+ numa_bitmask_setbit(bitmask, 0);
+ hwloc_cpuset_from_linux_libnuma_bitmask(topology, set, bitmask);
+ numa_bitmask_free(bitmask);
+ assert(hwloc_bitmap_isequal(set, node->cpuset));
+ hwloc_bitmap_free(set);
+
+ set = hwloc_bitmap_alloc();
+ if (node->os_index >= sizeof(mask)*8) {
+ mask = 0;
+ } else {
+ mask = 1 << node->os_index;
+ }
+ hwloc_cpuset_from_linux_libnuma_ulongs(topology, set, &mask, 1);
+ assert(hwloc_bitmap_isequal(set, node->cpuset));
+ hwloc_bitmap_free(set);
+
+ /* convert first node between nodeset and libnuma */
+ hwloc_nodeset_to_linux_libnuma_nodemask(topology, node->nodeset, &nodemask);
+ assert(nodemask_isset(&nodemask, node->os_index));
+ nodemask_clr(&nodemask, node->os_index);
+ nodemask_zero(&nodemask2);
+ assert(nodemask_equal(&nodemask, &nodemask2));
+
+ bitmask = hwloc_nodeset_to_linux_libnuma_bitmask(topology, node->nodeset);
+ assert(numa_bitmask_isbitset(bitmask, node->os_index));
+ numa_bitmask_clearbit(bitmask, node->os_index);
+ bitmask2 = numa_bitmask_alloc(1);
+ assert(numa_bitmask_equal(bitmask, bitmask2));
+ numa_bitmask_free(bitmask);
+ numa_bitmask_free(bitmask2);
+
+ maxnode = sizeof(mask)*8;
+ hwloc_nodeset_to_linux_libnuma_ulongs(topology, node->nodeset, &mask, &maxnode);
+ if (node->os_index >= sizeof(mask)*8) {
+ assert(!maxnode);
+ assert(!mask);
+ } else {
+ assert(maxnode = node->os_index + 1);
+ assert(mask == (1U<<node->os_index));
+ }
+
+ set = hwloc_bitmap_alloc();
+ nodemask_zero(&nodemask);
+ nodemask_set(&nodemask, node->os_index);
+ hwloc_nodeset_from_linux_libnuma_nodemask(topology, set, &nodemask);
+ assert(hwloc_bitmap_isequal(set, node->nodeset));
+ hwloc_bitmap_free(set);
+
+ set = hwloc_bitmap_alloc();
+ bitmask = numa_bitmask_alloc(1);
+ numa_bitmask_setbit(bitmask, 0);
+ hwloc_nodeset_from_linux_libnuma_bitmask(topology, set, bitmask);
+ numa_bitmask_free(bitmask);
+ assert(hwloc_bitmap_isequal(set, node->nodeset));
+ hwloc_bitmap_free(set);
+
+ set = hwloc_bitmap_alloc();
+ if (node->os_index >= sizeof(mask)*8) {
+ mask = 0;
+ } else {
+ mask = 1 << node->os_index;
+ }
+ hwloc_nodeset_from_linux_libnuma_ulongs(topology, set, &mask, 1);
+ assert(hwloc_bitmap_isequal(set, node->nodeset));
+ hwloc_bitmap_free(set);
}
Added: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/myriexpress.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/myriexpress.c (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/myriexpress.c 2010-11-24 09:21:55 UTC (rev 7494)
@@ -0,0 +1,77 @@
+/*
+ * Copyright © 2010 INRIA
+ * See COPYING in top-level directory.
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <myriexpress.h>
+#include <hwloc.h>
+#include <hwloc/myriexpress.h>
+
+/* check the myriexpress helpers */
+
+int main(void)
+{
+ hwloc_topology_t topology;
+ mx_return_t ret;
+ unsigned i, count;
+ int err;
+
+ putenv("MX_ERRORS_ARE_FATAL=0");
+
+ ret = mx_init();
+ if (ret != MX_SUCCESS) {
+ fprintf(stderr, "mx_init failed, %s\n", mx_strerror(ret));
+ return 0;
+ }
+
+ mx_get_info(NULL, MX_NIC_COUNT, NULL, 0, &count, sizeof(count));
+ if (ret != MX_SUCCESS) {
+ fprintf(stderr, "mx_get_info MX_NIC_COUNT failed, %s\n", mx_strerror(ret));
+ return 0;
+ }
+
+ hwloc_topology_init(&topology);
+ hwloc_topology_load(topology);
+
+ for(i=0; i<count; i++) {
+ mx_endpoint_t ep;
+ char *cpuset_string;
+ hwloc_bitmap_t set;
+
+ ret = mx_open_endpoint(i, MX_ANY_ENDPOINT, 0, NULL, 0, &ep);
+ if (ret != MX_SUCCESS)
+ continue;
+ set = hwloc_bitmap_alloc();
+ err = hwloc_mx_endpoint_get_device_cpuset(topology, ep, set);
+ if (err < 0) {
+ perror("hwloc_mx_endpoint_get_device_cpuset failed");
+ return -1;
+ }
+ hwloc_bitmap_asprintf(&cpuset_string, set);
+ printf("got cpuset %s for endpoint on board #%d\n",
+ cpuset_string, i);
+ free(cpuset_string);
+ hwloc_bitmap_free(set);
+ mx_close_endpoint(ep);
+
+ set = hwloc_bitmap_alloc();
+ err = hwloc_mx_board_get_device_cpuset(topology, i, set);
+ if (err < 0) {
+ perror("hwloc_mx_board_get_device_cpuset failed");
+ return -1;
+ }
+ hwloc_bitmap_asprintf(&cpuset_string, set);
+ printf("got cpuset %s for board #%d\n",
+ cpuset_string, i);
+ free(cpuset_string);
+ hwloc_bitmap_free(set);
+ }
+
+ hwloc_topology_destroy(topology);
+
+ mx_finalize();
+
+ return 0;
+}
Modified: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/openfabrics-verbs.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/openfabrics-verbs.c 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/openfabrics-verbs.c 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,5 +1,7 @@
/*
- * Copyright © 2009 CNRS, INRIA, Université Bordeaux 1
+ * Copyright © 2009 CNRS
+ * Copyright © 2009-2010 INRIA
+ * Copyright © 2009-2010 Université Bordeaux 1
* Copyright © 2009 Cisco Systems, Inc. All rights reserved.
* See COPYING in top-level directory.
*/
@@ -18,6 +20,7 @@
hwloc_topology_t topology;
struct ibv_device **dev_list, *dev;
int count, i;
+ int err;
dev_list = ibv_get_device_list(&count);
if (!dev_list) {
@@ -30,22 +33,22 @@
hwloc_topology_load(topology);
for(i=0; i<count; i++) {
- hwloc_cpuset_t set;
+ hwloc_bitmap_t set;
dev = dev_list[i];
- set = hwloc_cpuset_alloc();
- hwloc_ibv_get_device_cpuset(topology, dev, set);
- if (!set) {
+ set = hwloc_bitmap_alloc();
+ err = hwloc_ibv_get_device_cpuset(topology, dev, set);
+ if (err < 0) {
printf("failed to get cpuset for device %d (%s)\n",
i, ibv_get_device_name(dev));
} else {
char *cpuset_string = NULL;
- hwloc_cpuset_asprintf(&cpuset_string, set);
+ hwloc_bitmap_asprintf(&cpuset_string, set);
printf("got cpuset %s for device %d (%s)\n",
cpuset_string, i, ibv_get_device_name(dev));
free(cpuset_string);
- hwloc_cpuset_free(set);
}
+ hwloc_bitmap_free(set);
}
hwloc_topology_destroy(topology);
Modified: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/ports/Makefile.am
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/ports/Makefile.am 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/ports/Makefile.am 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,4 +1,5 @@
-# Copyright 2009 INRIA, Université Bordeaux 1
+# Copyright © 2009-2010 INRIA
+# Copyright © 2009 Université Bordeaux 1
# Copyright © 2009-2010 Cisco Systems, Inc. All rights reserved.
AM_CFLAGS = $(HWLOC_CFLAGS)
@@ -53,7 +54,7 @@
-I$(HWLOC_top_srcdir)/include \
-I$(HWLOC_top_srcdir)/tests/ports/include \
-DHWLOC_COMPILE_PORTS \
- -DHWLOC_SOLARIS_SYS -DHAVE_LIBLGRP -DHAVE_LIBKSTAT \
+ -DHWLOC_SOLARIS_SYS -DHAVE_LIBLGRP -DHAVE_LIBKSTAT -DHAVE_LGRP_LATENCY_COOKIE \
-DHWLOC_AIX_SYS \
-DHWLOC_OSF_SYS \
-DHWLOC_WIN_SYS \
Modified: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/ports/include/cpuset.h
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/ports/include/cpuset.h 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/ports/include/cpuset.h 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,5 +1,6 @@
/*
- * Copyright © 2009 CNRS, INRIA, Université Bordeaux 1
+ * Copyright © 2009 INRIA
+ * Copyright © 2009 Université Bordeaux 1
* See COPYING in top-level directory.
*/
Modified: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/ports/include/kstat.h
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/ports/include/kstat.h 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/ports/include/kstat.h 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,5 +1,6 @@
/*
- * Copyright © 2009 CNRS, INRIA, Université Bordeaux 1
+ * Copyright © 2009 INRIA
+ * Copyright © 2009 Université Bordeaux 1
* See COPYING in top-level directory.
*/
Modified: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/ports/include/numa.h
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/ports/include/numa.h 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/ports/include/numa.h 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,5 +1,6 @@
/*
- * Copyright © 2009 CNRS, INRIA, Université Bordeaux 1
+ * Copyright © 2009 INRIA
+ * Copyright © 2009-2010 Université Bordeaux 1
* See COPYING in top-level directory.
*/
@@ -14,4 +15,15 @@
int rad_get_cpus(radid_t rad, cpuset_t cpuset);
ssize_t rad_get_physmem(radid_t rad);
+typedef struct {
+ unsigned long mattr_policy;
+ radid_t mattr_rad;
+ radset_t mattr_radset;
+} memalloc_attr_t;
+
+void *nmmap(void *addr, size_t len, int prot, unsigned long flags, int filedes, off_t off, memalloc_attr_t *attr );
+int nmadvise(const void *addr, long len, int behavior, memalloc_attr_t *attr);
+
+
+
#endif /* HWLOC_PORT_NUMA_H */
Modified: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/ports/include/pthread_np.h
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/ports/include/pthread_np.h 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/ports/include/pthread_np.h 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,5 +1,5 @@
/*
- * Copyright © 2009 CNRS, INRIA, Université Bordeaux 1
+ * Copyright © 2009 Université Bordeaux 1
* See COPYING in top-level directory.
*/
Modified: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/ports/include/radset.h
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/ports/include/radset.h 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/ports/include/radset.h 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,5 +1,6 @@
/*
- * Copyright © 2009 CNRS, INRIA, Université Bordeaux 1
+ * Copyright © 2009-2010 INRIA
+ * Copyright © 2009 Université Bordeaux 1
* See COPYING in top-level directory.
*/
@@ -72,6 +73,9 @@
} memalloc_policy_t;
#define MPOL_NO_MIGRATE 0x100
+#define MADV_CURRENT 1
+#define MADV_INSIST 2
+
int nloc(numa_attr_t *numa_attr, radset_t radset);
#endif /* HWLOC_PORT_RADSET_H */
Modified: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/ports/include/sys/cpuset.h
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/ports/include/sys/cpuset.h 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/ports/include/sys/cpuset.h 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,5 +1,5 @@
/*
- * Copyright © 2009 CNRS, INRIA, Université Bordeaux 1
+ * Copyright © 2009 Université Bordeaux 1
* See COPYING in top-level directory.
*/
Modified: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/ports/include/sys/lgrp_user.h
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/ports/include/sys/lgrp_user.h 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/ports/include/sys/lgrp_user.h 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,5 +1,6 @@
/*
- * Copyright © 2009 CNRS, INRIA, Université Bordeaux 1
+ * Copyright © 2009 INRIA
+ * Copyright © 2009-2010 Université Bordeaux 1
* See COPYING in top-level directory.
*/
@@ -33,6 +34,12 @@
LGRP_LAT_CPU_TO_MEM
} lgrp_lat_between_t;
+typedef enum lgrp_affinity {
+ LGRP_AFF_NONE,
+ LGRP_AFF_WEAK,
+ LGRP_AFF_STRONG,
+} lgrp_affinity_t;
+
lgrp_cookie_t lgrp_init(lgrp_view_t view);
int lgrp_nlgrps(lgrp_cookie_t cookie);
@@ -41,7 +48,14 @@
int lgrp_children(lgrp_cookie_t cookie, lgrp_id_t parent, lgrp_id_t *lgrp_array, unsigned int lgrp_array_size);
lgrp_mem_size_t lgrp_mem_size(lgrp_cookie_t cookie, lgrp_id_t lgrp, lgrp_mem_size_flag_t type, lgrp_content_t content);
int lgrp_latency_cookie(lgrp_cookie_t cookie, lgrp_id_t from, lgrp_id_t to, lgrp_lat_between_t between);
+int lgrp_affinity_set(idtype_t idtype, id_t id, lgrp_id_t lgrp, lgrp_affinity_t aff);
+lgrp_affinity_t lgrp_affinity_get(idtype_t idtype, id_t id, lgrp_id_t lgrp);
int lgrp_fini(lgrp_cookie_t cookie);
+/* Should actually be in sys/mman.h, but don't want to interfere with the system one */
+#define MADV_ACCESS_DEFAULT 6
+#define MADV_ACCESS_LWP 7
+#define MADV_ACCESS_MANY 8
+
#endif /* HWLOC_PORT_SYS_LGRP_USER_H */
Modified: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/ports/include/sys/mpctl.h
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/ports/include/sys/mpctl.h 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/ports/include/sys/mpctl.h 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,5 +1,6 @@
/*
- * Copyright © 2009 CNRS, INRIA, Université Bordeaux 1
+ * Copyright © 2009 INRIA
+ * Copyright © 2009 Université Bordeaux 1
* See COPYING in top-level directory.
*/
Modified: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/ports/include/sys/processor.h
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/ports/include/sys/processor.h 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/ports/include/sys/processor.h 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,5 +1,6 @@
/*
- * Copyright © 2009 CNRS, INRIA, Université Bordeaux 1
+ * Copyright © 2009 INRIA
+ * Copyright © 2009 Université Bordeaux 1
* See COPYING in top-level directory.
*/
Modified: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/ports/include/sys/procset.h
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/ports/include/sys/procset.h 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/ports/include/sys/procset.h 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,5 +1,6 @@
/*
- * Copyright © 2009 CNRS, INRIA, Université Bordeaux 1
+ * Copyright © 2009 INRIA
+ * Copyright © 2009 Université Bordeaux 1
* See COPYING in top-level directory.
*/
Modified: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/ports/include/sys/rset.h
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/ports/include/sys/rset.h 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/ports/include/sys/rset.h 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,5 +1,6 @@
/*
- * Copyright © 2009 CNRS, INRIA, Université Bordeaux 1
+ * Copyright © 2009 INRIA
+ * Copyright © 2009-2010 Université Bordeaux 1
* See COPYING in top-level directory.
*/
@@ -10,13 +11,26 @@
#include "thread.h"
+typedef unsigned int uint_t;
typedef void *rsethandle_t;
#define RS_EMPTY 3
#define RS_ALL 2
#define RS_PARTITION 3
+#define RS_UNION 1
+#define RS_INTERSECTION 2
+#define RS_EXCLUSION 3
+#define RS_COPY 4
+#define RS_FIRST 5
+#define RS_NEXT 6
+#define RS_NEXT_WRAP 7
+#define RS_ISEMPTY 8
+#define RS_ISEQUAL 9
+#define RS_ISCONTAINED 10
#define RS_TESTRESOURCE 11
+#define RS_ADDRESOURCE 12
+#define RS_DELRESOURCE 13
typedef int rsinfo_t;
#define R_NUMPROCS 0
@@ -37,6 +51,10 @@
#define R_FILDES 5
#define R_THREAD 6
+#define P_DEFAULT 0
+#define P_FIRST_TOUCH 1
+#define P_BALANCED 2 /* This is the default */
+
rsethandle_t rs_alloc (unsigned int flags);
int rs_numrads(rsethandle_t rset, unsigned int sdl, unsigned int flags);
int rs_getrad (rsethandle_t rset, rsethandle_t rad, unsigned int sdl, unsigned int index, unsigned int flags);
@@ -70,4 +88,7 @@
int ra_detachrset (rstype_t rstype, rsid_t rsid, unsigned int flags);
int ra_getrset (rstype_t rstype, rsid_t rsid, unsigned int flags, rsethandle_t rset);
+void * ra_mmap(void *addr, off64_t len, int prot, int flags, int fildes, off64_t off, rstype_t rstype, rsid_t rsid, unsigned int att_flags);
+
+
#endif /* HWLOC_PORT_SYS_RSET_H */
Modified: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/ports/include/sys/sysctl.h
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/ports/include/sys/sysctl.h 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/ports/include/sys/sysctl.h 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,5 +1,6 @@
/*
- * Copyright © 2009 CNRS, INRIA, Université Bordeaux 1
+ * Copyright © 2009 INRIA
+ * Copyright © 2009 Université Bordeaux 1
* See COPYING in top-level directory.
*/
Modified: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/ports/include/sys/thread.h
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/ports/include/sys/thread.h 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/ports/include/sys/thread.h 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,5 +1,6 @@
/*
- * Copyright © 2009 CNRS, INRIA, Université Bordeaux 1
+ * Copyright © 2009 INRIA
+ * Copyright © 2009 Université Bordeaux 1
* See COPYING in top-level directory.
*/
Modified: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/ports/include/windows.h
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/ports/include/windows.h 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/ports/include/windows.h 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,5 +1,6 @@
/*
- * Copyright © 2009 CNRS, INRIA, Université Bordeaux 1
+ * Copyright © 2009 INRIA
+ * Copyright © 2009-2010 Université Bordeaux 1
* See COPYING in top-level directory.
*/
@@ -20,7 +21,8 @@
typedef unsigned long ULONG_PTR, DWORD_PTR, DWORD, *PDWORD, *PDWORD_PTR;
typedef const char *LPCSTR;
typedef int (*FARPROC)();
-typedef void *PVOID;
+typedef void *PVOID,*LPVOID;
+typedef ULONG_PTR SIZE_T;
// This is to cope with linux using integers for hwloc_pid_t and hwloc_thread_t
//typedef PVOID HANDLE;
@@ -40,6 +42,12 @@
#define ERROR_INSUFFICIENT_BUFFER 122L
+#define MEM_COMMIT 0x1000
+#define MEM_RESERVE 0x2000
+#define MEM_RELEASE 0x8000
+
+#define PAGE_EXECUTE_READWRITE 0x0040
+
WINAPI HINSTANCE LoadLibrary(LPCSTR);
WINAPI void *GetProcAddress(HINSTANCE, LPCSTR);
WINAPI DWORD GetLastError(void);
@@ -51,6 +59,8 @@
HANDLE WINAPI GetCurrentThread(void);
HANDLE WINAPI GetCurrentProcess(void);
+PVOID WINAPI VirtualAlloc(PVOID,DWORD,DWORD,DWORD);
+
BOOL GetNumaAvailableMemoryNode(UCHAR Node, PULONGLONG AvailableBytes);
Modified: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/xml/16amd64-8n2c-cpusets.xml
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/xml/16amd64-8n2c-cpusets.xml 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/xml/16amd64-8n2c-cpusets.xml 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,18 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE topology SYSTEM "hwloc.dtd">
<topology>
- <object type="Machine" os_level="-1" os_index="0" cpuset="0x0000f06f" complete_cpuset="0x0000ffff" online_cpuset="0x0000ffef" allowed_cpuset="0x0000f07f" nodeset="0x000000ff" complete_nodeset="0x000000ff" allowed_nodeset="0x0000003e" dmi_board_vendor="TYAN Computer Corp" dmi_board_name="S4881 ">
+ <object type="Machine" os_level="-1" os_index="0" cpuset="0x0000f06f" complete_cpuset="0x0000ffff" online_cpuset="0x0000ffef" allowed_cpuset="0x0000f07f" nodeset="0x000000ff" complete_nodeset="0x000000ff" allowed_nodeset="0x0000003e">
+ <info name="DMIBoardVendor" value="TYAN Computer Corp"/>
+ <info name="DMIBoardName" value="S4881 "/>
<object type="NUMANode" os_level="-1" os_index="0" cpuset="0x00000003" complete_cpuset="0x00000003" online_cpuset="0x00000003" allowed_cpuset="0x00000003" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x0">
<object type="Socket" os_level="-1" os_index="0" cpuset="0x00000003" complete_cpuset="0x00000003" online_cpuset="0x00000003" allowed_cpuset="0x00000003" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x0">
- <object type="Cache" os_level="-1" cpuset="0x00000001" complete_cpuset="0x00000001" online_cpuset="0x00000001" allowed_cpuset="0x00000001" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x0" cache_size="1048576" depth="2">
- <object type="Cache" os_level="-1" cpuset="0x00000001" complete_cpuset="0x00000001" online_cpuset="0x00000001" allowed_cpuset="0x00000001" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x0" cache_size="65536" depth="1">
+ <object type="Cache" os_level="-1" cpuset="0x00000001" complete_cpuset="0x00000001" online_cpuset="0x00000001" allowed_cpuset="0x00000001" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x0" cache_size="1048576" depth="2" cache_linesize="0">
+ <object type="Cache" os_level="-1" cpuset="0x00000001" complete_cpuset="0x00000001" online_cpuset="0x00000001" allowed_cpuset="0x00000001" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x0" cache_size="65536" depth="1" cache_linesize="0">
<object type="Core" os_level="-1" os_index="0" cpuset="0x00000001" complete_cpuset="0x00000001" online_cpuset="0x00000001" allowed_cpuset="0x00000001" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x0">
<object type="PU" os_level="-1" os_index="0" cpuset="0x00000001" complete_cpuset="0x00000001" online_cpuset="0x00000001" allowed_cpuset="0x00000001" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x0"/>
</object>
</object>
</object>
- <object type="Cache" os_level="-1" cpuset="0x00000002" complete_cpuset="0x00000002" online_cpuset="0x00000002" allowed_cpuset="0x00000002" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x0" cache_size="1048576" depth="2">
- <object type="Cache" os_level="-1" cpuset="0x00000002" complete_cpuset="0x00000002" online_cpuset="0x00000002" allowed_cpuset="0x00000002" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x0" cache_size="65536" depth="1">
+ <object type="Cache" os_level="-1" cpuset="0x00000002" complete_cpuset="0x00000002" online_cpuset="0x00000002" allowed_cpuset="0x00000002" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x0" cache_size="1048576" depth="2" cache_linesize="0">
+ <object type="Cache" os_level="-1" cpuset="0x00000002" complete_cpuset="0x00000002" online_cpuset="0x00000002" allowed_cpuset="0x00000002" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x0" cache_size="65536" depth="1" cache_linesize="0">
<object type="Core" os_level="-1" os_index="1" cpuset="0x00000002" complete_cpuset="0x00000002" online_cpuset="0x00000002" allowed_cpuset="0x00000002" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x0">
<object type="PU" os_level="-1" os_index="1" cpuset="0x00000002" complete_cpuset="0x00000002" online_cpuset="0x00000002" allowed_cpuset="0x00000002" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x0"/>
</object>
@@ -22,15 +24,15 @@
</object>
<object type="NUMANode" os_level="-1" os_index="1" cpuset="0x0000000c" complete_cpuset="0x0000000c" online_cpuset="0x0000000c" allowed_cpuset="0x0000000c" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" local_memory="8589934592">
<object type="Socket" os_level="-1" os_index="1" cpuset="0x0000000c" complete_cpuset="0x0000000c" online_cpuset="0x0000000c" allowed_cpuset="0x0000000c" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002">
- <object type="Cache" os_level="-1" cpuset="0x00000004" complete_cpuset="0x00000004" online_cpuset="0x00000004" allowed_cpuset="0x00000004" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="1048576" depth="2">
- <object type="Cache" os_level="-1" cpuset="0x00000004" complete_cpuset="0x00000004" online_cpuset="0x00000004" allowed_cpuset="0x00000004" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="65536" depth="1">
+ <object type="Cache" os_level="-1" cpuset="0x00000004" complete_cpuset="0x00000004" online_cpuset="0x00000004" allowed_cpuset="0x00000004" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="1048576" depth="2" cache_linesize="0">
+ <object type="Cache" os_level="-1" cpuset="0x00000004" complete_cpuset="0x00000004" online_cpuset="0x00000004" allowed_cpuset="0x00000004" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="65536" depth="1" cache_linesize="0">
<object type="Core" os_level="-1" os_index="0" cpuset="0x00000004" complete_cpuset="0x00000004" online_cpuset="0x00000004" allowed_cpuset="0x00000004" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002">
<object type="PU" os_level="-1" os_index="2" cpuset="0x00000004" complete_cpuset="0x00000004" online_cpuset="0x00000004" allowed_cpuset="0x00000004" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
</object>
</object>
</object>
- <object type="Cache" os_level="-1" cpuset="0x00000008" complete_cpuset="0x00000008" online_cpuset="0x00000008" allowed_cpuset="0x00000008" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="1048576" depth="2">
- <object type="Cache" os_level="-1" cpuset="0x00000008" complete_cpuset="0x00000008" online_cpuset="0x00000008" allowed_cpuset="0x00000008" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="65536" depth="1">
+ <object type="Cache" os_level="-1" cpuset="0x00000008" complete_cpuset="0x00000008" online_cpuset="0x00000008" allowed_cpuset="0x00000008" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="1048576" depth="2" cache_linesize="0">
+ <object type="Cache" os_level="-1" cpuset="0x00000008" complete_cpuset="0x00000008" online_cpuset="0x00000008" allowed_cpuset="0x00000008" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="65536" depth="1" cache_linesize="0">
<object type="Core" os_level="-1" os_index="1" cpuset="0x00000008" complete_cpuset="0x00000008" online_cpuset="0x00000008" allowed_cpuset="0x00000008" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002">
<object type="PU" os_level="-1" os_index="3" cpuset="0x00000008" complete_cpuset="0x00000008" online_cpuset="0x00000008" allowed_cpuset="0x00000008" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
</object>
@@ -40,8 +42,8 @@
</object>
<object type="NUMANode" os_level="-1" os_index="2" cpuset="0x00000020" complete_cpuset="0x00000030" online_cpuset="0x00000020" allowed_cpuset="0x00000030" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004" local_memory="8589934592">
<object type="Socket" os_level="-1" os_index="2" cpuset="0x00000020" complete_cpuset="0x00000030" online_cpuset="0x00000020" allowed_cpuset="0x00000030" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004">
- <object type="Cache" os_level="-1" cpuset="0x00000020" complete_cpuset="0x00000020" online_cpuset="0x00000020" allowed_cpuset="0x00000020" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004" cache_size="1048576" depth="2">
- <object type="Cache" os_level="-1" cpuset="0x00000020" complete_cpuset="0x00000020" online_cpuset="0x00000020" allowed_cpuset="0x00000020" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004" cache_size="65536" depth="1">
+ <object type="Cache" os_level="-1" cpuset="0x00000020" complete_cpuset="0x00000020" online_cpuset="0x00000020" allowed_cpuset="0x00000020" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004" cache_size="1048576" depth="2" cache_linesize="0">
+ <object type="Cache" os_level="-1" cpuset="0x00000020" complete_cpuset="0x00000020" online_cpuset="0x00000020" allowed_cpuset="0x00000020" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004" cache_size="65536" depth="1" cache_linesize="0">
<object type="Core" os_level="-1" os_index="1" cpuset="0x00000020" complete_cpuset="0x00000020" online_cpuset="0x00000020" allowed_cpuset="0x00000020" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004">
<object type="PU" os_level="-1" os_index="5" cpuset="0x00000020" complete_cpuset="0x00000020" online_cpuset="0x00000020" allowed_cpuset="0x00000020" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004"/>
</object>
@@ -51,8 +53,8 @@
</object>
<object type="NUMANode" os_level="-1" os_index="3" cpuset="0x00000040" complete_cpuset="0x000000c0" online_cpuset="0x000000c0" allowed_cpuset="0x00000040" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008" local_memory="8589934592">
<object type="Socket" os_level="-1" os_index="3" cpuset="0x00000040" complete_cpuset="0x000000c0" online_cpuset="0x000000c0" allowed_cpuset="0x00000040" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008">
- <object type="Cache" os_level="-1" cpuset="0x00000040" complete_cpuset="0x00000040" online_cpuset="0x00000040" allowed_cpuset="0x00000040" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008" cache_size="1048576" depth="2">
- <object type="Cache" os_level="-1" cpuset="0x00000040" complete_cpuset="0x00000040" online_cpuset="0x00000040" allowed_cpuset="0x00000040" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008" cache_size="65536" depth="1">
+ <object type="Cache" os_level="-1" cpuset="0x00000040" complete_cpuset="0x00000040" online_cpuset="0x00000040" allowed_cpuset="0x00000040" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008" cache_size="1048576" depth="2" cache_linesize="0">
+ <object type="Cache" os_level="-1" cpuset="0x00000040" complete_cpuset="0x00000040" online_cpuset="0x00000040" allowed_cpuset="0x00000040" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008" cache_size="65536" depth="1" cache_linesize="0">
<object type="Core" os_level="-1" os_index="0" cpuset="0x00000040" complete_cpuset="0x00000040" online_cpuset="0x00000040" allowed_cpuset="0x00000040" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008">
<object type="PU" os_level="-1" os_index="6" cpuset="0x00000040" complete_cpuset="0x00000040" online_cpuset="0x00000040" allowed_cpuset="0x00000040" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008"/>
</object>
@@ -64,15 +66,15 @@
<object type="NUMANode" os_level="-1" os_index="5" cpuset="0x0" complete_cpuset="0x00000c00" online_cpuset="0x00000c00" allowed_cpuset="0x0" nodeset="0x00000020" complete_nodeset="0x00000020" allowed_nodeset="0x00000020" local_memory="8589934592"/>
<object type="NUMANode" os_level="-1" os_index="6" cpuset="0x00003000" complete_cpuset="0x00003000" online_cpuset="0x00003000" allowed_cpuset="0x00003000" nodeset="0x00000040" complete_nodeset="0x00000040" allowed_nodeset="0x0">
<object type="Socket" os_level="-1" os_index="6" cpuset="0x00003000" complete_cpuset="0x00003000" online_cpuset="0x00003000" allowed_cpuset="0x00003000" nodeset="0x00000040" complete_nodeset="0x00000040" allowed_nodeset="0x0">
- <object type="Cache" os_level="-1" cpuset="0x00001000" complete_cpuset="0x00001000" online_cpuset="0x00001000" allowed_cpuset="0x00001000" nodeset="0x00000040" complete_nodeset="0x00000040" allowed_nodeset="0x0" cache_size="1048576" depth="2">
- <object type="Cache" os_level="-1" cpuset="0x00001000" complete_cpuset="0x00001000" online_cpuset="0x00001000" allowed_cpuset="0x00001000" nodeset="0x00000040" complete_nodeset="0x00000040" allowed_nodeset="0x0" cache_size="65536" depth="1">
+ <object type="Cache" os_level="-1" cpuset="0x00001000" complete_cpuset="0x00001000" online_cpuset="0x00001000" allowed_cpuset="0x00001000" nodeset="0x00000040" complete_nodeset="0x00000040" allowed_nodeset="0x0" cache_size="1048576" depth="2" cache_linesize="0">
+ <object type="Cache" os_level="-1" cpuset="0x00001000" complete_cpuset="0x00001000" online_cpuset="0x00001000" allowed_cpuset="0x00001000" nodeset="0x00000040" complete_nodeset="0x00000040" allowed_nodeset="0x0" cache_size="65536" depth="1" cache_linesize="0">
<object type="Core" os_level="-1" os_index="0" cpuset="0x00001000" complete_cpuset="0x00001000" online_cpuset="0x00001000" allowed_cpuset="0x00001000" nodeset="0x00000040" complete_nodeset="0x00000040" allowed_nodeset="0x0">
<object type="PU" os_level="-1" os_index="12" cpuset="0x00001000" complete_cpuset="0x00001000" online_cpuset="0x00001000" allowed_cpuset="0x00001000" nodeset="0x00000040" complete_nodeset="0x00000040" allowed_nodeset="0x0"/>
</object>
</object>
</object>
- <object type="Cache" os_level="-1" cpuset="0x00002000" complete_cpuset="0x00002000" online_cpuset="0x00002000" allowed_cpuset="0x00002000" nodeset="0x00000040" complete_nodeset="0x00000040" allowed_nodeset="0x0" cache_size="1048576" depth="2">
- <object type="Cache" os_level="-1" cpuset="0x00002000" complete_cpuset="0x00002000" online_cpuset="0x00002000" allowed_cpuset="0x00002000" nodeset="0x00000040" complete_nodeset="0x00000040" allowed_nodeset="0x0" cache_size="65536" depth="1">
+ <object type="Cache" os_level="-1" cpuset="0x00002000" complete_cpuset="0x00002000" online_cpuset="0x00002000" allowed_cpuset="0x00002000" nodeset="0x00000040" complete_nodeset="0x00000040" allowed_nodeset="0x0" cache_size="1048576" depth="2" cache_linesize="0">
+ <object type="Cache" os_level="-1" cpuset="0x00002000" complete_cpuset="0x00002000" online_cpuset="0x00002000" allowed_cpuset="0x00002000" nodeset="0x00000040" complete_nodeset="0x00000040" allowed_nodeset="0x0" cache_size="65536" depth="1" cache_linesize="0">
<object type="Core" os_level="-1" os_index="1" cpuset="0x00002000" complete_cpuset="0x00002000" online_cpuset="0x00002000" allowed_cpuset="0x00002000" nodeset="0x00000040" complete_nodeset="0x00000040" allowed_nodeset="0x0">
<object type="PU" os_level="-1" os_index="13" cpuset="0x00002000" complete_cpuset="0x00002000" online_cpuset="0x00002000" allowed_cpuset="0x00002000" nodeset="0x00000040" complete_nodeset="0x00000040" allowed_nodeset="0x0"/>
</object>
@@ -82,15 +84,15 @@
</object>
<object type="NUMANode" os_level="-1" os_index="7" cpuset="0x0000c000" complete_cpuset="0x0000c000" online_cpuset="0x0000c000" allowed_cpuset="0x0000c000" nodeset="0x00000080" complete_nodeset="0x00000080" allowed_nodeset="0x0">
<object type="Socket" os_level="-1" os_index="7" cpuset="0x0000c000" complete_cpuset="0x0000c000" online_cpuset="0x0000c000" allowed_cpuset="0x0000c000" nodeset="0x00000080" complete_nodeset="0x00000080" allowed_nodeset="0x0">
- <object type="Cache" os_level="-1" cpuset="0x00004000" complete_cpuset="0x00004000" online_cpuset="0x00004000" allowed_cpuset="0x00004000" nodeset="0x00000080" complete_nodeset="0x00000080" allowed_nodeset="0x0" cache_size="1048576" depth="2">
- <object type="Cache" os_level="-1" cpuset="0x00004000" complete_cpuset="0x00004000" online_cpuset="0x00004000" allowed_cpuset="0x00004000" nodeset="0x00000080" complete_nodeset="0x00000080" allowed_nodeset="0x0" cache_size="65536" depth="1">
+ <object type="Cache" os_level="-1" cpuset="0x00004000" complete_cpuset="0x00004000" online_cpuset="0x00004000" allowed_cpuset="0x00004000" nodeset="0x00000080" complete_nodeset="0x00000080" allowed_nodeset="0x0" cache_size="1048576" depth="2" cache_linesize="0">
+ <object type="Cache" os_level="-1" cpuset="0x00004000" complete_cpuset="0x00004000" online_cpuset="0x00004000" allowed_cpuset="0x00004000" nodeset="0x00000080" complete_nodeset="0x00000080" allowed_nodeset="0x0" cache_size="65536" depth="1" cache_linesize="0">
<object type="Core" os_level="-1" os_index="0" cpuset="0x00004000" complete_cpuset="0x00004000" online_cpuset="0x00004000" allowed_cpuset="0x00004000" nodeset="0x00000080" complete_nodeset="0x00000080" allowed_nodeset="0x0">
<object type="PU" os_level="-1" os_index="14" cpuset="0x00004000" complete_cpuset="0x00004000" online_cpuset="0x00004000" allowed_cpuset="0x00004000" nodeset="0x00000080" complete_nodeset="0x00000080" allowed_nodeset="0x0"/>
</object>
</object>
</object>
- <object type="Cache" os_level="-1" cpuset="0x00008000" complete_cpuset="0x00008000" online_cpuset="0x00008000" allowed_cpuset="0x00008000" nodeset="0x00000080" complete_nodeset="0x00000080" allowed_nodeset="0x0" cache_size="1048576" depth="2">
- <object type="Cache" os_level="-1" cpuset="0x00008000" complete_cpuset="0x00008000" online_cpuset="0x00008000" allowed_cpuset="0x00008000" nodeset="0x00000080" complete_nodeset="0x00000080" allowed_nodeset="0x0" cache_size="65536" depth="1">
+ <object type="Cache" os_level="-1" cpuset="0x00008000" complete_cpuset="0x00008000" online_cpuset="0x00008000" allowed_cpuset="0x00008000" nodeset="0x00000080" complete_nodeset="0x00000080" allowed_nodeset="0x0" cache_size="1048576" depth="2" cache_linesize="0">
+ <object type="Cache" os_level="-1" cpuset="0x00008000" complete_cpuset="0x00008000" online_cpuset="0x00008000" allowed_cpuset="0x00008000" nodeset="0x00000080" complete_nodeset="0x00000080" allowed_nodeset="0x0" cache_size="65536" depth="1" cache_linesize="0">
<object type="Core" os_level="-1" os_index="1" cpuset="0x00008000" complete_cpuset="0x00008000" online_cpuset="0x00008000" allowed_cpuset="0x00008000" nodeset="0x00000080" complete_nodeset="0x00000080" allowed_nodeset="0x0">
<object type="PU" os_level="-1" os_index="15" cpuset="0x00008000" complete_cpuset="0x00008000" online_cpuset="0x00008000" allowed_cpuset="0x00008000" nodeset="0x00000080" complete_nodeset="0x00000080" allowed_nodeset="0x0"/>
</object>
Modified: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/xml/16em64t-4s2c2t-offlines.xml
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/xml/16em64t-4s2c2t-offlines.xml 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/xml/16em64t-4s2c2t-offlines.xml 2010-11-24 09:21:55 UTC (rev 7494)
@@ -3,16 +3,16 @@
<topology>
<object type="Machine" os_level="-1" os_index="0" cpuset="0x0000905b" complete_cpuset="0x0001915b" online_cpuset="0x0000905b" allowed_cpuset="0x0000915b">
<object type="Socket" os_level="-1" os_index="0" cpuset="0x00001011" complete_cpuset="0x00001011" online_cpuset="0x00001011" allowed_cpuset="0x00001011">
- <object type="Cache" os_level="-1" cpuset="0x00001011" complete_cpuset="0x00001011" online_cpuset="0x00001011" allowed_cpuset="0x00001011" cache_size="4194304" depth="3">
- <object type="Cache" os_level="-1" cpuset="0x00000001" complete_cpuset="0x00000001" online_cpuset="0x00000001" allowed_cpuset="0x00000001" cache_size="1048576" depth="2">
- <object type="Cache" os_level="-1" cpuset="0x00000001" complete_cpuset="0x00000001" online_cpuset="0x00000001" allowed_cpuset="0x00000001" cache_size="16384" depth="1">
+ <object type="Cache" os_level="-1" cpuset="0x00001011" complete_cpuset="0x00001011" online_cpuset="0x00001011" allowed_cpuset="0x00001011" cache_size="4194304" depth="3" cache_linesize="0">
+ <object type="Cache" os_level="-1" cpuset="0x00000001" complete_cpuset="0x00000001" online_cpuset="0x00000001" allowed_cpuset="0x00000001" cache_size="1048576" depth="2" cache_linesize="0">
+ <object type="Cache" os_level="-1" cpuset="0x00000001" complete_cpuset="0x00000001" online_cpuset="0x00000001" allowed_cpuset="0x00000001" cache_size="16384" depth="1" cache_linesize="0">
<object type="Core" os_level="-1" os_index="0" cpuset="0x00000001" complete_cpuset="0x00000001" online_cpuset="0x00000001" allowed_cpuset="0x00000001">
<object type="PU" os_level="-1" os_index="0" cpuset="0x00000001" complete_cpuset="0x00000001" online_cpuset="0x00000001" allowed_cpuset="0x00000001"/>
</object>
</object>
</object>
- <object type="Cache" os_level="-1" cpuset="0x00001010" complete_cpuset="0x00001010" online_cpuset="0x00001010" allowed_cpuset="0x00001010" cache_size="1048576" depth="2">
- <object type="Cache" os_level="-1" cpuset="0x00001010" complete_cpuset="0x00001010" online_cpuset="0x00001010" allowed_cpuset="0x00001010" cache_size="16384" depth="1">
+ <object type="Cache" os_level="-1" cpuset="0x00001010" complete_cpuset="0x00001010" online_cpuset="0x00001010" allowed_cpuset="0x00001010" cache_size="1048576" depth="2" cache_linesize="0">
+ <object type="Cache" os_level="-1" cpuset="0x00001010" complete_cpuset="0x00001010" online_cpuset="0x00001010" allowed_cpuset="0x00001010" cache_size="16384" depth="1" cache_linesize="0">
<object type="Core" os_level="-1" os_index="1" cpuset="0x00001010" complete_cpuset="0x00001010" online_cpuset="0x00001010" allowed_cpuset="0x00001010">
<object type="PU" os_level="-1" os_index="4" cpuset="0x00000010" complete_cpuset="0x00000010" online_cpuset="0x00000010" allowed_cpuset="0x00000010"/>
<object type="PU" os_level="-1" os_index="12" cpuset="0x00001000" complete_cpuset="0x00001000" online_cpuset="0x00001000" allowed_cpuset="0x00001000"/>
@@ -22,9 +22,9 @@
</object>
</object>
<object type="Socket" os_level="-1" os_index="1" cpuset="0x00000002" complete_cpuset="0x00000002" online_cpuset="0x00000002" allowed_cpuset="0x00000002">
- <object type="Cache" os_level="-1" cpuset="0x00000002" complete_cpuset="0x00000002" online_cpuset="0x00000002" allowed_cpuset="0x00000002" cache_size="4194304" depth="3">
- <object type="Cache" os_level="-1" cpuset="0x00000002" complete_cpuset="0x00000002" online_cpuset="0x00000002" allowed_cpuset="0x00000002" cache_size="1048576" depth="2">
- <object type="Cache" os_level="-1" cpuset="0x00000002" complete_cpuset="0x00000002" online_cpuset="0x00000002" allowed_cpuset="0x00000002" cache_size="16384" depth="1">
+ <object type="Cache" os_level="-1" cpuset="0x00000002" complete_cpuset="0x00000002" online_cpuset="0x00000002" allowed_cpuset="0x00000002" cache_size="4194304" depth="3" cache_linesize="0">
+ <object type="Cache" os_level="-1" cpuset="0x00000002" complete_cpuset="0x00000002" online_cpuset="0x00000002" allowed_cpuset="0x00000002" cache_size="1048576" depth="2" cache_linesize="0">
+ <object type="Cache" os_level="-1" cpuset="0x00000002" complete_cpuset="0x00000002" online_cpuset="0x00000002" allowed_cpuset="0x00000002" cache_size="16384" depth="1" cache_linesize="0">
<object type="Core" os_level="-1" os_index="0" cpuset="0x00000002" complete_cpuset="0x00000002" online_cpuset="0x00000002" allowed_cpuset="0x00000002">
<object type="PU" os_level="-1" os_index="1" cpuset="0x00000002" complete_cpuset="0x00000002" online_cpuset="0x00000002" allowed_cpuset="0x00000002"/>
</object>
@@ -33,16 +33,16 @@
</object>
</object>
<object type="Socket" os_level="-1" os_index="3" cpuset="0x00008008" complete_cpuset="0x00008008" online_cpuset="0x00008008" allowed_cpuset="0x00008008">
- <object type="Cache" os_level="-1" cpuset="0x00008008" complete_cpuset="0x00008008" online_cpuset="0x00008008" allowed_cpuset="0x00008008" cache_size="4194304" depth="3">
- <object type="Cache" os_level="-1" cpuset="0x00000008" complete_cpuset="0x00000008" online_cpuset="0x00000008" allowed_cpuset="0x00000008" cache_size="1048576" depth="2">
- <object type="Cache" os_level="-1" cpuset="0x00000008" complete_cpuset="0x00000008" online_cpuset="0x00000008" allowed_cpuset="0x00000008" cache_size="16384" depth="1">
+ <object type="Cache" os_level="-1" cpuset="0x00008008" complete_cpuset="0x00008008" online_cpuset="0x00008008" allowed_cpuset="0x00008008" cache_size="4194304" depth="3" cache_linesize="0">
+ <object type="Cache" os_level="-1" cpuset="0x00000008" complete_cpuset="0x00000008" online_cpuset="0x00000008" allowed_cpuset="0x00000008" cache_size="1048576" depth="2" cache_linesize="0">
+ <object type="Cache" os_level="-1" cpuset="0x00000008" complete_cpuset="0x00000008" online_cpuset="0x00000008" allowed_cpuset="0x00000008" cache_size="16384" depth="1" cache_linesize="0">
<object type="Core" os_level="-1" os_index="0" cpuset="0x00000008" complete_cpuset="0x00000008" online_cpuset="0x00000008" allowed_cpuset="0x00000008">
<object type="PU" os_level="-1" os_index="3" cpuset="0x00000008" complete_cpuset="0x00000008" online_cpuset="0x00000008" allowed_cpuset="0x00000008"/>
</object>
</object>
</object>
- <object type="Cache" os_level="-1" cpuset="0x00008000" complete_cpuset="0x00008000" online_cpuset="0x00008000" allowed_cpuset="0x00008000" cache_size="1048576" depth="2">
- <object type="Cache" os_level="-1" cpuset="0x00008000" complete_cpuset="0x00008000" online_cpuset="0x00008000" allowed_cpuset="0x00008000" cache_size="16384" depth="1">
+ <object type="Cache" os_level="-1" cpuset="0x00008000" complete_cpuset="0x00008000" online_cpuset="0x00008000" allowed_cpuset="0x00008000" cache_size="1048576" depth="2" cache_linesize="0">
+ <object type="Cache" os_level="-1" cpuset="0x00008000" complete_cpuset="0x00008000" online_cpuset="0x00008000" allowed_cpuset="0x00008000" cache_size="16384" depth="1" cache_linesize="0">
<object type="Core" os_level="-1" os_index="1" cpuset="0x00008000" complete_cpuset="0x00008000" online_cpuset="0x00008000" allowed_cpuset="0x00008000">
<object type="PU" os_level="-1" os_index="15" cpuset="0x00008000" complete_cpuset="0x00008000" online_cpuset="0x00008000" allowed_cpuset="0x00008000"/>
</object>
@@ -51,9 +51,9 @@
</object>
</object>
<object type="Socket" os_level="-1" os_index="2" cpuset="0x00000040" complete_cpuset="0x00000040" online_cpuset="0x00000040" allowed_cpuset="0x00000040">
- <object type="Cache" os_level="-1" cpuset="0x00000040" complete_cpuset="0x00000040" online_cpuset="0x00000040" allowed_cpuset="0x00000040" cache_size="4194304" depth="3">
- <object type="Cache" os_level="-1" cpuset="0x00000040" complete_cpuset="0x00000040" online_cpuset="0x00000040" allowed_cpuset="0x00000040" cache_size="1048576" depth="2">
- <object type="Cache" os_level="-1" cpuset="0x00000040" complete_cpuset="0x00000040" online_cpuset="0x00000040" allowed_cpuset="0x00000040" cache_size="16384" depth="1">
+ <object type="Cache" os_level="-1" cpuset="0x00000040" complete_cpuset="0x00000040" online_cpuset="0x00000040" allowed_cpuset="0x00000040" cache_size="4194304" depth="3" cache_linesize="0">
+ <object type="Cache" os_level="-1" cpuset="0x00000040" complete_cpuset="0x00000040" online_cpuset="0x00000040" allowed_cpuset="0x00000040" cache_size="1048576" depth="2" cache_linesize="0">
+ <object type="Cache" os_level="-1" cpuset="0x00000040" complete_cpuset="0x00000040" online_cpuset="0x00000040" allowed_cpuset="0x00000040" cache_size="16384" depth="1" cache_linesize="0">
<object type="Core" os_level="-1" os_index="1" cpuset="0x00000040" complete_cpuset="0x00000040" online_cpuset="0x00000040" allowed_cpuset="0x00000040">
<object type="PU" os_level="-1" os_index="6" cpuset="0x00000040" complete_cpuset="0x00000040" online_cpuset="0x00000040" allowed_cpuset="0x00000040"/>
</object>
Modified: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/xml/16em64t-4s2c2t.xml
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/xml/16em64t-4s2c2t.xml 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/xml/16em64t-4s2c2t.xml 2010-11-24 09:21:55 UTC (rev 7494)
@@ -2,18 +2,22 @@
<!DOCTYPE topology SYSTEM "hwloc.dtd">
<topology>
<object type="Machine" os_level="-1" os_index="0" cpuset="0x0000ffff" complete_cpuset="0x0000ffff" online_cpuset="0x0000ffff" allowed_cpuset="0x0000ffff">
+ <page_type size="4096" count="500"/>
+ <page_type size="8192" count="0"/>
+ <info name="infowithvalue" value="value"/>
+ <info name="infowithoutvalue" value=""/>
<object type="Socket" os_level="-1" os_index="0" cpuset="0x00001111" complete_cpuset="0x00001111" online_cpuset="0x00001111" allowed_cpuset="0x00001111">
- <object type="Cache" os_level="-1" cpuset="0x00001111" complete_cpuset="0x00001111" online_cpuset="0x00001111" allowed_cpuset="0x00001111" cache_size="4194304" depth="3">
- <object type="Cache" os_level="-1" cpuset="0x00000101" complete_cpuset="0x00000101" online_cpuset="0x00000101" allowed_cpuset="0x00000101" cache_size="1048576" depth="2">
- <object type="Cache" os_level="-1" cpuset="0x00000101" complete_cpuset="0x00000101" online_cpuset="0x00000101" allowed_cpuset="0x00000101" cache_size="16384" depth="1">
+ <object type="Cache" os_level="-1" cpuset="0x00001111" complete_cpuset="0x00001111" online_cpuset="0x00001111" allowed_cpuset="0x00001111" cache_size="4194304" depth="3" cache_linesize="0">
+ <object type="Cache" os_level="-1" cpuset="0x00000101" complete_cpuset="0x00000101" online_cpuset="0x00000101" allowed_cpuset="0x00000101" cache_size="1048576" depth="2" cache_linesize="0">
+ <object type="Cache" os_level="-1" cpuset="0x00000101" complete_cpuset="0x00000101" online_cpuset="0x00000101" allowed_cpuset="0x00000101" cache_size="16384" depth="1" cache_linesize="0">
<object type="Core" os_level="-1" os_index="0" cpuset="0x00000101" complete_cpuset="0x00000101" online_cpuset="0x00000101" allowed_cpuset="0x00000101">
<object type="PU" os_level="-1" os_index="0" cpuset="0x00000001" complete_cpuset="0x00000001" online_cpuset="0x00000001" allowed_cpuset="0x00000001"/>
<object type="PU" os_level="-1" os_index="8" cpuset="0x00000100" complete_cpuset="0x00000100" online_cpuset="0x00000100" allowed_cpuset="0x00000100"/>
</object>
</object>
</object>
- <object type="Cache" os_level="-1" cpuset="0x00001010" complete_cpuset="0x00001010" online_cpuset="0x00001010" allowed_cpuset="0x00001010" cache_size="1048576" depth="2">
- <object type="Cache" os_level="-1" cpuset="0x00001010" complete_cpuset="0x00001010" online_cpuset="0x00001010" allowed_cpuset="0x00001010" cache_size="16384" depth="1">
+ <object type="Cache" os_level="-1" cpuset="0x00001010" complete_cpuset="0x00001010" online_cpuset="0x00001010" allowed_cpuset="0x00001010" cache_size="1048576" depth="2" cache_linesize="0">
+ <object type="Cache" os_level="-1" cpuset="0x00001010" complete_cpuset="0x00001010" online_cpuset="0x00001010" allowed_cpuset="0x00001010" cache_size="16384" depth="1" cache_linesize="0">
<object type="Core" os_level="-1" os_index="1" cpuset="0x00001010" complete_cpuset="0x00001010" online_cpuset="0x00001010" allowed_cpuset="0x00001010">
<object type="PU" os_level="-1" os_index="4" cpuset="0x00000010" complete_cpuset="0x00000010" online_cpuset="0x00000010" allowed_cpuset="0x00000010"/>
<object type="PU" os_level="-1" os_index="12" cpuset="0x00001000" complete_cpuset="0x00001000" online_cpuset="0x00001000" allowed_cpuset="0x00001000"/>
@@ -23,17 +27,17 @@
</object>
</object>
<object type="Socket" os_level="-1" os_index="1" cpuset="0x00002222" complete_cpuset="0x00002222" online_cpuset="0x00002222" allowed_cpuset="0x00002222">
- <object type="Cache" os_level="-1" cpuset="0x00002222" complete_cpuset="0x00002222" online_cpuset="0x00002222" allowed_cpuset="0x00002222" cache_size="4194304" depth="3">
- <object type="Cache" os_level="-1" cpuset="0x00000202" complete_cpuset="0x00000202" online_cpuset="0x00000202" allowed_cpuset="0x00000202" cache_size="1048576" depth="2">
- <object type="Cache" os_level="-1" cpuset="0x00000202" complete_cpuset="0x00000202" online_cpuset="0x00000202" allowed_cpuset="0x00000202" cache_size="16384" depth="1">
+ <object type="Cache" os_level="-1" cpuset="0x00002222" complete_cpuset="0x00002222" online_cpuset="0x00002222" allowed_cpuset="0x00002222" cache_size="4194304" depth="3" cache_linesize="0">
+ <object type="Cache" os_level="-1" cpuset="0x00000202" complete_cpuset="0x00000202" online_cpuset="0x00000202" allowed_cpuset="0x00000202" cache_size="1048576" depth="2" cache_linesize="0">
+ <object type="Cache" os_level="-1" cpuset="0x00000202" complete_cpuset="0x00000202" online_cpuset="0x00000202" allowed_cpuset="0x00000202" cache_size="16384" depth="1" cache_linesize="0">
<object type="Core" os_level="-1" os_index="0" cpuset="0x00000202" complete_cpuset="0x00000202" online_cpuset="0x00000202" allowed_cpuset="0x00000202">
<object type="PU" os_level="-1" os_index="1" cpuset="0x00000002" complete_cpuset="0x00000002" online_cpuset="0x00000002" allowed_cpuset="0x00000002"/>
<object type="PU" os_level="-1" os_index="9" cpuset="0x00000200" complete_cpuset="0x00000200" online_cpuset="0x00000200" allowed_cpuset="0x00000200"/>
</object>
</object>
</object>
- <object type="Cache" os_level="-1" cpuset="0x00002020" complete_cpuset="0x00002020" online_cpuset="0x00002020" allowed_cpuset="0x00002020" cache_size="1048576" depth="2">
- <object type="Cache" os_level="-1" cpuset="0x00002020" complete_cpuset="0x00002020" online_cpuset="0x00002020" allowed_cpuset="0x00002020" cache_size="16384" depth="1">
+ <object type="Cache" os_level="-1" cpuset="0x00002020" complete_cpuset="0x00002020" online_cpuset="0x00002020" allowed_cpuset="0x00002020" cache_size="1048576" depth="2" cache_linesize="0">
+ <object type="Cache" os_level="-1" cpuset="0x00002020" complete_cpuset="0x00002020" online_cpuset="0x00002020" allowed_cpuset="0x00002020" cache_size="16384" depth="1" cache_linesize="0">
<object type="Core" os_level="-1" os_index="1" cpuset="0x00002020" complete_cpuset="0x00002020" online_cpuset="0x00002020" allowed_cpuset="0x00002020">
<object type="PU" os_level="-1" os_index="5" cpuset="0x00000020" complete_cpuset="0x00000020" online_cpuset="0x00000020" allowed_cpuset="0x00000020"/>
<object type="PU" os_level="-1" os_index="13" cpuset="0x00002000" complete_cpuset="0x00002000" online_cpuset="0x00002000" allowed_cpuset="0x00002000"/>
@@ -43,17 +47,17 @@
</object>
</object>
<object type="Socket" os_level="-1" os_index="2" cpuset="0x00004444" complete_cpuset="0x00004444" online_cpuset="0x00004444" allowed_cpuset="0x00004444">
- <object type="Cache" os_level="-1" cpuset="0x00004444" complete_cpuset="0x00004444" online_cpuset="0x00004444" allowed_cpuset="0x00004444" cache_size="4194304" depth="3">
- <object type="Cache" os_level="-1" cpuset="0x00000404" complete_cpuset="0x00000404" online_cpuset="0x00000404" allowed_cpuset="0x00000404" cache_size="1048576" depth="2">
- <object type="Cache" os_level="-1" cpuset="0x00000404" complete_cpuset="0x00000404" online_cpuset="0x00000404" allowed_cpuset="0x00000404" cache_size="16384" depth="1">
+ <object type="Cache" os_level="-1" cpuset="0x00004444" complete_cpuset="0x00004444" online_cpuset="0x00004444" allowed_cpuset="0x00004444" cache_size="4194304" depth="3" cache_linesize="0">
+ <object type="Cache" os_level="-1" cpuset="0x00000404" complete_cpuset="0x00000404" online_cpuset="0x00000404" allowed_cpuset="0x00000404" cache_size="1048576" depth="2" cache_linesize="0">
+ <object type="Cache" os_level="-1" cpuset="0x00000404" complete_cpuset="0x00000404" online_cpuset="0x00000404" allowed_cpuset="0x00000404" cache_size="16384" depth="1" cache_linesize="0">
<object type="Core" os_level="-1" os_index="0" cpuset="0x00000404" complete_cpuset="0x00000404" online_cpuset="0x00000404" allowed_cpuset="0x00000404">
<object type="PU" os_level="-1" os_index="2" cpuset="0x00000004" complete_cpuset="0x00000004" online_cpuset="0x00000004" allowed_cpuset="0x00000004"/>
<object type="PU" os_level="-1" os_index="10" cpuset="0x00000400" complete_cpuset="0x00000400" online_cpuset="0x00000400" allowed_cpuset="0x00000400"/>
</object>
</object>
</object>
- <object type="Cache" os_level="-1" cpuset="0x00004040" complete_cpuset="0x00004040" online_cpuset="0x00004040" allowed_cpuset="0x00004040" cache_size="1048576" depth="2">
- <object type="Cache" os_level="-1" cpuset="0x00004040" complete_cpuset="0x00004040" online_cpuset="0x00004040" allowed_cpuset="0x00004040" cache_size="16384" depth="1">
+ <object type="Cache" os_level="-1" cpuset="0x00004040" complete_cpuset="0x00004040" online_cpuset="0x00004040" allowed_cpuset="0x00004040" cache_size="1048576" depth="2" cache_linesize="0">
+ <object type="Cache" os_level="-1" cpuset="0x00004040" complete_cpuset="0x00004040" online_cpuset="0x00004040" allowed_cpuset="0x00004040" cache_size="16384" depth="1" cache_linesize="0">
<object type="Core" os_level="-1" os_index="1" cpuset="0x00004040" complete_cpuset="0x00004040" online_cpuset="0x00004040" allowed_cpuset="0x00004040">
<object type="PU" os_level="-1" os_index="6" cpuset="0x00000040" complete_cpuset="0x00000040" online_cpuset="0x00000040" allowed_cpuset="0x00000040"/>
<object type="PU" os_level="-1" os_index="14" cpuset="0x00004000" complete_cpuset="0x00004000" online_cpuset="0x00004000" allowed_cpuset="0x00004000"/>
@@ -63,17 +67,17 @@
</object>
</object>
<object type="Socket" os_level="-1" os_index="3" cpuset="0x00008888" complete_cpuset="0x00008888" online_cpuset="0x00008888" allowed_cpuset="0x00008888">
- <object type="Cache" os_level="-1" cpuset="0x00008888" complete_cpuset="0x00008888" online_cpuset="0x00008888" allowed_cpuset="0x00008888" cache_size="4194304" depth="3">
- <object type="Cache" os_level="-1" cpuset="0x00000808" complete_cpuset="0x00000808" online_cpuset="0x00000808" allowed_cpuset="0x00000808" cache_size="1048576" depth="2">
- <object type="Cache" os_level="-1" cpuset="0x00000808" complete_cpuset="0x00000808" online_cpuset="0x00000808" allowed_cpuset="0x00000808" cache_size="16384" depth="1">
+ <object type="Cache" os_level="-1" cpuset="0x00008888" complete_cpuset="0x00008888" online_cpuset="0x00008888" allowed_cpuset="0x00008888" cache_size="4194304" depth="3" cache_linesize="0">
+ <object type="Cache" os_level="-1" cpuset="0x00000808" complete_cpuset="0x00000808" online_cpuset="0x00000808" allowed_cpuset="0x00000808" cache_size="1048576" depth="2" cache_linesize="0">
+ <object type="Cache" os_level="-1" cpuset="0x00000808" complete_cpuset="0x00000808" online_cpuset="0x00000808" allowed_cpuset="0x00000808" cache_size="16384" depth="1" cache_linesize="0">
<object type="Core" os_level="-1" os_index="0" cpuset="0x00000808" complete_cpuset="0x00000808" online_cpuset="0x00000808" allowed_cpuset="0x00000808">
<object type="PU" os_level="-1" os_index="3" cpuset="0x00000008" complete_cpuset="0x00000008" online_cpuset="0x00000008" allowed_cpuset="0x00000008"/>
<object type="PU" os_level="-1" os_index="11" cpuset="0x00000800" complete_cpuset="0x00000800" online_cpuset="0x00000800" allowed_cpuset="0x00000800"/>
</object>
</object>
</object>
- <object type="Cache" os_level="-1" cpuset="0x00008080" complete_cpuset="0x00008080" online_cpuset="0x00008080" allowed_cpuset="0x00008080" cache_size="1048576" depth="2">
- <object type="Cache" os_level="-1" cpuset="0x00008080" complete_cpuset="0x00008080" online_cpuset="0x00008080" allowed_cpuset="0x00008080" cache_size="16384" depth="1">
+ <object type="Cache" os_level="-1" cpuset="0x00008080" complete_cpuset="0x00008080" online_cpuset="0x00008080" allowed_cpuset="0x00008080" cache_size="1048576" depth="2" cache_linesize="0">
+ <object type="Cache" os_level="-1" cpuset="0x00008080" complete_cpuset="0x00008080" online_cpuset="0x00008080" allowed_cpuset="0x00008080" cache_size="16384" depth="1" cache_linesize="0">
<object type="Core" os_level="-1" os_index="1" cpuset="0x00008080" complete_cpuset="0x00008080" online_cpuset="0x00008080" allowed_cpuset="0x00008080">
<object type="PU" os_level="-1" os_index="7" cpuset="0x00000080" complete_cpuset="0x00000080" online_cpuset="0x00000080" allowed_cpuset="0x00000080"/>
<object type="PU" os_level="-1" os_index="15" cpuset="0x00008000" complete_cpuset="0x00008000" online_cpuset="0x00008000" allowed_cpuset="0x00008000"/>
Modified: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/xml/8em64t-2mi2ma2c.xml
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/xml/8em64t-2mi2ma2c.xml 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/xml/8em64t-2mi2ma2c.xml 2010-11-24 09:21:55 UTC (rev 7494)
@@ -3,17 +3,17 @@
<topology>
<object type="System" os_level="-1" os_index="0">
<object type="Group" os_level="-1" depth="0">
- <object type="Machine" os_level="-1" os_index="0" cpuset="0x00000003" complete_cpuset="0x00000003" online_cpuset="0x00000003" allowed_cpuset="0x00000003" dmi_board_vendor="Dell Inc." dmi_board_name="0F331C" local_memory="1016368">
+ <object type="Machine" os_level="-1" os_index="0" cpuset="0x00000003" complete_cpuset="0x00000003" online_cpuset="0x00000003" allowed_cpuset="0x00000003" local_memory="1016368">
<page_type size="4096" count="65536"/>
<page_type size="1048576" count="1024"/>
<object type="Socket" os_level="-1" os_index="0" cpuset="0x00000003" complete_cpuset="0x00000003" online_cpuset="0x00000003" allowed_cpuset="0x00000003">
- <object type="Cache" os_level="-1" cpuset="0x00000003" complete_cpuset="0x00000003" online_cpuset="0x00000003" allowed_cpuset="0x00000003" cache_size="2097152" depth="2">
- <object type="Cache" os_level="-1" cpuset="0x00000001" complete_cpuset="0x00000001" online_cpuset="0x00000001" allowed_cpuset="0x00000001" cache_size="32768" depth="1">
+ <object type="Cache" os_level="-1" cpuset="0x00000003" complete_cpuset="0x00000003" online_cpuset="0x00000003" allowed_cpuset="0x00000003" cache_size="2097152" depth="2" cache_linesize="0">
+ <object type="Cache" os_level="-1" cpuset="0x00000001" complete_cpuset="0x00000001" online_cpuset="0x00000001" allowed_cpuset="0x00000001" cache_size="32768" depth="1" cache_linesize="0">
<object type="Core" os_level="-1" os_index="0" cpuset="0x00000001" complete_cpuset="0x00000001" online_cpuset="0x00000001" allowed_cpuset="0x00000001">
<object type="PU" os_level="-1" os_index="0" cpuset="0x00000001" complete_cpuset="0x00000001" online_cpuset="0x00000001" allowed_cpuset="0x00000001"/>
</object>
</object>
- <object type="Cache" os_level="-1" cpuset="0x00000002" complete_cpuset="0x00000002" online_cpuset="0x00000002" allowed_cpuset="0x00000002" cache_size="32768" depth="1">
+ <object type="Cache" os_level="-1" cpuset="0x00000002" complete_cpuset="0x00000002" online_cpuset="0x00000002" allowed_cpuset="0x00000002" cache_size="32768" depth="1" cache_linesize="0">
<object type="Core" os_level="-1" os_index="1" cpuset="0x00000002" complete_cpuset="0x00000002" online_cpuset="0x00000002" allowed_cpuset="0x00000002">
<object type="PU" os_level="-1" os_index="1" cpuset="0x00000002" complete_cpuset="0x00000002" online_cpuset="0x00000002" allowed_cpuset="0x00000002"/>
</object>
@@ -21,16 +21,18 @@
</object>
</object>
</object>
- <object type="Machine" os_level="-1" os_index="0" cpuset="0x00000003" complete_cpuset="0x00000003" online_cpuset="0x00000003" allowed_cpuset="0x00000003" dmi_board_vendor="Dell Inc." dmi_board_name="0F331C" local_memory="1016368">
+ <object type="Machine" os_level="-1" os_index="0" cpuset="0x00000003" complete_cpuset="0x00000003" online_cpuset="0x00000003" allowed_cpuset="0x00000003" local_memory="1016368">
<page_type size="8192" count="1048576"/>
+ <info name="DMIBoardVendor" value="Dell Inc."/>
+ <info name="DMIBoardName" value="0F331C"/>
<object type="Socket" os_level="-1" os_index="0" cpuset="0x00000003" complete_cpuset="0x00000003" online_cpuset="0x00000003" allowed_cpuset="0x00000003">
- <object type="Cache" os_level="-1" cpuset="0x00000003" complete_cpuset="0x00000003" online_cpuset="0x00000003" allowed_cpuset="0x00000003" cache_size="2097152" depth="2">
- <object type="Cache" os_level="-1" cpuset="0x00000001" complete_cpuset="0x00000001" online_cpuset="0x00000001" allowed_cpuset="0x00000001" cache_size="32768" depth="1">
+ <object type="Cache" os_level="-1" cpuset="0x00000003" complete_cpuset="0x00000003" online_cpuset="0x00000003" allowed_cpuset="0x00000003" cache_size="2097152" depth="2" cache_linesize="0">
+ <object type="Cache" os_level="-1" cpuset="0x00000001" complete_cpuset="0x00000001" online_cpuset="0x00000001" allowed_cpuset="0x00000001" cache_size="32768" depth="1" cache_linesize="0">
<object type="Core" os_level="-1" os_index="0" cpuset="0x00000001" complete_cpuset="0x00000001" online_cpuset="0x00000001" allowed_cpuset="0x00000001">
<object type="PU" os_level="-1" os_index="0" cpuset="0x00000001" complete_cpuset="0x00000001" online_cpuset="0x00000001" allowed_cpuset="0x00000001"/>
</object>
</object>
- <object type="Cache" os_level="-1" cpuset="0x00000002" complete_cpuset="0x00000002" online_cpuset="0x00000002" allowed_cpuset="0x00000002" cache_size="32768" depth="1">
+ <object type="Cache" os_level="-1" cpuset="0x00000002" complete_cpuset="0x00000002" online_cpuset="0x00000002" allowed_cpuset="0x00000002" cache_size="32768" depth="1" cache_linesize="0">
<object type="Core" os_level="-1" os_index="1" cpuset="0x00000002" complete_cpuset="0x00000002" online_cpuset="0x00000002" allowed_cpuset="0x00000002">
<object type="PU" os_level="-1" os_index="1" cpuset="0x00000002" complete_cpuset="0x00000002" online_cpuset="0x00000002" allowed_cpuset="0x00000002"/>
</object>
@@ -40,16 +42,18 @@
</object>
</object>
<object type="Group" os_level="-1" depth="0">
- <object type="Machine" os_level="-1" os_index="0" cpuset="0x00000003" complete_cpuset="0x00000003" online_cpuset="0x00000003" allowed_cpuset="0x00000003" dmi_board_vendor="Dell Inc." dmi_board_name="0F331C" local_memory="1016368">
- <page_type size="2048" count="0"/>
+ <object type="Machine" os_level="-1" os_index="0" cpuset="0x00000003" complete_cpuset="0x00000003" online_cpuset="0x00000003" allowed_cpuset="0x00000003" local_memory="1016368">
+ <page_type size="2048" count="1"/>
+ <info name="DMIBoardVendor" value="Dell Inc."/>
+ <info name="DMIBoardName" value="0F331C"/>
<object type="Socket" os_level="-1" os_index="0" cpuset="0x00000003" complete_cpuset="0x00000003" online_cpuset="0x00000003" allowed_cpuset="0x00000003">
- <object type="Cache" os_level="-1" cpuset="0x00000003" complete_cpuset="0x00000003" online_cpuset="0x00000003" allowed_cpuset="0x00000003" cache_size="2097152" depth="2">
- <object type="Cache" os_level="-1" cpuset="0x00000001" complete_cpuset="0x00000001" online_cpuset="0x00000001" allowed_cpuset="0x00000001" cache_size="32768" depth="1">
+ <object type="Cache" os_level="-1" cpuset="0x00000003" complete_cpuset="0x00000003" online_cpuset="0x00000003" allowed_cpuset="0x00000003" cache_size="2097152" depth="2" cache_linesize="0">
+ <object type="Cache" os_level="-1" cpuset="0x00000001" complete_cpuset="0x00000001" online_cpuset="0x00000001" allowed_cpuset="0x00000001" cache_size="32768" depth="1" cache_linesize="0">
<object type="Core" os_level="-1" os_index="0" cpuset="0x00000001" complete_cpuset="0x00000001" online_cpuset="0x00000001" allowed_cpuset="0x00000001">
<object type="PU" os_level="-1" os_index="0" cpuset="0x00000001" complete_cpuset="0x00000001" online_cpuset="0x00000001" allowed_cpuset="0x00000001"/>
</object>
</object>
- <object type="Cache" os_level="-1" cpuset="0x00000002" complete_cpuset="0x00000002" online_cpuset="0x00000002" allowed_cpuset="0x00000002" cache_size="32768" depth="1">
+ <object type="Cache" os_level="-1" cpuset="0x00000002" complete_cpuset="0x00000002" online_cpuset="0x00000002" allowed_cpuset="0x00000002" cache_size="32768" depth="1" cache_linesize="0">
<object type="Core" os_level="-1" os_index="1" cpuset="0x00000002" complete_cpuset="0x00000002" online_cpuset="0x00000002" allowed_cpuset="0x00000002">
<object type="PU" os_level="-1" os_index="1" cpuset="0x00000002" complete_cpuset="0x00000002" online_cpuset="0x00000002" allowed_cpuset="0x00000002"/>
</object>
@@ -57,18 +61,20 @@
</object>
</object>
</object>
- <object type="Machine" os_level="-1" os_index="0" cpuset="0x00000003" complete_cpuset="0x00000003" online_cpuset="0x00000003" allowed_cpuset="0x00000003" dmi_board_vendor="Dell Inc." dmi_board_name="0F331C" local_memory="1016368">
- <page_type size="2048" count="0"/>
+ <object type="Machine" os_level="-1" os_index="0" cpuset="0x00000003" complete_cpuset="0x00000003" online_cpuset="0x00000003" allowed_cpuset="0x00000003" local_memory="1016368">
+ <page_type size="2048" count="2"/>
<page_type size="4096" count="65536"/>
<page_type size="1048576" count="2048"/>
+ <info name="DMIBoardVendor" value="Dell Inc."/>
+ <info name="DMIBoardName" value="0F331C"/>
<object type="Socket" os_level="-1" os_index="0" cpuset="0x00000003" complete_cpuset="0x00000003" online_cpuset="0x00000003" allowed_cpuset="0x00000003">
- <object type="Cache" os_level="-1" cpuset="0x00000003" complete_cpuset="0x00000003" online_cpuset="0x00000003" allowed_cpuset="0x00000003" cache_size="2097152" depth="2">
- <object type="Cache" os_level="-1" cpuset="0x00000001" complete_cpuset="0x00000001" online_cpuset="0x00000001" allowed_cpuset="0x00000001" cache_size="32768" depth="1">
+ <object type="Cache" os_level="-1" cpuset="0x00000003" complete_cpuset="0x00000003" online_cpuset="0x00000003" allowed_cpuset="0x00000003" cache_size="2097152" depth="2" cache_linesize="0">
+ <object type="Cache" os_level="-1" cpuset="0x00000001" complete_cpuset="0x00000001" online_cpuset="0x00000001" allowed_cpuset="0x00000001" cache_size="32768" depth="1" cache_linesize="0">
<object type="Core" os_level="-1" os_index="0" cpuset="0x00000001" complete_cpuset="0x00000001" online_cpuset="0x00000001" allowed_cpuset="0x00000001">
<object type="PU" os_level="-1" os_index="0" cpuset="0x00000001" complete_cpuset="0x00000001" online_cpuset="0x00000001" allowed_cpuset="0x00000001"/>
</object>
</object>
- <object type="Cache" os_level="-1" cpuset="0x00000002" complete_cpuset="0x00000002" online_cpuset="0x00000002" allowed_cpuset="0x00000002" cache_size="32768" depth="1">
+ <object type="Cache" os_level="-1" cpuset="0x00000002" complete_cpuset="0x00000002" online_cpuset="0x00000002" allowed_cpuset="0x00000002" cache_size="32768" depth="1" cache_linesize="0">
<object type="Core" os_level="-1" os_index="1" cpuset="0x00000002" complete_cpuset="0x00000002" online_cpuset="0x00000002" allowed_cpuset="0x00000002">
<object type="PU" os_level="-1" os_index="1" cpuset="0x00000002" complete_cpuset="0x00000002" online_cpuset="0x00000002" allowed_cpuset="0x00000002"/>
</object>
Modified: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/xml/Makefile.am
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/xml/Makefile.am 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/xml/Makefile.am 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,4 +1,5 @@
-# Copyright 2009 INRIA, Université Bordeaux 1
+# Copyright © 2009 INRIA
+# Copyright © 2009-2010 Université Bordeaux 1
# Copyright © 2009-2010 Cisco Systems, Inc. All rights reserved.
AM_CFLAGS = $(HWLOC_CFLAGS)
Modified: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/xml/test-topology.sh.in
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/xml/test-topology.sh.in 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/xml/test-topology.sh.in 2010-11-24 09:21:55 UTC (rev 7494)
@@ -2,7 +2,9 @@
#-*-sh-*-
#
-# Copyright © 2009 CNRS, INRIA, Université Bordeaux 1
+# Copyright © 2009 CNRS
+# Copyright © 2009-2010 INRIA
+# Copyright © 2009-2010 Université Bordeaux 1
# Copyright © 2010 Cisco Systems, Inc. All rights reserved.
# See COPYING in top-level directory.
#
@@ -39,11 +41,23 @@
file="$tmp/lstopo_xml.output.xml"
set -e
-$lstopo --xml "$1" "$file"
-diff @HWLOC_DIFF_U@ "$1" "$file"
+$lstopo --if xml --input "$1" --of xml "$file"
+
+if [ "$HWLOC_UPDATE_TEST_TOPOLOGY_OUTPUT" != 1 ]
+then
+ diff @HWLOC_DIFF_U@ "$1" "$file"
+else
+ if ! diff "$1" "$file" >/dev/null
+ then
+ cp -f "$file" "$1"
+ echo "Updated $1"
+ fi
+fi
+
if [ -n "@XMLLINT@" ]
then
- cp "$HWLOC_top_srcdir"/src/hwloc.dtd "$tmp/"
- @XMLLINT@ --valid "$file" > /dev/null
+ cp "$HWLOC_top_srcdir"/src/hwloc.dtd "$tmp/"
+ @XMLLINT@ --valid "$file" > /dev/null
fi
+
rm -rf "$tmp"
Added: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/xmlbuffer.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/xmlbuffer.c (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/tests/xmlbuffer.c 2010-11-24 09:21:55 UTC (rev 7494)
@@ -0,0 +1,51 @@
+/*
+ * Copyright © 2010 INRIA
+ * See COPYING in top-level directory.
+ */
+
+#include <stdio.h>
+#include <assert.h>
+#include <libxml/xmlstring.h>
+#include <libxml/xmlmemory.h>
+#include <private/config.h>
+#include <hwloc.h>
+
+/* check the CUDA Driver API helpers */
+
+int main(void)
+{
+ hwloc_topology_t topology;
+ int size1, size2;
+ char *buf1, *buf2;
+ int err = 0;
+
+ hwloc_topology_init(&topology);
+ hwloc_topology_load(topology);
+ assert(hwloc_topology_is_thissystem(topology));
+ hwloc_topology_export_xmlbuffer(topology, &buf1, &size1);
+ hwloc_topology_destroy(topology);
+ printf("exported to buffer %p length %d\n", buf1, size1);
+
+ hwloc_topology_init(&topology);
+ hwloc_topology_set_xmlbuffer(topology, buf1, size1);
+ hwloc_topology_load(topology);
+ assert(!hwloc_topology_is_thissystem(topology));
+ hwloc_topology_export_xmlbuffer(topology, &buf2, &size2);
+ hwloc_topology_destroy(topology);
+ printf("re-exported to buffer %p length %d\n", buf2, size2);
+
+ if (strcmp(buf1, buf2)) {
+ printf("### First exported buffer is:\n");
+ printf(buf1);
+ printf("### End of first export buffer\n");
+ printf("### Second exported buffer is:\n");
+ printf(buf2);
+ printf("### End of second export buffer\n");
+ err = 1;
+ }
+
+ xmlFree(BAD_CAST buf1);
+ xmlFree(BAD_CAST buf2);
+
+ return err;
+}
Modified: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/utils/Makefile.am
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/utils/Makefile.am 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/utils/Makefile.am 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,4 +1,5 @@
-# Copyright 2009 INRIA, Université Bordeaux 1
+# Copyright © 2009-2010 INRIA
+# Copyright © 2009-2010 Université Bordeaux 1
# Copyright © 2009-2010 Cisco Systems, Inc. All rights reserved.
AM_CFLAGS = $(HWLOC_CFLAGS)
@@ -9,9 +10,11 @@
EXTRA_DIST = test-hwloc-distrib.output
+noinst_HEADERS = misc.h
+
# Only build the utilities if we're building in standalone mode
if HWLOC_BUILD_UTILS
-bin_PROGRAMS = lstopo hwloc-calc hwloc-bind hwloc-distrib
+bin_PROGRAMS = lstopo hwloc-calc hwloc-bind hwloc-distrib hwloc-ps
endif
lstopo_SOURCES = lstopo.h lstopo.c lstopo-color.c lstopo-text.c lstopo-draw.c lstopo-fig.c
@@ -39,7 +42,7 @@
# Only install man pages if we're building in standalone mode
if HWLOC_BUILD_UTILS
-man1_pages = lstopo.1 hwloc-bind.1 hwloc-distrib.1 hwloc-calc.1
+man1_pages = lstopo.1 hwloc-bind.1 hwloc-distrib.1 hwloc-calc.1 hwloc-ps.1
man7_pages = hwloc.7
man_pages = $(man7_pages) $(man1_pages)
EXTRA_DIST += $(man1_pages:.1=.1in) $(man7_pages:.7=.7in)
Modified: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/utils/hwloc-bind.1in
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/utils/hwloc-bind.1in 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/utils/hwloc-bind.1in 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,5 +1,7 @@
.\" -*- nroff -*-
-.\" Copyright © 2009 Cisco Systems, Inc. All rights reserved.
+.\" Copyright © 2009-2010 INRIA
+.\" Copyright © 2010 Université of Bordeaux
+.\" Copyright © 2009-2010 Cisco Systems, Inc. All rights reserved.
.TH HWLOC-BIND "1" "#HWLOC_DATE#" "#PACKAGE_VERSION#" "#PACKAGE_NAME#"
.SH NAME
hwloc-bind \- Launch a command that is bound to specific processors
@@ -20,8 +22,22 @@
.
See below for a description of valid <location> formats.
.TP 10
+\fB\-\-cpubind\fR
+Use following arguments for CPU binding (default).
+.TP
+\fB\-\-membind\fR
+Use following arguments for memory binding.
+.TP
+\fB\-\-mempolicy\fR <policy>
+Change the memory binding policy.
+The available policies are default, firsttouch, bind, interleave
+replicate and nexttouch.
+If a binding set is given, the default policy is bind.
+.TP
\fB\-\-get\fR
Report the current bindings.
+When combined with \fB\-\-membind\fR, report the memory binding
+instead of CPU binding.
.TP
\fB\-\-single\fR
Bind on a single CPU to prevent migration.
@@ -41,6 +57,10 @@
\fB\-l\fR \fB\-\-logical\fR
take logical indexes instead of physical/OS indexes (default)
.TP
+\fB\-\-taskset\fR
+Manipulate CPU set strings in the format recognized by the taskset command-line
+program instead of hwloc-specific CPU set string format.
+.TP
\fB\-v\fR
Verbose output.
.TP
@@ -70,6 +90,8 @@
.SH EXAMPLES
.PP
hwloc-bind's operation is best described through several examples.
+More details about how locations are specified on the hwloc-bind
+command line are described in hwloc(7).
.
.PP
To run the echo command on the first logical processor of the second
@@ -92,10 +114,19 @@
hwloc-bind can do.
.
.PP
-To run on the three first sockets on the second and third nodes:
+To run on the first three sockets on the second and third nodes:
hwloc-bind node:1-2.socket:0:3 echo hello
+which is also equivalent to:
+
+ hwloc-bind node:1-2.socket:0-2 echo hello
+
+Note that if you attempt to bind to objects that do not exist,
+hwloc-bind will not warn unless
+.I -v
+was specified.
+
To run on processor with physical index 2 in socket with physical index 1:
hwloc-bind --physical socket:1.core:2 echo hello
@@ -108,6 +139,10 @@
hwloc-bind socket:0 ~socket:0.core:1 ~socket:0.core:4 echo hello
+To bind memory on second memory node and run on first node (when supported by the OS):
+
+ hwloc-bind --cpubind node:1 --membind node:0 echo hello
+
The --get option can report current bindings. This example shows
nesting hwloc-bind invocations to set a binding and then report it:
@@ -124,6 +159,15 @@
hwloc-bind 0x00004444,0x44000000 echo hello
hwloc-bind `hwloc-calc node:1.socket:2` echo hello
+
+Memory binding may also be reported:
+
+ hwloc-bind --membind node:1 --mempolicy interleave -- hwloc-bind --get --membind
+
+This returns a string describing the memory binding, such as "0x000000f0
+(interleave)". Note that if the system does not contain any NUMA
+nodes, the reported string will indicate that the process is bound to
+the entire system memory (e.g., "0xf...f").
.
.\" **************************
.\" Return value section
Modified: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/utils/hwloc-bind.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/utils/hwloc-bind.c 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/utils/hwloc-bind.c 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,5 +1,7 @@
/*
- * Copyright © 2009 CNRS, INRIA, Université Bordeaux 1
+ * Copyright © 2009 CNRS
+ * Copyright © 2009-2010 INRIA
+ * Copyright © 2009-2010 Université Bordeaux 1
* Copyright © 2009 Cisco Systems, Inc. All rights reserved.
* See COPYING in top-level directory.
*/
@@ -17,33 +19,42 @@
fprintf(where, " <location> may be a space-separated list of cpusets or objects\n");
fprintf(where, " as supported by the hwloc-calc utility.\n");
fprintf(where, "Options:\n");
- fprintf(where, " -l --logical\ttake logical object indexes (default)\n");
- fprintf(where, " -p --physical\ttake physical object indexes\n");
- fprintf(where, " --single\tbind on a single CPU to prevent migration\n");
- fprintf(where, " --strict\trequire strict binding\n");
- fprintf(where, " --get\t\tretrieve current process binding\n");
- fprintf(where, " --pid <pid>\toperate on process <pid>\n");
- fprintf(where, " -v\t\tverbose messages\n");
- fprintf(where, " --version\treport version and exit\n");
+ fprintf(where, " --cpubind Use following arguments for cpu binding (default)\n");
+ fprintf(where, " --membind Use following arguments for memory binding\n");
+ fprintf(where, " --mempolicy <default|firsttouch|bind|interleave|replicate|nexttouch>\n"
+ " Change the memory binding policy (default is bind)\n");
+ fprintf(where, " -l --logical Take logical object indexes (default)\n");
+ fprintf(where, " -p --physical Take physical object indexes\n");
+ fprintf(where, " --single Bind on a single CPU to prevent migration\n");
+ fprintf(where, " --strict Require strict binding\n");
+ fprintf(where, " --get Retrieve current process binding\n");
+ fprintf(where, " --pid <pid> Operate on process <pid>\n");
+ fprintf(where, " --taskset Manipulate taskset-specific cpuset strings\n");
+ fprintf(where, " -v Show verbose messages\n");
+ fprintf(where, " --version Report version and exit\n");
}
int main(int argc, char *argv[])
{
hwloc_topology_t topology;
unsigned depth;
- hwloc_cpuset_t cpu_set; /* invalid until bind_cpus is set */
+ hwloc_bitmap_t cpubind_set, membind_set;
+ int cpubind = 1; /* membind if 0 */
int get_binding = 0;
- int bind_cpus = 0;
int single = 0;
int verbose = 0;
int logical = 1;
- int flags = 0;
+ int taskset = 0;
+ int cpubind_flags = 0;
+ hwloc_membind_policy_t membind_policy = HWLOC_MEMBIND_BIND;
+ int membind_flags = 0;
int opt;
int ret;
hwloc_pid_t pid = 0;
char **orig_argv = argv;
- cpu_set = hwloc_cpuset_alloc();
+ cpubind_set = hwloc_bitmap_alloc();
+ membind_set = hwloc_bitmap_alloc();
hwloc_topology_init(&topology);
hwloc_topology_load(topology);
@@ -76,7 +87,8 @@
goto next;
}
else if (!strcmp(argv[0], "--strict")) {
- flags |= HWLOC_CPUBIND_STRICT;
+ cpubind_flags |= HWLOC_CPUBIND_STRICT;
+ membind_flags |= HWLOC_MEMBIND_STRICT;
goto next;
}
else if (!strcmp(argv[0], "--pid")) {
@@ -100,71 +112,174 @@
logical = 0;
goto next;
}
+ if (!strcmp(argv[0], "--taskset")) {
+ taskset = 1;
+ goto next;
+ }
else if (!strcmp (argv[0], "--get")) {
- get_binding = 1;
+ get_binding = 1;
+ goto next;
+ }
+ else if (!strcmp (argv[0], "--cpubind")) {
+ cpubind = 1;
goto next;
}
+ else if (!strcmp (argv[0], "--membind")) {
+ cpubind = 0;
+ goto next;
+ }
+ else if (!strcmp (argv[0], "--mempolicy")) {
+ if (!strncmp(argv[1], "default", 2))
+ membind_policy = HWLOC_MEMBIND_DEFAULT;
+ else if (!strncmp(argv[1], "firsttouch", 2))
+ membind_policy = HWLOC_MEMBIND_FIRSTTOUCH;
+ else if (!strncmp(argv[1], "bind", 2))
+ membind_policy = HWLOC_MEMBIND_BIND;
+ else if (!strncmp(argv[1], "interleace", 2))
+ membind_policy = HWLOC_MEMBIND_INTERLEAVE;
+ else if (!strncmp(argv[1], "replicate", 2))
+ membind_policy = HWLOC_MEMBIND_REPLICATE;
+ else if (!strncmp(argv[1], "nexttouch", 2))
+ membind_policy = HWLOC_MEMBIND_NEXTTOUCH;
+ else {
+ fprintf(stderr, "Unrecognized memory binding policy %s\n", argv[1]);
+ usage (stderr);
+ exit(EXIT_FAILURE);
+ }
+ opt = 1;
+ goto next;
+ }
+ fprintf (stderr, "Unrecognized option: %s\n", argv[0]);
usage(stderr);
return EXIT_FAILURE;
}
- ret = hwloc_mask_process_arg(topology, depth, argv[0], logical, cpu_set, verbose);
+ ret = hwloc_mask_process_arg(topology, depth, argv[0], logical,
+ cpubind ? cpubind_set : membind_set,
+ taskset, verbose);
if (ret < 0) {
if (verbose)
fprintf(stderr, "assuming the command starts at %s\n", argv[0]);
break;
}
- /* we found at least one binding argument */
- bind_cpus = 1;
-
next:
argc -= opt+1;
argv += opt+1;
}
if (get_binding) {
- char *s;
+ char *s, *policystr = NULL;
int err;
- if (pid)
- err = hwloc_get_proc_cpubind(topology, pid, cpu_set, 0);
+ if (cpubind) {
+ if (pid)
+ err = hwloc_get_proc_cpubind(topology, pid, cpubind_set, 0);
+ else
+ err = hwloc_get_cpubind(topology, cpubind_set, 0);
+ if (err) {
+ const char *errmsg = strerror(errno);
+ if (pid)
+ fprintf(stderr, "hwloc_get_proc_cpubind %d failed (errno %d %s)\n", pid, errno, errmsg);
+ else
+ fprintf(stderr, "hwloc_get_cpubind failed (errno %d %s)\n", errno, errmsg);
+ return EXIT_FAILURE;
+ }
+ if (taskset)
+ hwloc_bitmap_taskset_asprintf(&s, cpubind_set);
+ else
+ hwloc_bitmap_asprintf(&s, cpubind_set);
+ } else {
+ hwloc_membind_policy_t policy;
+ if (pid)
+ err = hwloc_get_proc_membind(topology, pid, membind_set, &policy, 0);
+ else
+ err = hwloc_get_membind(topology, membind_set, &policy, 0);
+ if (err) {
+ const char *errmsg = strerror(errno);
+ if (pid)
+ fprintf(stderr, "hwloc_get_proc_membind %d failed (errno %d %s)\n", pid, errno, errmsg);
+ else
+ fprintf(stderr, "hwloc_get_membind failed (errno %d %s)\n", errno, errmsg);
+ return EXIT_FAILURE;
+ }
+ if (taskset)
+ hwloc_bitmap_taskset_asprintf(&s, membind_set);
+ else
+ hwloc_bitmap_asprintf(&s, membind_set);
+ switch (policy) {
+ case HWLOC_MEMBIND_DEFAULT: policystr = "default"; break;
+ case HWLOC_MEMBIND_FIRSTTOUCH: policystr = "firsttouch"; break;
+ case HWLOC_MEMBIND_BIND: policystr = "bind"; break;
+ case HWLOC_MEMBIND_INTERLEAVE: policystr = "interleave"; break;
+ case HWLOC_MEMBIND_REPLICATE: policystr = "replicate"; break;
+ case HWLOC_MEMBIND_NEXTTOUCH: policystr = "nexttouch"; break;
+ default: fprintf(stderr, "unknown memory policy %u\n", policy); assert(0); break;
+ }
+ }
+ if (policystr)
+ printf("%s (%s)\n", s, policystr);
else
- err = hwloc_get_cpubind(topology, cpu_set, 0);
- if (err) {
- const char *errmsg = strerror(errno);
- fprintf(stderr, "hwloc_get_cpubind failed (errno %d %s)\n", errno, errmsg);
- return EXIT_FAILURE;
- }
- s = hwloc_cpuset_printf_value(cpu_set);
- printf("%s\n", s);
+ printf("%s\n", s);
free(s);
return EXIT_SUCCESS;
}
- if (bind_cpus) {
+ if (!hwloc_bitmap_iszero(cpubind_set)) {
if (verbose) {
- char *s = hwloc_cpuset_printf_value(cpu_set);
+ char *s;
+ hwloc_bitmap_asprintf(&s, cpubind_set);
fprintf(stderr, "binding on cpu set %s\n", s);
free(s);
}
if (single)
- hwloc_cpuset_singlify(cpu_set);
+ hwloc_bitmap_singlify(cpubind_set);
if (pid)
- ret = hwloc_set_proc_cpubind(topology, pid, cpu_set, flags);
+ ret = hwloc_set_proc_cpubind(topology, pid, cpubind_set, cpubind_flags);
else
- ret = hwloc_set_cpubind(topology, cpu_set, flags);
+ ret = hwloc_set_cpubind(topology, cpubind_set, cpubind_flags);
if (ret) {
int bind_errno = errno;
const char *errmsg = strerror(bind_errno);
- char *s = hwloc_cpuset_printf_value(cpu_set);
- fprintf(stderr, "hwloc_set_cpubind %s failed (errno %d %s)\n", s, bind_errno, errmsg);
+ char *s;
+ hwloc_bitmap_asprintf(&s, cpubind_set);
+ if (pid)
+ fprintf(stderr, "hwloc_set_proc_cpubind %s %d failed (errno %d %s)\n", s, pid, bind_errno, errmsg);
+ else
+ fprintf(stderr, "hwloc_set_cpubind %s failed (errno %d %s)\n", s, bind_errno, errmsg);
free(s);
}
}
- hwloc_cpuset_free(cpu_set);
+ if (!hwloc_bitmap_iszero(membind_set)) {
+ if (verbose) {
+ char *s;
+ hwloc_bitmap_asprintf(&s, membind_set);
+ fprintf(stderr, "binding on memory set %s\n", s);
+ free(s);
+ }
+ if (single)
+ hwloc_bitmap_singlify(membind_set);
+ if (pid)
+ ret = hwloc_set_proc_membind(topology, pid, membind_set, membind_policy, membind_flags);
+ else
+ ret = hwloc_set_membind(topology, membind_set, membind_policy, membind_flags);
+ if (ret) {
+ int bind_errno = errno;
+ const char *errmsg = strerror(bind_errno);
+ char *s;
+ hwloc_bitmap_asprintf(&s, membind_set);
+ if (pid)
+ fprintf(stderr, "hwloc_set_proc_membind %s %d failed (errno %d %s)\n", s, pid, bind_errno, errmsg);
+ else
+ fprintf(stderr, "hwloc_set_membind %s failed (errno %d %s)\n", s, bind_errno, errmsg);
+ free(s);
+ }
+ }
+ hwloc_bitmap_free(cpubind_set);
+ hwloc_bitmap_free(membind_set);
+
hwloc_topology_destroy(topology);
if (pid)
Modified: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/utils/hwloc-calc.1in
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/utils/hwloc-calc.1in 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/utils/hwloc-calc.1in 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,4 +1,6 @@
.\" -*- nroff -*-
+.\" Copyright © 2010 INRIA
+.\" Copyright © 2009 Cisco Systems, Inc. All rights reserved.
.TH HWLOC-CALC "1" "#HWLOC_DATE#" "#PACKAGE_VERSION#" "#PACKAGE_NAME#"
.SH NAME
hwloc-calc \- Operate on cpu mask strings and objects
@@ -35,22 +37,51 @@
\fB\-\-lo\fR \fB\-\-logical\-output\fR
Use logical indexes instead of physical/OS indexes for output (default).
.TP
-\fB\-\-PUlist\fR
-Report the comma-separated list of processing units' indexes instead of the cpu mask string.
+\fB\-\-intersect <type|depth>\fR
+Find the list of objects of the given type or depth that intersect the CPU set and
+report the comma-separated list of their indexes instead of the cpu mask string.
+This may be used for determining the list of objects above or below the input
+objects.
When combined with \fB\-\-physical\fR, the list is convenient to pass to external
-tools such as taskset or numactl \fB\-\-physcpubind\fR.
+tools such as taskset or numactl \fB\-\-physcpubind\fR or \fB\-\-membind\fR.
+This is different from \-\-largest since the latter requires that all reported
+objects are strictly included inside the input objects.
.TP
-\fB\-\-nodelist\fR
-Report the comma-separated list of memory nodes' indexes instead of the cpu mask string.
-When combined with \fB\-\-physical\fR, the list is convenient to pass to external
-tools such as numactl \fB\-\-membind\fR.
+\fB\-\-largest\fR
+Report (in a human readable format) the list of largest objects which exactly
+include all input objects.
+None of these output objects intersect each other, and the sum of them is
+exactly equivalent to the input. No largest object is included in the input
+This is different from \-\-intersect where reported objects may not be
+strictly included in the input.
.TP
-\fB\-\-objects\fR
-Report the list of highest objects instead of the cpu mask string.
-.TP
\fB\-\-single\fR
Singlify the output to a single CPU.
.TP
+\fB\-\-taskset\fR
+Manipulate CPU set strings in the format recognized by the taskset command-line
+program instead of hwloc-specific CPU set string format.
+.TP
+\fB\-i\fR <file>, \fB\-\-input\fR <file>
+Read topology from XML file <file> (instead of discovering the
+topology on the local machine). If <file> is "\-", the standard input
+is used. XML support must have been compiled in to hwloc for this
+option to be usable.
+.TP
+\fB\-i\fR <directory>, \fB\-\-input\fR <directory>
+Read topology from the chroot specified by <directory> (instead of
+discovering the topology on the local machine). This option is
+generally only available on Linux.
+.TP
+\fB\-i\fR <specification>, \fB\-\-input\fR <specification>
+Simulate a fake hierarchy (instead of discovering the topology on the
+local machine). If <specification> is "node:2 pu:3", the topology will
+contain two NUMA nodes with 3 processing units in each of them.
+.TP
+\fB\-\-if\fR <format>, \fB\-\-input\-format\fR <format>
+Enforce the input in the given format, among \fBxml\fR, \fBfsroot\fR
+and \fBsynthetic\fR.
+.TP
\fB\-v\fR
Verbose output.
.TP
@@ -68,6 +99,22 @@
indexes) or CPU mask strings (no logical or physical index involved).
.
.PP
+If objects or CPU mask strings are given on the command-line,
+they are combined and a single output is printed.
+If no object or CPU mask strings are given on the command-line,
+the program will read the standard input.
+It will combine multiple objects or CPU mask strings that are
+given on the same line of the standard input line with spaces
+as separators.
+Different input lines will be processed separately.
+.
+.PP
+Command-line arguments and options are processed in order.
+For instance, it means that changing the type of input indexes
+with \fB\-\-li\fR or changing the input topology with \fB\-i\fR
+only affects the processing the following arguments.
+.
+.PP
.B NOTE:
It is highly recommended that you read the hwloc(7) overview page
before reading this man page. Most of the concepts described in
@@ -101,17 +148,17 @@
To display the list of logical processors included in the second
socket:
- $ hwloc-calc --PUlist socket:1
+ $ hwloc-calc --intersect PU socket:1
0,2,4,6
To display the list of NUMA nodes, by physical indexes, that intersect a given CPU mask:
- $ hwloc-calc --physical --nodelist 0xf0f0f0f0
+ $ hwloc-calc --physical --intersect NUMAnode 0xf0f0f0f0
0,2
To display the physical index of a processor given by its logical index:
- $ hwloc-calc PU:2 --physical-output --PUlist
+ $ hwloc-calc PU:2 --physical-output --intersect PU
3
To combine both physical and logical indexes as input:
@@ -119,6 +166,21 @@
$ hwloc-calc PU:2 --physical-input PU:3
0x0000000c
+To synthetize a set of cores into largest objects on a 2-node 2-socket 2-core machine:
+
+ $ hwloc-calc core:0 --largest
+ Core:0
+ $ hwloc-calc core:0-1 --largest
+ Socket:0
+ $ hwloc-calc core:4-7 --largest
+ NUMANode:1
+ $ hwloc-calc core:2-6 --largest
+ Socket:1 Socket:2 Core:6
+ $ hwloc-calc socket:2 --largest
+ Socket:2
+ $ hwloc-calc socket:2-3 --largest
+ NUMANode:1
+
.
.\" **************************
.\" Return value section
Modified: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/utils/hwloc-calc.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/utils/hwloc-calc.c 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/utils/hwloc-calc.c 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,6 +1,8 @@
/*
- * Copyright © 2009 CNRS, INRIA, Université Bordeaux 1
- * Copyright © 2009 Cisco Systems, Inc. All rights reserved.
+ * Copyright © 2009 CNRS
+ * Copyright © 2009 INRIA
+ * Copyright © 2009-2010 Université Bordeaux 1
+ * Copyright © 2009-2010 Cisco Systems, Inc. All rights reserved.
* See COPYING in top-level directory.
*/
@@ -8,46 +10,103 @@
#include <hwloc-calc.h>
#include <hwloc.h>
+#include "misc.h"
+
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
-static void usage(FILE *where)
+void usage(const char *callname __hwloc_attribute_unused, FILE *where)
{
fprintf(where, "Usage: hwloc-calc [options] <location> ...\n");
fprintf(where, " <location> may be a space-separated list of cpusets or objects\n");
fprintf(where, " as supported by the hwloc-bind utility.\n");
fprintf(where, "Options:\n");
- fprintf(where, " -l --logical\tuse logical object indexes (default)\n");
- fprintf(where, " -p --physical\tuse physical object indexes\n");
- fprintf(where, " --li --logical-input\tuse logical indexes for input (default)\n");
- fprintf(where, " --lo --logical-output\tuse logical indexes for output (default)\n");
- fprintf(where, " --pi --physical-input\tuse physical indexes for input\n");
- fprintf(where, " --po --physical-output\tuse physical indexes for output\n");
- fprintf(where, " --PUlist\treport the list of processing units' indexes in the CPU set\n");
- fprintf(where, " --nodelist\treport the list of memory nodes' indexes near the CPU set\n");
- fprintf(where, " --objects\treport the list of largest objects in the CPU set\n");
- fprintf(where, " --single\tsinglify the output to a single CPU\n");
- fprintf(where, " -v\t\tverbose messages\n");
- fprintf(where, " --version\treport version and exit\n");
+ fprintf(where, " -l --logical Use logical object indexes (default)\n");
+ fprintf(where, " -p --physical Use physical object indexes\n");
+ fprintf(where, " --li --logical-input Use logical indexes for input (default)\n");
+ fprintf(where, " --lo --logical-output Use logical indexes for output (default)\n");
+ fprintf(where, " --pi --physical-input Use physical indexes for input\n");
+ fprintf(where, " --po --physical-output Use physical indexes for output\n");
+ fprintf(where, " --intersect <type|depth> Report the list of object indexes intersecting the CPU set\n");
+ fprintf(where, " --largest Report the list of largest objects in the CPU set\n");
+ fprintf(where, " --single Singlify the output to a single CPU\n");
+ fprintf(where, " --taskset Manipulate taskset-specific cpuset strings\n");
+ hwloc_utils_input_format_usage(where, 10);
+ fprintf(where, " -v Show verbose messages\n");
+ fprintf(where, " --version Report version and exit\n");
}
+static int verbose = 0;
+static int logicali = 1;
+static int logicalo = 1;
+static int listdepth = -1;
+static int showobjs = 0;
+static int singlify = 0;
+static int taskset = 0;
+
+static void
+hwloc_calc_output(hwloc_topology_t topology, hwloc_bitmap_t set)
+{
+ if (singlify)
+ hwloc_bitmap_singlify(set);
+
+ if (showobjs) {
+ hwloc_bitmap_t remaining = hwloc_bitmap_dup(set);
+ int first = 1;
+ while (!hwloc_bitmap_iszero(remaining)) {
+ char type[64];
+ unsigned idx;
+ hwloc_obj_t obj = hwloc_get_first_largest_obj_inside_cpuset(topology, remaining);
+ hwloc_obj_type_snprintf(type, sizeof(type), obj, 1);
+ idx = logicalo ? obj->logical_index : obj->os_index;
+ if (idx == (unsigned) -1)
+ printf("%s%s", first ? "" : " ", type);
+ else
+ printf("%s%s:%u", first ? "" : " ", type, idx);
+ hwloc_bitmap_andnot(remaining, remaining, obj->cpuset);
+ first = 0;
+ }
+ printf("\n");
+ hwloc_bitmap_free(remaining);
+ } else if (listdepth != -1) {
+ hwloc_obj_t proc, prev = NULL;
+ while ((proc = hwloc_get_next_obj_covering_cpuset_by_depth(topology, set, listdepth, prev)) != NULL) {
+ if (prev)
+ printf(",");
+ printf("%u", logicalo ? proc->logical_index : proc->os_index);
+ prev = proc;
+ }
+ printf("\n");
+ } else {
+ char *string = NULL;
+ if (taskset)
+ hwloc_bitmap_taskset_asprintf(&string, set);
+ else
+ hwloc_bitmap_asprintf(&string, set);
+ printf("%s\n", string);
+ free(string);
+ }
+}
+
int main(int argc, char *argv[])
{
hwloc_topology_t topology;
+ char *input = NULL;
+ enum hwloc_utils_input_format input_format = HWLOC_UTILS_INPUT_DEFAULT;
+ int input_changed = 0;
unsigned depth;
- hwloc_cpuset_t set;
- int verbose = 0;
- int logicali = 1;
- int logicalo = 1;
- int nodelist = 0;
- int pulist = 0;
- int showobjs = 0;
- int singlify = 0;
+ hwloc_bitmap_t set;
+ int cmdline_args = 0;
char **orig_argv = argv;
+ hwloc_obj_type_t listtype = (hwloc_obj_type_t) -1;
+ char *callname;
+ int opt;
- set = hwloc_cpuset_alloc();
+ callname = argv[0];
+ set = hwloc_bitmap_alloc();
+
hwloc_topology_init(&topology);
hwloc_topology_load(topology);
depth = hwloc_topology_get_depth(topology);
@@ -59,18 +118,40 @@
goto next;
}
if (!strcmp(argv[1], "--help")) {
- usage(stdout);
+ usage(callname, stdout);
return EXIT_SUCCESS;
}
- if (!strcasecmp(argv[1], "--pulist") || !strcmp(argv[1], "--proclist") /* backward compat with 0.9 */) {
- pulist = 1;
+ if (!strcmp(argv[1], "--intersect")) {
+ if (argc <= 2) {
+ usage(callname, stderr);
+ return EXIT_SUCCESS;
+ }
+ listtype = hwloc_obj_type_of_string(argv[2]);
+ if (listtype == (hwloc_obj_type_t) -1) {
+ char *endptr;
+ unsigned depth = strtoul(argv[2], &endptr, 0);
+ if (*endptr) {
+ fprintf(stderr, "unrecognized list type or depth %s\n", argv[2]);
+ usage(callname, stderr);
+ return EXIT_SUCCESS;
+ }
+ listdepth = depth;
+ }
+ argv++;
+ argc--;
+ goto next;
+ }
+ if (!strcasecmp(argv[1], "--pulist") || !strcmp(argv[1], "--proclist")) {
+ /* backward compat with 1.0 */
+ listtype = HWLOC_OBJ_PU;
goto next;
}
if (!strcmp(argv[1], "--nodelist")) {
- nodelist = 1;
+ /* backward compat with 1.0 */
+ listtype = HWLOC_OBJ_NODE;
goto next;
}
- if (!strcmp(argv[1], "--objects")) {
+ if (!strcmp(argv[1], "--largest") || !strcmp(argv[1], "--objects") /* backward compat with 1.0 */) {
showobjs = 1;
goto next;
}
@@ -108,11 +189,33 @@
singlify = 1;
goto next;
}
- usage(stderr);
+ if (!strcmp(argv[1], "--taskset")) {
+ taskset = 1;
+ goto next;
+ }
+ if (hwloc_utils_lookup_input_option(argv+1, argc, &opt,
+ &input, &input_format,
+ callname)) {
+ argv += opt;
+ argc -= opt;
+ input_changed = 1;
+ goto next;
+ }
+
+ fprintf (stderr, "Unrecognized option: %s\n", argv[1]);
+ usage(callname, stderr);
return EXIT_FAILURE;
}
- if (hwloc_mask_process_arg(topology, depth, argv[1], logicali, set, verbose) < 0)
+ if (input_changed && input) {
+ hwloc_utils_enable_input_format(topology, input, input_format, verbose, callname);
+ hwloc_topology_load(topology);
+ depth = hwloc_topology_get_depth(topology);
+ input_changed = 0;
+ }
+
+ cmdline_args++;
+ if (hwloc_mask_process_arg(topology, depth, argv[1], logicali, set, taskset, verbose) < 0)
fprintf(stderr, "ignored unrecognized argument %s\n", argv[1]);
next:
@@ -120,55 +223,44 @@
argv++;
}
- if (singlify)
- hwloc_cpuset_singlify(set);
+ if (listtype != (hwloc_obj_type_t) -1) {
+ listdepth = hwloc_get_type_depth(topology, listtype);
+ if (listdepth == HWLOC_TYPE_DEPTH_UNKNOWN) {
+ fprintf(stderr, "unavailable list type %s\n", hwloc_obj_type_string(listtype));
+ goto out;
+ } else if (listdepth == HWLOC_TYPE_DEPTH_MULTIPLE) {
+ fprintf(stderr, "cannot list type %s with multiple depth, please use the relevant depth directly\n", hwloc_obj_type_string(listtype));
+ goto out;
+ }
+ }
- if (showobjs) {
- hwloc_cpuset_t remaining = hwloc_cpuset_dup(set);
- int first = 1;
- while (!hwloc_cpuset_iszero(remaining)) {
- char type[64];
- unsigned idx;
- hwloc_obj_t obj = hwloc_get_first_largest_obj_inside_cpuset(topology, remaining);
- hwloc_obj_type_snprintf(type, sizeof(type), obj, 1);
- idx = logicalo ? obj->logical_index : obj->os_index;
- if (idx == (unsigned) -1)
- printf("%s%s", first ? "" : " ", type);
- else
- printf("%s%s:%u", first ? "" : " ", type, idx);
- hwloc_cpuset_andnot(remaining, remaining, obj->cpuset);
- first = 0;
+ if (cmdline_args) {
+ /* process command-line arguments */
+ hwloc_calc_output(topology, set);
+
+ } else {
+ /* process stdin arguments line-by-line */
+#define HWLOC_CALC_LINE_LEN 1024
+ char line[HWLOC_CALC_LINE_LEN];
+ while (fgets(line, sizeof(line), stdin)) {
+ char *current = line;
+ hwloc_bitmap_zero(set);
+ while (1) {
+ char *token = strtok(current, " \n");
+ if (!token)
+ break;
+ current = NULL;
+ if (hwloc_mask_process_arg(topology, depth, token, logicali, set, taskset, verbose) < 0)
+ fprintf(stderr, "ignored unrecognized argument %s\n", argv[1]);
+ }
+ hwloc_calc_output(topology, set);
}
- printf("\n");
- hwloc_cpuset_free(remaining);
- } else if (pulist) {
- hwloc_obj_t proc, prev = NULL;
- while ((proc = hwloc_get_next_obj_covering_cpuset_by_type(topology, set, HWLOC_OBJ_PU, prev)) != NULL) {
- if (prev)
- printf(",");
- printf("%u", logicalo ? proc->logical_index : proc->os_index);
- prev = proc;
- }
- printf("\n");
- } else if (nodelist) {
- hwloc_obj_t node, prev = NULL;
- while ((node = hwloc_get_next_obj_covering_cpuset_by_type(topology, set, HWLOC_OBJ_NODE, prev)) != NULL) {
- if (prev)
- printf(",");
- printf("%u", logicalo ? node->logical_index : node->os_index);
- prev = node;
- }
- printf("\n");
- } else {
- char *string = NULL;
- hwloc_cpuset_asprintf(&string, set);
- printf("%s\n", string);
- free(string);
}
+ out:
hwloc_topology_destroy(topology);
- hwloc_cpuset_free(set);
+ hwloc_bitmap_free(set);
return EXIT_SUCCESS;
}
Modified: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/utils/hwloc-calc.h
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/utils/hwloc-calc.h 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/utils/hwloc-calc.h 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,5 +1,7 @@
/*
- * Copyright © 2009 CNRS, INRIA, Université Bordeaux 1
+ * Copyright © 2009 CNRS
+ * Copyright © 2009-2010 INRIA
+ * Copyright © 2009-2010 Université Bordeaux 1
* See COPYING in top-level directory.
*/
@@ -26,35 +28,36 @@
} hwloc_mask_append_mode_t;
static inline int
-hwloc_mask_append_cpuset(hwloc_cpuset_t set, hwloc_const_cpuset_t newset,
+hwloc_mask_append_cpuset(hwloc_bitmap_t set, hwloc_const_bitmap_t newset,
hwloc_mask_append_mode_t mode, int verbose)
{
- char *s1 = hwloc_cpuset_printf_value(newset);
- char *s2 = hwloc_cpuset_printf_value(set);
+ char *s1, *s2;
+ hwloc_bitmap_asprintf(&s1, newset);
+ hwloc_bitmap_asprintf(&s2, set);
switch (mode) {
case HWLOC_MASK_APPEND_ADD:
if (verbose)
fprintf(stderr, "adding %s to %s\n",
s1, s2);
- hwloc_cpuset_or(set, set, newset);
+ hwloc_bitmap_or(set, set, newset);
break;
case HWLOC_MASK_APPEND_CLR:
if (verbose)
fprintf(stderr, "clearing %s from %s\n",
s1, s2);
- hwloc_cpuset_andnot(set, set, newset);
+ hwloc_bitmap_andnot(set, set, newset);
break;
case HWLOC_MASK_APPEND_AND:
if (verbose)
fprintf(stderr, "and'ing %s from %s\n",
s1, s2);
- hwloc_cpuset_and(set, set, newset);
+ hwloc_bitmap_and(set, set, newset);
break;
case HWLOC_MASK_APPEND_XOR:
if (verbose)
fprintf(stderr, "xor'ing %s from %s\n",
s1, s2);
- hwloc_cpuset_xor(set, set, newset);
+ hwloc_bitmap_xor(set, set, newset);
break;
default:
assert(0);
@@ -65,7 +68,7 @@
}
static inline hwloc_obj_t __hwloc_attribute_pure
-hwloc_mask_get_obj_inside_cpuset_by_depth(hwloc_topology_t topology, hwloc_const_cpuset_t rootset,
+hwloc_mask_get_obj_inside_cpuset_by_depth(hwloc_topology_t topology, hwloc_const_bitmap_t rootset,
unsigned depth, unsigned i, int logical)
{
if (logical) {
@@ -82,8 +85,8 @@
static inline int
hwloc_mask_append_object(hwloc_topology_t topology, unsigned topodepth,
- hwloc_const_cpuset_t rootset, const char *string, int logical,
- hwloc_cpuset_t set, int verbose)
+ hwloc_const_bitmap_t rootset, const char *string, int logical,
+ hwloc_bitmap_t set, int verbose)
{
hwloc_obj_t obj;
unsigned depth, width;
@@ -165,7 +168,8 @@
obj = hwloc_mask_get_obj_inside_cpuset_by_depth(topology, rootset, depth, i, logical);
if (verbose || !obj) {
- char * s = hwloc_cpuset_printf_value(rootset);
+ char *s;
+ hwloc_bitmap_asprintf(&s, rootset);
if (obj)
printf("object #%u depth %u below cpuset %s found\n",
i, depth, s);
@@ -190,8 +194,8 @@
static inline int
hwloc_mask_process_arg(hwloc_topology_t topology, unsigned topodepth,
- const char *arg, int logical, hwloc_cpuset_t set,
- int verbose)
+ const char *arg, int logical, hwloc_bitmap_t set,
+ int taskset, int verbose)
{
char *colon;
hwloc_mask_append_mode_t mode = HWLOC_MASK_APPEND_ADD;
@@ -210,15 +214,53 @@
colon = strchr(arg, ':');
if (colon) {
- hwloc_cpuset_t newset = hwloc_cpuset_alloc();
+ hwloc_bitmap_t newset = hwloc_bitmap_alloc();
err = hwloc_mask_append_object(topology, topodepth, hwloc_topology_get_complete_cpuset(topology), arg, logical, newset, verbose);
if (!err)
err = hwloc_mask_append_cpuset(set, newset, mode, verbose);
- hwloc_cpuset_free(newset);
+ hwloc_bitmap_free(newset);
+
+ } else if (taskset) {
+ /* try to parse as a list of integer starting with 0xf...f or 0x */
+ char *tmp = (char*) arg;
+ hwloc_bitmap_t newset;
+ if (strncasecmp(tmp, "0xf...f", 7) == 0) {
+ tmp += 7;
+ if (0 == *tmp) {
+ err = -1;
+ goto out;
+ }
+ } else {
+ if (strncasecmp(tmp, "0x", 2) != 0) {
+ err = -1;
+ goto out;
+ }
+ tmp += 2;
+ if (0 == *tmp) {
+ err = -1;
+ goto out;
+ }
+ }
+ if (strlen(tmp) != strspn(tmp, "0123456789abcdefABCDEF")) {
+ err = -1;
+ goto out;
+ }
+ newset = hwloc_bitmap_alloc();
+ hwloc_bitmap_taskset_sscanf(newset, arg);
+ err = hwloc_mask_append_cpuset(set, newset, mode, verbose);
+ hwloc_bitmap_free(newset);
+
} else {
- /* try to parse as a comma-separated list of integer with 0x as an optional prefix */
+ /* try to parse as a comma-separated list of integer with 0x as an optional prefix, and possibly starting with 0xf...f */
char *tmp = (char*) arg;
- hwloc_cpuset_t newset;
+ hwloc_bitmap_t newset;
+ if (strncasecmp(tmp, "0xf...f,", 8) == 0) {
+ tmp += 8;
+ if (0 == *tmp) {
+ err = -1;
+ goto out;
+ }
+ }
while (1) {
char *next = strchr(tmp, ',');
size_t len;
@@ -238,10 +280,10 @@
break;
tmp = next+1;
}
- newset = hwloc_cpuset_alloc();
- hwloc_cpuset_from_string(newset, arg);
+ newset = hwloc_bitmap_alloc();
+ hwloc_bitmap_sscanf(newset, arg);
err = hwloc_mask_append_cpuset(set, newset, mode, verbose);
- hwloc_cpuset_free(newset);
+ hwloc_bitmap_free(newset);
}
out:
Modified: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/utils/hwloc-distrib.1in
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/utils/hwloc-distrib.1in 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/utils/hwloc-distrib.1in 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,4 +1,6 @@
.\" -*- nroff -*-
+.\" Copyright © 2010 INRIA
+.\" Copyright © 2009-2010 Cisco Systems, Inc. All rights reserved.
.TH HWLOC-DISTRIB "1" "#HWLOC_DATE#" "#PACKAGE_VERSION#" "#PACKAGE_NAME#"
.SH NAME
hwloc-distrib \- Build a number of cpu masks distributed on the system
@@ -18,20 +20,51 @@
\fB\-\-single\fR
Singlify each output to a single CPU.
.TP
+\fB\-\-taskset\fR
+Show CPU set strings in the format recognized by the taskset command-line
+program instead of hwloc-specific CPU set string format.
+.TP
\fB\-v\fR
Verbose messages.
.TP
-\fB\-\-xml\fR <path>
-Read topology from XML file <path> (instead of discovering the
-topology on the local machine). If <path> is "\-", the standard input
+\fB\-i\fR <file>, \fB\-\-input\fR <file>
+Read topology from XML file <file> (instead of discovering the
+topology on the local machine). If <file> is "\-", the standard input
is used. XML support must have been compiled in to hwloc for this
option to be usable.
.TP
-\fB\-\-synthetic\fR <specification>
+\fB\-i\fR <directory>, \fB\-\-input\fR <directory>
+Read topology from the chroot specified by <directory> (instead of
+discovering the topology on the local machine). This option is
+generally only available on Linux.
+.TP
+\fB\-i\fR <specification>, \fB\-\-input\fR <specification>
Simulate a fake hierarchy (instead of discovering the topology on the
local machine). If <specification> is "node:2 pu:3", the topology will
contain two NUMA nodes with 3 processing units in each of them.
.TP
+\fB\-\-if\fR <format>, \fB\-\-input\-format\fR <format>
+Enforce the input in the given format, among \fBxml\fR, \fBfsroot\fR
+and \fBsynthetic\fR.
+.TP
+\fB\-\-ignore\fR <type>
+Ignore all objects of type <type> in the topology.
+.TP
+\fB\-\-from\fR <type>
+Distribute starting from objects of the given type instead of from
+the top of the topology hierarchy, i.e. ignoring the structure given by objects
+above.
+.TP
+\fB\-\-top\fR <type>
+Distribute down to objects of the given type instead of down to the bottom of
+the topology hierarchy, i.e. ignoring the structure given by objects below.
+This may be useful if some latitude is desired for the binding, e.g. just bind
+on sockets and not to precise cores or caches.
+.TP
+\fB\-\-at\fR <type>
+Distribute among objects of the given type. This is equivalent to specifying
+both \fB\-\-from\fR and \fB\-\-to\fR at the same time.
+.TP
\fB\-\-version\fR
Report version and exit.
.
@@ -40,9 +73,16 @@
.\" **************************
.SH DESCRIPTION
.
-hwloc-distrib generates a series of CPU masks in an attempt to
-distribute a set of processes around multiple processors in a single
-server. These masks can be used with hwloc-bind(1).
+hwloc-distrib generates a series of CPU masks corresponding to a distribution of
+a given number of elements over the topology of the machine. The distribution
+is done recursively from the top of the hierarchy (or from the level specified
+by option \fB\-\-from\fR) down to the bottom of the hierarchy (or down to the
+level specified by option \fB\-\-to\fR, or until only one element remains),
+splitting the number of elements at each encountered hierarchy level not ignored
+by options \fB\-\-ignore\fR.
+
+This can e.g. be used to distribute a set of processes hierarchically according
+to the topology of a machine. These masks can be used with hwloc-bind(1).
.
.PP
.B NOTE:
@@ -50,7 +90,6 @@
before reading this man page. Most of the concepts described in
hwloc(7) directly apply to the hwloc-bind utility.
.
-.
.\" **************************
.\" Examples Section
.\" **************************
@@ -77,13 +116,13 @@
0x00000010
0x00001000
-Each output line may be converted independently with hwloc-calc and xargs:
+Each output line may be converted independently with hwloc-calc:
- $ hwloc-distrib 4 --single | xargs -n 1 hwloc-calc --objects
- PU:0
- PU:1
- PU:2
- PU:3
+ $ hwloc-distrib 4 --single | hwloc-calc --taskset
+ 0x1
+ 0x100
+ 0x10
+ 0x1000
To convert the output into a list of processors that may be passed to
dplace -c inside a mpirun command line:
Modified: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/utils/hwloc-distrib.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/utils/hwloc-distrib.c 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/utils/hwloc-distrib.c 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,5 +1,7 @@
/*
- * Copyright © 2009 CNRS, INRIA, Université Bordeaux 1
+ * Copyright © 2009 CNRS
+ * Copyright © 2009-2010 INRIA
+ * Copyright © 2009-2010 Université Bordeaux 1
* Copyright © 2009 Cisco Systems, Inc. All rights reserved.
* See COPYING in top-level directory.
*/
@@ -7,31 +9,43 @@
#include <private/private.h>
#include <hwloc.h>
+#include "misc.h"
+
#include <unistd.h>
-static void usage(FILE *where)
+void usage(const char *callname __hwloc_attribute_unused, FILE *where)
{
fprintf(where, "Usage: hwloc-distrib [options] number\n");
fprintf(where, "Options:\n");
- fprintf(where, " --single\tsinglify each output to a single CPU\n");
- fprintf(where, " -v\t\t\tverbose messages\n");
- fprintf(where, " --synthetic \"2 2\"\tsimulate a fake hierarchy\n");
-#ifdef HWLOC_HAVE_XML
- fprintf(where, " --xml <path>\t\tread topology from XML file <path>\n");
-#endif
- fprintf(where, " --version\t\treport version and exit\n");
+ fprintf(where, " --single Singlify each output to a single CPU\n");
+ fprintf(where, " --taskset Show taskset-specific cpuset strings\n");
+ hwloc_utils_input_format_usage(where, 0);
+ fprintf(where, " --ignore <type> Ignore objects of the given type\n");
+ fprintf(where, " --from <type> Distribute starting from objects of the given type\n");
+ fprintf(where, " --to <type> Distribute down to objects of the given type\n");
+ fprintf(where, " --at <type> Distribute among objects of the given type\n");
+ fprintf(where, " -v Show verbose messages\n");
+ fprintf(where, " --version Report version and exit\n");
}
int main(int argc, char *argv[])
{
long n = -1;
- char * synthetic = NULL;
- const char * xmlpath = NULL;
+ char *callname;
+ char *input = NULL;
+ enum hwloc_utils_input_format input_format = HWLOC_UTILS_INPUT_DEFAULT;
+ int taskset = 0;
int singlify = 0;
int verbose = 0;
+ hwloc_obj_type_t from_type = (hwloc_obj_type_t) -1, to_type = (hwloc_obj_type_t) -1;
char **orig_argv = argv;
+ hwloc_topology_t topology;
+ int opt;
+ hwloc_topology_init(&topology);
+
/* skip argv[0], handle options */
+ callname = argv[0];
argv++;
argc--;
@@ -47,50 +61,78 @@
singlify = 1;
goto next;
}
+ if (!strcmp(argv[0], "--taskset")) {
+ taskset = 1;
+ goto next;
+ }
if (!strcmp(argv[0], "-v")) {
verbose = 1;
goto next;
}
if (!strcmp(argv[0], "--help")) {
- usage(stdout);
+ usage(callname, stdout);
return EXIT_SUCCESS;
}
- if (!strcmp (argv[0], "--synthetic")) {
+ if (hwloc_utils_lookup_input_option(argv, argc, &opt,
+ &input, &input_format,
+ callname)) {
+ argv += opt;
+ argc -= opt;
+ goto next;
+ }
+ else if (!strcmp (argv[0], "--ignore")) {
if (argc <= 2) {
- usage(stdout);
+ usage(callname, stdout);
exit(EXIT_FAILURE);
}
- synthetic = argv[1];
+ hwloc_topology_ignore_type(topology, hwloc_obj_type_of_string(argv[1]));
+ argc--;
argv++;
+ goto next;
+ }
+ else if (!strcmp (argv[0], "--from")) {
+ if (argc <= 2) {
+ usage(callname, stdout);
+ exit(EXIT_FAILURE);
+ }
+ from_type = hwloc_obj_type_of_string(argv[1]);
argc--;
+ argv++;
goto next;
}
- else if (!strcmp (argv[0], "--version")) {
- printf("%s %s\n", orig_argv[0], VERSION);
- exit(EXIT_SUCCESS);
+ else if (!strcmp (argv[0], "--to")) {
+ if (argc <= 2) {
+ usage(callname, stdout);
+ exit(EXIT_FAILURE);
+ }
+ to_type = hwloc_obj_type_of_string(argv[1]);
+ argc--;
+ argv++;
+ goto next;
}
-#ifdef HWLOC_HAVE_XML
- if (!strcmp (argv[0], "--xml")) {
+ else if (!strcmp (argv[0], "--at")) {
if (argc <= 2) {
- usage(stdout);
+ usage(callname, stdout);
exit(EXIT_FAILURE);
}
- xmlpath = argv[1];
+ from_type = to_type = hwloc_obj_type_of_string(argv[1]);
argc--;
argv++;
- if (!strcmp(xmlpath, "-"))
- xmlpath = "/dev/stdin";
goto next;
}
-#endif /* HWLOC_HAVE_XML */
+ else if (!strcmp (argv[0], "--version")) {
+ printf("%s %s\n", orig_argv[0], VERSION);
+ exit(EXIT_SUCCESS);
+ }
- usage(stderr);
+ fprintf (stderr, "Unrecognized option: %s\n", argv[0]);
+ usage(callname, stderr);
return EXIT_FAILURE;
}
if (n != -1) {
fprintf(stderr,"duplicate number\n");
- usage(stderr);
+ usage(callname, stderr);
return EXIT_FAILURE;
}
n = atol(argv[0]);
@@ -102,7 +144,7 @@
if (n == -1) {
fprintf(stderr,"need a number\n");
- usage(stderr);
+ usage(callname, stderr);
return EXIT_FAILURE;
}
@@ -110,29 +152,66 @@
fprintf(stderr, "distributing %ld\n", n);
{
- long i;
- hwloc_cpuset_t cpuset[n];
- hwloc_topology_t topology;
+ unsigned i;
+ int from_depth, to_depth;
+ unsigned chunks;
+ hwloc_bitmap_t cpuset[n];
- hwloc_topology_init(&topology);
- if (synthetic)
- hwloc_topology_set_synthetic(topology, synthetic);
- if (xmlpath)
- hwloc_topology_set_xml(topology, xmlpath);
+ if (input)
+ hwloc_utils_enable_input_format(topology, input, input_format, verbose, callname);
hwloc_topology_load(topology);
- hwloc_distribute(topology, hwloc_get_root_obj(topology), cpuset, n);
- for (i = 0; i < n; i++) {
- char *str = NULL;
- if (singlify)
- hwloc_cpuset_singlify(cpuset[i]);
- hwloc_cpuset_asprintf(&str, cpuset[i]);
- printf("%s\n", str);
- free(str);
- hwloc_cpuset_free(cpuset[i]);
+ if (from_type == (hwloc_obj_type_t) -1) {
+ from_depth = 0;
+ } else {
+ from_depth = hwloc_get_type_depth(topology, from_type);
+ if (from_depth == HWLOC_TYPE_DEPTH_UNKNOWN) {
+ fprintf(stderr, "unavailable type %s to distribute among, ignoring\n", hwloc_obj_type_string(from_type));
+ from_depth = 0;
+ } else if (from_depth == HWLOC_TYPE_DEPTH_MULTIPLE) {
+ fprintf(stderr, "multiple depth for type %s to distribute among, ignoring\n", hwloc_obj_type_string(from_type));
+ from_depth = 0;
+ }
}
- hwloc_topology_destroy(topology);
+
+ if (to_type == (hwloc_obj_type_t) -1) {
+ to_depth = INT_MAX;
+ } else {
+ to_depth = hwloc_get_type_depth(topology, to_type);
+ if (to_depth == HWLOC_TYPE_DEPTH_UNKNOWN) {
+ fprintf(stderr, "unavailable type %s to distribute among, ignoring\n", hwloc_obj_type_string(to_type));
+ to_depth = INT_MAX;
+ } else if (to_depth == HWLOC_TYPE_DEPTH_MULTIPLE) {
+ fprintf(stderr, "multiple depth for type %s to distribute among, ignoring\n", hwloc_obj_type_string(to_type));
+ to_depth = INT_MAX;
+ }
+ }
+
+ chunks = hwloc_get_nbobjs_by_depth(topology, from_depth);
+ {
+ hwloc_obj_t roots[chunks];
+
+ for (i = 0; i < chunks; i++)
+ roots[i] = hwloc_get_obj_by_depth(topology, from_depth, i);
+
+ hwloc_distributev(topology, roots, chunks, cpuset, n, to_depth);
+
+ for (i = 0; i < n; i++) {
+ char *str = NULL;
+ if (singlify)
+ hwloc_bitmap_singlify(cpuset[i]);
+ if (taskset)
+ hwloc_bitmap_taskset_asprintf(&str, cpuset[i]);
+ else
+ hwloc_bitmap_asprintf(&str, cpuset[i]);
+ printf("%s\n", str);
+ free(str);
+ hwloc_bitmap_free(cpuset[i]);
+ }
+ }
}
+ hwloc_topology_destroy(topology);
+
return EXIT_SUCCESS;
}
Added: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/utils/hwloc-ps.1in
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/utils/hwloc-ps.1in (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/utils/hwloc-ps.1in 2010-11-24 09:21:55 UTC (rev 7494)
@@ -0,0 +1,63 @@
+.\" -*- nroff -*-
+.\" Copyright © 2010 INRIA
+.\" Copyright © 2009-2010 Cisco Systems, Inc. All rights reserved.
+.TH HWLOC-PS "1" "#HWLOC_DATE#" "#PACKAGE_VERSION#" "#PACKAGE_NAME#"
+.SH NAME
+hwloc-ps \- List currently-running processes that are bound.
+.
+.\" **************************
+.\" Synopsis Section
+.\" **************************
+.SH SYNOPSIS
+.
+.B hwloc-ps
+[\fIoptions\fR]
+.
+.\" **************************
+.\" Options Section
+.\" **************************
+.SH OPTIONS
+.
+.TP 10
+\fB\-a\fR
+list all processes, even those that are not bound to any
+specific part of the machine.
+.TP
+\fB\-p\fR \fB\-\-physical\fR
+report OS/physical indexes instead of logical indexes
+.TP
+\fB\-l\fR \fB\-\-logical\fR
+report logical indexes instead of physical/OS indexes (default)
+.TP
+\fB\-c\fR \fB\-\-cpuset\fR
+show process bindings as cpusets instead of objects.
+.
+.\" **************************
+.\" Description Section
+.\" **************************
+.SH DESCRIPTION
+.
+By default, hwloc-ps lists only those currently-running processes that
+are bound; it displays their their identifier, command-line and
+binding. The binding may be reported as objects or cpusets.
+.
+The output is a plain list. If you wish to annotate the hierarchical
+topology with processes so as to see how they are actual distributed
+on the machine, you might want to use lstopo --ps instead (which also
+only shows processes that are bound).
+.
+.PP
+The
+.I -a
+switch can be used to show
+.I all
+processes, if desired.
+.
+.\" **************************
+.\" See also section
+.\" **************************
+.SH SEE ALSO
+.
+.ft R
+hwloc(7), lstopo(1), hwloc-calc(1), hwloc-distrib(1)
+.sp
Added: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/utils/hwloc-ps.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/utils/hwloc-ps.c (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/utils/hwloc-ps.c 2010-11-24 09:21:55 UTC (rev 7494)
@@ -0,0 +1,164 @@
+/*
+ * Copyright © 2009-2010 INRIA
+ * Copyright © 2009 Université Bordeaux 1
+ * Copyright © 2009 Cisco Systems, Inc. All rights reserved.
+ * See COPYING in top-level directory.
+ */
+
+#include <private/config.h>
+#include <hwloc.h>
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <dirent.h>
+#include <fcntl.h>
+
+static void usage(char *name, FILE *where)
+{
+ fprintf (where, "Usage: %s [ options ] ... [ filename ]\n", name);
+ fprintf (where, "Options:\n");
+ fprintf (where, " -a Show all processes, including those that are not bound\n");
+ fprintf (where, " -l --logical Use logical object indexes (default)\n");
+ fprintf (where, " -p --physical Use physical object indexes\n");
+ fprintf (where, " -c --cpuset Show cpuset instead of objects\n");
+}
+
+int main(int argc, char *argv[])
+{
+ const struct hwloc_topology_support *support;
+ hwloc_topology_t topology;
+ hwloc_obj_t root;
+ hwloc_bitmap_t cpuset;
+ int logical = 1;
+ int show_cpuset = 0;
+ DIR *dir;
+ struct dirent *dirent;
+ int show_all = 0;
+ char *callname;
+ int err;
+ int opt;
+
+ callname = strrchr(argv[0], '/');
+ if (!callname)
+ callname = argv[0];
+ else
+ callname++;
+
+ while (argc >= 2) {
+ opt = 0;
+ if (!strcmp(argv[1], "-a"))
+ show_all = 1;
+ else if (!strcmp(argv[1], "-l") || !strcmp(argv[1], "--logical")) {
+ logical = 1;
+ } else if (!strcmp(argv[1], "-p") || !strcmp(argv[1], "--physical")) {
+ logical = 0;
+ } else if (!strcmp(argv[1], "-c") || !strcmp(argv[1], "--cpuset")) {
+ show_cpuset = 1;
+ } else {
+ fprintf (stderr, "Unrecognized option: %s\n", argv[1]);
+ usage (callname, stderr);
+ exit(EXIT_FAILURE);
+ }
+ argc -= opt+1;
+ argv += opt+1;
+ }
+
+ err = hwloc_topology_init(&topology);
+ if (err)
+ goto out;
+
+ err = hwloc_topology_load(topology);
+ if (err)
+ goto out_with_topology;
+
+ root = hwloc_get_root_obj(topology);
+
+ support = hwloc_topology_get_support(topology);
+
+ if (!support->cpubind->get_thisproc_cpubind)
+ goto out_with_topology;
+
+ dir = opendir("/proc");
+ if (!dir)
+ goto out_with_topology;
+
+ cpuset = hwloc_bitmap_alloc();
+ if (!cpuset)
+ goto out_with_dir;
+
+ while ((dirent = readdir(dir))) {
+ long pid;
+ char *end;
+ char name[64] = "";
+ char *cpuset_str = NULL;
+
+ pid = strtol(dirent->d_name, &end, 10);
+ if (*end)
+ /* Not a number */
+ continue;
+
+#ifdef HWLOC_LINUX_SYS
+ {
+ char path[6 + strlen(dirent->d_name) + 1 + 7 + 1];
+ int file;
+ ssize_t n;
+
+ snprintf(path, sizeof(path), "/proc/%s/cmdline", dirent->d_name);
+
+ if ((file = open(path, O_RDONLY)) >= 0) {
+ n = read(file, name, sizeof(name) - 1);
+ close(file);
+
+ if (n <= 0)
+ /* Ignore kernel threads and errors */
+ continue;
+ name[n] = 0;
+ }
+ }
+#endif /* HWLOC_LINUX_SYS */
+
+ if (hwloc_get_proc_cpubind(topology, pid, cpuset, 0))
+ continue;
+
+ if (hwloc_bitmap_isequal(cpuset, root->cpuset) && !show_all)
+ continue;
+
+ printf("%ld\t", pid);
+
+ if (show_cpuset) {
+ hwloc_bitmap_asprintf(&cpuset_str, cpuset);
+ printf("%s", cpuset_str);
+ } else {
+ hwloc_bitmap_t remaining = hwloc_bitmap_dup(cpuset);
+ int first = 1;
+ while (!hwloc_bitmap_iszero(remaining)) {
+ char type[64];
+ unsigned idx;
+ hwloc_obj_t obj = hwloc_get_first_largest_obj_inside_cpuset(topology, remaining);
+ hwloc_obj_type_snprintf(type, sizeof(type), obj, 1);
+ idx = logical ? obj->logical_index : obj->os_index;
+ if (idx == (unsigned) -1)
+ printf("%s%s", first ? "" : " ", type);
+ else
+ printf("%s%s:%u", first ? "" : " ", type, idx);
+ hwloc_bitmap_andnot(remaining, remaining, obj->cpuset);
+ first = 0;
+ }
+ hwloc_bitmap_free(remaining);
+ }
+
+ printf("\t\t%s\n", name);
+ free(cpuset_str);
+ }
+
+ err = 0;
+ hwloc_bitmap_free(cpuset);
+
+ out_with_dir:
+ closedir(dir);
+ out_with_topology:
+ hwloc_topology_destroy(topology);
+ out:
+ return err;
+}
Modified: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/utils/hwloc.7in
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/utils/hwloc.7in 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/utils/hwloc.7in 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,6 +1,8 @@
.\" -*- nroff -*-
+.\" Copyright © 2010 INRIA
+.\" Copyright © 2010 Université of Bordeaux
.\" Copyright © 2009-2010 Cisco Systems, Inc. All rights reserved.
-.TH HWLOC "1" "#HWLOC_DATE#" "#PACKAGE_VERSION#" "#PACKAGE_NAME#"
+.TH HWLOC "7" "#HWLOC_DATE#" "#PACKAGE_VERSION#" "#PACKAGE_NAME#"
.SH NAME
hwloc - General information about hwloc ("hardware locality").
.
@@ -90,7 +92,7 @@
the topology, the Nth tuple's object must have a shallower topology
depth than the (N+1)th tuple's object. Put simply: as you move right
in a tuple chain, objects must go deeper in the topology tree.
-When using logical indexes (default),
+When using logical indexes (which is the default),
indexes specified in chained tuples are relative to the scope of the
parent object. For example, "socket:0.core:1" refers to the second
core in the first socket.
@@ -111,20 +113,30 @@
of 8 digits that are all zeoro can be left empty; "0xff0,,0x13" is
equivalent to "0xff0,0x00000000,0x13".
.
+If the location is prefixed with the special string "0xf...f", then
+all unspecified bits are set (as if the set were infinite). For
+example, "0xf...f,0x1" sets both the first bit and all bits starting
+with the 33rd. The string "0xf...f" -- with no other specified values
+-- sets all bits.
+.
.PP
Multiple locations can be specified on the hwloc-bind command line
(delimited by whitespace); the first token of the execution command is
assumed to either follow "--" (if specified) or the first token that
is unrecognized as a location.
.
-By default, multiple locations are added, meaning that the binding
-will be wider in the sense that the process may run on more objects.
-If prefixed with "~", the given location will be cleared instead of
-added to the current list of locations.
-If prefixed with "x", the given location will be and'ed instead of
-added to the current list.
-If prefixed with "^", the given location will be xor'ed.
+.PP
+By default, if multiple locations are specified, they are added,
+meaning that the binding will be wider in the sense that the process
+may run on more objects.
.
+.PP
+If prefixed with "~", the given location
+will be cleared instead of added to the current list of locations. If
+prefixed with "x", the given location will be and'ed instead of added
+to the current list. If prefixed with "^", the given location will be
+xor'ed.
+.
More complex operations may be performed by using
.R hwloc-calc
to compute intermediate values.
@@ -156,13 +168,13 @@
logical processors, such as hardware threads.
.
.TP
-.B proc
+.B pu
Short for
-.I processor
+.I processor unit
(not
.IR process !).
The smallest physical execution unit that hwloc recognizes. For
-example, there may be multiple procs on a core (e.g.,
+example, there may be multiple PUs on a core (e.g.,
hardware threads).
.PP
The additional
@@ -180,11 +192,7 @@
.I logical
values or
.I physical
-values.
-While
-.B hwloc-bind accepts logical indexes as
-.BR input
-by default.
+values. Most hwloc utilities accept logical indexes by default.
Passing
.B --physical
switches to physical/OS indexes.
@@ -208,24 +216,31 @@
following:
.
- System(32GB)
- Node#0(16GB)
- Socket#0 + L2(4MB)
- L1(32KB) + Core#16 + P#0
- L1(32KB) + Core#18 + P#2
- Socket#1 + L2(4MB)
- L1(32KB) + Core#16 + P#1
- L1(32KB) + Core#18 + P#3
+ Machine (47GB)
+ NUMANode p#0 (24GB) + Socket p#0 + L3 (12MB)
+ L2 (256KB) + L1 (32KB) + Core p#0 + PU p#0
+ L2 (256KB) + L1 (32KB) + Core p#1 + PU p#0
+ L2 (256KB) + L1 (32KB) + Core p#2 + PU p#0
+ L2 (256KB) + L1 (32KB) + Core p#8 + PU p#0
+ L2 (256KB) + L1 (32KB) + Core p#9 + PU p#0
+ L2 (256KB) + L1 (32KB) + Core p#10 + PU p#0
+ NUMANode p#1 (24GB) + Socket p#1 + L3 (12MB)
+ L2 (256KB) + L1 (32KB) + Core p#0 + PU p#0
+ L2 (256KB) + L1 (32KB) + Core p#1 + PU p#0
+ L2 (256KB) + L1 (32KB) + Core p#2 + PU p#0
+ L2 (256KB) + L1 (32KB) + Core p#8 + PU p#0
+ L2 (256KB) + L1 (32KB) + Core p#9 + PU p#0
+ L2 (256KB) + L1 (32KB) + Core p#10 + PU p#0
-The first core on the second socket is logically number 2 (i.e.,
-logically the 3rd core, starting from 0). Its physical index is
-16, but note that another core
+In this example, the first core on the second socket is logically
+number 6 (i.e., logically the 7th core, starting from 0). Its
+physical index is 0, but note that another core
.I also
-has a physical index of 16. Hence, physical indexes may only be
-relevant within the scope of their parent (or set of grandparents).
-In this example, to uniquely identify logical core 2 with
+has a physical index of 0. Hence, physical indexes may only be
+relevant within the scope of their parent (or set of ancestors).
+In this example, to uniquely identify logical core 6 with
physical indexes, you must specify (at a minimum) both a socket and a
-core: socket 1, core 16.
+core: socket 1, core 0.
.PP
Index values, regardless of whether they are logical or physical, can
be expressed in several different forms (where X, Y, and N are
@@ -275,7 +290,7 @@
.SH SEE ALSO
.
Hwloc's command line tool documentation: lstopo(1), hwloc-bind(1),
-hwloc-calc(1), hwloc-distrib(1).
+hwloc-calc(1), hwloc-distrib(1), hwloc-ps(1).
.
.PP
Hwloc has many C API functions, each of which have their own man page.
Modified: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/utils/lstopo-cairo.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/utils/lstopo-cairo.c 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/utils/lstopo-cairo.c 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,5 +1,7 @@
/*
- * Copyright © 2009 CNRS, INRIA, Université Bordeaux 1
+ * Copyright © 2009 CNRS
+ * Copyright © 2009-2010 INRIA
+ * Copyright © 2009-2010 Université Bordeaux 1
* Copyright © 2009 Cisco Systems, Inc. All rights reserved.
* See COPYING in top-level directory.
*/
@@ -33,6 +35,8 @@
#include <X11/Xutil.h>
#include <X11/keysym.h>
#include <X11/cursorfont.h>
+/* Avoid Xwindow's definition conflict with Windows' use for fields names. */
+#undef Status
#endif /* CAIRO_HAS_XLIB_SURFACE */
#include <stdio.h>
@@ -455,9 +459,10 @@
void
output_svg(hwloc_topology_t topology, const char *filename, int logical, int verbose_mode __hwloc_attribute_unused)
{
- FILE *output = open_file(filename, "w");
+ FILE *output;
cairo_surface_t *cs;
+ output = open_file(filename, "w");
if (!output) {
fprintf(stderr, "Failed to open %s for writing (%s)\n", filename, strerror(errno));
return;
Modified: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/utils/lstopo-color.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/utils/lstopo-color.c 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/utils/lstopo-color.c 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,5 +1,7 @@
/*
- * Copyright © 2009 CNRS, INRIA, Université Bordeaux 1
+ * Copyright © 2009 CNRS
+ * Copyright © 2009 INRIA
+ * Copyright © 2009 Université Bordeaux 1
* See COPYING in top-level directory.
*/
Modified: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/utils/lstopo-draw.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/utils/lstopo-draw.c 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/utils/lstopo-draw.c 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,6 +1,8 @@
/*
- * Copyright © 2009 CNRS, INRIA, Université Bordeaux 1
- * Copyright © 2009 Cisco Systems, Inc. All rights reserved.
+ * Copyright © 2009 CNRS
+ * Copyright © 2009-2010 INRIA
+ * Copyright © 2009-2010 Université Bordeaux 1
+ * Copyright © 2009-2010 Cisco Systems, Inc. All rights reserved.
* See COPYING in top-level directory.
*/
@@ -360,20 +362,20 @@
RECURSE_HORIZ(level, &null_draw_methods, 0, gridsize);
- if (hwloc_cpuset_isset(level->online_cpuset, level->os_index))
- if (!hwloc_cpuset_isset(level->allowed_cpuset, level->os_index))
+ if (hwloc_bitmap_isset(level->online_cpuset, level->os_index))
+ if (!hwloc_bitmap_isset(level->allowed_cpuset, level->os_index))
methods->box(output, FORBIDDEN_R_COLOR, FORBIDDEN_G_COLOR, FORBIDDEN_B_COLOR, depth, x, *retwidth, y, *retheight);
else {
- hwloc_cpuset_t bind = hwloc_cpuset_alloc();
+ hwloc_bitmap_t bind = hwloc_bitmap_alloc();
if (pid != (hwloc_pid_t) -1 && pid != 0)
hwloc_get_proc_cpubind(topology, pid, bind, 0);
else if (pid == 0)
hwloc_get_cpubind(topology, bind, 0);
- if (bind && hwloc_cpuset_isset(bind, level->os_index))
+ if (bind && hwloc_bitmap_isset(bind, level->os_index))
methods->box(output, RUNNING_R_COLOR, RUNNING_G_COLOR, RUNNING_B_COLOR, depth, x, *retwidth, y, *retheight);
else
methods->box(output, THREAD_R_COLOR, THREAD_G_COLOR, THREAD_B_COLOR, depth, x, *retwidth, y, *retheight);
- hwloc_cpuset_free(bind);
+ hwloc_bitmap_free(bind);
}
else
methods->box(output, OFFLINE_R_COLOR, OFFLINE_G_COLOR, OFFLINE_B_COLOR, depth, x, *retwidth, y, *retheight);
@@ -381,7 +383,7 @@
if (fontsize) {
char text[64];
lstopo_obj_snprintf(text, sizeof(text), level, logical);
- if (hwloc_cpuset_isset(level->online_cpuset, level->os_index))
+ if (hwloc_bitmap_isset(level->online_cpuset, level->os_index))
methods->text(output, 0, 0, 0, fontsize, depth-1, x + gridsize, y + gridsize, text);
else
methods->text(output, 0xff, 0xff, 0xff, fontsize, depth-1, x + gridsize, y + gridsize, text);
Modified: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/utils/lstopo-fig.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/utils/lstopo-fig.c 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/utils/lstopo-fig.c 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,5 +1,7 @@
/*
- * Copyright © 2009 CNRS, INRIA, Université Bordeaux 1
+ * Copyright © 2009 CNRS
+ * Copyright © 2009 INRIA
+ * Copyright © 2009-2010 Université Bordeaux 1
* See COPYING in top-level directory.
*/
Modified: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/utils/lstopo-text.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/utils/lstopo-text.c 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/utils/lstopo-text.c 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,6 +1,8 @@
/*
- * Copyright © 2009 CNRS, INRIA, Université Bordeaux 1
- * Copyright © 2009 Cisco Systems, Inc. All rights reserved.
+ * Copyright © 2009 CNRS
+ * Copyright © 2009-2010 INRIA
+ * Copyright © 2009-2010 Université Bordeaux 1
+ * Copyright © 2009-2010 Cisco Systems, Inc. All rights reserved.
* See COPYING in top-level directory.
*/
@@ -71,7 +73,10 @@
fprintf(output, " cpuset=");
if (show_cpuset) {
char *cpusetstr;
- hwloc_cpuset_asprintf(&cpusetstr, l->cpuset);
+ if (taskset)
+ hwloc_bitmap_taskset_asprintf(&cpusetstr, l->cpuset);
+ else
+ hwloc_bitmap_asprintf(&cpusetstr, l->cpuset);
fprintf(output, "%s", cpusetstr);
free(cpusetstr);
}
@@ -85,7 +90,7 @@
int group_identical = (verbose_mode <= 1) && !show_cpuset;
if (group_identical
&& parent && parent->arity == 1
- && l->cpuset && parent->cpuset && hwloc_cpuset_isequal(l->cpuset, parent->cpuset)) {
+ && l->cpuset && parent->cpuset && hwloc_bitmap_isequal(l->cpuset, parent->cpuset)) {
/* in non-verbose mode, merge objects with their parent is they are exactly identical */
fprintf(output, " + ");
} else {
@@ -159,51 +164,51 @@
}
if (verbose_mode > 1) {
- hwloc_const_cpuset_t complete = hwloc_topology_get_complete_cpuset(topology);
- hwloc_const_cpuset_t topo = hwloc_topology_get_topology_cpuset(topology);
- hwloc_const_cpuset_t online = hwloc_topology_get_online_cpuset(topology);
- hwloc_const_cpuset_t allowed = hwloc_topology_get_allowed_cpuset(topology);
+ hwloc_const_bitmap_t complete = hwloc_topology_get_complete_cpuset(topology);
+ hwloc_const_bitmap_t topo = hwloc_topology_get_topology_cpuset(topology);
+ hwloc_const_bitmap_t online = hwloc_topology_get_online_cpuset(topology);
+ hwloc_const_bitmap_t allowed = hwloc_topology_get_allowed_cpuset(topology);
- if (!hwloc_cpuset_isequal(topo, complete)) {
- hwloc_cpuset_t unknown = hwloc_cpuset_alloc();
+ if (!hwloc_bitmap_isequal(topo, complete)) {
+ hwloc_bitmap_t unknown = hwloc_bitmap_alloc();
char *unknownstr;
- hwloc_cpuset_copy(unknown, complete);
- hwloc_cpuset_andnot(unknown, unknown, topo);
- hwloc_cpuset_asprintf(&unknownstr, unknown);
- fprintf (output, "%d processors not represented in topology: %s\n", hwloc_cpuset_weight(unknown), unknownstr);
+ hwloc_bitmap_copy(unknown, complete);
+ hwloc_bitmap_andnot(unknown, unknown, topo);
+ hwloc_bitmap_asprintf(&unknownstr, unknown);
+ fprintf (output, "%d processors not represented in topology: %s\n", hwloc_bitmap_weight(unknown), unknownstr);
free(unknownstr);
- hwloc_cpuset_free(unknown);
+ hwloc_bitmap_free(unknown);
}
- if (!hwloc_cpuset_isequal(online, complete)) {
- hwloc_cpuset_t offline = hwloc_cpuset_alloc();
+ if (!hwloc_bitmap_isequal(online, complete)) {
+ hwloc_bitmap_t offline = hwloc_bitmap_alloc();
char *offlinestr;
- hwloc_cpuset_copy(offline, complete);
- hwloc_cpuset_andnot(offline, offline, online);
- hwloc_cpuset_asprintf(&offlinestr, offline);
- fprintf (output, "%d processors offline: %s\n", hwloc_cpuset_weight(offline), offlinestr);
+ hwloc_bitmap_copy(offline, complete);
+ hwloc_bitmap_andnot(offline, offline, online);
+ hwloc_bitmap_asprintf(&offlinestr, offline);
+ fprintf (output, "%d processors offline: %s\n", hwloc_bitmap_weight(offline), offlinestr);
free(offlinestr);
- hwloc_cpuset_free(offline);
+ hwloc_bitmap_free(offline);
}
- if (!hwloc_cpuset_isequal(allowed, online)) {
- if (!hwloc_cpuset_isincluded(online, allowed)) {
- hwloc_cpuset_t forbidden = hwloc_cpuset_alloc();
+ if (!hwloc_bitmap_isequal(allowed, online)) {
+ if (!hwloc_bitmap_isincluded(online, allowed)) {
+ hwloc_bitmap_t forbidden = hwloc_bitmap_alloc();
char *forbiddenstr;
- hwloc_cpuset_copy(forbidden, online);
- hwloc_cpuset_andnot(forbidden, forbidden, allowed);
- hwloc_cpuset_asprintf(&forbiddenstr, forbidden);
- fprintf(output, "%d processors online but not allowed: %s\n", hwloc_cpuset_weight(forbidden), forbiddenstr);
+ hwloc_bitmap_copy(forbidden, online);
+ hwloc_bitmap_andnot(forbidden, forbidden, allowed);
+ hwloc_bitmap_asprintf(&forbiddenstr, forbidden);
+ fprintf(output, "%d processors online but not allowed: %s\n", hwloc_bitmap_weight(forbidden), forbiddenstr);
free(forbiddenstr);
- hwloc_cpuset_free(forbidden);
+ hwloc_bitmap_free(forbidden);
}
- if (!hwloc_cpuset_isincluded(allowed, online)) {
- hwloc_cpuset_t potential = hwloc_cpuset_alloc();
+ if (!hwloc_bitmap_isincluded(allowed, online)) {
+ hwloc_bitmap_t potential = hwloc_bitmap_alloc();
char *potentialstr;
- hwloc_cpuset_copy(potential, allowed);
- hwloc_cpuset_andnot(potential, potential, online);
- hwloc_cpuset_asprintf(&potentialstr, potential);
- fprintf(output, "%d processors allowed but not online: %s\n", hwloc_cpuset_weight(potential), potentialstr);
+ hwloc_bitmap_copy(potential, allowed);
+ hwloc_bitmap_andnot(potential, potential, online);
+ hwloc_bitmap_asprintf(&potentialstr, potential);
+ fprintf(output, "%d processors allowed but not online: %s\n", hwloc_bitmap_weight(potential), potentialstr);
free(potentialstr);
- hwloc_cpuset_free(potential);
+ hwloc_bitmap_free(potential);
}
}
if (!hwloc_topology_is_thissystem(topology))
Modified: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/utils/lstopo-windows.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/utils/lstopo-windows.c 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/utils/lstopo-windows.c 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,5 +1,7 @@
/*
- * Copyright © 2009 CNRS, INRIA, Université Bordeaux 1
+ * Copyright © 2009 CNRS
+ * Copyright © 2009 INRIA
+ * Copyright © 2009-2010 Université Bordeaux 1
* See COPYING in top-level directory.
*/
Modified: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/utils/lstopo-xml.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/utils/lstopo-xml.c 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/utils/lstopo-xml.c 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,5 +1,7 @@
/*
- * Copyright © 2009 CNRS, INRIA, Université Bordeaux 1
+ * Copyright © 2009 CNRS
+ * Copyright © 2009-2010 INRIA
+ * Copyright © 2009 Université Bordeaux 1
* Copyright © 2009 Cisco Systems, Inc. All rights reserved.
* See COPYING in top-level directory.
*/
@@ -15,7 +17,7 @@
void output_xml(hwloc_topology_t topology, const char *filename, int logical __hwloc_attribute_unused, int verbose_mode __hwloc_attribute_unused)
{
- if (!strcasecmp(filename, "-.xml"))
+ if (!filename || !strcasecmp(filename, "-.xml"))
filename = "-";
hwloc_topology_export_xml(topology, filename);
Modified: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/utils/lstopo.1in
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/utils/lstopo.1in 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/utils/lstopo.1in 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,5 +1,7 @@
.\" -*- nroff -*-
-.\" Copyright © 2010 Cisco Systems, Inc. All rights reserved.
+.\" Copyright © 2009-2010 INRIA
+.\" Copyright © 2009-2010 Université of Bordeaux
+.\" Copyright © 2009-2010 Cisco Systems, Inc. All rights reserved.
.TH LSTOPO "1" "#HWLOC_DATE#" "#PACKAGE_VERSION#" "#PACKAGE_NAME#"
.SH NAME
lstopo \- Show the topology of the system (note that hwloc-bind(1)
@@ -20,11 +22,35 @@
.SH OPTIONS
.
.TP
+\fB\-\-of\fR <format>, \fB\-\-output\-format\fR <format>
+Enforce the output in the given format.
+See the OUTPUT FORMATS section below.
+.TP
+\fB\-i\fR <file>, \fB\-\-input\fR <file>
+Read topology from XML file <file> (instead of discovering the
+topology on the local machine). If <file> is "\-", the standard input
+is used. XML support must have been compiled in to hwloc for this
+option to be usable.
+.TP
+\fB\-i\fR <directory>, \fB\-\-input\fR <directory>
+Read topology from the chroot specified by <directory> (instead of
+discovering the topology on the local machine). This option is
+generally only available on Linux.
+.TP
+\fB\-i\fR <specification>, \fB\-\-input\fR <specification>
+Simulate a fake hierarchy (instead of discovering the topology on the
+local machine). If <specification> is "node:2 pu:3", the topology will
+contain two NUMA nodes with 3 processing units in each of them.
+.TP
+\fB\-\-if\fR <format>, \fB\-\-input\-format\fR <format>
+Enforce the input in the given format, among \fBxml\fR, \fBfsroot\fR
+and \fBsynthetic\fR.
+.TP
\fB\-v\fR \fB\-\-verbose\fR
Include additional detail.
.TP
\fB\-s\fR \fB\-\-silent\fR
-Opposite of --verbose (default).
+Reduce the amount of details to show.
.TP
\fB\-l\fR \fB\-\-logical\fR
Display hwloc logical indexes instead of physical/OS indexes (default).
@@ -43,6 +69,12 @@
Only display the cpuset of each object; do not display anything else
about the object.
.TP
+\fB\-\-taskset\fR
+Show CPU set strings in the format recognized by the taskset command-line
+program instead of hwloc-specific CPU set string format.
+This option should be combined with \fB\-\-cpuset\fR or \fB\-\-cpuset\-only\fR,
+otherwise it will imply \fB\-\-cpuset\fR.
+.TP
\fB\-\-only\fR <type>
Only show objects of the given type in the text output.
.TP
@@ -61,32 +93,18 @@
\fB\-\-merge\fR
Do not show levels that do not have a hierarchical impact.
.TP
-\fB\-\-xml\fR <path>
-Read topology from XML file <path> (instead of discovering the
-topology on the local machine). If <path> is "\-", the standard input
-is used. XML support must have been compiled in to hwloc for this
-option to be usable.
-.TP
-\fB\-\-fsys\-root\fR <path>
-Read topology from the chroot specified by <path> (instead of
-discovering the topology on the local machine). This option is
-generally only available on Linux.
-.TP
\fB\-\-pid\fR <pid>
Detect topology as seen by process <pid>, i.e. as if process <pid> did the
discovery itself, and show its current binding. Note that this can for instance
change the set of allowed processors. If 0 is given as pid, the current binding for the lstopo process will be shown.
.TP
-\fB\-\-top\fR
+\fB\-\-ps\fR \fB\-\-top\fR
Show existing processes as misc objects in the output. To avoid uselessly
cluttering the output, only processes that are restricted to some part of the
machine are shown. On Linux, kernel threads are not shown.
+If many processes appear, the output may become hard to read anyway,
+making the hwloc-ps program more practical.
.TP
-\fB\-\-synthetic\fR <specification>
-Simulate a fake hierarchy (instead of discovering the topology on the
-local machine). If <specification> is "node:2 pu:3", the topology will
-contain two NUMA nodes with 3 processing units in each of them.
-.TP
\fB\-\-fontsize\fR <size>
Set size of text font.
.TP
@@ -127,65 +145,81 @@
.SH OUTPUT FORMATS
.
.PP
-The filename on the command line determines the format of the output.
+The filename on the command line usually determines the format of the output.
There are a few filenames that indicate specific output formats and
devices (e.g., a filename of "-" will output a text summary to
stdout), but most filenames indicate the desired output format by
their suffix (e.g., "topo.png" will output a PNG-format file).
+.PP
+The format of the output may also be changed with "\-\-of".
+For instance, "\-\-of pdf" will generate a PDF-format file on the standard
+output, while "\-\-of fig toto" will output a Xfig-format file named "toto".
+
+.PP
+The list of currently supported formats is given below. Any of them may
+be used with "\-\-of" or as a filename suffix.
.TP
-.B \-
+.B default
+Send the output to a window or to the console depending on the environment.
+.TP
+.B console
Send a text summary to stdout.
.
.TP
-.B /dev/stdout
-Send a text summary to stdout. It is effectively the same as
-specifying "\-".
+.B txt
+Output an ASCII art representation of the map.
+If outputting to stdout and if colors are supported on the terminal,
+the output will be colorized.
.
.TP
-.B <filename>.txt
-If the filename ends in ".txt", lstopo outputs an ASCII art
-representation of the map.
+.B fig
+Output a representation of the map that can be loaded in Xfig.
.
.TP
-.B \-.txt
-If the entire filename is "\-.txt", lstopo outputs the same ASCII art
-representation as other ".txt" filenames, but with two exceptions: 1)
-the output is sent to stdout, and 2) if colors are supported on the
-terminal, the ASCII art will be colorized.
-.
-.TP
-.B <filename>.fig
-If the filename ends in ".fig", lstopo outputs a representation of the
-map that can be loaded in Xfig.
-.
-.TP
-.B <filename>.pdf
-If the filename ends in ".pdf" and lstopo was compiled with the proper
+.B pdf
+If lstopo was compiled with the proper
support, lstopo outputs a PDF representation of the map.
.
.TP
-.B <filename>.ps
-If the filename ends in ".ps" and lstopo was compiled with the proper
+.B ps
+If lstopo was compiled with the proper
support, lstopo outputs a Postscript representation of the map.
.
.TP
-.B <filename>.png
-If the filename ends in ".png" and lstopo was compiled with the proper
+.B png
+If lstopo was compiled with the proper
support, lstopo outputs a PNG representation of the map.
.
.TP
-.B <filename>.svg
-If the filename ends in ".svg" and lstopo was compiled with the proper
+.B svg
+If lstopo was compiled with the proper
support, lstopo outputs an SVG representation of the map.
.
.TP
-.B <filename>.xml
-If the filename ends in ".xml" and lstopo was compiled with the proper
+.B xml
+If lstopo was compiled with the proper
support, lstopo outputs an XML representation of the map.
-It may be reused later, even on another machine, with lstopo \-\-xml,
+It may be reused later, even on another machine, with lstopo \-\-input,
the HWLOC_XMLFILE environment variable, or the hwloc_topology_set_xml()
function.
+
+.PP
+The following special names may be used:
+.TP
+.B \-
+Send a text summary to stdout.
.
+.TP
+.B /dev/stdout
+Send a text summary to stdout. It is effectively the same as
+specifying "\-".
+.
+.TP
+.B \-.<format>
+If the entire filename is "\-.<format>", lstopo behaves as if
+"\-\-of <format> -" was given, which means a file of the given format
+is sent to the standard output.
+
.PP
See the output of "lstopo \-\-help" for a specific list of what
graphical output formats are supported in your hwloc installation.
@@ -256,7 +290,7 @@
machine1$ lstopo file.xml
<transfer file.xml from machine1 to machine2>
- machine2$ lstopo --xml file.xml
+ machine2$ lstopo --input file.xml
To display a summary of the topology:
@@ -281,7 +315,7 @@
Simulate a fake hierarchy; this example shows with 2 NUMA nodes of 2
processor units:
- lstopo --synthetic "n:2 2"
+ lstopo --input "n:2 2"
To count the number of logical processors in the system
@@ -292,5 +326,5 @@
.SH SEE ALSO
.
.ft R
-hwloc-bind(1)
+hwloc-bind(1), hwloc-ps(1)
.sp
Modified: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/utils/lstopo.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/utils/lstopo.c 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/utils/lstopo.c 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,27 +1,35 @@
/*
- * Copyright © 2009 CNRS, INRIA, Université Bordeaux 1
- * Copyright © 2009 Cisco Systems, Inc. All rights reserved.
+ * Copyright © 2009 CNRS
+ * Copyright © 2009-2010 INRIA
+ * Copyright © 2009-2010 Université Bordeaux 1
+ * Copyright © 2009-2010 Cisco Systems, Inc. All rights reserved.
* See COPYING in top-level directory.
*/
#include <private/config.h>
#include <hwloc.h>
+#ifdef HWLOC_LINUX_SYS
+#include <hwloc/linux.h>
+#endif /* HWLOC_LINUX_SYS */
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <dirent.h>
#include <fcntl.h>
+#include <assert.h>
#ifdef HWLOC_HAVE_CAIRO
#include <cairo.h>
#endif
#include "lstopo.h"
+#include "misc.h"
int logical = 1;
hwloc_obj_type_t show_only = (hwloc_obj_type_t) -1;
int show_cpuset = 0;
+int taskset = 0;
unsigned int fontsize = 10;
unsigned int gridsize = 10;
unsigned int force_horiz = 0;
@@ -31,8 +39,12 @@
FILE *open_file(const char *filename, const char *mode)
{
- const char *extn = strrchr(filename, '.');
+ const char *extn;
+ if (!filename)
+ return stdout;
+
+ extn = strrchr(filename, '.');
if (filename[0] == '-' && extn == filename + 1)
return stdout;
@@ -42,7 +54,10 @@
static void add_process_objects(hwloc_topology_t topology)
{
hwloc_obj_t root;
- hwloc_cpuset_t cpuset;
+ hwloc_bitmap_t cpuset;
+#ifdef HWLOC_LINUX_SYS
+ hwloc_bitmap_t task_cpuset;
+#endif /* HWLOC_LINUX_SYS */
DIR *dir;
struct dirent *dirent;
const struct hwloc_topology_support *support;
@@ -57,12 +72,16 @@
dir = opendir("/proc");
if (!dir)
return;
- cpuset = hwloc_cpuset_alloc();
+ cpuset = hwloc_bitmap_alloc();
+#ifdef HWLOC_LINUX_SYS
+ task_cpuset = hwloc_bitmap_alloc();
+#endif /* HWLOC_LINUX_SYS */
while ((dirent = readdir(dir))) {
long local_pid;
char *end;
char name[64];
+ int proc_cpubind;
local_pid = strtol(dirent->d_name, &end, 10);
if (*end)
@@ -71,8 +90,11 @@
snprintf(name, sizeof(name), "%ld", local_pid);
+ proc_cpubind = hwloc_get_proc_cpubind(topology, local_pid, cpuset, 0) != -1;
+
#ifdef HWLOC_LINUX_SYS
{
+ /* Get the process name */
char path[6 + strlen(dirent->d_name) + 1 + 7 + 1];
char cmd[64], *c;
int file;
@@ -94,91 +116,169 @@
snprintf(name, sizeof(name), "%ld %s", local_pid, cmd);
}
}
+
+ {
+ /* Get threads */
+ char path[6+strlen(dirent->d_name) + 1 + 4 + 1];
+ DIR *task_dir;
+ struct dirent *task_dirent;
+
+ snprintf(path, sizeof(path), "/proc/%s/task", dirent->d_name);
+
+ if ((task_dir = opendir(path))) {
+ while ((task_dirent = readdir(task_dir))) {
+ long local_tid;
+ char *task_end;
+ char task_name[64];
+
+ local_tid = strtol(task_dirent->d_name, &task_end, 10);
+ if (*task_end)
+ /* Not a number, or the main task */
+ continue;
+
+ if (hwloc_linux_get_tid_cpubind(topology, local_tid, task_cpuset))
+ continue;
+
+ if (proc_cpubind && hwloc_bitmap_isequal(task_cpuset, cpuset))
+ continue;
+
+ snprintf(task_name, sizeof(task_name), "%s %li", name, local_tid);
+
+ hwloc_topology_insert_misc_object_by_cpuset(topology, task_cpuset, task_name);
+ }
+ closedir(task_dir);
+ }
+ }
#endif /* HWLOC_LINUX_SYS */
- if (hwloc_get_proc_cpubind(topology, local_pid, cpuset, 0))
+ if (!proc_cpubind)
continue;
- if (hwloc_cpuset_isincluded(root->cpuset, cpuset))
+ if (hwloc_bitmap_isincluded(root->cpuset, cpuset))
continue;
hwloc_topology_insert_misc_object_by_cpuset(topology, cpuset, name);
}
- hwloc_cpuset_free(cpuset);
+ hwloc_bitmap_free(cpuset);
+#ifdef HWLOC_LINUX_SYS
+ hwloc_bitmap_free(task_cpuset);
+#endif /* HWLOC_LINUX_SYS */
closedir(dir);
}
-static void usage(char *name, FILE *where)
+void usage(const char *name, FILE *where)
{
- fprintf (where, "Usage: %s [ options ] ... [ filename ]\n\n", name);
+ fprintf (where, "Usage: %s [ options ] ... [ filename.format ]\n\n", name);
fprintf (where, "See lstopo(1) for more details.\n\n");
- fprintf (where, "Supported output file formats: .txt, .fig"
+ fprintf (where, "Supported output file formats: console, txt, fig"
#ifdef HWLOC_HAVE_CAIRO
#if CAIRO_HAS_PDF_SURFACE
- ", .pdf"
+ ", pdf"
#endif /* CAIRO_HAS_PDF_SURFACE */
#if CAIRO_HAS_PS_SURFACE
- ", .ps"
+ ", ps"
#endif /* CAIRO_HAS_PS_SURFACE */
#if CAIRO_HAS_PNG_FUNCTIONS
- ", .png"
+ ", png"
#endif /* CAIRO_HAS_PNG_FUNCTIONS */
#if CAIRO_HAS_SVG_SURFACE
- ", .svg"
+ ", svg"
#endif /* CAIRO_HAS_SVG_SURFACE */
#endif /* HWLOC_HAVE_CAIRO */
#ifdef HWLOC_HAVE_XML
- ", .xml"
+ ", xml"
#endif /* HWLOC_HAVE_XML */
"\n");
- fprintf (where, "\nOptions:\n");
- fprintf (where, " -l --logical Display hwloc logical object indexes (default)\n");
- fprintf (where, " -p --physical Display physical object indexes\n");
- fprintf (where, " -v --verbose Include additional detail\n");
- fprintf (where, " -s --silent Opposite of --verbose (default)\n");
- fprintf (where, " -c --cpuset Show the cpuset of each object\n");
- fprintf (where, " -C --cpuset-only Only show the cpuset of each ofbject\n");
- fprintf (where, " --only <type> Only show the given type in the text output\n");
- fprintf (where, " --ignore <type> Ignore objects of the given type\n");
- fprintf (where, " --no-caches Do not show caches\n");
- fprintf (where, " --no-useless-caches Do not show caches which do not have a hierarchical\n"
- " impact\n");
- fprintf (where, " --whole-system Do not consider administration limitations\n");
- fprintf (where, " --merge Do not show levels that do not have a hierarcical\n"
- " impact\n");
-#ifdef HWLOC_HAVE_XML
- fprintf (where, " --xml <path> Read topology from XML file <path>\n");
-#endif
-#ifdef HWLOC_LINUX_SYS
- fprintf (where, " --fsys-root <path> Chroot containing the /proc and /sys of another system\n");
-#endif
- fprintf (where, " --pid <pid> Detect topology as seen by process <pid>\n");
- fprintf (where, " --top Display processes within the hierarchy\n");
- fprintf (where, " --synthetic \"n:2 2\" Simulate a fake hierarchy, here with 2 NUMA nodes of 2\n"
- " processors\n");
- fprintf (where, " --fontsize 10 Set size of text font\n");
- fprintf (where, " --gridsize 10 Set size of margin between elements\n");
- fprintf (where, " --horiz Horizontal graphic layout instead of nearly 4/3 ratio\n");
- fprintf (where, " --vert Vertical graphic layout instead of nearly 4/3 ratio\n");
- fprintf (where, " --version Report version and exit\n");
+ fprintf (where, "\nFormatting options:\n");
+ fprintf (where, " -l --logical Display hwloc logical object indexes (default)\n");
+ fprintf (where, " -p --physical Display physical object indexes\n");
+ fprintf (where, "Output options:\n");
+ fprintf (where, " --output-format <format>\n");
+ fprintf (where, " --of <format> Force the output to use the given format\n");
+ fprintf (where, "Textual output options:\n");
+ fprintf (where, " --only <type> Only show objects of the given type in the text output\n");
+ fprintf (where, " -v --verbose Include additional details\n");
+ fprintf (where, " -s --silent Reduce the amount of details to show\n");
+ fprintf (where, " -c --cpuset Show the cpuset of each object\n");
+ fprintf (where, " -C --cpuset-only Only show the cpuset of each ofbject\n");
+ fprintf (where, " --taskset Show taskset-specific cpuset strings\n");
+ fprintf (where, "Object filtering options:\n");
+ fprintf (where, " --ignore <type> Ignore objects of the given type\n");
+ fprintf (where, " --no-caches Do not show caches\n");
+ fprintf (where, " --no-useless-caches Do not show caches which do not have a hierarchical\n"
+ " impact\n");
+ fprintf (where, " --merge Do not show levels that do not have a hierarcical\n"
+ " impact\n");
+ fprintf (where, "Input options:\n");
+ hwloc_utils_input_format_usage(where, 6);
+ fprintf (where, " --pid <pid> Detect topology as seen by process <pid>\n");
+ fprintf (where, " --whole-system Do not consider administration limitations\n");
+ fprintf (where, "Graphical output options:\n");
+ fprintf (where, " --fontsize 10 Set size of text font\n");
+ fprintf (where, " --gridsize 10 Set size of margin between elements\n");
+ fprintf (where, " --horiz Horizontal graphic layout instead of nearly 4/3 ratio\n");
+ fprintf (where, " --vert Vertical graphic layout instead of nearly 4/3 ratio\n");
+ fprintf (where, "Miscellaneous options:\n");
+ fprintf (where, " --ps --top Display processes within the hierarchy\n");
+ fprintf (where, " --version Report version and exit\n");
}
+enum output_format {
+ LSTOPO_OUTPUT_DEFAULT,
+ LSTOPO_OUTPUT_CONSOLE,
+ LSTOPO_OUTPUT_TEXT,
+ LSTOPO_OUTPUT_FIG,
+ LSTOPO_OUTPUT_PNG,
+ LSTOPO_OUTPUT_PDF,
+ LSTOPO_OUTPUT_PS,
+ LSTOPO_OUTPUT_SVG,
+ LSTOPO_OUTPUT_XML
+};
+
+static enum output_format
+parse_output_format(const char *name, char *callname)
+{
+ if (!strncasecmp(name, "default", 3))
+ return LSTOPO_OUTPUT_DEFAULT;
+ else if (!strncasecmp(name, "console", 3))
+ return LSTOPO_OUTPUT_CONSOLE;
+ else if (!strcasecmp(name, "txt"))
+ return LSTOPO_OUTPUT_TEXT;
+ else if (!strcasecmp(name, "fig"))
+ return LSTOPO_OUTPUT_FIG;
+ else if (!strcasecmp(name, "png"))
+ return LSTOPO_OUTPUT_PNG;
+ else if (!strcasecmp(name, "pdf"))
+ return LSTOPO_OUTPUT_PDF;
+ else if (!strcasecmp(name, "ps"))
+ return LSTOPO_OUTPUT_PS;
+ else if (!strcasecmp(name, "svg"))
+ return LSTOPO_OUTPUT_SVG;
+ else if (!strcasecmp(name, "xml"))
+ return LSTOPO_OUTPUT_XML;
+
+ fprintf(stderr, "file format `%s' not supported\n", name);
+ usage(callname, stderr);
+ exit(EXIT_FAILURE);
+}
+
+#define LSTOPO_VERBOSE_MODE_DEFAULT 1
+
int
main (int argc, char *argv[])
{
int err;
- int verbose_mode = 1;
+ int verbose_mode = LSTOPO_VERBOSE_MODE_DEFAULT;
hwloc_topology_t topology;
const char *filename = NULL;
unsigned long flags = 0;
int merge = 0;
int ignorecache = 0;
char * callname;
- char * synthetic = NULL;
- const char * xmlpath = NULL;
- char * fsysroot = NULL;
- int force_console = 0;
+ char * input = NULL;
+ enum hwloc_utils_input_format input_format = HWLOC_UTILS_INPUT_DEFAULT;
+ enum output_format output_format = LSTOPO_OUTPUT_DEFAULT;
int opt;
callname = strrchr(argv[0], '/');
@@ -196,10 +296,8 @@
opt = 0;
if (!strcmp (argv[1], "-v") || !strcmp (argv[1], "--verbose")) {
verbose_mode++;
- force_console = 1;
} else if (!strcmp (argv[1], "-s") || !strcmp (argv[1], "--silent")) {
verbose_mode--;
- force_console = 1;
} else if (!strcmp (argv[1], "-h") || !strcmp (argv[1], "--help")) {
usage(callname, stdout);
exit(EXIT_SUCCESS);
@@ -211,7 +309,11 @@
show_cpuset = 1;
else if (!strcmp (argv[1], "-C") || !strcmp (argv[1], "--cpuset-only"))
show_cpuset = 2;
- else if (!strcmp (argv[1], "--only")) {
+ else if (!strcmp (argv[1], "--taskset")) {
+ taskset = 1;
+ if (!show_cpuset)
+ show_cpuset = 1;
+ } else if (!strcmp (argv[1], "--only")) {
if (argc <= 2) {
usage (callname, stderr);
exit(EXIT_FAILURE);
@@ -255,51 +357,33 @@
gridsize = atoi(argv[2]);
opt = 1;
}
- else if (!strcmp (argv[1], "--synthetic")) {
- if (argc <= 2) {
- usage (callname, stderr);
- exit(EXIT_FAILURE);
- }
- synthetic = argv[2]; opt = 1;
- } else if (!strcmp (argv[1], "--xml")) {
-#ifdef HWLOC_HAVE_XML
- if (argc <= 2) {
- usage (callname, stderr);
- exit(EXIT_FAILURE);
- }
- xmlpath = argv[2]; opt = 1;
- if (!strcmp(xmlpath, "-")) {
- xmlpath = "/dev/stdin";
- }
-#else /* HWLOC_HAVE_XML */
- fprintf(stderr, "This installation of hwloc does not support --xml, sorry.\n");
- exit(EXIT_FAILURE);
-#endif /* HWLOC_HAVE_XML */
- } else if (!strcmp (argv[1], "--fsys-root")) {
-#ifdef HWLOC_LINUX_SYS
- if (argc <= 2) {
- usage (callname, stderr);
- exit(EXIT_FAILURE);
- }
- fsysroot = argv[2]; opt = 1;
-#else /* HWLOC_LINUX_SYS */
- fprintf(stderr, "This installation of hwloc does not support --fsys-root, sorry.\n");
- exit(EXIT_FAILURE);
-#endif /* HWLOC_LINUX_SYS */
+
+ else if (hwloc_utils_lookup_input_option(argv+1, argc-1, &opt,
+ &input, &input_format,
+ callname)) {
+ /* nothing to do anymore */
+
} else if (!strcmp (argv[1], "--pid")) {
if (argc <= 2) {
usage (callname, stderr);
exit(EXIT_FAILURE);
}
pid = atoi(argv[2]); opt = 1;
- } else if (!strcmp (argv[1], "--top"))
+ } else if (!strcmp (argv[1], "--ps") || !strcmp (argv[1], "--top"))
top = 1;
else if (!strcmp (argv[1], "--version")) {
printf("%s %s\n", callname, VERSION);
exit(EXIT_SUCCESS);
+ } else if (!strcmp (argv[1], "--output-format") || !strcmp (argv[1], "--of")) {
+ if (argc <= 2) {
+ usage (callname, stderr);
+ exit(EXIT_FAILURE);
+ }
+ output_format = parse_output_format(argv[2], callname);
+ opt = 1;
} else {
if (filename) {
- fprintf (stderr, "Unrecognized options: %s\n", argv[1]);
+ fprintf (stderr, "Unrecognized option: %s\n", argv[1]);
usage (callname, stderr);
exit(EXIT_FAILURE);
} else
@@ -309,12 +393,8 @@
argv += opt+1;
}
- if (show_only != (hwloc_obj_type_t)-1) {
+ if (show_only != (hwloc_obj_type_t)-1)
merge = 0;
- force_console = 1;
- }
- if (show_cpuset)
- force_console = 1;
hwloc_topology_set_flags(topology, flags);
@@ -326,21 +406,9 @@
if (merge)
hwloc_topology_ignore_all_keep_structure(topology);
- if (synthetic)
- if (hwloc_topology_set_synthetic(topology, synthetic))
- return EXIT_FAILURE;
- if (xmlpath) {
- if (hwloc_topology_set_xml(topology, xmlpath)) {
- perror("Setting target XML file");
- return EXIT_FAILURE;
- }
- }
- if (fsysroot) {
- if (hwloc_topology_set_fsroot(topology, fsysroot)) {
- perror("Setting target filesystem root");
- return EXIT_FAILURE;
- }
- }
+ if (input)
+ hwloc_utils_enable_input_format(topology, input, input_format, verbose_mode > 1, callname);
+
if (pid != (hwloc_pid_t) -1 && pid != 0) {
if (hwloc_topology_set_pid(topology, pid)) {
perror("Setting target pid");
@@ -361,52 +429,82 @@
verbose_mode--;
}
- if (!filename) {
+ /* if the output format wasn't enforced, look at the filename */
+ if (filename && output_format == LSTOPO_OUTPUT_DEFAULT) {
+ if (!strcmp(filename, "-")
+ || !strcmp(filename, "/dev/stdout")) {
+ output_format = LSTOPO_OUTPUT_CONSOLE;
+ } else {
+ char *dot = strrchr(filename, '.');
+ if (dot)
+ output_format = parse_output_format(dot+1, callname);
+ }
+ }
+
+ /* if the output format wasn't enforced, think a bit about what the user probably want */
+ if (output_format == LSTOPO_OUTPUT_DEFAULT) {
+ if (show_cpuset
+ || show_only != (hwloc_obj_type_t)-1
+ || verbose_mode != LSTOPO_VERBOSE_MODE_DEFAULT)
+ output_format = LSTOPO_OUTPUT_CONSOLE;
+ }
+
+ switch (output_format) {
+ case LSTOPO_OUTPUT_DEFAULT:
#ifdef HWLOC_HAVE_CAIRO
#if CAIRO_HAS_XLIB_SURFACE && defined HWLOC_HAVE_X11
- if (!force_console && getenv("DISPLAY"))
- output_x11(topology, NULL, logical, verbose_mode);
- else
+ if (getenv("DISPLAY"))
+ output_x11(topology, NULL, logical, verbose_mode);
+ else
#endif /* CAIRO_HAS_XLIB_SURFACE */
#endif /* HWLOC_HAVE_CAIRO */
#ifdef HWLOC_WIN_SYS
- output_windows(topology, NULL, logical, verbose_mode);
+ output_windows(topology, NULL, logical, verbose_mode);
#else
- output_console(topology, NULL, logical, verbose_mode);
+ output_console(topology, NULL, logical, verbose_mode);
#endif
- } else if (!strcmp(filename, "-")
- || !strcmp(filename, "/dev/stdout"))
- output_console(topology, filename, logical, verbose_mode);
- else if (strstr(filename, ".txt"))
- output_text(topology, filename, logical, verbose_mode);
- else if (strstr(filename, ".fig"))
- output_fig(topology, filename, logical, verbose_mode);
+ break;
+
+ case LSTOPO_OUTPUT_CONSOLE:
+ output_console(topology, filename, logical, verbose_mode);
+ break;
+ case LSTOPO_OUTPUT_TEXT:
+ output_text(topology, filename, logical, verbose_mode);
+ break;
+ case LSTOPO_OUTPUT_FIG:
+ output_fig(topology, filename, logical, verbose_mode);
+ break;
#ifdef HWLOC_HAVE_CAIRO
-#if CAIRO_HAS_PNG_FUNCTIONS
- else if (strstr(filename, ".png"))
- output_png(topology, filename, logical, verbose_mode);
-#endif /* CAIRO_HAS_PNG_FUNCTIONS */
-#if CAIRO_HAS_PDF_SURFACE
- else if (strstr(filename, ".pdf"))
- output_pdf(topology, filename, logical, verbose_mode);
-#endif /* CAIRO_HAS_PDF_SURFACE */
-#if CAIRO_HAS_PS_SURFACE
- else if (strstr(filename, ".ps"))
- output_ps(topology, filename, logical, verbose_mode);
+# if CAIRO_HAS_PNG_FUNCTIONS
+ case LSTOPO_OUTPUT_PNG:
+ output_png(topology, filename, logical, verbose_mode);
+ break;
+# endif /* CAIRO_HAS_PNG_FUNCTIONS */
+# if CAIRO_HAS_PDF_SURFACE
+ case LSTOPO_OUTPUT_PDF:
+ output_pdf(topology, filename, logical, verbose_mode);
+ break;
+# endif /* CAIRO_HAS_PDF_SURFACE */
+# if CAIRO_HAS_PS_SURFACE
+ case LSTOPO_OUTPUT_PS:
+ output_ps(topology, filename, logical, verbose_mode);
+ break;
#endif /* CAIRO_HAS_PS_SURFACE */
#if CAIRO_HAS_SVG_SURFACE
- else if (strstr(filename, ".svg"))
- output_svg(topology, filename, logical, verbose_mode);
+ case LSTOPO_OUTPUT_SVG:
+ output_svg(topology, filename, logical, verbose_mode);
+ break;
#endif /* CAIRO_HAS_SVG_SURFACE */
#endif /* HWLOC_HAVE_CAIRO */
#ifdef HWLOC_HAVE_XML
- else if (strstr(filename, ".xml"))
- output_xml(topology, filename, logical, verbose_mode);
+ case LSTOPO_OUTPUT_XML:
+ output_xml(topology, filename, logical, verbose_mode);
+ break;
#endif
- else {
- fprintf(stderr, "file format not supported\n");
- usage(callname, stderr);
- exit(EXIT_FAILURE);
+ default:
+ fprintf(stderr, "file format not supported\n");
+ usage(callname, stderr);
+ exit(EXIT_FAILURE);
}
hwloc_topology_destroy (topology);
Modified: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/utils/lstopo.h
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/utils/lstopo.h 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/utils/lstopo.h 2010-11-24 09:21:55 UTC (rev 7494)
@@ -1,5 +1,7 @@
/*
- * Copyright © 2009 CNRS, INRIA, Université Bordeaux 1
+ * Copyright © 2009 CNRS
+ * Copyright © 2009-2010 INRIA
+ * Copyright © 2009-2010 Université Bordeaux 1
* See COPYING in top-level directory.
*/
@@ -11,6 +13,7 @@
extern hwloc_obj_type_t show_only;
extern int show_cpuset;
+extern int taskset;
extern hwloc_pid_t pid;
typedef void output_method (struct hwloc_topology *topology, const char *output, int logical, int verbose_mode);
Added: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/utils/misc.h
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/utils/misc.h (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/utils/misc.h 2010-11-24 09:21:55 UTC (rev 7494)
@@ -0,0 +1,204 @@
+/*
+ * Copyright © 2009 CNRS
+ * Copyright © 2009-2010 INRIA
+ * Copyright © 2009-2010 Université Bordeaux 1
+ * Copyright © 2009 Cisco Systems, Inc. All rights reserved.
+ * See COPYING in top-level directory.
+ */
+
+#include <private/config.h>
+#include <hwloc.h>
+
+#include <stdio.h>
+#include <string.h>
+#include <sys/stat.h>
+#include <unistd.h>
+#include <assert.h>
+
+extern void usage(const char *name, FILE *where);
+
+static inline void
+hwloc_utils_input_format_usage(FILE *where, int addspaces)
+{
+#ifdef HWLOC_HAVE_XML
+ fprintf (where, " --input <XML file>\n");
+ fprintf (where, " -i <XML file> %*sRead topology from XML file <path>\n",
+ addspaces, " ");
+#endif
+#ifdef HWLOC_LINUX_SYS
+ fprintf (where, " --input <directory>\n");
+ fprintf (where, " -i <directory> %*sRead topology from chroot containing the /proc and /sys\n",
+ addspaces, " ");
+ fprintf (where, " %*sof another system\n",
+ addspaces, " ");
+#endif
+ fprintf (where, " --input \"n:2 2\"\n");
+ fprintf (where, " -i \"n:2 2\" %*sSimulate a fake hierarchy, here with 2 NUMA nodes of 2\n",
+ addspaces, " ");
+ fprintf (where, " %*sprocessors\n",
+ addspaces, " ");
+ fprintf (where, " --input-format <format>\n");
+ fprintf (where, " --if <format> %*sEnforce input format among "
+#ifdef HWLOC_HAVE_XML
+ "xml, "
+#endif
+#ifdef HWLOC_LINUX_SYS
+ "fsroot, "
+#endif
+ "synthetic\n",
+ addspaces, " ");
+}
+
+enum hwloc_utils_input_format {
+ HWLOC_UTILS_INPUT_DEFAULT,
+ HWLOC_UTILS_INPUT_XML,
+ HWLOC_UTILS_INPUT_FSROOT,
+ HWLOC_UTILS_INPUT_SYNTHETIC
+};
+
+static inline enum hwloc_utils_input_format
+hwloc_utils_parse_input_format(const char *name, const char *callname)
+{
+ if (!strncasecmp(name, "default", 3))
+ return HWLOC_UTILS_INPUT_DEFAULT;
+ else if (!strncasecmp(name, "xml", 1))
+ return HWLOC_UTILS_INPUT_XML;
+ else if (!strncasecmp(name, "fsroot", 1))
+ return HWLOC_UTILS_INPUT_FSROOT;
+ else if (!strncasecmp(name, "synthetic", 1))
+ return HWLOC_UTILS_INPUT_SYNTHETIC;
+
+ fprintf(stderr, "input format `%s' not supported\n", name);
+ usage(callname, stderr);
+ exit(EXIT_FAILURE);
+}
+
+static inline int
+hwloc_utils_lookup_input_option(char *argv[], int argc, int *consumed_opts,
+ char **inputp, enum hwloc_utils_input_format *input_formatp,
+ const char *callname)
+{
+ if (!strcmp (argv[0], "--input")
+ || !strcmp (argv[0], "-i")) {
+ if (argc <= 1) {
+ usage (callname, stderr);
+ exit(EXIT_FAILURE);
+ }
+ if (strlen(argv[1]))
+ *inputp = argv[1];
+ else
+ *inputp = NULL;
+ *consumed_opts = 1;
+ return 1;
+ }
+ else if (!strcmp (argv[0], "--input-format")
+ || !strcmp (argv[0], "--if")) {
+ if (argc <= 1) {
+ usage (callname, stderr);
+ exit(EXIT_FAILURE);
+ }
+ *input_formatp = hwloc_utils_parse_input_format (argv[1], callname);
+ *consumed_opts = 1;
+ return 1;
+ }
+
+ /* backward compat with 1.0 */
+ else if (!strcmp (argv[0], "--synthetic")) {
+ if (argc <= 1) {
+ usage (callname, stderr);
+ exit(EXIT_FAILURE);
+ }
+ *inputp = argv[1];
+ *input_formatp = HWLOC_UTILS_INPUT_SYNTHETIC;
+ *consumed_opts = 1;
+ return 1;
+ } else if (!strcmp (argv[0], "--xml")) {
+ if (argc <= 1) {
+ usage (callname, stderr);
+ exit(EXIT_FAILURE);
+ }
+ *inputp = argv[1];
+ *input_formatp = HWLOC_UTILS_INPUT_XML;
+ *consumed_opts = 1;
+ return 1;
+ } else if (!strcmp (argv[0], "--fsys-root")) {
+ if (argc <= 1) {
+ usage (callname, stderr);
+ exit(EXIT_FAILURE);
+ }
+ *inputp = argv[1];
+ *input_formatp = HWLOC_UTILS_INPUT_FSROOT;
+ *consumed_opts = 1;
+ return 1;
+ }
+
+ return 0;
+}
+
+static inline int
+hwloc_utils_enable_input_format(struct hwloc_topology *topology,
+ const char *input,
+ enum hwloc_utils_input_format input_format,
+ int verbose, const char *callname)
+{
+ if (input_format == HWLOC_UTILS_INPUT_DEFAULT) {
+ struct stat inputst;
+ int err;
+ err = stat(input, &inputst);
+ if (err < 0) {
+ if (verbose)
+ printf("assuming `%s' is a synthetic topology description\n", input);
+ input_format = HWLOC_UTILS_INPUT_SYNTHETIC;
+ } else if (S_ISDIR(inputst.st_mode)) {
+ if (verbose)
+ printf("assuming `%s' is a file-system root\n", input);
+ input_format = HWLOC_UTILS_INPUT_FSROOT;
+ } else if (S_ISREG(inputst.st_mode)) {
+ if (verbose)
+ printf("assuming `%s' is a XML file\n", input);
+ input_format = HWLOC_UTILS_INPUT_XML;
+ } else {
+ fprintf (stderr, "Unrecognized input file: %s\n", input);
+ usage (callname, stderr);
+ }
+ }
+
+ switch (input_format) {
+ case HWLOC_UTILS_INPUT_XML:
+#ifdef HWLOC_HAVE_XML
+ if (!strcmp(input, "-"))
+ input = "/dev/stdin";
+ if (hwloc_topology_set_xml(topology, input)) {
+ perror("Setting target XML file");
+ return EXIT_FAILURE;
+ }
+#else /* HWLOC_HAVE_XML */
+ fprintf(stderr, "This installation of hwloc does not support XML, sorry.\n");
+ exit(EXIT_FAILURE);
+#endif /* HWLOC_HAVE_XML */
+ break;
+
+ case HWLOC_UTILS_INPUT_FSROOT:
+#ifdef HWLOC_LINUX_SYS
+ if (hwloc_topology_set_fsroot(topology, input)) {
+ perror("Setting target filesystem root");
+ return EXIT_FAILURE;
+ }
+#else /* HWLOC_LINUX_SYS */
+ fprintf(stderr, "This installation of hwloc does not support changing the file-system root, sorry.\n");
+ exit(EXIT_FAILURE);
+#endif /* HWLOC_LINUX_SYS */
+ break;
+
+ case HWLOC_UTILS_INPUT_SYNTHETIC:
+ if (hwloc_topology_set_synthetic(topology, input))
+ return EXIT_FAILURE;
+ break;
+
+ case HWLOC_UTILS_INPUT_DEFAULT:
+ assert(0);
+ }
+
+ return 0;
+}
+
Modified: mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/utils/test-hwloc-distrib.sh.in
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/utils/test-hwloc-distrib.sh.in 2010-11-24 09:18:34 UTC (rev 7493)
+++ mpich2/trunk/src/pm/hydra/tools/bind/hwloc/hwloc/utils/test-hwloc-distrib.sh.in 2010-11-24 09:21:55 UTC (rev 7494)
@@ -2,7 +2,9 @@
#-*-sh-*-
#
-# Copyright © 2009 CNRS, INRIA, Université Bordeaux 1
+# Copyright © 2009 CNRS
+# Copyright © 2009-2010 INRIA
+# Copyright © 2009 Université Bordeaux 1
# See COPYING in top-level directory.
#
@@ -20,17 +22,17 @@
set -e
(
- ./hwloc-distrib --synthetic "2 2 2" 2
+ ./hwloc-distrib --if synthetic --input "2 2 2" 2
echo
- ./hwloc-distrib --synthetic "2 2 2" 4
+ ./hwloc-distrib --if synthetic --input "2 2 2" 4
echo
- ./hwloc-distrib --synthetic "2 2 2" 8
+ ./hwloc-distrib --if synthetic --input "2 2 2" 8
echo
- ./hwloc-distrib --synthetic "2 2 2" 13
+ ./hwloc-distrib --if synthetic --input "2 2 2" 13
echo
- ./hwloc-distrib --synthetic "2 2 2" 16
+ ./hwloc-distrib --if synthetic --input "2 2 2" 16
echo
- ./hwloc-distrib --synthetic "3 3 3" 4
+ ./hwloc-distrib --if synthetic --input "3 3 3" 4
) > "$file"
diff @HWLOC_DIFF_U@ $srcdir/test-hwloc-distrib.output "$file"
rm -rf "$tmp"
More information about the mpich2-commits
mailing list