|
AGX Dynamics 2.42.3.0
|
Utility entrance to the task system, simplifying parallelization of algorithms. More...
#include <IndexLambdaKernel.h>
Inheritance diagram for agx::IndexLambdaKernel:Public Types | |
| using | IndexCallback = std::function< void(agx::UInt)> |
| Default callback signature with current index. | |
Public Types inherited from agx::LambdaKernel | |
| 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 | |
| IndexLambdaKernel () | |
| Default Constructor. | |
| template<typename CallbackT , typename... Args> | |
| void | execute (const agx::Name &name, agx::UInt numElements, CallbackT callback, Args &&... args) |
Execute callback given name, numElements and args (additional arguments to callback). | |
| void | execute (IndexCallback callback, const agx::Name &name, agx::UInt numElements, agx::UInt jobSize=agx::InvalidIndex) |
Execute callback given name and numElements. | |
| template<typename CallbackT , typename... Args> | |
| void | executeEx (const agx::Name &name, agx::UInt numElements, agx::UInt jobSize, CallbackT callback, Args &&... args) |
Execute callback given name, numElements and args (additional arguments to callback). | |
Public Member Functions inherited from agx::LambdaKernel | |
| 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. | |
Static Public Member Functions | |
| template<typename CallbackT , typename... Args> | |
| static IndexCallback | generate (CallbackT callback, Args &&... args) |
| Generates IndexCallback given function and arguments. | |
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 ¶meterList, bool allowFormatPromotions, Device *device=CpuDevice::instance()) |
| static Task * | load (const Path &path, const Name &implementation, const agx::ParameterBindingVector ¶meterList, 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) |
Protected Member Functions | |
| virtual | ~IndexLambdaKernel () |
| Reference counted object - protected destructor. | |
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 |
Additional Inherited Members | |
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 |
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. | |
Protected Attributes inherited from agx::LambdaKernel | |
| 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 |
Utility entrance to the task system, simplifying parallelization of algorithms.
Example: void collectConstraintForces( agxSDK::Simulation* simulation ) { struct ConstraintForceData { agx::Bool valid; agx::Vec3 force[2]; agx::Vec3 torque[2]; }; using ConstraintForceDataVector = agx::VectorPOD<ConstraintForceData>;
const agx::ConstraintRefSetVector& constraints = simulation->getConstraints(); ConstraintForceData dataVector; dataVector.resize( constraints.size() );
auto kernel = simulation->getDynamicsSystem()->getIndexLambdaKernel(); kernel->execute( "Fetch constraint forces", constraints.size(), // Number of elements. []( agx::UInt index, const agx::ConstraintRefSetVector& constraints, ConstraintForceData& dataVector ) { auto& data = dataVector[ index ]; const auto constraint = constraints[ index ]; data.valid = constraint->getLastForce( 0, data.force[ 0 ], data.torque[ 0 ] ); data.valid = data.valid && constraint->getLastForce( 1, data.force[ 1 ], data.torque[ 1 ] ); }, std::cref( constraints ), // second function argument (first is always the current index) std::ref( dataVector ) ); // third function argument }
Definition at line 58 of file IndexLambdaKernel.h.
| using agx::IndexLambdaKernel::IndexCallback = std::function<void( agx::UInt )> |
Default callback signature with current index.
Additional arguments are binded after the index.
Definition at line 65 of file IndexLambdaKernel.h.
| agx::IndexLambdaKernel::IndexLambdaKernel | ( | ) |
Default Constructor.
|
protectedvirtual |
Reference counted object - protected destructor.
| void agx::IndexLambdaKernel::execute | ( | const agx::Name & | name, |
| agx::UInt | numElements, | ||
| CallbackT | callback, | ||
| Args &&... | args | ||
| ) |
Execute callback given name, numElements and args (additional arguments to callback).
| name | - name of the kernel |
| numElements | - total number of elements |
| callback | - callback to execute |
| args | - additional arguments to callback |
Definition at line 176 of file IndexLambdaKernel.h.
References executeEx(), and agx::InvalidIndex.
| void agx::IndexLambdaKernel::execute | ( | IndexCallback | callback, |
| const agx::Name & | name, | ||
| agx::UInt | numElements, | ||
| agx::UInt | jobSize = agx::InvalidIndex |
||
| ) |
Execute callback given name and numElements.
| callback | - index callback to execute |
| name | - name of the kernel |
| numElements | - total number of elements |
| jobSize | - number of items per job (default settings if jobSize == agx::InvalidIndex) |
| void agx::IndexLambdaKernel::executeEx | ( | const agx::Name & | name, |
| agx::UInt | numElements, | ||
| agx::UInt | jobSize, | ||
| CallbackT | callback, | ||
| Args &&... | args | ||
| ) |
Execute callback given name, numElements and args (additional arguments to callback).
| name | - name of the kernel |
| numElements | - total number of elements |
| callback | - callback to execute |
| args | - additional arguments to callback |
| jobSize | - number of items per job |
Definition at line 182 of file IndexLambdaKernel.h.
References agx::Task::execute(), and generate().
Referenced by execute().
|
static |
Generates IndexCallback given function and arguments.
Note that the callback must have UInt index as first arugment and args are added after.
| callback | - callback function |
| args | - additional arguments |
Definition at line 169 of file IndexLambdaKernel.h.
Referenced by executeEx().