manpagez: man pages & more
man hwloc-annotate(1)
Home | html | info | man
hwloc-annotate(1)                     hwloc                    hwloc-annotate(1)




NAME

       hwloc-annotate - Modify attributes in a XML topology


SYNOPSIS

       hwloc-annotate [options] <input.xml> <output.xml> -- <location1>
       <location2> ... -- <mode> <annotation>

       hwloc-annotate [options] <input.xml> <output.xml> <location> <mode>
       <annotation>

       Note that hwloc(7) provides a detailed explanation of the hwloc system
       and of valid <location> formats; it should be read before reading this
       man page.


OPTIONS

       --ri      Remove all info attributes that exist with the same name before
                 adding the new one.  This option is only accepted in "info"
                 mode.  If the info value is omitted, existing infos are
                 replaced with nothing.

       --ci      Clear the existing info attributes in the target objects before
                 annotating.  If no new annotation has to be added after
                 clearing, mode should be set to none.

       --cu      Clear the existing userdata from the target objects.  If
                 nothing else has to be performed after clearing, mode should be
                 set to none.

       --cd      Clear the existing distances from the topology.  If nothing
                 else has to be performed after clearing, mode should be set to
                 none.

       --version Report version and exit.

       -h --help Display help message and exit.


DESCRIPTION

       hwloc-annotate loads a topology from a XML file, adds some annotations,
       and export the resulting topology to another XML file.  The input and
       output files may be the same.

       The annotation may be string info attributes.  This is specified by the
       mode:

       info <name> <value>
              Specifies a new string info attribute whose name is name and value
              is value.

       subtype <subtype>
              Specifies that the subtype attribute of the object should now be
              subtype.  If an empty string is given, the subtype is removed.

       size <size>
              Specifies the size of a cache or NUMA node.  The value may be
              suffixed with kB, KiB, MB, MiB, GB, GiB, etc.

       misc <name>
              Specifies a new Misc object name.

       memattr <name> <flags>
              Register a new memory attribute whose name is name and flags is
              flags.  location is ignored in this mode.

              Flags may be given as numeric values or as a comma-separated list
              of flag names that are passed to hwloc_memattr_register().  Those
              names may be substrings of actual flag names as long as a single
              one matches.  For instance, a value of 1 (or higher) means that
              highest values are considered best for this attribute.

       memattr <name> <initiator> <value>
              Set the memory attribute (whose name is name) from initiator
              initiator (either an object or a CPU-set) to target NUMA node
              location to value value.

              If this attribute does not require specific initiators, initiator
              is ignored.

              Standard attribute names are Capacity, Locality, Bandwidth, and
              Latency.  All existing attributes in the input topology may be
              listed with

                  $ lstopo --memattrs -i input.xml


       cpukind <cpuset> <efficiency> <flags> [<infoname> <infovalue>]
              Specifies the kind of CPU for PUs listed in the given cpuset.
              location is ignored in this mode.

              efficiency is an abstracted efficiency value that will enforce
              ranking of kinds. It should be -1 if unknown.

              flags must be 0 for now.

              If infoname and infovalue are given and non-empty, they are added
              as info attributes to this kind of CPU.

              See the function hwloc_cpukinds_register() for details.


       distances <filename> [<flags>]
              Specifies new distances to be added to the topology using
              specifications in <filename>.  The optional flags (0 unless
              specified) corresponds to the flags given to the function
              hwloc_distances_set().  location is ignored in this mode.

              The real first line of the pointed file must be a integer
              representing a distances kind as defined in hwloc/distances.h.
              The second line is the number of objects involved in the
              distances.  The next lines contain one object each.  The next
              lines contain one distance value each, or a single line may be
              given with a integer combination of format x*y or x*y*z.  An
              optional line before all others may start with name= to specify
              the name of the distances structure if any.


       distances-transform <name> links
              Transform a bandwidth distances structure named <name> into links.
              See the documentation of HWLOC_DISTANCES_TRANSFORM_LINKS in
              hwloc/distances.h for details.

       distances-transform <name> merge-switch-ports
              When switches appear in the matrix as different ports, merge all
              of them into a single port for clarity.  This currently only
              applies to the NVLinkBandwidth matrix between NVIDIA GPUs.  See
              the documentation of HWLOC_DISTANCES_TRANSFORM_MERGE_SWITCH_PORTS
              in hwloc/distances.h for details.

       distances-transform <name> transitive-closure
              If objects are connected across a switch, apply a transitive-
              closure to report the bandwidth through that switch.  This
              currently only applies to the NVLinkBandwidth matrix between
              NVIDIA GPUs.  The bandwidth between all pairs of GPUs will be
              exposed instead of bandwidths between single GPUs and single
              NVSwitch ports.  See the documentation of
              HWLOC_DISTANCES_TRANSFORM_TRANSITIVE_CLOSURE in hwloc/distances.h
              for details.

       distances-transform <name> remove-obj <obj>
              Remove the given object from the distances structure named <name>.

       distances-transform <name> replace-objs <oldtype> <newtype>
              Replace objects of type <oldtype> in distances structure named
              <name> with objects of type <newtype> with same locality.  If
              <oldtype> or <newtype> are not object types, they are assumed
              subtypes of OS devices, e.g. "NVML" or "OpenCL".  See the
              documentation of hwloc_get_obj_with_same_locality() in
              hwloc/helper.h for details.

              If <newtype> is "NULL", objects are removed from the distances
              structure.


       none   No new annotation is added. This is useful when clearing existing
              attributes.

       Annotations may be added to one specific object in the topology, all of
       them, or all of a given type.  This is specified by the location (see
       also EXAMPLES below).  Multiple locations may be affected if they are
       specified between --.  Objects may be specified as location tuples, as
       explained in hwloc(7).  However hexadecimal bitmasks are not accepted
       since they may correspond to multiple objects.

       NOTE: The existing annotations may be listed with hwloc-info.

       NOTE: It is highly recommended that you read the hwloc(7) overview page
       before reading this man page.  Most of the concepts described in hwloc(7)
       directly apply to the hwloc-annotate utility.


EXAMPLES

       hwloc-annotate's operation is best described through several examples.

       Add an info attribute to all Core and PU objects:

           $ hwloc-annotate input.xml output.xml -- Core:all PU:all -- info
       infoname infovalue

       Only add to all Core objects:

           $ hwloc-annotate input.xml output.xml Core:all info infoname
       infovalue

       Add a Misc object named "foobar" under the root object of the topology
       and modify the input XML directly:

           $ hwloc-annotate file.xml file.xml root misc foobar

       Add an info attribute to OS device #2 and #3:

           $ hwloc-annotate input.xml output.xml os:2-3 info infoname infovalue

       Change package objects to green with red text in the lstopo graphical
       output:

           $ hwloc-annotate topo.xml topo.xml package:all info lstopoStyle
       "Background=#00ff00;Text=#ff0000"
           $ lstopo -i topo.xml

       Set the memory attribute latency to 123 nanoseconds from the PUs in the
       first package to the first NUMA node:

           $ hwloc-annotate topo.xml topo.xml numanode:0 memattr Latency
       $(hwloc-calc package:0) 123

       Register a memory attribute MyApplicationPerformance (with flags
       specifying that it requires an initiator and reports higher values first)
       and set its value for initiator CPU-set 0x11 to NUMA node #2 to 2345:

           $ hwloc-annotate topo.xml topo.xml ignored memattr
       MyApplicationPerformance need_init,higher
           $ hwloc-annotate topo.xml topo.xml numanode:2 memattr
       MyApplicationPerformance 0x11 2345

       To clarify that NUMA node #0 is DDR while NUMA node #1 is HBM:

           $ hwloc-annotate topo.xml topo.xml numa:0 subtype DDR
           $ hwloc-annotate topo.xml topo.xml numa:1 subtype HBM

       Specify that PU 0-3 and PU 4-7 are of different kinds, and the latter is
       more efficient:

           $ hwloc-annotate topo.xml topo.xml dummy cpukind 0x0f 0 0 CoreType
       Small
           $ hwloc-annotate topo.xml topo.xml dummy cpukind 0xf0 1 0 CoreType
       Big

       Replace NUMA nodes with Packages in the NUMALatency distances matrix,
       when they have the exact same locality.

           $ hwloc-annotate topo.xml topo.xml -- dummy -- distances-transform
       NUMALatency replace-objs numanode packages

       Remove NUMA node #3 from the NUMALatency distances matrix:

           $ hwloc-annotate topo.xml topo.xml -- dummy -- distances-transform
       NUMALatency remove-obj numa:3

       Merge all NVSwitch ports bandwidth information into a single port in the
       NVLinkBandwidth matrix:

           $ hwloc-annotate topo.xml topo.xml -- dummy -- distances-transform
       NVLinkBandwidth merge-switch-ports

       Apply a transitive closure to get inter-GPU bandwidth across NVSwitches
       in the NVLinkBandwidth matrix:

           $ hwloc-annotate topo.xml topo.xml -- dummy -- distances-transform
       NVLinkBandwidth transitive-closure



RETURN VALUE

       Upon successful execution, hwloc-annotate generates the output topology.
       The return value is 0.

       hwloc-annotate will return nonzero if any kind of error occurs, such as
       (but not limited to) failure to parse the command line.


SEE ALSO

       hwloc(7), lstopo(1), hwloc-info(1)




2.8.0                             June 29, 2022                hwloc-annotate(1)

hwloc 2.8.0 - Generated Sun Aug 28 14:40:54 CDT 2022
© manpagez.com 2000-2024
Individual documents may contain additional copyright information.