topology¶
The contents of this module can be included with the header
hpx/modules/topology.hpp
. These headers may be used by user-code but are not
guaranteed stable (neither header location nor contents). You are using these at
your own risk. If you wish to use non-public functionality from a module we
strongly suggest only including the module header hpx/modules/topology.hpp
, not
the particular header in which the functionality you would like to use is
defined. See Public API for a list of names that are part of the public
HPX API.
-
namespace
hpx
-
namespace
threads
Typedefs
-
using
hwloc_bitmap_ptr
= std::shared_ptr<hpx_hwloc_bitmap_wrapper>¶
Enums
-
enum
hpx_hwloc_membind_policy
¶ Please see hwloc documentation for the corresponding enums HWLOC_MEMBIND_XXX.
Values:
-
membind_default
= HWLOC_MEMBIND_DEFAULT¶
-
membind_firsttouch
= HWLOC_MEMBIND_FIRSTTOUCH¶
-
membind_bind
= HWLOC_MEMBIND_BIND¶
-
membind_interleave
= HWLOC_MEMBIND_INTERLEAVE¶
-
membind_replicate
= HWLOC_MEMBIND_REPLICATE¶
-
membind_nexttouch
= HWLOC_MEMBIND_NEXTTOUCH¶
-
membind_mixed
= HWLOC_MEMBIND_MIXED¶
-
membind_user
= HWLOC_MEMBIND_MIXED + 256¶
-
Functions
-
HPX_NODISCARD unsigned int hpx::threads::hardware_concurrency()
-
struct
hpx_hwloc_bitmap_wrapper
¶ Public Functions
-
HPX_NON_COPYABLE
(hpx_hwloc_bitmap_wrapper)¶
-
hpx_hwloc_bitmap_wrapper
()¶
-
hpx_hwloc_bitmap_wrapper
(void *bmp)¶
-
~hpx_hwloc_bitmap_wrapper
()¶
-
void
reset
(hwloc_bitmap_t bmp)¶
-
operator bool
() const¶
-
hwloc_bitmap_t
get_bmp
() const¶
Private Members
-
hwloc_bitmap_t
bmp_
¶
-
-
struct
topology
¶ Public Functions
-
topology
()¶
-
~topology
()¶
-
std::size_t
get_socket_number
(std::size_t num_thread, error_code& = throws) const¶ Return the Socket number of the processing unit the given thread is running on.
- Parameters
ec
: [in,out] this represents the error status on exit, if this is pre-initialized to hpx::throws the function will throw on error instead.
-
std::size_t
get_numa_node_number
(std::size_t num_thread, error_code& = throws) const¶ Return the NUMA node number of the processing unit the given thread is running on.
- Parameters
ec
: [in,out] this represents the error status on exit, if this is pre-initialized to hpx::throws the function will throw on error instead.
-
mask_cref_type
get_machine_affinity_mask
(error_code &ec = throws) const¶ Return a bit mask where each set bit corresponds to a processing unit available to the application.
- Parameters
ec
: [in,out] this represents the error status on exit, if this is pre-initialized to hpx::throws the function will throw on error instead.
-
mask_type
get_service_affinity_mask
(mask_cref_type used_processing_units, error_code &ec = throws) const¶ Return a bit mask where each set bit corresponds to a processing unit available to the service threads in the application.
- Parameters
used_processing_units
: [in] This is the mask of processing units which are not available for service threads.ec
: [in,out] this represents the error status on exit, if this is pre-initialized to hpx::throws the function will throw on error instead.
-
mask_cref_type
get_socket_affinity_mask
(std::size_t num_thread, error_code &ec = throws) const¶ Return a bit mask where each set bit corresponds to a processing unit available to the given thread inside the socket it is running on.
- Parameters
ec
: [in,out] this represents the error status on exit, if this is pre-initialized to hpx::throws the function will throw on error instead.
-
mask_cref_type
get_numa_node_affinity_mask
(std::size_t num_thread, error_code &ec = throws) const¶ Return a bit mask where each set bit corresponds to a processing unit available to the given thread inside the NUMA domain it is running on.
- Parameters
ec
: [in,out] this represents the error status on exit, if this is pre-initialized to hpx::throws the function will throw on error instead.
-
mask_type
get_numa_node_affinity_mask_from_numa_node
(std::size_t num_node) const¶ Return a bit mask where each set bit corresponds to a processing unit associated with the given NUMA node.
- Parameters
ec
: [in,out] this represents the error status on exit, if this is pre-initialized to hpx::throws the function will throw on error instead.
-
mask_cref_type
get_core_affinity_mask
(std::size_t num_thread, error_code &ec = throws) const¶ Return a bit mask where each set bit corresponds to a processing unit available to the given thread inside the core it is running on.
- Parameters
ec
: [in,out] this represents the error status on exit, if this is pre-initialized to hpx::throws the function will throw on error instead.
-
mask_cref_type
get_thread_affinity_mask
(std::size_t num_thread, error_code &ec = throws) const¶ Return a bit mask where each set bit corresponds to a processing unit available to the given thread.
- Parameters
ec
: [in,out] this represents the error status on exit, if this is pre-initialized to hpx::throws the function will throw on error instead.
-
void
set_thread_affinity_mask
(mask_cref_type mask, error_code &ec = throws) const¶ Use the given bit mask to set the affinity of the given thread. Each set bit corresponds to a processing unit the thread will be allowed to run on.
- Note
Use this function on systems where the affinity must be set from inside the thread itself.
- Parameters
ec
: [in,out] this represents the error status on exit, if this is pre-initialized to hpx::throws the function will throw on error instead.
-
mask_type
get_thread_affinity_mask_from_lva
(void const *lva, error_code &ec = throws) const¶ Return a bit mask where each set bit corresponds to a processing unit co-located with the memory the given address is currently allocated on.
- Parameters
ec
: [in,out] this represents the error status on exit, if this is pre-initialized to hpx::throws the function will throw on error instead.
-
void
print_affinity_mask
(std::ostream &os, std::size_t num_thread, mask_cref_type m, const std::string &pool_name) const¶ Prints the.
- Parameters
m
: to os in a human readable form
-
bool
reduce_thread_priority
(error_code &ec = throws) const¶ Reduce thread priority of the current thread.
- Parameters
ec
: [in,out] this represents the error status on exit, if this is pre-initialized to hpx::throws the function will throw on error instead.
-
std::size_t
get_number_of_numa_node_cores
(std::size_t numa) const¶ Return number of cores in given numa domain.
-
std::size_t
get_number_of_numa_node_pus
(std::size_t numa) const¶ Return number of processing units in a given numa domain.
-
std::size_t
get_number_of_socket_pus
(std::size_t socket) const¶ Return number of processing units in a given socket.
-
std::size_t
get_number_of_core_pus
(std::size_t core) const¶ Return number of processing units in given core.
-
std::size_t
get_number_of_socket_cores
(std::size_t socket) const¶ Return number of cores units in given socket.
-
std::size_t
get_core_number
(std::size_t num_thread, error_code& = throws) const¶
-
mask_type
get_cpubind_mask
(error_code &ec = throws) const¶
-
mask_type
get_cpubind_mask
(std::thread &handle, error_code &ec = throws) const¶
-
hwloc_bitmap_ptr
cpuset_to_nodeset
(mask_cref_type cpuset) const¶ convert a cpu mask into a numa node mask in hwloc bitmap form
-
void
write_to_log
() const¶
-
void *
allocate
(std::size_t len) const¶ This is equivalent to malloc(), except that it tries to allocate page-aligned memory from the OS.
-
void *
allocate_membind
(std::size_t len, hwloc_bitmap_ptr bitmap, hpx_hwloc_membind_policy policy, int flags) const¶ allocate memory with binding to a numa node set as specified by the policy and flags (see hwloc docs)
-
int
get_numa_domain
(const void *addr) const¶
-
void
deallocate
(void *addr, std::size_t len) const¶ Free memory that was previously allocated by allocate.
-
mask_type
init_core_affinity_mask_from_core
(std::size_t num_core, mask_cref_type default_mask = empty_mask) const¶
-
hwloc_bitmap_t
mask_to_bitmap
(mask_cref_type mask, hwloc_obj_type_t htype) const¶
-
mask_type
bitmap_to_mask
(hwloc_bitmap_t bitmap, hwloc_obj_type_t htype) const¶
Private Functions
-
void
extract_node_mask
(hwloc_obj_t parent, mask_type &mask) const¶
-
mask_type
init_machine_affinity_mask
() const¶
-
void
init_num_of_pus
()¶
Private Members
-
hwloc_topology_t
topo
¶
-
bool
use_pus_as_cores_
¶
-
mutex_type
topo_mtx
¶
-
mask_type
machine_affinity_mask_
¶
Private Static Attributes
-
mask_type
empty_mask
¶
-
-
using
-
namespace