A workflow (to be executed by a WMS) More...

#include <Workflow.h>

Public Member Functions

 Workflow ()
 Constructor.
 
void addControlDependency (WorkflowTask *src, WorkflowTask *dest, bool redundant_dependencies=false)
 Create a control dependency between two workflow tasks. Will not do anything if there is already a path between the two tasks. More...
 
WorkflowFileaddFile (std::string, double)
 Add a new file to the workflow. More...
 
WorkflowTaskaddTask (std::string, double flops, unsigned long min_num_cores, unsigned long max_num_cores, double parallel_efficiency, double memory_requirement)
 Create and add a new computational task to the workflow. More...
 
void exportToEPS (std::string)
 Output the workflow's dependency graph to EPS. More...
 
std::string getCallbackMailbox ()
 Get the mailbox name associated to this workflow. More...
 
double getCompletionDate ()
 Returns the workflow's completion date. More...
 
std::map< std::string, WorkflowTask * > getEntryTasks () const
 Get the exit tasks of the workflow, i.e., those tasks that don't have parents. More...
 
std::map< std::string, WorkflowTask * > getExitTasks () const
 Get the exit tasks of the workflow, i.e., those tasks that don't have children. More...
 
WorkflowFilegetFileByID (const std::string &id)
 Find a WorkflowFile based on its ID. More...
 
std::vector< WorkflowFile * > getFiles ()
 Get the list of all files in the workflow. More...
 
std::map< std::string, WorkflowFile * > getInputFiles ()
 Retrieve a map (indexed by file id) of input files for a workflow (i.e., those files that are input to some tasks but output from none) More...
 
unsigned long getNumberOfTasks ()
 Get the number of tasks in the workflow. More...
 
unsigned long getNumLevels ()
 Returns the number of levels in the workflow. More...
 
std::map< std::string, std::vector< WorkflowTask * > > getReadyClusters ()
 Get a map of clusters composed of ready tasks. More...
 
std::vector< WorkflowTask * > getReadyTasks ()
 Get a vector of ready tasks. More...
 
WorkflowTaskgetTaskByID (const std::string &id)
 Find a WorkflowTask based on its ID. More...
 
std::vector< WorkflowTask * > getTaskChildren (const WorkflowTask *task)
 Get the list of children for a task. More...
 
std::vector< WorkflowTask * > getTaskParents (const WorkflowTask *task)
 Get the list of parents for a task. More...
 
std::vector< WorkflowTask * > getTasks ()
 Get the list of all tasks in the workflow. More...
 
std::vector< WorkflowTask * > getTasksInTopLevelRange (unsigned long min, unsigned long max)
 Returns all tasks with top-levels in a range. More...
 
bool isDone ()
 Returns whether all tasks are complete. More...
 
void removeFile (WorkflowFile *file)
 Remove a file from the workflow. WARNING: this method de-allocated memory for the file, making any pointer to the file invalid. More...
 
void removeTask (WorkflowTask *task)
 Remove a task from the workflow. WARNING: this method de-allocated memory for the task, making any pointer to the task invalid. More...
 
std::shared_ptr< WorkflowExecutionEventwaitForNextExecutionEvent ()
 Wait for the next worklow execution event. More...
 
std::shared_ptr< WorkflowExecutionEventwaitForNextExecutionEvent (double timeout)
 Wait for the next worklow execution event. More...
 

Static Public Member Functions

static double getSumFlops (std::vector< WorkflowTask *> tasks)
 Get the total number of flops for a list of tasks. More...
 

Detailed Description

A workflow (to be executed by a WMS)

Member Function Documentation

◆ addControlDependency()

void wrench::Workflow::addControlDependency ( WorkflowTask src,
WorkflowTask dst,
bool  redundant_dependencies = false 
)

Create a control dependency between two workflow tasks. Will not do anything if there is already a path between the two tasks.

Parameters
srcthe parent task
dstthe child task
redundant_dependencieswhether DAG redundant dependencies should be kept in the graph
Exceptions
std::invalid_argument

◆ addFile()

WorkflowFile * wrench::Workflow::addFile ( std::string  id,
double  size 
)

Add a new file to the workflow.

Parameters
ida unique string id
sizea file size in bytes
Returns
the WorkflowFile instance
Exceptions
std::invalid_argument

◆ addTask()

WorkflowTask * wrench::Workflow::addTask ( std::string  id,
double  flops,
unsigned long  min_num_cores,
unsigned long  max_num_cores,
double  parallel_efficiency,
double  memory_requirement 
)

Create and add a new computational task to the workflow.

Parameters
ida unique string id
flopsnumber of flops
min_num_coresthe minimum number of cores required to run the task
max_num_coresthe maximum number of cores that can be used by the task (use INT_MAX for infinity)
parallel_efficiencythe multi-core parallel efficiency (number between 0.0 and 1.0)
memory_requirementmemory requirement (in bytes)
Returns
the WorkflowTask instance
Exceptions
std::invalid_argument

◆ exportToEPS()

void wrench::Workflow::exportToEPS ( std::string  eps_filename)

Output the workflow's dependency graph to EPS.

Parameters
eps_filenamea filename to which the EPS content is saved

◆ getCallbackMailbox()

std::string wrench::Workflow::getCallbackMailbox ( )

Get the mailbox name associated to this workflow.

Returns
the mailbox name

◆ getCompletionDate()

double wrench::Workflow::getCompletionDate ( )

Returns the workflow's completion date.

Returns
a date in seconds (or a negative value If the workflow has not completed)

◆ getEntryTasks()

std::map< std::string, WorkflowTask * > wrench::Workflow::getEntryTasks ( ) const

Get the exit tasks of the workflow, i.e., those tasks that don't have parents.

Returns
A map of tasks indexed by their IDs

◆ getExitTasks()

std::map< std::string, WorkflowTask * > wrench::Workflow::getExitTasks ( ) const

Get the exit tasks of the workflow, i.e., those tasks that don't have children.

Returns
A map of tasks indexed by their IDs

◆ getFileByID()

WorkflowFile * wrench::Workflow::getFileByID ( const std::string &  id)

Find a WorkflowFile based on its ID.

Parameters
ida string id
Returns
the WorkflowFile instance (or throws a std::invalid_argument if not found)
Exceptions
std::invalid_argument

◆ getFiles()

std::vector< WorkflowFile * > wrench::Workflow::getFiles ( )

Get the list of all files in the workflow.

Returns
a vector of files

◆ getInputFiles()

std::map< std::string, WorkflowFile * > wrench::Workflow::getInputFiles ( )

Retrieve a map (indexed by file id) of input files for a workflow (i.e., those files that are input to some tasks but output from none)

Returns
a std::map of files

◆ getNumberOfTasks()

unsigned long wrench::Workflow::getNumberOfTasks ( )

Get the number of tasks in the workflow.

Returns
the number of tasks

◆ getNumLevels()

unsigned long wrench::Workflow::getNumLevels ( )

Returns the number of levels in the workflow.

Returns
the number of levels

◆ getReadyClusters()

std::map< std::string, std::vector< WorkflowTask * > > wrench::Workflow::getReadyClusters ( )

Get a map of clusters composed of ready tasks.

Returns
map of workflow cluster tasks

◆ getReadyTasks()

std::vector< WorkflowTask * > wrench::Workflow::getReadyTasks ( )

Get a vector of ready tasks.

Returns
a vector of tasks

◆ getSumFlops()

double wrench::Workflow::getSumFlops ( std::vector< WorkflowTask *>  tasks)
static

Get the total number of flops for a list of tasks.

Parameters
taskslist of tasks
Returns
the total number of flops

◆ getTaskByID()

WorkflowTask * wrench::Workflow::getTaskByID ( const std::string &  id)

Find a WorkflowTask based on its ID.

Parameters
ida string id
Returns
a workflow task (or throws a std::invalid_argument if not found)
Exceptions
std::invalid_argument

◆ getTaskChildren()

std::vector< WorkflowTask * > wrench::Workflow::getTaskChildren ( const WorkflowTask task)

Get the list of children for a task.

Parameters
taska workflow task
Returns
a vector of tasks

◆ getTaskParents()

std::vector< WorkflowTask * > wrench::Workflow::getTaskParents ( const WorkflowTask task)

Get the list of parents for a task.

Parameters
taska workflow task
Returns
a vector of tasks

◆ getTasks()

std::vector< WorkflowTask * > wrench::Workflow::getTasks ( )

Get the list of all tasks in the workflow.

Returns
a vector of tasks

◆ getTasksInTopLevelRange()

std::vector< WorkflowTask * > wrench::Workflow::getTasksInTopLevelRange ( unsigned long  min,
unsigned long  max 
)

Returns all tasks with top-levels in a range.

Parameters
minthe low end of the range (inclusive)
maxthe high end of the range (inclusive)
Returns
a vector of tasks

◆ isDone()

bool wrench::Workflow::isDone ( )

Returns whether all tasks are complete.

Returns
true or false

◆ removeFile()

void wrench::Workflow::removeFile ( WorkflowFile file)

Remove a file from the workflow. WARNING: this method de-allocated memory for the file, making any pointer to the file invalid.

Parameters
filea file
Exceptions
std::invalid_argument

◆ removeTask()

void wrench::Workflow::removeTask ( WorkflowTask task)

Remove a task from the workflow. WARNING: this method de-allocated memory for the task, making any pointer to the task invalid.

Parameters
taska task
Exceptions
std::invalid_argument

◆ waitForNextExecutionEvent() [1/2]

std::shared_ptr< WorkflowExecutionEvent > wrench::Workflow::waitForNextExecutionEvent ( )

Wait for the next worklow execution event.

Returns
a workflow execution event

◆ waitForNextExecutionEvent() [2/2]

std::shared_ptr< WorkflowExecutionEvent > wrench::Workflow::waitForNextExecutionEvent ( double  timeout)

Wait for the next worklow execution event.

Parameters
timeouta timeout value in seconds
Returns
a workflow execution event, or nullptr if a timeout occurred

The documentation for this class was generated from the following files:
  • /home/wrench/wrench/include/wrench/workflow/Workflow.h
  • /home/wrench/wrench/src/wrench/workflow/Workflow.cpp