Evaluate on demand strategy for remote deferred evaluation
Local evaluation is on demand, i.e. evaluation starts only if an object's value is needed by another object. The evaluation is triggered from print()
statements.
Remote evaluation can be turned either on or off. If it is turned on, all workflow nodes are executed no matter if their outputs have been requested by print()
statements.
The on-demand strategy for remote evaluation has to be explicitely implemented by a special executor that launches workflow nodes according to their dependencies.
Implementation
We can try to use the WFEngine
class from the VRE Middlware package. For that we have to set the default worker type: interactive
, batch
, or remote
. Then, the evaluation strategy should be implemented in that package -> feature request issue.
As input for that type of evaluation we need a list of targets to evaluate (similar to a makefile). These and their dependencies will be then evaluated by the launcher thread. The list should be shared between the session and the launcher thread and can be updated asynchronously in the session manager.