return task;
}
-/*************** Begin GPU ***************/
-/** \ingroup m_task_management
- * \brief Creates a new #msg_gpu_task_t.
-
- * A constructor for #msg_gpu_task_t taking four arguments and returning a pointer to the new created GPU task.
-
- * \param name a name for the object. It is for user-level information and can be NULL.
- * \param flops_amount a value of the processing amount (in flop)needed to process this new task. If 0, then it cannot
- * be executed with MSG_gpu_task_execute(). This value has to be >=0.
- * \param dispatch_latency time in seconds to load this task on the GPU
- * \param collect_latency time in seconds to transfer result from the GPU back to the CPU (host) when done
-
- * \see msg_gpu_task_t
- * \return The new corresponding object.
- */
-msg_gpu_task_t MSG_gpu_task_create(const char *name, double flops_amount, double dispatch_latency,
- double collect_latency)
-{
- msg_gpu_task_t task = xbt_new(s_msg_gpu_task_t, 1);
- simdata_gpu_task_t simdata = xbt_new(s_simdata_gpu_task_t, 1);
- task->simdata = simdata;
- /* Task structure */
- task->name = xbt_strdup(name);
-
- /* Simulator Data */
- simdata->flops_amount = flops_amount;
- simdata->dispatch_latency = dispatch_latency;
- simdata->collect_latency = collect_latency;
-
- /* TRACE_msg_gpu_task_create(task); FIXME*/
- return task;
-}
-/*************** End GPU ***************/
-
/** \ingroup m_task_management
* \brief Return the user data of a #msg_task_t.
*
*/
msg_error_t MSG_task_destroy(msg_task_t task)
{
- smx_synchro_t action = NULL;
xbt_assert((task != NULL), "Invalid parameter");
if (task->simdata->isused) {
xbt_free(task->name);
- action = task->simdata->compute;
- if (action)
- simcall_execution_destroy(action);
+ if (task->simdata->compute)
+ task->simdata->compute->unref();
/* parallel tasks only */
xbt_free(task->simdata->host_list);
*/
double MSG_task_get_flops_amount(msg_task_t task) {
if (task->simdata->compute) {
- return simcall_execution_get_remains(task->simdata->compute);
+ return task->simdata->compute->remains();
} else {
return task->simdata->flops_amount;
}
*/
double MSG_task_get_remaining_communication(msg_task_t task)
{
- xbt_assert((task != NULL) && (task->simdata != NULL), "Invalid parameter");
XBT_DEBUG("calling simcall_communication_get_remains(%p)", task->simdata->comm);
- return simcall_comm_get_remains(task->simdata->comm);
+ return task->simdata->comm->remains();
}
/** \ingroup m_task_management
}
{
- smx_synchro_t compute = task->simdata->compute;
- msg_host_t host_now = compute->execution.host; // simix_private.h is necessary
+ simgrid::simix::Exec *compute = task->simdata->compute;
+ msg_host_t host_now = compute->host; // simix_private.h is necessary
if (host_now != host) {
/* task is not yet executed on this host */
XBT_INFO("set affinity(0x%04lx@%s) for %s (not active now)", mask, MSG_host_get_name(host),