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