WRENCH
1.11
Cyberinfrastructure Simulation Workbench
|
Overview | Installation | Getting Started | WRENCH 101 | WRENCH 102 |
A workflow (to be executed by a WMS) More...
#include <Workflow.h>
Public Member Functions | |
void | addControlDependency (std::shared_ptr< WorkflowTask >src, std::shared_ptr< 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... | |
std::shared_ptr< DataFile > | addFile (std::string id, double size) |
Add a file to the workflow. More... | |
std::shared_ptr< WorkflowTask > | addTask (std::string, double flops, unsigned long min_num_cores, unsigned long max_num_cores, double memory_requirement) |
Create and add a new computational task to the workflow. More... | |
void | clear () |
Method that will delete all workflow tasks and all files used by these tasks. | |
void | exportToEPS (std::string) |
Output the workflow's dependency graph to EPS. More... | |
double | getCompletionDate () |
Returns the workflow's completion date. More... | |
std::map< std::string, std::shared_ptr< WorkflowTask > > | getEntryTaskMap () const |
Get the list of exit tasks of the workflow, i.e., those tasks that don't have parents. More... | |
std::vector< std::shared_ptr< WorkflowTask > > | getEntryTasks () const |
Get the list of exit tasks of the workflow, i.e., those tasks that don't have parents. More... | |
std::map< std::string, std::shared_ptr< WorkflowTask > > | getExitTaskMap () const |
Get the exit tasks of the workflow, i.e., those tasks that don't have children. More... | |
std::vector< std::shared_ptr< WorkflowTask > > | getExitTasks () const |
Get the exit tasks of the workflow, i.e., those tasks that don't have children. More... | |
std::shared_ptr< DataFile > | getFileByID (const std::string &id) |
Get a file based on its ID. More... | |
std::map< std::string, std::shared_ptr< DataFile > > & | getFileMap () |
Get the list of all files in the workflow/simulation. More... | |
std::map< std::string, std::shared_ptr< DataFile > > | getInputFileMap () const |
Retrieve the list of the input files of the workflow (i.e., those files that are input to some tasks but output from none) More... | |
std::vector< std::shared_ptr< DataFile > > | getInputFiles () const |
Retrieve the list of the input files of the 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::shared_ptr< DataFile > > | getOutputFileMap () const |
Retrieve a list of the output files of the workflow (i.e., those files that are output from some tasks but input to none) More... | |
std::vector< std::shared_ptr< DataFile > > | getOutputFiles () const |
Retrieve a list of the output files of the workflow (i.e., those files that are output from some tasks but input to none) More... | |
std::map< std::string, std::vector< std::shared_ptr< WorkflowTask > > > | getReadyClusters () |
Get a map of clusters composed of ready tasks. More... | |
std::vector< std::shared_ptr< WorkflowTask > > | getReadyTasks () |
Get a vector of ready tasks. More... | |
std::shared_ptr< Workflow > | getSharedPtr () |
Get the shared pointer for this object. More... | |
std::shared_ptr< WorkflowTask > | getTaskByID (const std::string &id) |
Find a WorkflowTask based on its ID. More... | |
std::vector< std::shared_ptr< WorkflowTask > > | getTaskChildren (const std::shared_ptr< WorkflowTask >task) |
Get the list of children for a task. More... | |
std::map< std::string, std::shared_ptr< WorkflowTask > > | getTaskMap () |
Get the list of all tasks in the workflow. More... | |
long | getTaskNumberOfChildren (const std::shared_ptr< WorkflowTask >task) |
Get the number of children for a task. More... | |
long | getTaskNumberOfParents (const std::shared_ptr< WorkflowTask >task) |
Get the number of parents for a task. More... | |
std::vector< std::shared_ptr< WorkflowTask > > | getTaskParents (const std::shared_ptr< WorkflowTask >task) |
Get the list of parents for a task. More... | |
std::vector< std::shared_ptr< WorkflowTask > > | getTasks () |
Get the list of all tasks in the workflow. More... | |
std::vector< std::shared_ptr< WorkflowTask > > | getTasksInTopLevelRange (unsigned long min, unsigned long max) |
Returns all tasks with top-levels in a range. More... | |
std::set< std::shared_ptr< WorkflowTask > > | getTasksThatInput (std::shared_ptr< DataFile > file) |
Find which tasks use a file as input. More... | |
std::shared_ptr< WorkflowTask > | getTaskThatOutputs (std::shared_ptr< DataFile > file) |
Get the workflow task for which a file is an output. More... | |
bool | isDone () |
Returns whether all tasks are complete. More... | |
bool | isFileOutputOfSomeTask (std::shared_ptr< DataFile > file) |
Determine whether a file is output of some task. More... | |
bool | pathExists (const std::shared_ptr< WorkflowTask >src, const std::shared_ptr< WorkflowTask >dst) |
Determine whether one source is an ancestor of a destination task. More... | |
void | removeControlDependency (std::shared_ptr< WorkflowTask >src, std::shared_ptr< WorkflowTask >dest) |
Remove a control dependency between tasks (does nothing if none) More... | |
void | removeFile (std::shared_ptr< DataFile >file) |
Remove a file from the workflow. More... | |
void | removeTask (std::shared_ptr< WorkflowTask >task) |
Remove a task from the workflow. More... | |
Static Public Member Functions | |
static std::shared_ptr< Workflow > | createWorkflow () |
Create a workflow instance. More... | |
static double | getSumFlops (const std::vector< std::shared_ptr< WorkflowTask >> tasks) |
Get the total number of flops for a list of tasks. More... | |
A workflow (to be executed by a WMS)
void wrench::Workflow::addControlDependency | ( | std::shared_ptr< WorkflowTask > | src, |
std::shared_ptr< 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.
src | the parent task |
dst | the child task |
redundant_dependencies | whether DAG redundant dependencies should be kept in the graph |
std::invalid_argument |
std::shared_ptr< DataFile > wrench::Workflow::addFile | ( | std::string | id, |
double | size | ||
) |
Add a file to the workflow.
id | : file name |
size | : file size in bytes |
std::shared_ptr< WorkflowTask > wrench::Workflow::addTask | ( | std::string | id, |
double | flops, | ||
unsigned long | min_num_cores, | ||
unsigned long | max_num_cores, | ||
double | memory_requirement | ||
) |
Create and add a new computational task to the workflow.
id | a unique string id |
flops | number of flops |
min_num_cores | the minimum number of cores required to run the task |
max_num_cores | the maximum number of cores that can be used by the task (use INT_MAX for infinity) |
memory_requirement | memory_manager_service requirement (in bytes) |
std::invalid_argument |
|
static |
Create a workflow instance.
void wrench::Workflow::exportToEPS | ( | std::string | eps_filename | ) |
Output the workflow's dependency graph to EPS.
eps_filename | a filename to which the EPS content is saved |
double wrench::Workflow::getCompletionDate | ( | ) |
Returns the workflow's completion date.
std::map< std::string, std::shared_ptr< WorkflowTask > > wrench::Workflow::getEntryTaskMap | ( | ) | const |
Get the list of exit tasks of the workflow, i.e., those tasks that don't have parents.
std::vector< std::shared_ptr< WorkflowTask > > wrench::Workflow::getEntryTasks | ( | ) | const |
Get the list of exit tasks of the workflow, i.e., those tasks that don't have parents.
std::map< std::string, std::shared_ptr< WorkflowTask > > wrench::Workflow::getExitTaskMap | ( | ) | const |
Get the exit tasks of the workflow, i.e., those tasks that don't have children.
std::vector< std::shared_ptr< WorkflowTask > > wrench::Workflow::getExitTasks | ( | ) | const |
Get the exit tasks of the workflow, i.e., those tasks that don't have children.
std::shared_ptr< DataFile > wrench::Workflow::getFileByID | ( | const std::string & | id | ) |
Get a file based on its ID.
id | : file ID |
std::map< std::string, std::shared_ptr< DataFile > > & wrench::Workflow::getFileMap | ( | ) |
Get the list of all files in the workflow/simulation.
std::map< std::string, std::shared_ptr< DataFile > > wrench::Workflow::getInputFileMap | ( | ) | const |
Retrieve the list of the input files of the workflow (i.e., those files that are input to some tasks but output from none)
std::vector< std::shared_ptr< DataFile > > wrench::Workflow::getInputFiles | ( | ) | const |
Retrieve the list of the input files of the workflow (i.e., those files that are input to some tasks but output from none)
unsigned long wrench::Workflow::getNumberOfTasks | ( | ) |
Get the number of tasks in the workflow.
unsigned long wrench::Workflow::getNumLevels | ( | ) |
Returns the number of levels in the workflow.
std::map< std::string, std::shared_ptr< DataFile > > wrench::Workflow::getOutputFileMap | ( | ) | const |
Retrieve a list of the output files of the workflow (i.e., those files that are output from some tasks but input to none)
std::vector< std::shared_ptr< DataFile > > wrench::Workflow::getOutputFiles | ( | ) | const |
Retrieve a list of the output files of the workflow (i.e., those files that are output from some tasks but input to none)
std::map< std::string, std::vector< std::shared_ptr< WorkflowTask > > > wrench::Workflow::getReadyClusters | ( | ) |
Get a map of clusters composed of ready tasks.
std::vector< std::shared_ptr< WorkflowTask > > wrench::Workflow::getReadyTasks | ( | ) |
Get a vector of ready tasks.
|
inline |
Get the shared pointer for this object.
|
static |
Get the total number of flops for a list of tasks.
tasks | a vector of tasks |
std::shared_ptr< WorkflowTask > wrench::Workflow::getTaskByID | ( | const std::string & | id | ) |
Find a WorkflowTask based on its ID.
id | a string id |
std::invalid_argument |
std::vector< std::shared_ptr< WorkflowTask > > wrench::Workflow::getTaskChildren | ( | const std::shared_ptr< WorkflowTask > | task | ) |
Get the list of children for a task.
task | a workflow task |
std::map< std::string, std::shared_ptr< WorkflowTask > > wrench::Workflow::getTaskMap | ( | ) |
Get the list of all tasks in the workflow.
long wrench::Workflow::getTaskNumberOfChildren | ( | const std::shared_ptr< WorkflowTask > | task | ) |
Get the number of children for a task.
task | a workflow task |
long wrench::Workflow::getTaskNumberOfParents | ( | const std::shared_ptr< WorkflowTask > | task | ) |
Get the number of parents for a task.
task | a workflow task |
std::vector< std::shared_ptr< WorkflowTask > > wrench::Workflow::getTaskParents | ( | const std::shared_ptr< WorkflowTask > | task | ) |
Get the list of parents for a task.
task | a workflow task |
std::vector< std::shared_ptr< WorkflowTask > > wrench::Workflow::getTasks | ( | ) |
Get the list of all tasks in the workflow.
std::vector< std::shared_ptr< WorkflowTask > > wrench::Workflow::getTasksInTopLevelRange | ( | unsigned long | min, |
unsigned long | max | ||
) |
Returns all tasks with top-levels in a range.
min | the low end of the range (inclusive) |
max | the high end of the range (inclusive) |
std::set< std::shared_ptr< WorkflowTask > > wrench::Workflow::getTasksThatInput | ( | std::shared_ptr< DataFile > | file | ) |
Find which tasks use a file as input.
file | : a file |
std::shared_ptr< WorkflowTask > wrench::Workflow::getTaskThatOutputs | ( | std::shared_ptr< DataFile > | file | ) |
Get the workflow task for which a file is an output.
file | a file |
bool wrench::Workflow::isDone | ( | ) |
Returns whether all tasks are complete.
bool wrench::Workflow::isFileOutputOfSomeTask | ( | std::shared_ptr< DataFile > | file | ) |
Determine whether a file is output of some task.
file | a file |
bool wrench::Workflow::pathExists | ( | const std::shared_ptr< WorkflowTask > | src, |
const std::shared_ptr< WorkflowTask > | dst | ||
) |
Determine whether one source is an ancestor of a destination task.
src | the source task |
dst | the destination task |
void wrench::Workflow::removeControlDependency | ( | std::shared_ptr< WorkflowTask > | src, |
std::shared_ptr< WorkflowTask > | dst | ||
) |
Remove a control dependency between tasks (does nothing if none)
src | the source task |
dst | the destination task |
void wrench::Workflow::removeFile | ( | std::shared_ptr< DataFile > | file | ) |
Remove a file from the workflow.
file | a file |
std::invalid_argument |
void wrench::Workflow::removeTask | ( | std::shared_ptr< WorkflowTask > | task | ) |
Remove a task from the workflow.
task | a task |
std::invalid_argument |