There are two semantics for converting cpusets to nodesets depending on how non-NUMA machines are handled.
When manipulating nodesets for memory binding, non-NUMA machines should be considered as having a single NUMA node. The standard conversion routines below should be used so that marking the first bit of the nodeset means that memory should be bound to a non-NUMA whole machine.
When manipulating nodesets as an actual list of NUMA nodes without any need to handle memory binding on non-NUMA machines, the strict conversion routines may be used instead.
Convert a NUMA node set into a CPU set and handle non-NUMA cases.
If the topology contains no NUMA nodes, the machine is considered as a single memory node, and the following behavior is used: If nodeset
is empty, cpuset
will be emptied as well. Otherwise cpuset
will be entirely filled. This is useful for manipulating memory binding sets.
Convert a NUMA node set into a CPU set without handling non-NUMA cases.
This is the strict variant of hwloc_cpuset_from_nodeset. It does not fix non-NUMA cases. If the topology contains some NUMA nodes, behave exactly the same. However, if the topology contains no NUMA nodes, return an empty cpuset.
Convert a CPU set into a NUMA node set and handle non-NUMA cases.
If some NUMA nodes have no CPUs at all, this function never sets their indexes in the output node set, even if a full CPU set is given in input.
If the topology contains no NUMA nodes, the machine is considered as a single memory node, and the following behavior is used: If cpuset
is empty, nodeset
will be emptied as well. Otherwise nodeset
will be entirely filled.
Convert a CPU set into a NUMA node set without handling non-NUMA cases.
This is the strict variant of hwloc_cpuset_to_nodeset. It does not fix non-NUMA cases. If the topology contains some NUMA nodes, behave exactly the same. However, if the topology contains no NUMA nodes, return an empty nodeset.