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... | |
WorkflowFile * | addFile (std::string, double) |
Add a new file to the workflow. More... | |
WorkflowTask * | addTask (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 * > | getEntryTaskMap () const |
Get the list of exit tasks of the workflow, i.e., those tasks that don't have parents. More... | |
std::vector< 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, WorkflowTask * > | getExitTaskMap () const |
Get the exit tasks of the workflow, i.e., those tasks that don't have children. More... | |
std::vector< WorkflowTask * > | getExitTasks () const |
Get the exit tasks of the workflow, i.e., those tasks that don't have children. More... | |
WorkflowFile * | getFileByID (const std::string &id) |
Find a WorkflowFile based on its ID. More... | |
std::map< std::string, WorkflowFile * > | getFileMap () const |
Get the list of all files in the workflow. More... | |
std::vector< WorkflowFile * > | getFiles () const |
Get the list of all files in the workflow. More... | |
std::map< std::string, WorkflowFile * > | 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< WorkflowFile * > | 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, WorkflowFile * > | 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< WorkflowFile * > | 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< WorkflowTask * > > | getReadyClusters () |
Get a map of clusters composed of ready tasks. More... | |
std::vector< WorkflowTask * > | getReadyTasks () |
Get a vector of ready tasks. More... | |
WorkflowTask * | getTaskByID (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::map< std::string, WorkflowTask * > | getTaskMap () |
Get the list of all tasks in the workflow. More... | |
long | getTaskNumberOfChildren (const WorkflowTask *task) |
Get the number of children for a task. More... | |
long | getTaskNumberOfParents (const WorkflowTask *task) |
Get the number of parents 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... | |
bool | pathExists (const WorkflowTask *src, const WorkflowTask *dst) |
Determine whether one source is an ancestor of a destination task. More... | |
void | removeControlDependency (WorkflowTask *src, WorkflowTask *dest) |
Remove a control dependency between tasks (does nothing if none) 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< WorkflowExecutionEvent > | waitForNextExecutionEvent () |
Wait for the next workflow execution event. More... | |
std::shared_ptr< WorkflowExecutionEvent > | waitForNextExecutionEvent (double timeout) |
Wait for the next worklow execution event. More... | |
Static Public Member Functions | |
static double | getSumFlops (const 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
-
src the parent task dst the child task redundant_dependencies whether 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
-
id a unique string id size a 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
-
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) parallel_efficiency the multi-core parallel efficiency (number between 0.0 and 1.0) memory_requirement memory 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_filename a 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)
◆ getEntryTaskMap()
std::map< std::string, WorkflowTask * > wrench::Workflow::getEntryTaskMap | ( | ) | const |
Get the list of exit tasks of the workflow, i.e., those tasks that don't have parents.
- Returns
- A map of tasks indexed by their IDs
◆ getEntryTasks()
std::vector< WorkflowTask * > wrench::Workflow::getEntryTasks | ( | ) | const |
Get the list of exit tasks of the workflow, i.e., those tasks that don't have parents.
- Returns
- A vector of tasks
◆ getExitTaskMap()
std::map< std::string, WorkflowTask * > wrench::Workflow::getExitTaskMap | ( | ) | 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
◆ getExitTasks()
std::vector< WorkflowTask * > wrench::Workflow::getExitTasks | ( | ) | const |
Get the exit tasks of the workflow, i.e., those tasks that don't have children.
- Returns
- A vector of tasks
◆ getFileByID()
WorkflowFile * wrench::Workflow::getFileByID | ( | const std::string & | id | ) |
Find a WorkflowFile based on its ID.
- Parameters
-
id a string id
- Returns
- the WorkflowFile instance (or throws a std::invalid_argument if not found)
- Exceptions
-
std::invalid_argument
◆ getFileMap()
std::map< std::string, WorkflowFile * > wrench::Workflow::getFileMap | ( | ) | const |
Get the list of all files in the workflow.
- Returns
- a map of files, indexed by file ID
◆ getFiles()
std::vector< WorkflowFile * > wrench::Workflow::getFiles | ( | ) | const |
Get the list of all files in the workflow.
- Returns
- a vector of files
◆ getInputFileMap()
std::map< std::string, WorkflowFile * > 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)
- Returns
- a map of files indexed by file ID
◆ getInputFiles()
std::vector< WorkflowFile * > 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)
- Returns
- a vector 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
◆ getOutputFileMap()
std::map< std::string, WorkflowFile * > 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)
- Returns
- a map of files indexed by ID
◆ getOutputFiles()
std::vector< WorkflowFile * > 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)
- Returns
- a vector of files
◆ 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()
|
static |
Get the total number of flops for a list of tasks.
- Parameters
-
tasks a vector 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
-
id a 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
-
task a workflow task
- Returns
- a vector of tasks
◆ getTaskMap()
std::map< std::string, WorkflowTask * > wrench::Workflow::getTaskMap | ( | ) |
Get the list of all tasks in the workflow.
- Returns
- a map of tasks, indexed by ID
◆ getTaskNumberOfChildren()
long wrench::Workflow::getTaskNumberOfChildren | ( | const WorkflowTask * | task | ) |
Get the number of children for a task.
- Parameters
-
task a workflow task
- Returns
- a number of children
◆ getTaskNumberOfParents()
long wrench::Workflow::getTaskNumberOfParents | ( | const WorkflowTask * | task | ) |
Get the number of parents for a task.
- Parameters
-
task a workflow task
- Returns
- a number of parents
◆ getTaskParents()
std::vector< WorkflowTask * > wrench::Workflow::getTaskParents | ( | const WorkflowTask * | task | ) |
Get the list of parents for a task.
- Parameters
-
task a 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
-
min the low end of the range (inclusive) max the 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
◆ pathExists()
bool wrench::Workflow::pathExists | ( | const WorkflowTask * | src, |
const WorkflowTask * | dst | ||
) |
Determine whether one source is an ancestor of a destination task.
- Parameters
-
src the source task dst the destination task
- Returns
- true if there is a path from src to dst, false otherwise
◆ removeControlDependency()
void wrench::Workflow::removeControlDependency | ( | WorkflowTask * | src, |
WorkflowTask * | dst | ||
) |
Remove a control dependency between tasks (does nothing if none)
- Parameters
-
src the source task dst the destination task
◆ 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
-
file a 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
-
task a task
- Exceptions
-
std::invalid_argument
◆ waitForNextExecutionEvent() [1/2]
std::shared_ptr< WorkflowExecutionEvent > wrench::Workflow::waitForNextExecutionEvent | ( | ) |
Wait for the next workflow 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
-
timeout a 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:
- Workflow.h
- Workflow.cpp