hwlocality_helper_distribute(3) Library Functions Manual
NAME
hwlocality_helper_distribute - Distributing items over a topology
SYNOPSIS
Enumerations
enum hwloc_distrib_flags_e { HWLOC_DISTRIB_FLAG_REVERSE }
Functions
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
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
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) [inline]
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.
Returns
0 on success, -1 on error.
Note
On hybrid CPUs (or asymmetric platforms), distribution may be
suboptimal since the number of cores or PUs inside packages or
below caches may vary (the top-down recursive partitioning ignores
these numbers until reaching their levels). Hence it is recommended
to distribute only inside a single homogeneous domain. For instance
on a CPU with energy-efficient E-cores and high-performance P-
cores, one should distribute separately N tasks on E-cores and M
tasks on P-cores instead of trying to distribute directly M+N tasks
on the entire CPUs.
This function requires the roots objects to have a CPU set.
Author
Generated automatically by Doxygen for Hardware Locality (hwloc) from
the source code.
Hardware Locality (hwloc) Version 2.12.0 hwlocality_helper_distribute(3)
hwloc 2.12.0 - Generated Thu May 8 15:33:00 CDT 2025
