wrench::Workflow
-
class wrench::Workflow : public std::enable_shared_from_this<Workflow>
A workflow (to be executed by a WMS)
Public Functions
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
- Throws
std::invalid_argument –
-
std::shared_ptr<DataFile> addFile(const std::string &id, double size)
Add a file to the workflow.
- Parameters
id – : file name
size – : file size in bytes
- Returns
a file
-
std::shared_ptr<WorkflowTask> addTask(const 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.
- 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)
memory_requirement – memory_manager_service requirement (in bytes)
- Throws
std::invalid_argument –
- Returns
the WorkflowTask instance
-
void clear()
Method that will delete all workflow tasks and all files used by these tasks.
-
void exportToEPS(const std::string&)
Output the workflow’s dependency graph to EPS.
- Parameters
eps_filename – a filename to which the EPS content is saved
-
double getCompletionDate()
Returns the workflow’s completion date.
- Returns
a date in seconds (or a negative value If the workflow has not completed)
-
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.
- Returns
A map of tasks indexed by their IDs
-
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.
- Returns
A vector of tasks
-
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.
- Returns
A map of tasks indexed by their IDs
-
std::vector<std::shared_ptr<WorkflowTask>> getExitTasks() const
Get the exit tasks of the workflow, i.e., those tasks that don’t have children.
- Returns
A vector of tasks
-
std::shared_ptr<DataFile> getFileByID(const std::string &id)
Get a file based on its ID.
- Parameters
id – : file ID
- Returns
a file
-
std::map<std::string, std::shared_ptr<DataFile>> &getFileMap()
Get the list of all files in the workflow/simulation.
- Returns
a reference to the map of files in the workflow/simulation, indexed by file ID
-
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)
- Returns
a map of files indexed by file ID
-
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)
- Returns
a vector of files
-
unsigned long getNumberOfTasks()
Get the number of tasks in the workflow.
- Returns
the number of tasks
-
unsigned long getNumLevels()
Returns the number of levels in the workflow.
- Returns
the number of levels
-
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)
- Returns
a map of files indexed by ID
-
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)
- Returns
a vector of files
Get the shared pointer for this object.
- Returns
a shared pointer to the object
-
std::shared_ptr<WorkflowTask> getTaskByID(const std::string &id)
Find a WorkflowTask based on its ID.
- Parameters
id – a string id
- Throws
std::invalid_argument –
- Returns
a workflow task (or throws a std::invalid_argument if not found)
Get the list of children for a task.
- Parameters
task – a workflow task
- Returns
a vector of tasks
-
std::map<std::string, std::shared_ptr<WorkflowTask>> getTaskMap()
Get the list of all tasks in the workflow.
- Returns
a copy of themap of tasks, indexed by ID
Get the number of children for a task.
- Parameters
task – a workflow task
- Returns
a number of children
Get the number of parents for a task.
- Parameters
task – a workflow task
- Returns
a number of parents
Get the list of parents for a task.
- Parameters
task – a workflow task
- Returns
a vector of tasks
-
std::vector<std::shared_ptr<WorkflowTask>> getTasks()
Get the list of all tasks in the workflow.
- Returns
a vector of tasks
Find which tasks use a file as input.
- Parameters
file – : a file
- Returns
a vector of tasks
Get the workflow task for which a file is an output.
- Parameters
file – a file
- Returns
at task (or nullptr)
-
bool isDone()
Returns whether all tasks are complete.
- Returns
true or false
Determine whether a file is output of some task.
- Parameters
file – a file
- Returns
true or false
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
Remove a control dependency between tasks (does nothing if none)
- Parameters
src – the source task
dst – the destination task
Remove a file from the workflow.
- Parameters
file – a file
- Throws
std::invalid_argument –
Remove a task from the workflow.
- Parameters
task – a task
- Throws
std::invalid_argument –
Public Static Functions
-
static std::shared_ptr<Workflow> createWorkflow()
Create a workflow instance.
- Returns
Get the total number of flops for a list of tasks.
- Parameters
tasks – a vector of tasks
- Returns
the total number of flops