SimGrid  3.15 Versatile Simulation of Distributed Systems

Detailed Description

Since most scheduling algorithms rely on a concept of task that can be either computed locally or transferred on another processor, it seems to be the right level of abstraction for our purposes.

See Task Actions to see how to put the tasks in action.

A task may then be defined by a computing amount, a message size and some private data.

Macros

Default value for an uninitialized msg_task_t. More...

Functions

msg_task_t MSG_parallel_task_create (const char *name, int host_nb, const msg_host_t *host_list, double *flops_amount, double *bytes_amount, void *data)
Creates a new msg_task_t (a parallel one....). More...

Return the user data of a msg_task_t. More...

Sets the user data of a msg_task_t. More...

Sets a function to be called when a task has just been copied. More...

Return the sender of a msg_task_t. More...

Return the source of a msg_task_t. More...

Return the name of a msg_task_t. More...

Sets the name of a msg_task_t. More...

Returns the remaining amount of flops needed to execute a task msg_task_t. More...

Returns the size of the data attached to a task msg_task_t. More...

Changes the priority of a computation task. More...

Changes the maximum CPU utilization of a computation task. More...

Macro Definition Documentation

Default value for an uninitialized msg_task_t.

Typedef Documentation

A task may then be defined by a computing amount, a message size and some private data.

Examples:
examples/msg/app-pmm/app-pmm.c.

Function Documentation

 msg_task_t MSG_task_create ( const char * name, double flop_amount, double message_size, void * data )

A constructor for msg_task_t taking four arguments and returning the corresponding object.

Parameters
 name a name for the object. It is for user-level information and can be nullptr. flop_amount a value of the processing amount (in flop) needed to process this new task. If 0, then it cannot be executed with MSG_task_execute(). This value has to be >=0. message_size a value of the amount of data (in bytes) needed to transfer this new task. If 0, then it cannot be transfered with MSG_task_send() and MSG_task_recv(). This value has to be >=0. data a pointer to any data may want to attach to the new object. It is for user-level information and can be nullptr. It can be retrieved with the function MSG_task_get_data.
Returns
The new corresponding object.

 msg_task_t MSG_parallel_task_create ( const char * name, int host_nb, const msg_host_t * host_list, double * flops_amount, double * bytes_amount, void * data )

Creates a new msg_task_t (a parallel one....).

A constructor for msg_task_t taking six arguments and returning the corresponding object.

Parameters
 name a name for the object. It is for user-level information and can be nullptr. host_nb the number of hosts implied in the parallel task. host_list an array of host_nb msg_host_t. flops_amount an array of host_nb doubles. flops_amount[i] is the total number of operations that have to be performed on host_list[i]. bytes_amount an array of host_nb* host_nb doubles. data a pointer to any data may want to attach to the new object. It is for user-level information and can be nullptr. It can be retrieved with the function MSG_task_get_data.
Returns
The new corresponding object.

Return the user data of a msg_task_t.

This function checks whether task is a valid pointer and return the user data associated to task if possible.

Sets the user data of a msg_task_t.

This function allows to associate a new pointer to the user data associated of task.

Sets a function to be called when a task has just been copied.

Parameters
 callback a callback function

Return the sender of a msg_task_t.

This functions returns the msg_process_t which sent this task

Return the source of a msg_task_t.

This functions returns the msg_host_t from which this task was sent

Return the name of a msg_task_t.

This functions returns the name of a msg_task_t as specified on creation

Sets the name of a msg_task_t.

This functions allows to associate a name to a task

Destructor for msg_task_t. Note that you should free user data, if any, before calling this function.

Only the process that owns the task can destroy it. The owner changes after a successful send. If a task is successfully sent, the receiver becomes the owner and is supposed to destroy it. The sender should not use it anymore. If the task failed to be sent, the sender remains the owner of the task.

Returns the remaining amount of flops needed to execute a task msg_task_t.

Once a task has been processed, this amount is set to 0. If you want, you can reset this value with MSG_task_set_flops_amount before restarting the task.

Warning
If the computation is ongoing (already started and not finished), it is not modified by this call. Moreover, after its completion, the ongoing execution with set the flops_amount to zero, overriding any value set during the execution.

Warning
If the transfer is ongoing (already started and not finished), it is not modified by this call.

If the communication does not exist it will return 0. So, if the communication has FINISHED or FAILED it returns zero.

Changes the priority of a computation task.

This priority doesn't affect the transfer rate. A priority of 2 will make a task receive two times more cpu power than the other ones.