Intel(R) Threading Building Blocks Doxygen Documentation
version 4.2.3
|
Go to the documentation of this file.
17 #ifndef _TBB_tbb_misc_H
18 #define _TBB_tbb_misc_H
24 #if __TBB_NUMA_SUPPORT
28 #if __linux__ || __FreeBSD__
29 #include <sys/param.h>
30 #if __FreeBSD_version >= 701000
31 #include <sys/cpuset.h>
36 #define __TBB_OS_AFFINITY_SYSCALL_PRESENT ((__linux__ && !__ANDROID__) || (__FreeBSD_version >= 701000))
39 #define __TBB_USE_OS_AFFINITY_SYSCALL (__TBB_OS_AFFINITY_SYSCALL_PRESENT && !__bg__)
47 #if __TBB_WIN8UI_SUPPORT && (_WIN32_WINNT < 0x0A00)
57 #ifndef __TBB_HardwareConcurrency
77 int NumberOfProcessorGroups();
80 int FindProcessorGroupIndex (
int processorIndex );
83 void MoveThreadIntoProcessorGroup(
void* hThread,
int groupIndex );
100 #if defined(min) || defined(max)
110 T
min (
const T& val1,
const T& val2 ) {
111 return val1 < val2 ? val1 : val2;
119 T
max (
const T& val1,
const T& val2 ) {
120 return val1 < val2 ? val2 : val1;
131 unsigned GetPrime (
unsigned seed );
137 #if __TBB_OLD_PRIMES_RNG
139 static const unsigned c = 1;
142 static const unsigned a = 0x9e3779b1;
143 #endif //__TBB_OLD_PRIMES_RNG
150 unsigned short get(
unsigned& seed ) {
151 unsigned short r = (
unsigned short)(seed>>16);
160 template <
typename T>
168 #if __TBB_OLD_PRIMES_RNG
173 c = (seed|1)*0xba5703f5;
185 template<
typename T1,
typename T2,
class Pred>
188 while ( compare(oldValue, newValue) ) {
189 if ( dst.compare_and_swap((T1)newValue, oldValue) == oldValue )
212 template <
typename F>
242 #if __TBB_USE_OS_AFFINITY_SYSCALL
244 typedef cpu_set_t basic_mask_t;
245 #elif __FreeBSD_version >= 701000
246 typedef cpuset_t basic_mask_t;
248 #error affinity_helper is not implemented in this OS
251 basic_mask_t* threadMask;
273 #if __TBB_NUMA_SUPPORT
278 void bind_thread_to_node(
binding_handler* handler_ptr,
int slot_num ,
int numa_id);
279 void restore_affinity_mask(
binding_handler* handler_ptr,
int slot_num);
281 namespace numa_topology {
282 bool is_initialized();
FastRandom(void *unique_ptr)
Construct a random number generator.
unsigned GetPrime(unsigned seed)
unsigned short get()
Get a random number.
#define __TBB_ASSERT(predicate, comment)
No-op version of __TBB_ASSERT.
T1 atomic_update(tbb::atomic< T1 > &dst, T2 newValue, Pred compare)
Atomically replaces value of dst with newValue if they satisfy condition of compare predicate.
@ do_once_pending
A thread is executing associated do-once routine.
void handle_win_error(int error_code)
Throws std::runtime_error with what() returning error_code description prefixed with aux_info.
unsigned short get(unsigned &seed)
Get a random number for the given seed; update the seed for next use.
A fast random number generator.
FastRandom(uint32_t seed)
bool cpu_has_speculation()
check for transaction support.
void spin_wait_while_eq(const volatile T &location, U value)
Spin WHILE the value of the variable is equal to a given value.
void protect_affinity_mask(bool)
void destroy_process_mask()
void run_initializer(void(*f)(), atomic< do_once_state > &state)
void init(uint64_t seed, int_to_type< 8 >)
void fix_broken_rethrow()
bool gcc_rethrow_exception_broken()
void PrintVersion()
Prints TBB version information on stderr.
Base class for types that should not be copied or assigned.
do_once_state
One-time initialization states.
@ do_once_uninitialized
No execution attempts have been undertaken yet.
void PrintRMLVersionInfo(void *arg, const char *server_info)
A callback routine to print RML version information on stderr.
void atomic_do_once(const F &initializer, atomic< do_once_state > &state)
One-time initialization function.
@ do_once_executed
Do-once routine has been executed.
size_t DefaultSystemPageSize()
Returns OS regular memory page size.
T max(const T &val1, const T &val2)
Utility template function returning greater of the two values.
int AvailableHwConcurrency()
Returns maximal parallelism level supported by the current OS configuration.
const size_t ThreadStackSize
Utility helper structure to ease overload resolution.
void PrintExtraVersionInfo(const char *category, const char *format,...)
Prints arbitrary extra TBB version information on stderr.
#define __TBB_HardwareConcurrency()
T min(const T &val1, const T &val2)
Utility template function returning lesser of the two values.
@ initialization_complete
Convenience alias.
FastRandom(uint64_t seed)
void init(uint32_t seed, int_to_type< 4 >)
Copyright © 2005-2020 Intel Corporation. All Rights Reserved.
Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
registered trademarks or trademarks of Intel Corporation or its
subsidiaries in the United States and other countries.
* Other names and brands may be claimed as the property of others.