10 #ifndef WRENCH_WORKUNIT_H
11 #define WRENCH_WORKUNIT_H
40 std::shared_ptr<StandardJob>
job,
48 static void addDependency(std::shared_ptr<Workunit> parent, std::shared_ptr<Workunit> child);
50 static std::set<std::shared_ptr<Workunit>>
createWorkunits(std::shared_ptr<StandardJob>
job);
52 std::shared_ptr<StandardJob>
getJob();
55 std::shared_ptr<StandardJob>
job;
65 std::vector<std::tuple<WorkflowFile *, std::shared_ptr<FileLocation>, std::shared_ptr<FileLocation>>>
pre_file_copies;
69 std::map<WorkflowFile *, std::vector<std::shared_ptr<FileLocation>>>
file_locations;
71 std::vector<std::tuple<WorkflowFile *, std::shared_ptr<FileLocation>, std::shared_ptr<FileLocation>>>
post_file_copies;
86 #endif //WRENCH_WORKUNIT_H
std::vector< std::tuple< WorkflowFile *, std::shared_ptr< FileLocation > > > cleanup_file_deletions
File deletions to perform last.
Definition: Workunit.h:73
unsigned long num_pending_parents
The number of Workunits this Workunit depends on.
Definition: Workunit.h:60
WorkflowTask * task
Computational task to perform.
Definition: Workunit.h:67
Workunit(std::shared_ptr< StandardJob > job, double sleep_time, std::vector< std::tuple< WorkflowFile *, std::shared_ptr< FileLocation >, std::shared_ptr< FileLocation >>> pre_file_copies, WorkflowTask *task, std::map< WorkflowFile *, std::vector< std::shared_ptr< FileLocation >>> file_locations, std::vector< std::tuple< WorkflowFile *, std::shared_ptr< FileLocation >, std::shared_ptr< FileLocation >>> post_file_copies, std::vector< std::tuple< WorkflowFile *, std::shared_ptr< FileLocation >>> cleanup_file_deletions)
Constructor.
Definition: Workunit.cpp:30
A class to describe a unit of work that's a sub-component of a StandardJob.
Definition: Workunit.h:35
static void addDependency(std::shared_ptr< Workunit > parent, std::shared_ptr< Workunit > child)
Add a dependency between two work units (does nothing if the dependency already exists)
Definition: Workunit.cpp:100
static std::set< std::shared_ptr< Workunit > > createWorkunits(std::shared_ptr< StandardJob > job)
Create all work units for a newly dispatched job.
Definition: Workunit.cpp:123
std::shared_ptr< StandardJob > job
The StandardJob this Workunit belongs to.
Definition: Workunit.h:55
std::set< std::shared_ptr< Workunit > > children
The Workunits that depend on this Workunit.
Definition: Workunit.h:58
std::shared_ptr< StandardJob > getJob()
Retrieve the standard job this workunit belongs to.
Definition: Workunit.cpp:280
std::vector< std::tuple< WorkflowFile *, std::shared_ptr< FileLocation >, std::shared_ptr< FileLocation > > > pre_file_copies
File copies to perform before computational tasks begin.
Definition: Workunit.h:65
std::vector< std::tuple< WorkflowFile *, std::shared_ptr< FileLocation >, std::shared_ptr< FileLocation > > > post_file_copies
File copies to perform after computational tasks completes.
Definition: Workunit.h:71
A computational task in a Workflow.
Definition: WorkflowTask.h:31
std::map< WorkflowFile *, std::vector< std::shared_ptr< FileLocation > > > file_locations
Locations where computational tasks should read/write files.
Definition: Workunit.h:69
double sleep_time
A sleep time, in seconds.
Definition: Workunit.h:63
A data file used/produced by a WorkflowTask in a Workflow.
Definition: WorkflowFile.h:26