- /* 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);