topology¶
#include <compatibility/hpx/util/cache_aligned_data.hpp>¶
#include <compatibility/hpx/runtime/threads/topology.hpp>¶
#include <compatibility/hpx/runtime/threads/cpu_mask.hpp>¶
#include <hpx/topology/topology.hpp>¶
- 
namespace 
hpx - 
namespace 
threads Typedefs
- 
using 
hpx::threads::hwloc_bitmap_ptr = typedef 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
- 
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 Static Attributes
- 
mask_type 
empty_mask¶ 
- 
 
- 
using 
 
- 
namespace