Peano
Loading...
Searching...
No Matches
api.actionsets.LoadBalancing.LoadBalancing Class Reference

Inform the load balancing about the end of a grid sweep. More...

Inheritance diagram for api.actionsets.LoadBalancing.LoadBalancing:
Collaboration diagram for api.actionsets.LoadBalancing.LoadBalancing:

Public Member Functions

 __init__ (self, bool enable_load_balancing=False)
 
 get_constructor_body (self)
 Define a tailored constructor body.
 
 get_destructor_body (self)
 
 get_body_of_prepareTraversal (self)
 
 get_body_of_unprepareTraversal (self)
 
 get_body_of_operation (self, operation_name)
 Return actual C++ code snippets to be inserted into C++ code.
 
 get_action_set_name (self)
 Return unique action set name.
 
 user_should_modify_template (self)
 Is the user allowed to modify the output.
 
 get_attributes (self)
 Return attributes as copied and pasted into the generated class.
 
 get_includes (self)
 Return include statements that you need.
 
- Public Member Functions inherited from peano4.api.solversteps.ActionSet.ActionSet
 get_static_initialisations (self, full_qualified_classname)
 
 get_body_of_createGridControlEventsForNextTraversal (self)
 Return the grid control events that this action set wants to trigger.
 
 get_implementation_of_createGridControlEventsForNextTraversal (self)
 Return the C++ implementation of createGridControlEventsForNextTraversal()
 
 get_implementation_of_prepareTraversal (self)
 Return the C++ implementation of prepareTraversal()
 
 get_implementation_of_unprepareTraversal (self)
 Return the C++ implementation of unprepareTraversal()
 
 get_guard_of_operation (self, operation_name)
 Return the guard of an operation.
 
 get_implementation_of_operation (self, operation_name)
 Return the C++ implementation of an operation.
 
bool may_run_in_background_task (self)
 May a task graph compiler move touchCellFirstTime() into a task.
 

Data Fields

 enable_load_balancing
 
- Data Fields inherited from peano4.api.solversteps.ActionSet.ActionSet
 descend_invocation_order
 
 parallel
 

Additional Inherited Members

- Static Public Attributes inherited from peano4.api.solversteps.ActionSet.ActionSet
int descend_invocation_order = 0
 
bool parallel = False
 
str OPERATION_BEGIN_TRAVERSAL = "beginTraversal"
 
str OPERATION_END_TRAVERSAL = "endTraversal"
 
str OPERATION_CREATE_PERSISTENT_VERTEX = "createPersistentVertex"
 
str OPERATION_DESTROY_PERSISTENT_VERTEX = "destroyPersistentVertex"
 
str OPERATION_CREATE_HANGING_VERTEX = "createHangingVertex"
 
str OPERATION_DESTROY_HANGING_VERTEX = "destroyHangingVertex"
 
str OPERATION_CREATE_PERSISTENT_FACE = "createPersistentFace"
 
str OPERATION_DESTROY_PERSISTENT_FACE = "destroyPersistentFace"
 
str OPERATION_CREATE_HANGING_FACE = "createHangingFace"
 
str OPERATION_DESTROY_HANGING_FACE = "destroyHangingFace"
 
str OPERATION_CREATE_CELL = "createCell"
 
str OPERATION_DESTROY_CELL = "destroyCell"
 
str OPERATION_TOUCH_VERTEX_FIRST_TIME = "touchVertexFirstTime"
 
str OPERATION_TOUCH_VERTEX_LAST_TIME = "touchVertexLastTime"
 
str OPERATION_TOUCH_FACE_FIRST_TIME = "touchFaceFirstTime"
 
str OPERATION_TOUCH_FACE_LAST_TIME = "touchFaceLastTime"
 
str OPERATION_TOUCH_CELL_FIRST_TIME = "touchCellFirstTime"
 
str OPERATION_TOUCH_CELL_LAST_TIME = "touchCellLastTime"
 

Detailed Description

Inform the load balancing about the end of a grid sweep.

Add this action set to every solver step that should drive the load balancing. Its unprepareTraversal() calls finishStep() on the strategy that is currently installed in toolbox::loadbalancing::LoadBalancingService. As unprepareTraversal() is invoked once per traversal per rank (and not per tree), the strategy is informed exactly once after each grid sweep.

The action set does not install a strategy itself. Some other code, the main routine typically, hands one over via toolbox::loadbalancing::LoadBalancingService::setLoadBalancing(). If no strategy is installed, i.e. getLoadBalancing() returns nullptr, the action set does nothing.

If constructed with enable_load_balancing=True, the action set first switches the strategy on (enable(true)) and then calls finishStep(). The time stepping schemes use this variant in their last mesh sweep, as they switch the load balancing off throughout the time step (toolbox.loadbalancing.api.actionsets.ToggleLoadBalancing).

Definition at line 6 of file LoadBalancing.py.

Constructor & Destructor Documentation

◆ __init__()

api.actionsets.LoadBalancing.LoadBalancing.__init__ (   self,
bool   enable_load_balancing = False 
)
Parameters
enable_load_balancingbool Switch the load balancing on right before finishStep() is called.

Reimplemented from peano4.api.solversteps.ActionSet.ActionSet.

Definition at line 32 of file LoadBalancing.py.

References api.actionsets.LoadBalancing.LoadBalancing.__init__().

Referenced by api.actionsets.LoadBalancing.LoadBalancing.__init__().

Here is the call graph for this function:
Here is the caller graph for this function:

Member Function Documentation

◆ get_action_set_name()

api.actionsets.LoadBalancing.LoadBalancing.get_action_set_name (   self)

Return unique action set name.

Returns a description (word) for the mapping which is also used as class name for the generated type. As a consequence, the result should be one word (if possible) and uppercase. Also, every subclass should overwrite this routine.

The generator will take the result and construct eventually classes similar to MyStep2Dummy.h and MyStep2Dummy.cpp or similar for the example below, where we return Dummy.

Reimplemented from peano4.api.solversteps.ActionSet.ActionSet.

Definition at line 66 of file LoadBalancing.py.

◆ get_attributes()

api.actionsets.LoadBalancing.LoadBalancing.get_attributes (   self)

Return attributes as copied and pasted into the generated class.

Please note that action sets are not persistent, i.e. there is one object creation per grid sweep per tree.

Reimplemented from peano4.api.solversteps.ActionSet.ActionSet.

Definition at line 72 of file LoadBalancing.py.

◆ get_body_of_operation()

api.actionsets.LoadBalancing.LoadBalancing.get_body_of_operation (   self,
  operation_name 
)

Return actual C++ code snippets to be inserted into C++ code.

See class' string constants starting with OPERATION_ for possible values of operation_name. The snippet is executed if and only if the guard returned by get_guard_of_operation() holds, i.e. the body should not evaluate the guard itself. See the section "Guard and body" in the class documentation.

Reimplemented from peano4.api.solversteps.ActionSet.ActionSet.

Definition at line 63 of file LoadBalancing.py.

Referenced by peano4.api.solversteps.ActionSet.ActionSet.get_implementation_of_operation().

Here is the caller graph for this function:

◆ get_body_of_prepareTraversal()

api.actionsets.LoadBalancing.LoadBalancing.get_body_of_prepareTraversal (   self)

Reimplemented from peano4.api.solversteps.ActionSet.ActionSet.

Definition at line 48 of file LoadBalancing.py.

Referenced by peano4.api.solversteps.ActionSet.ActionSet.get_implementation_of_prepareTraversal().

Here is the caller graph for this function:

◆ get_body_of_unprepareTraversal()

api.actionsets.LoadBalancing.LoadBalancing.get_body_of_unprepareTraversal (   self)

◆ get_constructor_body()

api.actionsets.LoadBalancing.LoadBalancing.get_constructor_body (   self)

Define a tailored constructor body.

By default, the constructor of an action set is empty. If you you assign attributes to your action set, you however might want to initialise them here. We do not support initialisation lists, to all has to be done via setters unless you create attributes on the heap.

The constructor's signature will look similar to

   EnumerateAndInitSolution2petsc_actionsets_InitVertexDoFs0(int treeNumber);

where the treeNumber is -1 if this is the global instance of the action set owned by a rank, or a number greater or equal 0 if this action set is a clone of the glocal action set that's used by one tree traversal.

See also
get_attributes() to add attributes to your action set

Reimplemented from peano4.api.solversteps.ActionSet.ActionSet.

Definition at line 42 of file LoadBalancing.py.

◆ get_destructor_body()

api.actionsets.LoadBalancing.LoadBalancing.get_destructor_body (   self)

Reimplemented from peano4.api.solversteps.ActionSet.ActionSet.

Definition at line 45 of file LoadBalancing.py.

◆ get_includes()

api.actionsets.LoadBalancing.LoadBalancing.get_includes (   self)

Return include statements that you need.

All of these includes will eventually end up in the header of the generated C++ code.

Reimplemented from peano4.api.solversteps.ActionSet.ActionSet.

Definition at line 75 of file LoadBalancing.py.

◆ user_should_modify_template()

api.actionsets.LoadBalancing.LoadBalancing.user_should_modify_template (   self)

Is the user allowed to modify the output.

Return whether you expect the user to modify the generated code. If this is the case, then the API places the generated output in the directory actions. Otherwise, it goes into the observer directory and will be overwritten in each and every Python run.

Reimplemented from peano4.api.solversteps.ActionSet.ActionSet.

Definition at line 69 of file LoadBalancing.py.

Field Documentation

◆ enable_load_balancing

api.actionsets.LoadBalancing.LoadBalancing.enable_load_balancing

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