Hardware Locality (hwloc): Distributing items over a topology

Hardware Locality (hwloc) 2.9.0

Enumerations | Functions
Distributing items over a topology

## Enumerations
enum | hwloc_distrib_flags_e { HWLOC_DISTRIB_FLAG_REVERSE }

## Functions
static int | hwloc_distrib (hwloc_topology_t topology, hwloc_obj_t *roots, unsigned n_roots, hwloc_cpuset_t *set, unsigned n, int until, unsigned long flags)

## Detailed Description

## Enumeration Type Documentation

## ◆ hwloc_distrib_flags_e

enum hwloc_distrib_flags_e

Flags to be given to hwloc_distrib().

Enumerator
HWLOC_DISTRIB_FLAG_REVERSE | Distrib in reverse order, starting from the last objects.

## Function Documentation

## ◆ hwloc_distrib()

static int hwloc_distrib | ( | hwloc_topology_t | topology,
|  | hwloc_obj_t * | roots,
|  | unsigned | n_roots,
|  | hwloc_cpuset_t * | set,
|  | unsigned | n,
|  | int | until,
|  | unsigned long | flags
| ) |  |
| inlinestatic

Distribute `n` items over the topology under `roots`.

Array `set` will be filled with `n` cpusets recursively distributed linearly over the topology under objects `roots`, down to depth `until` (which can be INT_MAX to distribute down to the finest level).

`n_roots` is usually 1 and `roots` only contains the topology root object so as to distribute over the entire topology.

This is typically useful when an application wants to distribute `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_bitmap_singlify() before binding a thread so that it does not move at all.

`flags` should be 0 or a OR'ed set of hwloc_distrib_flags_e.

Note
  This function requires the `roots` objects to have a CPU set.