Add or remove distances between objects

## Enumerations

enum | hwloc_distances_add_flag_e { HWLOC_DISTANCES_ADD_FLAG_GROUP, HWLOC_DISTANCES_ADD_FLAG_GROUP_INACCURATE }

## Functions

int | hwloc_distances_add (hwloc_topology_t topology, unsigned nbobjs, hwloc_obj_t *objs, hwloc_uint64_t *values, unsigned long kind, unsigned long flags)
int | hwloc_distances_remove (hwloc_topology_t topology)
int | hwloc_distances_remove_by_depth (hwloc_topology_t topology, int depth)
static int | hwloc_distances_remove_by_type (hwloc_topology_t topology, hwloc_obj_type_t type)
int | hwloc_distances_release_remove (hwloc_topology_t topology, struct hwloc_distances_s *distances)

## Detailed Description

## Enumeration Type Documentation

## hwloc_distances_add_flag_e

enum hwloc_distances_add_flag_e

Flags for adding a new distances to a topology.

Enumerator
HWLOC_DISTANCES_ADD_FLAG_GROUP | Try to group objects based on the newly provided distance information.
HWLOC_DISTANCES_ADD_FLAG_GROUP_INACCURATE | If grouping, consider the distance values as inaccurate and relax the comparisons during the grouping algorithms. The actual accuracy may be modified through the HWLOC_GROUPING_ACCURACY environment variable (see Environment Variables).

## Function Documentation

## hwloc_distances_add()

int hwloc_distances_add | ( | hwloc_topology_t | topology,
|  | unsigned | nbobjs,
|  | hwloc_obj_t * | objs,
|  | hwloc_uint64_t * | values,
|  | unsigned long | kind,
|  | unsigned long | flags
| ) |  |

Provide a new distance matrix.

Provide the matrix of distances between a set of objects given by `nbobjs` and the `objs` array. `nbobjs` must be at least 2. The distances are stored as a one-dimension array in `values`. The distance from object i to object j is in slot i*nbobjs+j.

`kind` specifies the kind of distance as a OR'ed set of hwloc_distances_kind_e. Kind HWLOC_DISTANCES_KIND_HETEROGENEOUS_TYPES will be automatically added if objects of different types are given.

`flags` configures the behavior of the function using an optional OR'ed set of hwloc_distances_add_flag_e.

## hwloc_distances_release_remove()

int hwloc_distances_release_remove | ( | hwloc_topology_t | topology,
|  | struct hwloc_distances_s * | distances
| ) |  |

Release and remove the given distance matrice from the topology.

This function includes a call to hwloc_distances_release().

## hwloc_distances_remove()

int hwloc_distances_remove | ( | hwloc_topology_t | topology | ) |

Remove all distance matrices from a topology.

Remove all distance matrices, either provided by the user or gathered through the OS.

If these distances were used to group objects, these additional Group objects are not removed from the topology.

## hwloc_distances_remove_by_depth()

int hwloc_distances_remove_by_depth | ( | hwloc_topology_t | topology,
|  | int | depth
| ) |  |

Remove distance matrices for objects at a specific depth in the topology.

Identical to hwloc_distances_remove() but only applies to one level of the topology.

## hwloc_distances_remove_by_type()

static int hwloc_distances_remove_by_type | ( | hwloc_topology_t | topology,
|  | hwloc_obj_type_t | type
| ) |  |

inline static

Remove distance matrices for objects of a specific type in the topology.

Identical to hwloc_distances_remove() but only applies to one level of the topology.