MADNESS 0.10.1
Public Types | Public Member Functions | List of all members
OwnedTask Class Reference

a task that names an owner for every batch More...

Inheritance diagram for OwnedTask:
Inheritance graph
[legend]
Collaboration diagram for OwnedTask:
Collaboration graph
[legend]

Public Types

typedef std::tuple< const std::vector< real_function_3d > & > argtupleT
 
using resultT = std::vector< real_function_3d >
 

Public Member Functions

resultT allocator (World &world, const argtupleT &argtuple) const
 
resultT operator() (const std::vector< real_function_3d > &v) const
 deliberately cheap: this exercises the scheduling path, not the arithmetic
 
long owner_hint (const Batch &batch, const long nsubworld) const override
 which subworld should run this batch; -1 leaves the choice to the queue
 
- Public Member Functions inherited from madness::MacroTaskOperationBase
 MacroTaskOperationBase ()
 
virtual ~MacroTaskOperationBase ()
 
virtual bool accumulates_own_output () const
 
virtual void cleanup ()
 release whatever the task kept across its batches, called once the queue has run
 
virtual bool handles_own_data_movement () const
 true if the task moves its operand coefficients into the subworld itself
 

Additional Inherited Members

- Public Attributes inherited from madness::MacroTaskOperationBase
Batch batch
 
Cloudcloud_ptr =0
 
std::string name ="unknown_task"
 
std::shared_ptr< MacroTaskPartitionerpartitioner =0
 
Worldsubworld_ptr =0
 

Detailed Description

a task that names an owner for every batch

With every task owned and one subworld per rank the queue skips its central scheduler and each rank walks the queue running only the tasks it owns. Nothing else here declares owner_hint, so without this task that path is never executed.

Member Typedef Documentation

◆ argtupleT

typedef std::tuple<const std::vector<real_function_3d> &> OwnedTask::argtupleT

◆ resultT

Member Function Documentation

◆ allocator()

resultT OwnedTask::allocator ( World world,
const argtupleT argtuple 
) const
inline

◆ operator()()

resultT OwnedTask::operator() ( const std::vector< real_function_3d > &  v) const
inline

deliberately cheap: this exercises the scheduling path, not the arithmetic

References v.

◆ owner_hint()

long OwnedTask::owner_hint ( const Batch ,
const long   
) const
inlineoverridevirtual

which subworld should run this batch; -1 leaves the choice to the queue

Reads whatever assignment prepare_owner_assignment computed, so the two go together: one decides the mapping for the whole partition, this one applies it per batch.

Reimplemented from madness::MacroTaskOperationBase.

References madness::MacroTaskOperationBase::batch, madness::Batch::input, and madness::nonlinear_vector_solver().


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