AGX Dynamics 2.42.3.0
Loading...
Searching...
No Matches
agx::LambdaKernel Class Reference

#include <Kernel.h>

+ Inheritance diagram for agx::LambdaKernel:

Public Types

typedef std::function< UInt()> DataSetSizeCallback
 
typedef std::function< void(const RangeJob &)> LambdaCallback
 
- Public Types inherited from agx::CpuKernel
typedef RangeJob::RangeCallback RangeDispatch
 
- Public Types inherited from agx::Task
typedef Event1< Task * > ExecutionEvent
 
typedef Event2< Task *, Parameter * > ParameterEvent
 
enum  ParameterMatch {
  NO_EVENTS = 0 , EMPTY_BINDING_LIST = (1<<0) , PARAMETER_VALID = (1<<1) , PARAMETER_NOT_REQUIRED = (1<<2) ,
  PARAMETER_BOUND = (1<<3) , PARAMETER_HAS_BOUND_PATH = (1<<4) , FORMATS_MATCH = (1<<5) , NEED_DEVICE_TRANSFORM = (1<<6) ,
  MISSING_BINDING = (1<<7) , BINDING_LACKS_TYPE = (1<<8) , FORMATS_MISSMATCH = (1<<9) , EXTRA_BINDING = (1<<10) ,
  INCONSISTEN_PARAMETERS = (1<<11) , MATCH_MASK = EMPTY_BINDING_LIST | PARAMETER_VALID | PARAMETER_NOT_REQUIRED | PARAMETER_BOUND | PARAMETER_HAS_BOUND_PATH | FORMATS_MATCH | NEED_DEVICE_TRANSFORM , NO_MATCH_MASK = MISSING_BINDING | BINDING_LACKS_TYPE | FORMATS_MISSMATCH | EXTRA_BINDING | INCONSISTEN_PARAMETERS
}
 Used for tracing mismatched parameter bindings. More...
 
enum  ProfilingMode { PROFILING_NONE , PROFILING_FAST , PROFILING_FULL }
 
- Public Types inherited from agx::Component
typedef Event2< Component *, Object * > ObjectEvent
 Event when adding removing child objects.
 
typedef Callback1< Object * > TraverseCallback
 
- 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

 LambdaKernel (const agx::Name &name, LambdaCallback lambdaCallback, DataSetSizeCallback sizeCallback)
 Constructor.
 
- Public Member Functions inherited from agx::CpuKernel
 CpuKernel (const agx::Name &name, Job::Callback serialDispatch)
 
 CpuKernel (const agx::Name &name, RangeDispatch rangeDispatch)
 
UInt getNumJobs () const
 
const RangeDispatch & getRangeDispatch () const
 
- Public Member Functions inherited from agx::Kernel
 Kernel (const agx::Name &name, agx::Device *device, const agx::Job::Callback &dispatcher)
 
virtual void configure (TiXmlElement *eKernel) override
 
virtual float getComputeTime ()
 
agx::UInt getCostPerElement () const
 
agx::UInt getMaxJobSize () const
 
agx::UInt getMinJobSize () const
 
agx::UInt getNumJobsPerThread () const
 
agx::UInt getNumWorkItems () const
 
virtual void preDispatch ()
 Explicitly set the splitting parameter.
 
virtual void rebind () override
 
void setCostPerElement (agx::UInt cost)
 Set the per-element cost estimate.
 
void setMaxJobSize (agx::UInt max)
 Set the maximum number of work elements per job.
 
void setMinJobSize (agx::UInt min)
 Set the minimum number of work elements per job.
 
void setNumJobsPerThread (agx::UInt numJobs)
 Set the number of jobs per thread.
 
- Public Member Functions inherited from agx::ParallelTask
 ParallelTask (const agx::Name &name, agx::Device *device=agx::CpuDevice::instance())
 
 ParallelTask (const agx::Name &name, const agx::Job::Callback &dispatchCallback, agx::Device *device=agx::CpuDevice::instance())
 
void addJob (agx::Job *job)
 Add a job to the task.
 
Job * getDispatchJob ()
 
virtual agx::Job * getPostJob () override
 
virtual agx::Job * getPreJob () override
 
void removeAllJobs ()
 Remove all jobs (except the original pre/dispatch/post jobs)
 
void setDispatch (const agx::Job::Callback &dispatchCallback)
 
virtual void setTargetThread (agx::Thread *thread) override
 Set a specific thread which must execute this task.
 
- Public Member Functions inherited from agx::Task
 Task (const agx::Name &name, agx::Device *device=agx::CpuDevice::instance())
 Constructor.
 
void addDependencies (const agx::String &paths)
 
void addDependency (agx::Task *parent)
 Add a dependency.
 
void addDependency (const agx::Path &path)
 
void addParameter (agx::Parameter *parameter)
 Add a parameter.
 
void addParameter (agx::Parameter *parameter, size_t index)
 
void addResolvePath (const agx::Path &path)
 
void addResolvePaths (const agx::String &paths)
 
void addTriggerPath (const agx::Path &path)
 
void addTriggerPaths (const agx::String &paths)
 
void beginCallback ()
 
virtual void configure (TiXmlElement *eTask) override
 
void configure (TiXmlElement *eTask, bool loadParameters)
 
void endCallback (agx::Real32 computeCost, agx::Real32 overheadCost=0)
 
void execute ()
 Execute the task.
 
agx::Real32 getAccumulatedComputeCost () const
 
agx::Real32 getAccumulatedOverheadTime () const
 
agx::Real32 getAccumulatedWallTime () const
 
agx::ArrayParameter * getArrayParameter (const agx::Name &name)
 
const agx::ArrayParameter * getArrayParameter (const agx::Name &name) const
 
const agx::TaskPtrVector & getChildren () const
 
agx::Real32 getComputeCost () const
 
agx::Thread * getDispatchThread ()
 
agx::TaskGroup * getGroup ()
 
const agx::TaskGroup * getGroup () const
 
agx::UInt getNumAccumulationSamples () const
 
agx::Real32 getOverheadTime () const
 
agx::Parameter * getParameter (const agx::Name &name)
 
const agx::Parameter * getParameter (const agx::Name &name) const
 
agx::Parameter * getParameter (size_t index)
 
const agx::Parameter * getParameter (size_t index) const
 
const agx::ParameterPtrVector & getParameters () const
 
const agx::TaskPtrVector & getParents () const
 
agx::PointerParameter * getPointerParameter (const agx::Name &name)
 
const agx::PointerParameter * getPointerParameter (const agx::Name &name) const
 
virtual agx::Job * getPostJob ()=0
 
virtual agx::Job * getPreJob ()=0
 
agx::ScalarParameter * getScalarParameter (const agx::Name &name)
 
const agx::ScalarParameter * getScalarParameter (const agx::Name &name) const
 
agx::Thread * getTargetThread ()
 
agx::Real32 getWallTime () const
 Performance statistics.
 
bool hasDependency (agx::Task *parent) const
 
bool isEnabled () const
 
bool isRunning () const
 
UInt32 matchParameters (agx::ParameterBindingVector &bindings, bool allowFormatPromotions)
 
UInt32 matchParameters (const agx::ParameterBindingVector &bindings)
 
UInt32 matchParameters (const ParameterTable &bindings)
 
void print () const
 
void print (std::ostream &stream) const
 
void printBindings ()
 
void printBindings (std::ostream &stream)
 
virtual void rebind () override
 
void removeDependency (agx::Task *parent)
 Remove a dependency.
 
void removeParameter (agx::Parameter *parameter)
 Remove a parameter.
 
void removeParameter (size_t index)
 
void replace (agx::Task *other)
 Replace the task with another task by rerouting the dependencies.
 
void resetAccumulationTimers (bool recursive=true)
 Reset accumulated performance statistics.
 
void save (agx::TiXmlElement *parent) const override
 
virtual void setContext (agx::Object *context) override
 
void setEnable (bool flag)
 Enable/disable a task.
 
void setModel (agx::Model *model)
 
virtual void setTargetThread (agx::Thread *thread)
 Set a specific thread which must execute this task.
 
void traverse (const Callback1< Task * > &callback, bool breadthFirst=true)
 
virtual void wait ()
 Block until the task has completed execution.
 
- Public Member Functions inherited from agx::Component
 Component (const agx::Name &name=agx::Name(), agx::Model *model=agx::Component::ClassModel(), agx::Device *device=nullptr)
 
virtual void addObject (agx::Object *object, bool assignContext=true)
 Add an object to the component.
 
virtual String autoComplete (const String &partialName, StringVector &matchingNames) const
 
virtual void buildNavigationTree (agxJson::Value &eNode) const override
 
void configure (Model *model)
 
virtual void configure (TiXmlElement *eComponent) override
 
agx::Device * getDevice ()
 
template<typename T >
T * getDevice ()
 
const agx::Device * getDevice () const
 
template<typename T >
const T * getDevice () const
 
size_t getNumObjects (const agx::Name &name) const
 
agx::Object * getObject (const agx::Name &name, agx::Model *model, size_t index=0)
 
const agx::Object * getObject (const agx::Name &name, agx::Model *model, size_t index=0) const
 
agx::Object * getObject (const agx::Name &name, size_t index=0)
 
template<typename T >
T * getObject (const agx::Name &name, size_t index=0)
 
const agx::Object * getObject (const agx::Name &name, size_t index=0) const
 
template<typename T >
const T * getObject (const agx::Name &name, size_t index=0) const
 
const agx::ObjectRefVector & getObjects () const
 
template<typename T >
void getObjects (agx::ObjectPtrVector &result, bool recursive=false) const
 Returns All child objects of a specified type in the result container.
 
void getObjects (agx::ObjectPtrVector &result, const agx::Model *model, bool recursive=false) const
 
virtual Object * getResourceImpl (const Path &path, agx::Model *model) override
 
virtual void printSubtree () const override
 
void printSubtree (std::ostream &stream, int depth=0) const
 
virtual void rebind () override
 
void removeAllObjects ()
 Remove all components.
 
virtual void removeObject (agx::Object *object)
 Remove an object from the component.
 
void removeObject (const agx::Name &name, size_t index=0)
 Remove an object with a specified name (and optional index) from the component.
 
virtual void snapshot (TiXmlNode *eParent, const String &directory) const override
 
void traverse (ComponentVisitor *)
 
void traverse (const TraverseCallback &callback)
 
- 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 Attributes

Vector< RangeJob > m_rangeJobs
 
- Protected Attributes inherited from agx::CpuKernel
UInt m_numJobs
 
RangeDispatch m_rangeDispatch
 
- Protected Attributes inherited from agx::Kernel
agxData::ValueRefT< UInt > m_numWorkItems
 
- 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::CpuKernel
static CpuKernel * load (TiXmlElement *eKernel, Device *device)
 
- Static Public Member Functions inherited from agx::Kernel
static agx::Model * ClassModel ()
 
static Kernel * load (TiXmlElement *eKernel, Device *device)
 
- Static Public Member Functions inherited from agx::Task
static agx::Model * ClassModel ()
 
static ProfilingMode getProfilingMode ()
 
static Task * load (const char *path, Device *device=CpuDevice::instance())
 
static Task * load (const Path &path, const Name &implementation, agx::ParameterBindingVector &parameterList, bool allowFormatPromotions, Device *device=CpuDevice::instance())
 
static Task * load (const Path &path, const Name &implementation, const agx::ParameterBindingVector &parameterList, Device *device=CpuDevice::instance())
 
static Task * load (const Path &path, const Name &implementation, Device *device=CpuDevice::instance())
 
static Task * load (const Path &path, Device *device=CpuDevice::instance())
 
static Task * load (const String &path, Device *device=CpuDevice::instance())
 
static Task * load (TiXmlElement *eTask, Device *device)
 
static void printParameterMatch (UInt32 parameterMatch)
 
static void setProfilingMode (ProfilingMode mode)
 
- Static Public Member Functions inherited from agx::Component
static Component * _load (TiXmlElement *eComponent, Device *device)
 
static agx::Model * ClassModel ()
 
static Component * load (const Path &path, const Name &implementation, Device *device, const Path &_namespace=Path())
 
static Component * load (const String &path, const Path &_namespace=Path())
 
static Component * load (const String &path, Device *device, const Path &_namespace=Path())
 
static Component * load (TiXmlElement *eComponent, Device *device)
 
- 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)
 
- Public Attributes inherited from agx::Task
ParameterEvent addParameterEvent
 Triggered when a parameter is added.
 
ExecutionEvent completionEvent
 Triggered after the task has completed.
 
agxData::Val< Bool > enableParameter
 Enable/disable the task, normally use setEnable/isEnabled instead.
 
ParameterEvent removeParameterEvent
 Triggered when a parameter is removed.
 
ExecutionEvent startEvent
 Triggered before the task begins.
 
- Public Attributes inherited from agx::Component
ObjectEvent addObjectEvent
 
ObjectEvent removeObjectEvent
 
- Protected Member Functions inherited from agx::CpuKernel
virtual ~CpuKernel ()
 
virtual RangeJob * allocateRangeJobs (size_t numJobs)=0
 
void generateJobs ()
 
- Protected Member Functions inherited from agx::Kernel
virtual ~Kernel ()
 
void locateNumWorkItemsValue ()
 
virtual void parameterAddedCallback (Parameter *parameter) override
 
virtual void parameterRemovedCallback (Parameter *parameter) override
 
- Protected Member Functions inherited from agx::ParallelTask
virtual ~ParallelTask ()
 
void endCallback ()
 
- Protected Member Functions inherited from agx::Task
virtual ~Task ()
 
void connectToChild (Task *descendant)
 
void connectToParent (Task *ancestor)
 
void disconnectFromChild (Task *descendant)
 
void disconnectFromParent (Task *ancestor)
 
void dispatchBlocking (Thread *thread)
 
void enableCallback (agxData::Value *enable)
 
virtual Object * getResourceImpl (const Path &path, agx::Model *model) override
 
void init ()
 
virtual void parameterAddedCallback (Parameter *)
 
virtual void parameterRemovedCallback (Parameter *)
 
void prepareGlobalResultSorting (size_t numJobs)
 
void registerBufferReadersAndWriters ()
 
void setGroup (TaskGroup *group)
 
virtual void subtaskAddedCallback (Task *)
 
void unregisterBufferReadersAndWriters ()
 
void verifyParameters ()
 
- Protected Member Functions inherited from agx::Component
virtual ~Component ()
 
String expandAutoCompletionMatch (const String &query, const StringVector &matchingNames) const
 
void setDevice (Device *device)
 
- 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
 
- Static Protected Member Functions inherited from agx::Task
static void addConnection (Task *parent, Task *child)
 
static bool hasUnhandledException ()
 
static void removeConnection (Task *parent, Task *child)
 
static void signalUnhandledException ()
 
- 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.
 

Detailed Description

Definition at line 172 of file Kernel.h.

Member Typedef Documentation

◆ DataSetSizeCallback

typedef std::function<UInt ()> agx::LambdaKernel::DataSetSizeCallback

Definition at line 176 of file Kernel.h.

◆ LambdaCallback

typedef std::function<void (const RangeJob&)> agx::LambdaKernel::LambdaCallback

Definition at line 175 of file Kernel.h.

Constructor & Destructor Documentation

◆ LambdaKernel()

agx::LambdaKernel::LambdaKernel ( const agx::Name &  name,
LambdaCallback  lambdaCallback,
DataSetSizeCallback  sizeCallback 
)

Constructor.

Parameters
nameThe name of the kernel
lambdaCallbackThe parallel operator to be called asynchronously with the workblock ranges
sizeCallbackCallback that must return the size of the full dataset, which will be partitioned by the kernel during execution

Member Data Documentation

◆ m_rangeJobs

Vector<RangeJob> agx::LambdaKernel::m_rangeJobs
protected

Definition at line 194 of file Kernel.h.


The documentation for this class was generated from the following file: