Games Task Scheduler (GTS)
A multi-processor scheduling framework for games engines
|
►Ngts | |
►Nanalysis | |
CConcurrentLoggerEvent | The log event payload for ConcurrentLogger |
CConcurrentLogger | A serialized log of per-thread messages |
CWorkerPoolCounters | |
CMicroSchedulerCounters | |
CCounter | A set of thread local counters |
CTraceConcurrentLogger | A singleton ConcurrentLogger for tracing |
CIttNotify | |
CTracyState | A state singleton for Tracy |
►Ninternal | |
CBlockAllocator | Manages a list of Slab and Pages, and allocates and frees homogeneous Pages from Slabs and Blocks from Pages |
CGuardBase | The base class for all Guards |
►CParallelSubVector | An sub-vector used by ParallelVector |
Cindex_buffer_type | |
Cslot_type | |
CTicketQueueMPMC | A multi-producer, multi-consumer queue. Properties: |
CTicketQueueMPSC | A multi-producer, single-consumer queue. Properties: |
CTicketQueueSPMC | A multi-producer, multi-consumer queue. Properties: |
CAlignedAllocator | An aligned allocator for GTS containers |
►CIntrusiveDList | An intrusive doubly-linked list |
CNode | An intrusive Node |
COsHeapAllocator | An OS heap allocator for GTS containers |
CFreeListNode | An intrusive singly-linked list node used for free-lists |
CMemoryStore | The header for each Slab |
CBinnedAllocator | A collection of BlockAllocators binned to size classes |
CReadGuard | A read-only item guarded by a mutex. The mutex is released on destruction |
CWriteGuard | A read-write item guarded by a mutex. The mutex is released on destruction |
CKeyValue | A key-value keyVal |
►CParallelHashTable | A parallel hash table. Properties: |
Cconst_iterator | A constant forward iterator. Read-locks the referenced element until destruction |
Citerator | A forward iterator. Write-locks the referenced element until destruction |
►CParallelVector | A obstruction-free parallel vector. Properties: |
Cconst_iterator | A constant forward iterator. Read-locks the referenced element until destruction |
Citerator | A forward iterator. Write-locks the referenced element until destruction |
Cpop_back_result | The result structure for pop_back_and_get |
CQueueMPMC | A multi-producer, multi-consumer queue. Properties: |
CQueueMPSC | A multi-producer, multi-consumer queue. Properties: |
CQueueSPMC | A multi-producer, multi-consumer queue. Properties: |
CQueueSPSC | A single-producer, single-consumer queue. Properties: |
CRingDeque | A re-sizable ring buffer ADT |
CVector | A re-sizable array-like ADT. A subset of the STL Vector interface |
►CMicroScheduler_ComputeResource | A ComputeResource that wraps a MicroScheduler |
CCheckForTasksData | |
CMicroScheduler_Task | A Task payload for the MicroScheduler_Workload |
CMicroScheduler_Workload | A abstract Workload that maps to the MicroScheduler. Subclass to create concrete MicroScheduler Workloads |
CMicroSchedulerLambda_Workload | A concrete lambda Workload that maps to the MicroScheduler |
CComputeResource | A ComputeResource represents a entity that can execute a Workload in a Node |
CDagUtils | |
CMacroScheduler | A MacroScheduler builds ISchedules for a set of ComputeResources from a DAG of Node |
CMacroSchedulerDesc | The description of a MacroSchedulerDesc to create |
CWorkloadContext | The context associated with the task being executed |
CWorkloadType | An enumeration of all supported Workload languages |
CComputeResourceType | An enumeration of all supported ComputeResources |
CNode | A Node represents a task in a generalized task DAG. It contains Workloads that are scheduled onto a ComputeResource by a MacroScheduler |
CSchedule | The execution schedule for all ComputeResources |
CCriticalNode_MacroScheduler | A generalized DAG scheduler utilizing "Critically Aware Task Scheduling." |
CCriticalNode_Schedule | A schedule produced by a CriticalNode_MacroScheduler |
CCentralQueue_MacroScheduler | A generalized DAG scheduler utilizing work stealing. This scheduler delegates its responsibilities to a MicroScheduler |
CCentralQueue_Schedule | A schedule produced by a CentralQueue_MacroScheduler |
CWorkload | A Workload is a base class for describing a task that can be executed by a set of ComputeResources |
CMicroScheduler | A work-stealing task scheduler. The scheduler is executed by the WorkerPool it is initialized with |
CTaskContext | The context associated with the task being executed |
►CWorkerThreadDesc | The description of a worker Thread |
CGroupAndAffinity | |
CWorkerPoolVisitor | A visitor object for the worker pool. Allows the user to be notified at particular points during the WorkerPool's lifetime |
CWorkerPoolDesc | The description of a WorkerPool |
CMicroSchedulerDesc | The description of a MicroScheduler |
CKdRange2d | An iteration range over a 2D data set. Splits occur along the largest dimension unless the minimum size is reached for all dimensions. Successive splits result in a Kd-tree where each leaf represents a unit of work |
CKdRange3d | An iteration range over a 3D data set. Splits occur along the largest dimension unless the minimum size is reached for all dimensions. Successive splits result in a Kd-tree where each leaf represents a unit of work |
COctRange | An iteration range over a 3D data set. Splits divide each dimension in half for each dimension that is divisible. Successive splits result in a oct-tree where each leaf represents a unit of work |
CParallelFor | A construct that maps parallel-for behavior to a MicroScheduler |
CParallelReduce | A construct that maps parallel-reduce behavior to a MicroScheduler |
CDependencyArray | |
CDependencyArray< TValRange, TDepRange, 2 > | |
CLaunchTask | |
CLaunchTask< 2 > | |
CLaunchTask< 3 > | |
CParallelWavefront | A construct that maps a parallel-wavefront behavior to a MicroScheduler |
CSimplePartitioner | Recursively splits a range until it is no longer divisible |
CStaticPartitioner | Recursively splits a range and tries to limit number of splits to the number of workers in the executing scheduler |
CQuadRange | An iteration range over a 3D data set. Splits divide each dimension in half for each dimension that is divisible. Successive splits results in a quad-tree where each leaf represents a unit of work |
CRange1d | An iteration range over a 1D data set. Splits divide the range in two based unless the minimum size is reached. Splits are determined by a splitter object. Successive splits result in a binary tree where each leaf represents a unit of work |
CSplitResult | The resulting Ranges of a Range split |
CSplitResult< TRange, MaxSplits, 1 > | The resulting Ranges of a 1D Range split |
CSplitResult< TRange, MaxSplits, 2 > | The resulting Ranges of a 2D Range split |
CSplitResult< TRange, MaxSplits, 3 > | The resulting Ranges of a 3D Range split |
CEvenSplitter | Indicates that a Range is to be split in half |
CProportionalSplitter | Indicates that a Range is to be split in proportionally |
CTask | A Task payload that embeds TFunc and TArgs into the Task's data. It makes it easy to construct a Task from a lambda or a function plus arguments similar to std::thread |
CCStyleTask | A Task payload that embeds a function pointer and data argument into the the Task's data |
CLambdaTaskWrapper | A Task payload that embeds TFunc and TArgs into the Task's data. It makes it easy to construct a Task from a lambda or a function plus arguments similar to std::thread |
CEmptyTask | A empty Task that can be used as dummy or placeholder |
CWorkerPool | A collection of running Worker threads that a MicroScheduler can be run on |
CAtomicCommon | A wrapper class for a stl-like atomic. Uses the STL by default. Define GTS_USE_CUSTOM_ATOMICS to add your own backend, or replace everything completely as long as this interface exists |
CAtomicArithmetic | A wrapper class for a stl-like atomic arithmetic specialization. Uses the STL by default. Define GTS_USE_CUSTOM_ATOMICS to add your own backend, or replace everything completely as long as this interface exists |
CAtomicPointer | A wrapper class for a stl-like atomic pointer specialization. Uses the STL by default. Define GTS_USE_CUSTOM_ATOMICS to add your own backend, or replace everything completely as long as this interface exists |
CAtomic | Arithmetic atomic specialization |
CAtomic< T * > | Atomic pointer specialization |
CAtomic< bool > | Atomic bool specialization |
CInstructionSet | |
CCpuCoreInfo | A description of a CPU core |
CSocketInfo | A description of a socket |
CNumaNodeInfo | A description of a NUMA node |
CProcessorGroupInfo | A description of a processor group |
CSystemTopology | A description of the system's processor topology |
CThread | A wrapper around the platform's threading system |
CThisThread | A set of utilities for the calling thread |
CBinarySemaphore | A semaphore that only allows access to one object |
CnumericLimits | The root template for numeric limits |
CnumericLimits< uint32_t > | The numeric limits for uint32_t |
CnumericLimits< uint64_t > | The numeric limits for uint64_t |
CnumericLimits< int32_t > | The numeric limits for int32_t |
CnumericLimits< int64_t > | The numeric limits for int64_t |
CIsPow2 | A power of 2 type trait |
COwnedId | An ID for owned objects. It indicates the owner's ID, an ID local to the owner, and an overall unique ID |
CMurmurHash | The base murmur hash functor |
CMurmurHash< float > | The float specialized murmur hash functor |
CMurmurHash< double > | The double specialized murmur hash functor |
CMurmurHash< char * > | The c-string specialized murmur hash functor |
CMurmurHash< TKey * > | The pointer specialized murmur hash functor |
CBackoff | An object that backs-off a thread to reduce contention with other threads |
CLockShared | A scoped lock for a shared mutex concept |
CLock | A scoped lock for a mutex concept |
CUnfairSpinMutex | A unfair (first-ready-first-serve) spin mutex |
CFairSpinMutex | A fair (first-come-first-serve) spin mutex |
CUnfairSharedSpinMutex | A unfair reader-writer spin mutex |
►Ngts_examples | |
CBasicTask | |
CParallelFibTask1 | |
CParallelFibContinuationTask | |
CParallelFibTask2 | |
CParallelFibContinuationTask3 | |
CParallelFibTask3 | |
CParallelFibContinuationTask4 | |
CParallelFibTask4 | |
CGridSumTask | |
CGridCell | |
►CBadParallelFor | |
CForTask | |
CAdaptivePartitioner | Adaptively subdivides a TRange based on demand from the scheduler |