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

#include <Workflow.h>

Public Member Functions

 Workflow ()
 Constructor.
 
WorkflowTaskaddTask (std::string, double flops, int min_num_cores=1, int max_num_cores=1, double parallel_efficiency=1.0, double memory_requirement=0.0)
 Create and add a new computational task to the workflow. 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...
 
WorkflowTaskgetWorkflowTaskByID (const std::string)
 Find a WorkflowTask object based on its ID. More...
 
WorkflowFileaddFile (const std::string, double)
 Add a new file to the workflow. More...
 
WorkflowFilegetFileById (const std::string id)
 Retrieve a file by its id. More...
 
WorkflowFilegetWorkflowFileByID (const std::string)
 Find a WorkflowFile object based on its ID. More...
 
void addControlDependency (WorkflowTask *, WorkflowTask *)
 Create a control dependency between two workflow tasks. Will not do anything if there is already a path between the two tasks. More...
 
void loadFromDAX (const std::string &filename, const std::string &reference_flop_rate)
 Create a workflow based on a DAX file. More...
 
void loadFromJSON (const std::string &filename, const std::string &reference_flop_rate)
 Create a workflow based on a JSON file. 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...
 
void exportToEPS (std::string)
 Output the workflow's dependency graph to EPS. More...
 
std::map< std::string,
WorkflowFile * > 
getInputFiles ()
 Update the state of a task, and propagate the change to other tasks if necessary. WARNING: This method doesn't do ANY CHECK about whether the state change makes sense. 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

void wrench::Workflow::addControlDependency ( WorkflowTask src,
WorkflowTask dst 
)

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
Exceptions
std::invalid_argument
WorkflowFile * wrench::Workflow::addFile ( const 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
WorkflowTask * wrench::Workflow::addTask ( std::string  id,
double  flops,
int  min_num_cores = 1,
int  max_num_cores = 1,
double  parallel_efficiency = 1.0,
double  memory_requirement = 0.0 
)

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 (0 means 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
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
WorkflowFile * wrench::Workflow::getFileById ( const std::string  id)

Retrieve a file by its id.

Parameters
idthe file id
Returns
the file, or nullptr if not found
std::map< std::string, WorkflowFile * > wrench::Workflow::getInputFiles ( )

Update the state of a task, and propagate the change to other tasks if necessary. WARNING: This method doesn't do ANY CHECK about whether the state change makes sense.

Parameters
taska workflow task
statethe new task state
Exceptions
std::invalid_argument
std::runtime_errorRetrieve 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
unsigned long wrench::Workflow::getNumberOfTasks ( )

Get the number of tasks in the workflow.

Returns
the number of tasks
unsigned long wrench::Workflow::getNumLevels ( )

Returns the number of levels in the workflow.

Returns
the number of levels
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
WorkflowFile * wrench::Workflow::getWorkflowFileByID ( const std::string  id)

Find a WorkflowFile object based on its ID.

Parameters
ida string id
Returns
the WorkflowFile instance, or nullptr if not found
Exceptions
std::invalid_argument
WorkflowTask * wrench::Workflow::getWorkflowTaskByID ( const std::string  id)

Find a WorkflowTask object based on its ID.

Parameters
ida string id
Returns
a workflow task
Exceptions
std::invalid_argument
void wrench::Workflow::loadFromDAX ( const std::string &  filename,
const std::string &  reference_flop_rate 
)

Create a workflow based on a DAX file.

Parameters
filenamethe path to the DAX file
reference_flop_ratethe compute speed (in flops/sec, assuming a task's computation is purely flops). The DAX file specified task execution times in seconds, but the WRENCH simulation needs some notion of "amount of computation" to apply reasonable scaling. (Because the XML platform description specifies host compute speeds in flops/sec).
Exceptions
std::invalid_argument
void wrench::Workflow::loadFromJSON ( const std::string &  filename,
const std::string &  reference_flop_rate 
)

Create a workflow based on a JSON file.

Parameters
filenamethe path to the JSON file
reference_flop_ratethe compute speed (in flops/sec, assuming a task's computation is purely flops). The JSON file specified task execution times in seconds, but the WRENCH simulation needs some notion of "amount of computation" to apply reasonable scaling. (Because the XML platform description specifies host compute speeds in flops/sec)
Exceptions
std::invalid_argument
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

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