Games Task Scheduler (GTS)
A multi-processor scheduling framework for games engines
|
CAdaptivePartitioner | Adaptively subdivides a TRange based on demand from the scheduler |
Cgts::AlignedAllocator< ALIGNMENT > | An aligned allocator for GTS containers |
►Cgts::AlignedAllocator< GTS_NO_SHARING_CACHE_LINE_SIZE > | |
►Cgts::AtomicCommon< T > | 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 |
►Cgts::AtomicCommon< bool > | |
Cgts::Backoff< GROWTH_RATE, YIELD > | An object that backs-off a thread to reduce contention with other threads |
Cgts_examples::BadParallelFor | |
Cgts::BinarySemaphore | A semaphore that only allows access to one object |
Cgts::BinnedAllocator | A collection of BlockAllocators binned to size classes |
Cgts::internal::BlockAllocator | Manages a list of Slab and Pages, and allocates and frees homogeneous Pages from Slabs and Blocks from Pages |
Cgts::MicroScheduler_ComputeResource::CheckForTasksData | |
►Cgts::ComputeResource | A ComputeResource represents a entity that can execute a Workload in a Node |
Cgts::ComputeResourceType | An enumeration of all supported ComputeResources |
Cgts::analysis::ConcurrentLogger | A serialized log of per-thread messages |
Cgts::analysis::ConcurrentLoggerEvent | The log event payload for ConcurrentLogger |
Cgts::ParallelHashTable< TKey, TValue, THasher, TAccessorSharedMutex, TGrowSharedMutex, TAllocator >::const_iterator | A constant forward iterator. Read-locks the referenced element until destruction |
Cgts::ParallelVector< T, TSharedMutex, TAllocator >::const_iterator | A constant forward iterator. Read-locks the referenced element until destruction |
Cgts::analysis::Counter< TCounters > | A set of thread local counters |
Cgts::CpuCoreInfo | A description of a CPU core |
Cgts::DagUtils | |
Cgts::DependencyArray< TValRange, TDepRange, DIMENSIONALITY > | |
Cgts::DependencyArray< TValRange, TDepRange, 2 > | |
Cgts::EvenSplitter | Indicates that a Range is to be split in half |
Cgts::FairSpinMutex< TBackoff > | A fair (first-come-first-serve) spin mutex |
Cgts::FreeListNode | An intrusive singly-linked list node used for free-lists |
Cgts_examples::GridCell | |
Cgts::WorkerThreadDesc::GroupAndAffinity | |
►Cgts::internal::GuardBase< T, TAccessorSharedMutex, TGrowSharedMutex > | The base class for all Guards |
Cgts::internal::ParallelSubVector< T, TSharedMutex, TAllocator >::index_buffer_type | |
Cgts::InstructionSet | |
Cgts::IntrusiveDList | An intrusive doubly-linked list |
Cgts::IsPow2< T, val > | A power of 2 type trait |
Cgts::ParallelHashTable< TKey, TValue, THasher, TAccessorSharedMutex, TGrowSharedMutex, TAllocator >::iterator | A forward iterator. Write-locks the referenced element until destruction |
Cgts::ParallelVector< T, TSharedMutex, TAllocator >::iterator | A forward iterator. Write-locks the referenced element until destruction |
Cgts::analysis::IttNotify | |
Cgts::KdRange2d< TIterType > | 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 |
Cgts::KdRange3d< TIterType > | 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 |
Cgts::KeyValue< TKey, TValue > | A key-value keyVal |
Cgts::KeyValue< key_type, mapped_type > | |
Cgts::LaunchTask< DIMENSIONALITY > | |
Cgts::LaunchTask< 2 > | |
Cgts::LaunchTask< 3 > | |
Cgts::Lock< TMutex > | A scoped lock for a mutex concept |
Cgts::LockShared< TMutex > | A scoped lock for a shared mutex concept |
►Cgts::MacroScheduler | A MacroScheduler builds ISchedules for a set of ComputeResources from a DAG of Node |
Cgts::MacroSchedulerDesc | The description of a MacroSchedulerDesc to create |
Cgts::MemoryStore | The header for each Slab |
Cgts::MicroScheduler | A work-stealing task scheduler. The scheduler is executed by the WorkerPool it is initialized with |
Cgts::analysis::MicroSchedulerCounters | |
Cgts::MicroSchedulerDesc | The description of a MicroScheduler |
Cgts::MurmurHash< TKey > | The base murmur hash functor |
Cgts::MurmurHash< char * > | The c-string specialized murmur hash functor |
Cgts::MurmurHash< double > | The double specialized murmur hash functor |
Cgts::MurmurHash< float > | The float specialized murmur hash functor |
Cgts::MurmurHash< gts::Schedule * > | |
Cgts::MurmurHash< TKey * > | The pointer specialized murmur hash functor |
Cgts::IntrusiveDList::Node | An intrusive Node |
Cgts::Node | A Node represents a task in a generalized task DAG. It contains Workloads that are scheduled onto a ComputeResource by a MacroScheduler |
Cgts::NumaNodeInfo | A description of a NUMA node |
Cgts::numericLimits< T > | The root template for numeric limits |
Cgts::numericLimits< int32_t > | The numeric limits for int32_t |
Cgts::numericLimits< int64_t > | The numeric limits for int64_t |
Cgts::numericLimits< uint32_t > | The numeric limits for uint32_t |
Cgts::numericLimits< uint64_t > | The numeric limits for uint64_t |
Cgts::OctRange< TIterType > | 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 |
►Cgts::OsHeapAllocator< ALIGNMENT > | An OS heap allocator for GTS containers |
Cgts::OwnedId | An ID for owned objects. It indicates the owner's ID, an ID local to the owner, and an overall unique ID |
Cgts::ParallelFor | A construct that maps parallel-for behavior to a MicroScheduler |
Cgts::ParallelReduce | A construct that maps parallel-reduce behavior to a MicroScheduler |
Cgts::ParallelWavefront | A construct that maps a parallel-wavefront behavior to a MicroScheduler |
Cgts::ParallelVector< T, TSharedMutex, TAllocator >::pop_back_result | The result structure for pop_back_and_get |
Cgts::ProcessorGroupInfo | A description of a processor group |
Cgts::ProportionalSplitter | Indicates that a Range is to be split in proportionally |
Cgts::QuadRange< TIterType > | 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 |
Cgts::Range1d< Iter > | 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 |
Cgts::Range1d< iter_type > | |
►Cgts::Schedule | The execution schedule for all ComputeResources |
Cgts::SimplePartitioner | Recursively splits a range until it is no longer divisible |
Cgts::internal::ParallelSubVector< T, TSharedMutex, TAllocator >::slot_type | |
Cgts::SocketInfo | A description of a socket |
Cgts::SplitResult< TRange, MaxSplits, Dimesionality > | The resulting Ranges of a Range split |
Cgts::SplitResult< TRange, MaxSplits, 1 > | The resulting Ranges of a 1D Range split |
Cgts::SplitResult< TRange, MaxSplits, 2 > | The resulting Ranges of a 2D Range split |
Cgts::SplitResult< TRange, MaxSplits, 3 > | The resulting Ranges of a 3D Range split |
Cgts::StaticPartitioner | Recursively splits a range and tries to limit number of splits to the number of workers in the executing scheduler |
Cgts::SystemTopology | A description of the system's processor topology |
►Cgts::Task | 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 |
Cgts::TaskContext | The context associated with the task being executed |
Cgts::ThisThread | A set of utilities for the calling thread |
Cgts::Thread | A wrapper around the platform's threading system |
Cgts::analysis::TraceConcurrentLogger | A singleton ConcurrentLogger for tracing |
Cgts::analysis::TracyState | A state singleton for Tracy |
Cgts::UnfairSharedSpinMutex< TReaders, TBackoff > | A unfair reader-writer spin mutex |
Cgts::UnfairSpinMutex< TBackoff > | A unfair (first-ready-first-serve) spin mutex |
Cgts::UnfairSpinMutex< Backoff< BackoffGrowth::Geometric, true > > | |
Cgts::UnfairSpinMutex< backoff_type > | |
Cgts::WorkerPool | A collection of running Worker threads that a MicroScheduler can be run on |
Cgts::analysis::WorkerPoolCounters | |
Cgts::WorkerPoolDesc | The description of a WorkerPool |
Cgts::WorkerPoolVisitor | A visitor object for the worker pool. Allows the user to be notified at particular points during the WorkerPool's lifetime |
Cgts::WorkerThreadDesc | The description of a worker Thread |
►Cgts::Workload | A Workload is a base class for describing a task that can be executed by a set of ComputeResources |
Cgts::WorkloadContext | The context associated with the task being executed |
Cgts::WorkloadType | An enumeration of all supported Workload languages |