|
AGX Dynamics 2.42.3.0
|
GlobalResult is used by kernels to generate result data from different threads. More...
#include <GlobalResult.h>
Inheritance diagram for agx::GlobalResult:Classes | |
| struct | OverflowBuffer |
| class | Transaction |
| Transactions are used to reserve exclusive memory areas in which the threads can write their data. More... | |
Public Types | |
| typedef agx::observer_ptr< const BufferSet > | BufferSetConstObserver |
| typedef agx::ref_ptr< const BufferSet > | BufferSetConstRef |
| typedef agx::observer_ptr< BufferSet > | BufferSetObserver |
| typedef agx::ref_ptr< BufferSet > | BufferSetRef |
| enum | Settings { TRUNCATE = 0x1 , APPEND = 0x2 , ORDER = 0x4 , SORT = 0x8 } |
Public Types inherited from agx::Object | |
| typedef agx::observer_ptr< const Event > | EventConstObserver |
| typedef agx::ref_ptr< const Event > | EventConstRef |
| typedef agx::observer_ptr< Event > | EventObserver |
| typedef agx::Vector< EventObserver > | EventObserverVector |
| typedef agx::VectorPOD< Event * > | EventPtrVector |
| typedef agx::ref_ptr< Event > | EventRef |
| typedef agx::Vector< EventRef > | EventRefVector |
Public Member Functions | |
| GlobalResult (UInt settings, const Path &bindPath) | |
| void | addFailedTransaction (const IndexRange &transactionRange) |
| Report a failed transaction. | |
| void | addOverflow (const OverflowBuffer &buffer) |
| Report an overflown buffer. | |
| Transaction | allocateResult (size_t numElements) |
| Allocate a transaction. | |
| BufferSet (size_t index, size_t capacity) | |
| template<typename T > | |
| size_t | commit (const agxData::AbstractArray &target, const T &vector) |
| template<typename T > | |
| size_t | commit (const agxData::AbstractArray &target, const T &vector, Index sortIndex) |
| size_t | commit (const agxData::AbstractArray &target, size_t numElements, const void *localResult) |
| size_t | commit (const agxData::AbstractArray &target, size_t numElements, const void *localResult, Index sortIndex) |
| Convenience wrapper to perform a complete transaction, this consists of: | |
| void | commitRanges (const IndexRangeVector &ranges) |
| Commit partial result to final buffers. | |
| bool | didOverflow () const |
| BufferSet * | getActiveSet () |
| size_t | getCapacity () const |
| IndexRangeVector & | getFailedTransactions () |
| size_t | getIndex () const |
| agx::Mutex & | getMutex () |
| agx::UInt | getNumOverflows () const |
| VectorPOD< OverflowBuffer > & | getOverflows () |
| void | init (size_t index, size_t capacity) |
| Initialize a buffer set. | |
| void | prepareResultSorting (size_t numJobs) |
Public Member Functions inherited from agx::Object | |
| Object (const Name &name=Name(), Model *model=Object::ClassModel()) | |
| void | addListener (EventListener *listener) |
| virtual void | buildNavigationTree (agxJson::Value &eNode) const |
| virtual void | configure (TiXmlElement *) |
| agx::String | fullName () const |
| agx::String | fullPath () const |
| agx::String | fullPath (const agx::Object *root) const |
| template<typename T > | |
| T * | getAutoScopedResource (const agx::Path &path) |
| template<typename T > | |
| const T * | getAutoScopedResource (const agx::Path &path) const |
| agx::Object * | getAutoScopedResource (const agx::Path &path, agx::Model *model=nullptr) |
| const agx::Object * | getAutoScopedResource (const agx::Path &path, agx::Model *model=nullptr) const |
| agx::Object * | getContext () |
| template<typename T > | |
| T * | getContext () |
| const agx::Object * | getContext () const |
| template<typename T > | |
| const T * | getContext () const |
| agx::UInt32 | getId () const |
| const agx::Name & | getImplementationName () const |
| agx::Model * | getModel () |
| const agx::Model * | getModel () const |
| const agx::Name & | getName () const |
| agx::Object * | getNextSibling () |
| const agx::Object * | getNextSibling () const |
| agx::Path | getPath () const |
| agx::Path | getPath (const agx::Object *root) const |
| template<typename T > | |
| T * | getResource (const agx::Path &path) |
| template<typename T > | |
| const T * | getResource (const agx::Path &path) const |
| agx::Object * | getResource (const agx::Path &path, agx::Model *model=nullptr) |
| const agx::Object * | getResource (const agx::Path &path, agx::Model *model=nullptr) const |
| virtual agx::Object * | getResourceImpl (const agx::Path &path, agx::Model *model) |
| agx::Object * | getRootContext () |
| const agx::Object * | getRootContext () const |
| bool | hasListener (EventListener *listener) |
| bool | hasParent (const agx::Object *node) const |
| bool | isUnique () const |
| virtual void | printSubtree () const |
| virtual void | rebind () |
| void | removeListener (EventListener *listener) |
| virtual void | save (TiXmlElement *) const |
| virtual void | setContext (agx::Object *context) |
| void | setId (UInt32 id) |
| void | setModel (agx::Model *model) |
| Set the object model (handled automatically). | |
| void | setName (const agx::Name &name) |
| Set the name of the object. | |
| virtual void | snapshot (TiXmlNode *, const String &) const |
Public Member Functions inherited from agx::Referenced | |
| Referenced () | |
| Default constructor. | |
| Referenced (const Referenced &) | |
| template<typename T > | |
| T * | as () |
| Subclass casting. | |
| template<typename T > | |
| const T * | as () const |
| template<typename T > | |
| T * | asSafe () |
| Safe subclass casting, return nullptr if template type does not match. | |
| template<typename T > | |
| const T * | asSafe () const |
| int | getReferenceCount () const |
| template<typename T > | |
| bool | is () const |
| Subclass test. | |
| Referenced & | operator= (const Referenced &) |
| Assignment operator. Will increment the number of references to the referenced object. | |
| void | reference (void *ptr=nullptr) const |
| Explicitly increment the reference count by one, indicating that this object has another pointer which is referencing it. | |
| void | unreference (void *ptr=nullptr) const |
| Decrement the reference count by one, indicating that a pointer to this object is referencing it. | |
| void | unreference_nodelete () const |
| Decrement the reference count by one, indicating that a pointer to this object is referencing it. | |
Protected Member Functions | |
| virtual | ~BufferSet () |
| virtual | ~GlobalResult () |
| size_t | calculateIncreasedCapacity (size_t currentCapacity, size_t overflowSize) |
| template<typename T > | |
| size_t | calculateInitialCapacity (const T *target) |
| BufferSet * | createNewSet (size_t capacity) |
| void | finalizeResultSorting (IndexRange range) |
| void | finalizeTransactions () |
| virtual void | handleOverflow (size_t overflowSize)=0 |
| void | init (const IndexRange &range) |
| void | reportCompletedTransaction (Transaction *transaction) |
| void | reportFailedTransaction (const IndexRange &transactionRange, BufferSet *startSet) |
| BufferSet * | reportFailedTransaction (Transaction *transaction) |
| virtual void | sortResult (const agxData::IndexArray &permutation)=0 |
Protected Member Functions inherited from agx::Object | |
| virtual | ~Object () |
Protected Member Functions inherited from agx::Referenced | |
| virtual | ~Referenced () |
| Destructor. | |
| void | allocateObserverVector () const |
| void | deleteUsingDeleteHandler () const |
Protected Attributes | |
| BufferSetRef | m_activeSet |
| Vector< BufferSetRef > | m_bufferSets |
| std::atomic< size_t > | m_capacity |
| std::atomic< agx::Int32 > | m_head |
| size_t | m_initialSize |
| agx::Mutex | m_mutex |
| std::atomic< agx::Int32 > | m_numCompletedTransactions |
| UInt | m_numOverflows |
| std::atomic< agx::Int32 > | m_numTransactions |
| agxData::Buffer * | m_resultOrderBuffer |
| UInt | m_settings |
| Real | m_smoothed |
| VectorPOD< IndexRange > | m_sortedRanges |
| VectorPOD< Transaction > | m_transactions |
Protected Attributes inherited from agx::Referenced | |
| Mutex | m_mutex |
| ObserverContainer | m_observers |
| AtomicValue | m_refCount |
Additional Inherited Members | |
Static Public Member Functions inherited from agx::Object | |
| static agx::Model * | ClassModel () |
| static agx::String | generateName (const agx::String &bindPath) |
| static const HashSet< Object * > & | getActiveObjects () |
| static bool | getEnableRebind () |
| Should rebinding be allowed? Right now a global setting. | |
| static Object * | load (const String &path, Device *device, const String &type, const String &attribute, const String &value) |
| template<typename T > | |
| static T * | load (const String &path, Device *device, const String &type, const String &attribute, const String &value) |
| static Object * | load (const String &path, Device *device, const String &type="", size_t instance=0) |
| template<typename T > | |
| static T * | load (const String &path, Device *device, const String &type="", size_t instance=0) |
| static void | load (const String &path, Device *device, ObjectPtrVector &loadedObjects) |
| static Object * | load (TiXmlElement *eObject, Device *device) |
| template<typename T > | |
| static T * | load (TiXmlElement *eObject, Device *device) |
| static TiXmlDocument | openDocument (const String &path) |
| static void | setEnableRebind (bool flag) |
| Sets if rebinding of objects should be allowed (Right now a global setting). | |
Static Public Member Functions inherited from agx::Referenced | |
| template<typename T > | |
| static bool | ValidateCast (const Referenced *object) |
Static Protected Member Functions inherited from agx::Referenced | |
| static DeleteHandler * | getDeleteHandler () |
| static void | setDeleteHandler (DeleteHandler *handler) |
| Internal: Set a DeleteHandler to which deletion of all referenced counted objects will be delegated to. | |
GlobalResult is used by kernels to generate result data from different threads.
The set of active buffers in a GlobalResult.
The initial result size estimation may be insufficient in which case the GlobalResult must be reallocated. Transactions are used to handle overflows in a thread safe manner.
Definition at line 51 of file GlobalResult.h.
| typedef agx::observer_ptr< const BufferSet > agx::GlobalResult::BufferSetConstObserver |
Definition at line 54 of file GlobalResult.h.
| typedef agx::ref_ptr< const BufferSet > agx::GlobalResult::BufferSetConstRef |
Definition at line 54 of file GlobalResult.h.
Definition at line 54 of file GlobalResult.h.
| typedef agx::ref_ptr< BufferSet > agx::GlobalResult::BufferSetRef |
Definition at line 54 of file GlobalResult.h.
| Enumerator | |
|---|---|
| TRUNCATE | |
| APPEND | Clear the target data set before the kernel executes. |
| ORDER | Append to the existing data. |
| SORT | Build a permutation table for deterministic ordering of result data. |
Definition at line 56 of file GlobalResult.h.
|
protectedvirtual |
|
inlineprotectedvirtual |
Definition at line 251 of file GlobalResult.h.
| void agx::GlobalResult::addFailedTransaction | ( | const IndexRange & | transactionRange | ) |
Report a failed transaction.
| void agx::GlobalResult::addOverflow | ( | const OverflowBuffer & | buffer | ) |
Report an overflown buffer.
| Transaction agx::GlobalResult::allocateResult | ( | size_t | numElements | ) |
Allocate a transaction.
| numElements | The number of elements to be written |
| agx::GlobalResult::BufferSet | ( | size_t | index, |
| size_t | capacity | ||
| ) |
Referenced by agx::GlobalResult::Transaction::commit().
|
protected |
|
protected |
| size_t agx::GlobalResult::commit | ( | const agxData::AbstractArray & | target, |
| const T & | vector | ||
| ) |
Definition at line 403 of file GlobalResult.h.
References commit(), and agxData::AbstractArray::size().
| size_t agx::GlobalResult::commit | ( | const agxData::AbstractArray & | target, |
| const T & | vector, | ||
| Index | sortIndex | ||
| ) |
Definition at line 397 of file GlobalResult.h.
References commit(), and agxData::AbstractArray::size().
| size_t agx::GlobalResult::commit | ( | const agxData::AbstractArray & | target, |
| size_t | numElements, | ||
| const void * | localResult | ||
| ) |
| size_t agx::GlobalResult::commit | ( | const agxData::AbstractArray & | target, |
| size_t | numElements, | ||
| const void * | localResult, | ||
| Index | sortIndex | ||
| ) |
Convenience wrapper to perform a complete transaction, this consists of:
| numElements | The number of elements to be written |
| target | The target buffer |
| localResult | The local result buffer to copy data from |
| sortIndex | A sort index used to build a deterministic ordering of the result data |
Referenced by commit().
| void agx::GlobalResult::commitRanges | ( | const IndexRangeVector & | ranges | ) |
Commit partial result to final buffers.
|
protected |
| bool agx::GlobalResult::didOverflow | ( | ) | const |
Definition at line 386 of file GlobalResult.h.
References m_numOverflows.
|
protected |
|
protected |
| GlobalResult::BufferSet * agx::GlobalResult::getActiveSet | ( | ) |
Definition at line 385 of file GlobalResult.h.
References m_activeSet.
| size_t agx::GlobalResult::getCapacity | ( | ) | const |
| IndexRangeVector & agx::GlobalResult::getFailedTransactions | ( | ) |
| size_t agx::GlobalResult::getIndex | ( | ) | const |
| agx::Mutex & agx::GlobalResult::getMutex | ( | ) |
Definition at line 391 of file GlobalResult.h.
References m_mutex.
| agx::UInt agx::GlobalResult::getNumOverflows | ( | ) | const |
Definition at line 387 of file GlobalResult.h.
References m_numOverflows.
| VectorPOD< OverflowBuffer > & agx::GlobalResult::getOverflows | ( | ) |
|
protectedpure virtual |
Implemented in agx::GlobalResultStorage, and agx::GlobalResultBuffer.
|
protected |
| void agx::GlobalResult::init | ( | size_t | index, |
| size_t | capacity | ||
| ) |
Initialize a buffer set.
| void agx::GlobalResult::prepareResultSorting | ( | size_t | numJobs | ) |
|
protected |
|
protected |
|
protected |
|
protectedpure virtual |
Implemented in agx::GlobalResultStorage, and agx::GlobalResultBuffer.
|
protected |
Definition at line 198 of file GlobalResult.h.
Referenced by getActiveSet().
|
protected |
Definition at line 199 of file GlobalResult.h.
|
protected |
Definition at line 201 of file GlobalResult.h.
|
protected |
Definition at line 205 of file GlobalResult.h.
|
protected |
Definition at line 202 of file GlobalResult.h.
|
protected |
Definition at line 206 of file GlobalResult.h.
Referenced by getMutex().
|
protected |
Definition at line 209 of file GlobalResult.h.
|
protected |
Definition at line 210 of file GlobalResult.h.
Referenced by didOverflow(), and getNumOverflows().
|
protected |
Definition at line 208 of file GlobalResult.h.
|
protected |
Definition at line 213 of file GlobalResult.h.
|
protected |
Definition at line 197 of file GlobalResult.h.
|
protected |
Definition at line 203 of file GlobalResult.h.
|
protected |
Definition at line 212 of file GlobalResult.h.
Referenced by agx::GlobalResult::Transaction::commit().
|
protected |
Definition at line 207 of file GlobalResult.h.