Games Task Scheduler (GTS)
A multi-processor scheduling framework for games engines
Class Hierarchy
This inheritance list is sorted roughly, but not completely, alphabetically:
[detail level 123]
 CAdaptivePartitionerAdaptively 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::BinarySemaphoreA semaphore that only allows access to one object
 Cgts::BinnedAllocatorA collection of BlockAllocators binned to size classes
 Cgts::internal::BlockAllocatorManages a list of Slab and Pages, and allocates and frees homogeneous Pages from Slabs and Blocks from Pages
 Cgts::MicroScheduler_ComputeResource::CheckForTasksData
 Cgts::ComputeResourceA ComputeResource represents a entity that can execute a Workload in a Node
 Cgts::ComputeResourceTypeAn enumeration of all supported ComputeResources
 Cgts::analysis::ConcurrentLoggerA serialized log of per-thread messages
 Cgts::analysis::ConcurrentLoggerEventThe log event payload for ConcurrentLogger
 Cgts::ParallelHashTable< TKey, TValue, THasher, TAccessorSharedMutex, TGrowSharedMutex, TAllocator >::const_iteratorA constant forward iterator. Read-locks the referenced element until destruction
 Cgts::ParallelVector< T, TSharedMutex, TAllocator >::const_iteratorA constant forward iterator. Read-locks the referenced element until destruction
 Cgts::analysis::Counter< TCounters >A set of thread local counters
 Cgts::CpuCoreInfoA description of a CPU core
 Cgts::DagUtils
 Cgts::DependencyArray< TValRange, TDepRange, DIMENSIONALITY >
 Cgts::DependencyArray< TValRange, TDepRange, 2 >
 Cgts::EvenSplitterIndicates that a Range is to be split in half
 Cgts::FairSpinMutex< TBackoff >A fair (first-come-first-serve) spin mutex
 Cgts::FreeListNodeAn 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::IntrusiveDListAn intrusive doubly-linked list
 Cgts::IsPow2< T, val >A power of 2 type trait
 Cgts::ParallelHashTable< TKey, TValue, THasher, TAccessorSharedMutex, TGrowSharedMutex, TAllocator >::iteratorA forward iterator. Write-locks the referenced element until destruction
 Cgts::ParallelVector< T, TSharedMutex, TAllocator >::iteratorA 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::MacroSchedulerA MacroScheduler builds ISchedules for a set of ComputeResources from a DAG of Node
 Cgts::MacroSchedulerDescThe description of a MacroSchedulerDesc to create
 Cgts::MemoryStoreThe header for each Slab
 Cgts::MicroSchedulerA work-stealing task scheduler. The scheduler is executed by the WorkerPool it is initialized with
 Cgts::analysis::MicroSchedulerCounters
 Cgts::MicroSchedulerDescThe 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::NodeAn intrusive Node
 Cgts::NodeA Node represents a task in a generalized task DAG. It contains Workloads that are scheduled onto a ComputeResource by a MacroScheduler
 Cgts::NumaNodeInfoA 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::OwnedIdAn ID for owned objects. It indicates the owner's ID, an ID local to the owner, and an overall unique ID
 Cgts::ParallelForA construct that maps parallel-for behavior to a MicroScheduler
 Cgts::ParallelReduceA construct that maps parallel-reduce behavior to a MicroScheduler
 Cgts::ParallelWavefrontA construct that maps a parallel-wavefront behavior to a MicroScheduler
 Cgts::ParallelVector< T, TSharedMutex, TAllocator >::pop_back_resultThe result structure for pop_back_and_get
 Cgts::ProcessorGroupInfoA description of a processor group
 Cgts::ProportionalSplitterIndicates 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::ScheduleThe execution schedule for all ComputeResources
 Cgts::SimplePartitionerRecursively splits a range until it is no longer divisible
 Cgts::internal::ParallelSubVector< T, TSharedMutex, TAllocator >::slot_type
 Cgts::SocketInfoA 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::StaticPartitionerRecursively splits a range and tries to limit number of splits to the number of workers in the executing scheduler
 Cgts::SystemTopologyA description of the system's processor topology
 Cgts::TaskA 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::TaskContextThe context associated with the task being executed
 Cgts::ThisThreadA set of utilities for the calling thread
 Cgts::ThreadA wrapper around the platform's threading system
 Cgts::analysis::TraceConcurrentLoggerA singleton ConcurrentLogger for tracing
 Cgts::analysis::TracyStateA 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::WorkerPoolA collection of running Worker threads that a MicroScheduler can be run on
 Cgts::analysis::WorkerPoolCounters
 Cgts::WorkerPoolDescThe description of a WorkerPool
 Cgts::WorkerPoolVisitorA visitor object for the worker pool. Allows the user to be notified at particular points during the WorkerPool's lifetime
 Cgts::WorkerThreadDescThe description of a worker Thread
 Cgts::WorkloadA Workload is a base class for describing a task that can be executed by a set of ComputeResources
 Cgts::WorkloadContextThe context associated with the task being executed
 Cgts::WorkloadTypeAn enumeration of all supported Workload languages