10 #ifndef WRENCH_WORKFLOWTASK_H
11 #define WRENCH_WORKFLOWTASK_H
17 #include "wrench/workflow/job/WorkflowJob.h"
18 #include "wrench/workflow/WorkflowFile.h"
19 #include "wrench/workflow/parallel_model/ParallelModel.h"
20 #include "wrench/workflow/parallel_model/AmdahlParallelModel.h"
21 #include "wrench/workflow/parallel_model/ConstantEfficiencyParallelModel.h"
22 #include "wrench/workflow/parallel_model/CustomParallelModel.h"
24 #include <boost/graph/adjacency_list.hpp>
34 const std::string&
getID()
const;
54 std::vector<WorkflowTask *>
getParents()
const;
135 struct WorkflowTaskExecution;
260 std::string cluster_id;
263 double average_cpu = -1;
264 unsigned long bytes_read = -1;
265 unsigned long bytes_written = -1;
266 unsigned long min_num_cores;
267 unsigned long max_num_cores;
268 std::shared_ptr<ParallelModel> parallel_model;
269 double memory_requirement;
270 unsigned long priority = 0;
271 unsigned long toplevel;
272 unsigned int failure_count = 0;
273 std::string execution_host;
275 State upcoming_visible_state;
280 std::map<std::string, WorkflowFile *> output_files;
281 std::map<std::string, WorkflowFile *> input_files;
286 unsigned long min_num_cores,
287 unsigned long max_num_cores,
288 double memory_requirement);
293 std::stack<WorkflowTaskExecution> execution_history;
299 #endif //WRENCH_WORKFLOWTASK_H
@ PENDING
Pending (has been submitted to a compute service)
Definition: WorkflowTask.h:74
void setUpcomingState(WorkflowTask::State)
Set the upcoming visible state of the task.
Definition: WorkflowTask.cpp:339
@ READY
Ready (parents have completed)
Definition: WorkflowTask.h:72
An internal class that uses the Boost Graph Library to implement a DAG of WorkflowTask objects.
Definition: DagOfTasks.h:50
std::string execution_host
Task's execution host (could be a virtual host)
Definition: WorkflowTask.h:235
void incrementFailureCount()
Increment the failure count of a task.
Definition: WorkflowTask.cpp:603
std::stack< WorkflowTaskExecution > getExecutionHistory() const
Get the execution history of this task.
Definition: WorkflowTask.cpp:587
double write_output_end
Task's write output end time.
Definition: WorkflowTask.h:226
@ UNKNOWN
Some Unknown state (should not happen)
Definition: WorkflowTask.h:78
WorkflowTask::State getState() const
Get the state of the task.
Definition: WorkflowTask.cpp:198
State
Task states.
Definition: WorkflowTask.h:68
unsigned long updateTopLevel()
Update the task's top level (looking only at the parents, and updating children)
Definition: WorkflowTask.cpp:717
void setComputationEndDate(double date)
Set the date when the computation portion of a WorkflowTask has ended.
Definition: WorkflowTask.cpp:485
double getAverageCPU() const
Get the task average CPU usage.
Definition: WorkflowTask.cpp:397
void setClusterID(std::string)
Set the cluster id for the task.
Definition: WorkflowTask.cpp:373
void setExecutionHost(std::string hostname)
Sets the host on which this task is running.If the hostname is a VM name, then the corresponding phys...
Definition: WorkflowTask.cpp:775
double read_input_end
Task's read input end time.
Definition: WorkflowTask.h:218
double getTerminationDate() const
Get the tasks's most recent termination date (when it was explicitly requested to be terminated by th...
Definition: WorkflowTask.cpp:709
std::vector< WorkflowTask * > getChildren() const
Get the children of a task.
Definition: WorkflowTask.cpp:171
WorkflowTask::InternalState getInternalState() const
Get the state of the task (as known to the "internal" layer)
Definition: WorkflowTask.cpp:216
const std::string & getID() const
Get the id of the task.
Definition: WorkflowTask.cpp:117
void setTerminationDate(double date)
Set the date when the task was terminated.
Definition: WorkflowTask.cpp:573
double getComputationStartDate() const
Get the tasks's most recent computation start date.
Definition: WorkflowTask.cpp:653
void addInputFile(WorkflowFile *file)
Add an input file to the task.
Definition: WorkflowTask.cpp:57
void setNumCoresAllocated(unsigned long num_cores)
Sets the number of cores allocated for this task.
Definition: WorkflowTask.cpp:797
double write_output_start
Task's write output start time.
Definition: WorkflowTask.h:224
void setComputationStartDate(double date)
Set the date when the computation portion of a WorkflowTask has begun.
Definition: WorkflowTask.cpp:470
unsigned long getMaxNumCores() const
Get the maximum number of cores that the task can use.
Definition: WorkflowTask.cpp:144
double task_end
Task's end time.
Definition: WorkflowTask.h:228
unsigned long getNumberOfChildren() const
Get the number of children of a task.
Definition: WorkflowTask.cpp:162
double read_input_start
Task's read input start time.
Definition: WorkflowTask.h:216
void setBytesWritten(unsigned long)
Set the number of bytes written by the task.
Definition: WorkflowTask.cpp:437
void setReadInputEndDate(double date)
Set the date when the read input portion of a WorkflowTask has completed.
Definition: WorkflowTask.cpp:515
unsigned long getTopLevel() const
Returns the task's top level (max number of hops on a reverse path up to an entry task....
Definition: WorkflowTask.cpp:740
void setFailureDate(double date)
Set the date when the task has failed.
Definition: WorkflowTask.cpp:559
A workflow (to be executed by a WMS)
Definition: Workflow.h:34
@ COMPLETED
Completed (successfully completed)
Definition: WorkflowTask.h:76
static std::string stateToString(WorkflowTask::State state)
Convert task state to a string (useful for output, debugging, logging, etc.)
Definition: WorkflowTask.cpp:225
std::vector< WorkflowFile * > getInputFiles() const
Get the list of input WorkflowFile objects for the task.
Definition: WorkflowTask.cpp:611
void setPriority(long)
Set the task priority.
Definition: WorkflowTask.cpp:389
unsigned long num_cores_allocated
Task's number of allocated cores.
Definition: WorkflowTask.h:239
unsigned long getMinNumCores() const
Get the minimum number of cores required for running the task.
Definition: WorkflowTask.cpp:135
unsigned long getBytesWritten() const
Get the number of bytes written by the task.
Definition: WorkflowTask.cpp:429
double getFailureDate() const
Get the task's most recent failure date.
Definition: WorkflowTask.cpp:701
double task_failed
Task's failed time.
Definition: WorkflowTask.h:230
std::shared_ptr< ParallelModel > getParallelModel() const
Get the task's parallel model.
Definition: WorkflowTask.cpp:834
Workflow * getWorkflow() const
Get the workflow that contains the task.
Definition: WorkflowTask.cpp:270
void setState(WorkflowTask::State)
Set the visible state of the task.
Definition: WorkflowTask.cpp:289
double computation_end
Task's computation end time.
Definition: WorkflowTask.h:222
void setParallelModel(std::shared_ptr< ParallelModel > model)
Set the task's parallel model.
Definition: WorkflowTask.cpp:826
A computational task in a Workflow.
Definition: WorkflowTask.h:31
std::string getPhysicalExecutionHost() const
Returns the name of the PHYSICAL host on which the task has most recently been executed,...
Definition: WorkflowTask.cpp:758
double computation_start
Task's computation start time.
Definition: WorkflowTask.h:220
std::string physical_execution_host
Task's execution physical host.
Definition: WorkflowTask.h:237
unsigned int getFailureCount()
Get the number of times a task has failed.
Definition: WorkflowTask.cpp:596
double getMemoryRequirement() const
Get the memory_manager_service requirement of the task.
Definition: WorkflowTask.cpp:153
A data structure that keeps track of a task's execution event times.
Definition: WorkflowTask.h:212
WorkflowTask::State getUpcomingState() const
Get the state of the task.
Definition: WorkflowTask.cpp:207
Abstraction of a job used for executing tasks in a Workflow.
Definition: WorkflowJob.h:34
void setBytesRead(unsigned long)
Set the number of bytes read by the task.
Definition: WorkflowTask.cpp:421
double getStartDate() const
Get the task's most recent start date.
Definition: WorkflowTask.cpp:637
double getWriteOutputStartDate() const
Get the task's most recent write output start date.
Definition: WorkflowTask.cpp:685
std::string getExecutionHost() const
Returns the name of the host on which the task has most recently been executed, or "" if the task has...
Definition: WorkflowTask.cpp:749
void setStartDate(double date)
Set the task's start date.
Definition: WorkflowTask.cpp:446
WorkflowTaskExecution(double task_start)
Constructor.
Definition: WorkflowTask.h:246
double getReadInputStartDate() const
Get the task's most recent read input start date.
Definition: WorkflowTask.cpp:669
void setJob(WorkflowJob *job)
Set the task's containing job.
Definition: WorkflowTask.cpp:348
unsigned long getPriority() const
Get the task priority. By default, priority is 0.
Definition: WorkflowTask.cpp:381
std::string getClusterID() const
Get the cluster Id for the task.
Definition: WorkflowTask.cpp:364
unsigned long getBytesRead() const
Get the number of bytes read by the task.
Definition: WorkflowTask.cpp:413
InternalState
Task state enum.
Definition: WorkflowTask.h:159
@ NOT_READY
Not ready (parents have not completed)
Definition: WorkflowTask.h:70
void setEndDate(double date)
Set the task's end date.
Definition: WorkflowTask.cpp:456
void setWriteOutputEndDate(double date)
Set the date when the write output portion of a WorkflowTask has completed.
Definition: WorkflowTask.cpp:545
void setInternalState(WorkflowTask::InternalState)
Set the internal state of the task.
Definition: WorkflowTask.cpp:279
double getReadInputEndDate() const
Get the task's most recent read input end date.
Definition: WorkflowTask.cpp:677
std::vector< WorkflowTask * > getParents() const
Get the parents of a task.
Definition: WorkflowTask.cpp:189
void setReadInputStartDate(double date)
Set the date when the read input portion of a WorkflowTask has begun.
Definition: WorkflowTask.cpp:500
double getWriteOutputEndDate() const
Get the task's most recent write output end date.
Definition: WorkflowTask.cpp:693
void setAverageCPU(double)
Set the task average CPU usage.
Definition: WorkflowTask.cpp:405
void addOutputFile(WorkflowFile *file)
Add an output file to the task.
Definition: WorkflowTask.cpp:87
WorkflowJob * getJob() const
Get the task's containing job.
Definition: WorkflowTask.cpp:356
double task_start
Task's start time.
Definition: WorkflowTask.h:214
unsigned long getNumberOfParents() const
Get the number of parents of a task.
Definition: WorkflowTask.cpp:180
void setWriteOutputStartDate(double date)
Set the date when the write output portion of a WorkflowTask has begun.
Definition: WorkflowTask.cpp:530
std::vector< WorkflowFile * > getOutputFiles() const
Get the list of output WorkflowFile objects for the task.
Definition: WorkflowTask.cpp:624
double getEndDate() const
Get the task's most recent end date.
Definition: WorkflowTask.cpp:645
unsigned long getNumCoresAllocated() const
Returns the number of cores allocated for this task's most recent execution or 0 if an execution atte...
Definition: WorkflowTask.cpp:766
A data file used/produced by a WorkflowTask in a Workflow.
Definition: WorkflowFile.h:26
double getFlops() const
Get the number of flops of the task.
Definition: WorkflowTask.cpp:126
std::string getColor() const
Get the task's color ("" if none)
Definition: WorkflowTask.cpp:810
void setColor(std::string)
Set the task's color.
Definition: WorkflowTask.cpp:818
double getComputationEndDate() const
Get the task's most recent computation end date.
Definition: WorkflowTask.cpp:661
double task_terminated
Task's terminated time.
Definition: WorkflowTask.h:232