hwlocality_distances_get(3) | Hardware Locality (hwloc) | hwlocality_distances_get(3) |
hwlocality_distances_get - Retrieve distances between objects
struct hwloc_distances_s
enum hwloc_distances_kind_e {
HWLOC_DISTANCES_KIND_FROM_OS, HWLOC_DISTANCES_KIND_FROM_USER,
HWLOC_DISTANCES_KIND_MEANS_LATENCY,
HWLOC_DISTANCES_KIND_MEANS_BANDWIDTH,
HWLOC_DISTANCES_KIND_HETEROGENEOUS_TYPES }
enum hwloc_distances_transform_e {
HWLOC_DISTANCES_TRANSFORM_REMOVE_NULL,
HWLOC_DISTANCES_TRANSFORM_LINKS,
HWLOC_DISTANCES_TRANSFORM_MERGE_SWITCH_PORTS,
HWLOC_DISTANCES_TRANSFORM_TRANSITIVE_CLOSURE }
int hwloc_distances_get (hwloc_topology_t topology,
unsigned *nr, struct hwloc_distances_s **distances, unsigned long
kind, unsigned long flags)
int hwloc_distances_get_by_depth (hwloc_topology_t topology, int
depth, unsigned *nr, struct hwloc_distances_s **distances, unsigned
long kind, unsigned long flags)
int hwloc_distances_get_by_type (hwloc_topology_t topology,
hwloc_obj_type_t type, unsigned *nr, struct hwloc_distances_s
**distances, unsigned long kind, unsigned long flags)
int hwloc_distances_get_by_name (hwloc_topology_t topology,
const char *name, unsigned *nr, struct hwloc_distances_s **distances,
unsigned long flags)
const char * hwloc_distances_get_name (hwloc_topology_t
topology, struct hwloc_distances_s *distances)
void hwloc_distances_release (hwloc_topology_t topology, struct
hwloc_distances_s *distances)
int hwloc_distances_transform (hwloc_topology_t topology, struct
hwloc_distances_s *distances, enum hwloc_distances_transform_e
transform, void *transform_attr, unsigned long flags)
Kinds of distance matrices. The kind attribute of struct hwloc_distances_s is a OR'ed set of kinds.
A kind of format HWLOC_DISTANCES_KIND_FROM_* specifies where the distance information comes from, if known.
A kind of format HWLOC_DISTANCES_KIND_MEANS_* specifies whether values are latencies or bandwidths, if applicable.
Enumerator
Transformations of distances structures.
Enumerator
At least 2 objects must remain, otherwise hwloc_distances_transform() will return -1 with errno set to EINVAL.
kind will be updated with or without HWLOC_DISTANCES_KIND_HETEROGENEOUS_TYPES according to the remaining objects.
Values on the diagonal are set to 0.
This transformation only applies to bandwidth matrices.
Retrieve distance matrices. Retrieve distance matrices from the topology into the distances array.
flags is currently unused, should be 0.
kind serves as a filter. If 0, all distance matrices are returned. If it contains some HWLOC_DISTANCES_KIND_FROM_*, only distance matrices whose kind matches one of these are returned. If it contains some HWLOC_DISTANCES_KIND_MEANS_*, only distance matrices whose kind matches one of these are returned.
On input, nr points to the number of distance matrices that may be stored in distances. On output, nr points to the number of distance matrices that were actually found, even if some of them couldn't be stored in distances. Distance matrices that couldn't be stored are ignored, but the function still returns success (0). The caller may find out by comparing the value pointed by nr before and after the function call.
Each distance matrix returned in the distances array should be released by the caller using hwloc_distances_release().
Retrieve distance matrices for object at a specific depth in the topology. Identical to hwloc_distances_get() with the additional depth filter.
Retrieve a distance matrix with the given name. Usually only one distances structure may match a given name.
The name of the most common structure is 'NUMALatency'. Others include 'XGMIBandwidth', 'XGMIHops', 'XeLinkBandwidth', and 'NVLinkBandwidth'.
Retrieve distance matrices for object of a specific type. Identical to hwloc_distances_get() with the additional type filter.
Get a description of what a distances structure contains. For instance 'NUMALatency' for hardware-provided NUMA distances (ACPI SLIT), or NULL if unknown.
Release a distance matrix structure previously returned by hwloc_distances_get().
Note
Apply a transformation to a distances structure. Modify a distances structure that was previously obtained with hwloc_distances_get() or one of its variants.
This modifies the local copy of the distances structures but does not modify the distances information stored inside the topology (retrieved by another call to hwloc_distances_get() or exported to XML). To do so, one should add a new distances structure with same name, kind, objects and values (see Add distances between objects) and then remove this old one with hwloc_distances_release_remove().
transform must be one of the transformations listed in hwloc_distances_transform_e.
These transformations may modify the contents of the objs or values arrays.
transform_attr must be NULL for now.
flags must be 0 for now.
Note
Generated automatically by Doxygen for Hardware Locality (hwloc) from the source code.
Wed Dec 14 2022 | Version 2.9.0 |