#include <NonBlockingThreadPool.h>
Classes | |
struct | PerThread |
struct | ThreadData |
Public Types | |
typedef RunQueue< Task, 1024 > | Queue |
typedef Environment::Task | Task |
Public Member Functions | |
void | Cancel () EIGEN_OVERRIDE |
int | CurrentThreadId () const EIGEN_FINAL |
int | NumThreads () const EIGEN_FINAL |
void | Schedule (std::function< void()> fn) EIGEN_OVERRIDE |
void | ScheduleWithHint (std::function< void()> fn, int start, int limit) override |
void | SetStealPartitions (const std::vector< std::pair< unsigned, unsigned >> &partitions) |
ThreadPoolTempl (int num_threads, bool allow_spinning, Environment env=Environment()) | |
ThreadPoolTempl (int num_threads, Environment env=Environment()) | |
~ThreadPoolTempl () | |
Public Member Functions inherited from Eigen::ThreadPoolInterface | |
virtual | ~ThreadPoolInterface () |
Private Types | |
typedef Environment::EnvThread | Thread |
Private Member Functions | |
void | AssertBounds (int start, int end) |
void | ComputeCoprimes (int N, MaxSizeVector< unsigned > *coprimes) |
void | DecodePartition (unsigned val, unsigned *start, unsigned *limit) |
unsigned | EncodePartition (unsigned start, unsigned limit) |
EIGEN_STRONG_INLINE PerThread * | GetPerThread () |
unsigned | GetStealPartition (int i) |
Task | GlobalSteal () |
Task | LocalSteal () |
int | NonEmptyQueueIndex () |
void | SetStealPartition (size_t i, unsigned val) |
Task | Steal (unsigned start, unsigned limit) |
bool | WaitForWork (EventCount::Waiter *waiter, Task *t) |
void | WorkerLoop (int thread_id) |
Static Private Member Functions | |
static EIGEN_STRONG_INLINE uint64_t | GlobalThreadIdHash () |
static EIGEN_STRONG_INLINE unsigned | Rand (uint64_t *state) |
Private Attributes | |
MaxSizeVector< MaxSizeVector< unsigned > > | all_coprimes_ |
const bool | allow_spinning_ |
std::atomic< unsigned > | blocked_ |
std::atomic< bool > | cancelled_ |
std::atomic< bool > | done_ |
EventCount | ec_ |
Environment | env_ |
unsigned | global_steal_partition_ |
std::unique_ptr< Barrier > | init_barrier_ |
const int | num_threads_ |
std::unordered_map< uint64_t, std::unique_ptr< PerThread > > | per_thread_map_ |
std::mutex | per_thread_map_mutex_ |
std::atomic< bool > | spinning_ |
MaxSizeVector< ThreadData > | thread_data_ |
MaxSizeVector< EventCount::Waiter > | waiters_ |
Static Private Attributes | |
static const int | kMaxPartitionBits = 16 |
static const int | kMaxThreads = 1 << kMaxPartitionBits |
Definition at line 16 of file NonBlockingThreadPool.h.
typedef RunQueue<Task, 1024> Eigen::ThreadPoolTempl< Environment >::Queue |
Definition at line 19 of file NonBlockingThreadPool.h.
typedef Environment::Task Eigen::ThreadPoolTempl< Environment >::Task |
Definition at line 18 of file NonBlockingThreadPool.h.
|
private |
Definition at line 215 of file NonBlockingThreadPool.h.
|
inline |
Definition at line 21 of file NonBlockingThreadPool.h.
|
inline |
Definition at line 24 of file NonBlockingThreadPool.h.
|
inline |
Definition at line 67 of file NonBlockingThreadPool.h.
|
inlineprivate |
Definition at line 185 of file NonBlockingThreadPool.h.
|
inlinevirtual |
Reimplemented from Eigen::ThreadPoolInterface.
Definition at line 138 of file NonBlockingThreadPool.h.
|
inlineprivate |
Definition at line 199 of file NonBlockingThreadPool.h.
|
inlinevirtual |
Implements Eigen::ThreadPoolInterface.
Definition at line 155 of file NonBlockingThreadPool.h.
|
inlineprivate |
Definition at line 179 of file NonBlockingThreadPool.h.
|
inlineprivate |
Definition at line 175 of file NonBlockingThreadPool.h.
|
inlineprivate |
Definition at line 456 of file NonBlockingThreadPool.h.
|
inlineprivate |
Definition at line 195 of file NonBlockingThreadPool.h.
|
inlineprivate |
Definition at line 376 of file NonBlockingThreadPool.h.
|
inlinestaticprivate |
Definition at line 452 of file NonBlockingThreadPool.h.
|
inlineprivate |
Definition at line 362 of file NonBlockingThreadPool.h.
|
inlineprivate |
Definition at line 431 of file NonBlockingThreadPool.h.
|
inlinevirtual |
Implements Eigen::ThreadPoolInterface.
Definition at line 153 of file NonBlockingThreadPool.h.
|
inlinestaticprivate |
Definition at line 472 of file NonBlockingThreadPool.h.
|
inlinevirtual |
Implements Eigen::ThreadPoolInterface.
Definition at line 101 of file NonBlockingThreadPool.h.
|
inlineoverridevirtual |
Reimplemented from Eigen::ThreadPoolInterface.
Definition at line 105 of file NonBlockingThreadPool.h.
|
inlineprivate |
Definition at line 191 of file NonBlockingThreadPool.h.
|
inline |
Definition at line 88 of file NonBlockingThreadPool.h.
|
inlineprivate |
Definition at line 336 of file NonBlockingThreadPool.h.
|
inlineprivate |
Definition at line 384 of file NonBlockingThreadPool.h.
|
inlineprivate |
Definition at line 254 of file NonBlockingThreadPool.h.
|
private |
Definition at line 239 of file NonBlockingThreadPool.h.
|
private |
Definition at line 237 of file NonBlockingThreadPool.h.
|
private |
Definition at line 242 of file NonBlockingThreadPool.h.
|
private |
Definition at line 245 of file NonBlockingThreadPool.h.
|
private |
Definition at line 244 of file NonBlockingThreadPool.h.
|
private |
Definition at line 246 of file NonBlockingThreadPool.h.
|
private |
Definition at line 235 of file NonBlockingThreadPool.h.
|
private |
Definition at line 241 of file NonBlockingThreadPool.h.
|
private |
Definition at line 248 of file NonBlockingThreadPool.h.
|
staticprivate |
Definition at line 172 of file NonBlockingThreadPool.h.
|
staticprivate |
Definition at line 173 of file NonBlockingThreadPool.h.
|
private |
Definition at line 236 of file NonBlockingThreadPool.h.
|
private |
Definition at line 250 of file NonBlockingThreadPool.h.
|
private |
Definition at line 249 of file NonBlockingThreadPool.h.
|
private |
Definition at line 243 of file NonBlockingThreadPool.h.
|
private |
Definition at line 238 of file NonBlockingThreadPool.h.
|
private |
Definition at line 240 of file NonBlockingThreadPool.h.