X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/d8eb62b207b566949a0d9ce649a7b21e226b9168..fbcf6ab31cae1988be858f9f894dafe529c575d7:/src/simdag/sd_task.cpp diff --git a/src/simdag/sd_task.cpp b/src/simdag/sd_task.cpp index aa2fb4d337..3bdc2f063a 100644 --- a/src/simdag/sd_task.cpp +++ b/src/simdag/sd_task.cpp @@ -1,4 +1,4 @@ -/* Copyright (c) 2006-2018. The SimGrid Team. +/* Copyright (c) 2006-2019. The SimGrid Team. * All rights reserved. */ /* This program is free software; you can redistribute it and/or modify it @@ -37,7 +37,7 @@ SD_task_t SD_task_create(const char *name, void *data, double amount) SD_task_t task = xbt_new0(s_SD_task_t, 1); task->kind = SD_TASK_NOT_TYPED; task->state= SD_NOT_SCHEDULED; - sd_global->initial_tasks->insert(task); + sd_global->initial_tasks.insert(task); task->marked = 0; task->start_time = -1.0; @@ -265,28 +265,28 @@ void SD_task_set_state(SD_task_t task, e_SD_task_state_t new_state) std::set::iterator idx; XBT_DEBUG("Set state of '%s' to %d", task->name, new_state); if ((new_state == SD_NOT_SCHEDULED || new_state == SD_SCHEDULABLE) && task->state == SD_FAILED){ - sd_global->completed_tasks->erase(task); - sd_global->initial_tasks->insert(task); + sd_global->completed_tasks.erase(task); + sd_global->initial_tasks.insert(task); } if (new_state == SD_SCHEDULED && task->state == SD_RUNNABLE){ - sd_global->initial_tasks->insert(task); - sd_global->runnable_tasks->erase(task); + sd_global->initial_tasks.insert(task); + sd_global->runnable_tasks.erase(task); } if (new_state == SD_RUNNABLE){ - idx = sd_global->initial_tasks->find(task); - if (idx != sd_global->initial_tasks->end()) { - sd_global->runnable_tasks->insert(*idx); - sd_global->initial_tasks->erase(idx); + idx = sd_global->initial_tasks.find(task); + if (idx != sd_global->initial_tasks.end()) { + sd_global->runnable_tasks.insert(*idx); + sd_global->initial_tasks.erase(idx); } } if (new_state == SD_RUNNING) - sd_global->runnable_tasks->erase(task); + sd_global->runnable_tasks.erase(task); if (new_state == SD_DONE || new_state == SD_FAILED){ - sd_global->completed_tasks->insert(task); + sd_global->completed_tasks.insert(task); task->start_time = task->surf_action->get_start_time(); if (new_state == SD_DONE){ task->finish_time = task->surf_action->get_finish_time(); @@ -593,7 +593,6 @@ int SD_task_dependency_exists(SD_task_t src, SD_task_t dst) } else { return dst->predecessors->size() + dst->inputs->size(); } - return 0; } /** @@ -794,28 +793,16 @@ void SD_task_run(SD_task_t task) XBT_VERB("Executing task '%s'", task->name); - /* Copy the elements of the task into the action */ - int host_nb = task->allocation->size(); - sg_host_t* hosts = new sg_host_t[host_nb]; - std::copy_n(task->allocation->begin(), host_nb, hosts); - - double* flops_amount = new double[host_nb](); - double* bytes_amount = new double[host_nb * host_nb](); - - if(task->flops_amount) - std::copy_n(task->flops_amount, host_nb, flops_amount); - if(task->bytes_amount) - std::copy_n(task->bytes_amount, host_nb * host_nb, bytes_amount); - - task->surf_action = surf_host_model->execute_parallel(host_nb, hosts, flops_amount, bytes_amount, task->rate); + /* Beware! The scheduling data are now used by the surf action directly! no copy was done */ + task->surf_action = + surf_host_model->execute_parallel(*task->allocation, task->flops_amount, task->bytes_amount, task->rate); task->surf_action->set_data(task); XBT_DEBUG("surf_action = %p", task->surf_action); - __SD_task_destroy_scheduling_data(task); /* now the scheduling data are not useful anymore */ SD_task_set_state(task, SD_RUNNING); - sd_global->return_set->insert(task); + sd_global->return_set.insert(task); } /**