Task management.
Functions for managing the tasks.
This section describes the functions for managing the tasks.
A task is some working amount that can be executed in parallel on several hosts. A task may depend on other tasks, which means that the task cannot start until the other tasks are done. Each task has a state indicating whether the task is scheduled, running, done, ...
- See also
- SD_task_t,
-
Tasks dependencies
|
typedef struct s_SD_task_t * | SD_task_t |
| Task opaque datatypeA task is some computing amount that can be executed in parallel on several hosts. More...
|
|
|
enum | e_SD_task_state_t {
SD_NOT_SCHEDULED = 0x0001,
SD_SCHEDULABLE = 0x0002,
SD_SCHEDULED = 0x0004,
SD_RUNNABLE = 0x0008,
SD_RUNNING = 0x0010,
SD_DONE = 0x0020,
SD_FAILED = 0x0040
} |
| Task states. More...
|
|
enum | e_SD_task_kind_t {
SD_TASK_NOT_TYPED = 0,
SD_TASK_COMM_E2E = 1,
SD_TASK_COMP_SEQ = 2,
SD_TASK_COMP_PAR_AMDAHL = 3,
SD_TASK_COMM_PAR_MXN_1D_BLOCK = 4
} |
| Task kinds. More...
|
|
|
SD_task_t | SD_task_create (const char *name, void *data, double amount) |
|
void * | SD_task_get_data (SD_task_t task) |
|
void | SD_task_set_data (SD_task_t task, void *data) |
|
e_SD_task_state_t | SD_task_get_state (SD_task_t task) |
|
const char * | SD_task_get_name (SD_task_t task) |
|
void | SD_task_set_name (SD_task_t task, const char *name) |
|
void | SD_task_set_rate (SD_task_t task, double rate) |
|
void | SD_task_watch (SD_task_t task, e_SD_task_state_t state) |
|
void | SD_task_unwatch (SD_task_t task, e_SD_task_state_t state) |
|
double | SD_task_get_amount (SD_task_t task) |
|
void | SD_task_set_amount (SD_task_t task, double amount) |
|
double | SD_task_get_alpha (SD_task_t task) |
|
double | SD_task_get_remaining_amount (SD_task_t task) |
|
double | SD_task_get_execution_time (SD_task_t task, int host_count, const sg_host_t *host_list, const double *flops_amount, const double *bytes_amount) |
|
e_SD_task_kind_t | SD_task_get_kind (SD_task_t task) |
|
void | SD_task_schedule (SD_task_t task, int host_count, const sg_host_t *host_list, const double *flops_amount, const double *bytes_amount, double rate) |
|
void | SD_task_unschedule (SD_task_t task) |
|
double | SD_task_get_start_time (SD_task_t task) |
|
double | SD_task_get_finish_time (SD_task_t task) |
|
xbt_dynar_t | SD_task_get_parents (SD_task_t task) |
|
xbt_dynar_t | SD_task_get_children (SD_task_t task) |
|
int | SD_task_get_workstation_count (SD_task_t task) |
|
sg_host_t * | SD_task_get_workstation_list (SD_task_t task) |
|
void | SD_task_destroy (SD_task_t task) |
|
void | SD_task_dump (SD_task_t task) |
|
void | SD_task_dotty (SD_task_t task, void *out_FILE) |
|
SD_task_t | SD_task_create_comp_seq (const char *name, void *data, double amount) |
|
SD_task_t | SD_task_create_comp_par_amdahl (const char *name, void *data, double amount, double alpha) |
|
SD_task_t | SD_task_create_comm_e2e (const char *name, void *data, double amount) |
|
SD_task_t | SD_task_create_comm_par_mxn_1d_block (const char *name, void *data, double amount) |
|
void | SD_task_distribute_comp_amdahl (SD_task_t task, int ws_count) |
|
void | SD_task_build_MxN_1D_block_matrix (SD_task_t task, int src_nb, int dst_nb) |
|
void | SD_task_schedulev (SD_task_t task, int count, const sg_host_t *list) |
|
void | SD_task_schedulel (SD_task_t task, int count,...) |
|
◆ SD_SCHED_NO_COST
#define SD_SCHED_NO_COST NULL |
A constant to use in SD_task_schedule to mean that there is no cost.
For example, create a pure computation task (i.e., with no communication) like this:
SD_task_schedule(task, my_host_count, my_host_list, my_flops_amount, SD_SCHED_NO_COST, my_rate);
◆ SD_task_t
Task opaque datatypeA task is some computing amount that can be executed in parallel on several hosts.
A task may depend on other tasks, which means that the task cannot start until the other tasks are done. Each task has a state indicating whether the task is scheduled, running, done, ...
◆ e_SD_task_state_t
Task states.
Enumerator |
---|
SD_NOT_SCHEDULED | Initial state (not valid for SD_watch and SD_unwatch).
|
SD_SCHEDULABLE | A task becomes SD_SCHEDULABLE as soon as its dependencies are satisfied.
|
SD_SCHEDULED | A task becomes SD_SCHEDULED when you call function SD_task_schedule.
SD_simulate will execute it when it becomes SD_RUNNABLE.
|
SD_RUNNABLE | A scheduled task becomes runnable is SD_simulate as soon as its dependencies are satisfied.
|
SD_RUNNING | An SD_RUNNABLE task becomes SD_RUNNING when it is launched.
|
SD_DONE | The task is successfully finished.
|
SD_FAILED | A problem occurred during the execution of the task.
|
◆ e_SD_task_kind_t
Task kinds.
Enumerator |
---|
SD_TASK_NOT_TYPED | no specified type
|
SD_TASK_COMM_E2E | end to end communication
|
SD_TASK_COMP_SEQ | sequential computation
|
SD_TASK_COMP_PAR_AMDAHL | parallel computation (Amdahl's law)
|
SD_TASK_COMM_PAR_MXN_1D_BLOCK | MxN data redistribution (1D Block distribution)
|
◆ SD_task_create()
SD_task_t SD_task_create |
( |
const char * |
name, |
|
|
void * |
data, |
|
|
double |
amount |
|
) |
| |
◆ SD_task_get_data()
◆ SD_task_set_data()
void SD_task_set_data |
( |
SD_task_t |
task, |
|
|
void * |
data |
|
) |
| |
◆ SD_task_get_state()
◆ SD_task_get_name()
const char* SD_task_get_name |
( |
SD_task_t |
task | ) |
|
◆ SD_task_set_name()
void SD_task_set_name |
( |
SD_task_t |
task, |
|
|
const char * |
name |
|
) |
| |
◆ SD_task_set_rate()
void SD_task_set_rate |
( |
SD_task_t |
task, |
|
|
double |
rate |
|
) |
| |
◆ SD_task_watch()
◆ SD_task_unwatch()
◆ SD_task_get_amount()
◆ SD_task_set_amount()
void SD_task_set_amount |
( |
SD_task_t |
task, |
|
|
double |
amount |
|
) |
| |
◆ SD_task_get_alpha()
◆ SD_task_get_remaining_amount()
double SD_task_get_remaining_amount |
( |
SD_task_t |
task | ) |
|
◆ SD_task_get_execution_time()
double SD_task_get_execution_time |
( |
SD_task_t |
task, |
|
|
int |
host_count, |
|
|
const sg_host_t * |
host_list, |
|
|
const double * |
flops_amount, |
|
|
const double * |
bytes_amount |
|
) |
| |
◆ SD_task_get_kind()
◆ SD_task_schedule()
void SD_task_schedule |
( |
SD_task_t |
task, |
|
|
int |
host_count, |
|
|
const sg_host_t * |
host_list, |
|
|
const double * |
flops_amount, |
|
|
const double * |
bytes_amount, |
|
|
double |
rate |
|
) |
| |
◆ SD_task_unschedule()
◆ SD_task_get_start_time()
double SD_task_get_start_time |
( |
SD_task_t |
task | ) |
|
◆ SD_task_get_finish_time()
double SD_task_get_finish_time |
( |
SD_task_t |
task | ) |
|
◆ SD_task_get_parents()
◆ SD_task_get_children()
◆ SD_task_get_workstation_count()
int SD_task_get_workstation_count |
( |
SD_task_t |
task | ) |
|
◆ SD_task_get_workstation_list()
sg_host_t* SD_task_get_workstation_list |
( |
SD_task_t |
task | ) |
|
◆ SD_task_destroy()
◆ SD_task_dump()
◆ SD_task_dotty()
void SD_task_dotty |
( |
SD_task_t |
task, |
|
|
void * |
out_FILE |
|
) |
| |
◆ SD_task_create_comp_seq()
SD_task_t SD_task_create_comp_seq |
( |
const char * |
name, |
|
|
void * |
data, |
|
|
double |
amount |
|
) |
| |
◆ SD_task_create_comp_par_amdahl()
SD_task_t SD_task_create_comp_par_amdahl |
( |
const char * |
name, |
|
|
void * |
data, |
|
|
double |
amount, |
|
|
double |
alpha |
|
) |
| |
◆ SD_task_create_comm_e2e()
SD_task_t SD_task_create_comm_e2e |
( |
const char * |
name, |
|
|
void * |
data, |
|
|
double |
amount |
|
) |
| |
◆ SD_task_create_comm_par_mxn_1d_block()
SD_task_t SD_task_create_comm_par_mxn_1d_block |
( |
const char * |
name, |
|
|
void * |
data, |
|
|
double |
amount |
|
) |
| |
◆ SD_task_distribute_comp_amdahl()
void SD_task_distribute_comp_amdahl |
( |
SD_task_t |
task, |
|
|
int |
ws_count |
|
) |
| |
◆ SD_task_build_MxN_1D_block_matrix()
void SD_task_build_MxN_1D_block_matrix |
( |
SD_task_t |
task, |
|
|
int |
src_nb, |
|
|
int |
dst_nb |
|
) |
| |
◆ SD_task_schedulev()
void SD_task_schedulev |
( |
SD_task_t |
task, |
|
|
int |
count, |
|
|
const sg_host_t * |
list |
|
) |
| |
◆ SD_task_schedulel()
void SD_task_schedulel |
( |
SD_task_t |
task, |
|
|
int |
count, |
|
|
|
... |
|
) |
| |