Kokkos Core Kernels Package
Version of the Day
|
Minimal subset of logical 'hwloc' functionality available from http://www.open-mpi.org/projects/hwloc/. More...
Functions | |
bool | available () |
Query if hwloc is available. More... | |
unsigned | get_available_numa_count () |
Query number of available NUMA regions. This will be less than the hardware capacity if the MPI process is pinned to a NUMA region. More... | |
unsigned | get_available_cores_per_numa () |
Query number of available cores per NUMA regions. This will be less than the hardware capacity if the MPI process is pinned to a set of cores. More... | |
unsigned | get_available_threads_per_core () |
Query number of available "hard" threads per core; i.e., hyperthreads. More... | |
unsigned | thread_mapping (const char *const label, const bool allow_async, unsigned &thread_count, unsigned &use_numa_count, unsigned &use_cores_per_numa, std::pair< unsigned, unsigned > threads_coord[]) |
Recommend mapping of threads onto cores. More... | |
std::pair< unsigned, unsigned > | get_this_thread_coordinate () |
Query core-coordinate of the current thread with respect to the core_topology. More... | |
bool | bind_this_thread (const std::pair< unsigned, unsigned >) |
Bind the current thread to a core. More... | |
bool | can_bind_threads () |
Can hwloc bind threads? More... | |
unsigned | bind_this_thread (const unsigned coordinate_count, std::pair< unsigned, unsigned > coordinate[]) |
Bind the current thread to one of the cores in the list. Set that entry to (~0,~0) and return the index. If binding fails return ~0. More... | |
bool | unbind_this_thread () |
Unbind the current thread back to the original process binding. More... | |
Minimal subset of logical 'hwloc' functionality available from http://www.open-mpi.org/projects/hwloc/.
The calls are NOT thread safe in order to avoid mutexes, memory allocations, or other actions which could give the runtime system an opportunity to migrate the threads or touch allocated memory during the function calls.
All calls to these functions should be performed by a thread when it has guaranteed exclusive access; e.g., for OpenMP within a 'critical' region.
bool Kokkos::hwloc::available | ( | ) |
Query if hwloc is available.
unsigned Kokkos::hwloc::get_available_numa_count | ( | ) |
Query number of available NUMA regions. This will be less than the hardware capacity if the MPI process is pinned to a NUMA region.
unsigned Kokkos::hwloc::get_available_cores_per_numa | ( | ) |
Query number of available cores per NUMA regions. This will be less than the hardware capacity if the MPI process is pinned to a set of cores.
unsigned Kokkos::hwloc::get_available_threads_per_core | ( | ) |
Query number of available "hard" threads per core; i.e., hyperthreads.
unsigned Kokkos::hwloc::thread_mapping | ( | const char *const | label, |
const bool | allow_async, | ||
unsigned & | thread_count, | ||
unsigned & | use_numa_count, | ||
unsigned & | use_cores_per_numa, | ||
std::pair< unsigned, unsigned > | threads_coord[] | ||
) |
Recommend mapping of threads onto cores.
If thread_count == 0 then choose and set a value. If use_numa_count == 0 then choose and set a value. If use_cores_per_numa == 0 then choose and set a value.
Return 0 if asynchronous, Return 1 if synchronous and threads_coord[0] is process core
std::pair<unsigned, unsigned> Kokkos::hwloc::get_this_thread_coordinate | ( | ) |
Query core-coordinate of the current thread with respect to the core_topology.
As long as the thread is running within the process binding the following condition holds.
core_coordinate.first < core_topology.first core_coordinate.second < core_topology.second
bool Kokkos::hwloc::bind_this_thread | ( | const std::pair< unsigned, unsigned > | ) |
Bind the current thread to a core.
bool Kokkos::hwloc::can_bind_threads | ( | ) |
Can hwloc bind threads?
unsigned Kokkos::hwloc::bind_this_thread | ( | const unsigned | coordinate_count, |
std::pair< unsigned, unsigned > | coordinate[] | ||
) |
Bind the current thread to one of the cores in the list. Set that entry to (~0,~0) and return the index. If binding fails return ~0.
bool Kokkos::hwloc::unbind_this_thread | ( | ) |
Unbind the current thread back to the original process binding.