-/* Copyright (c) 2009-2017. The SimGrid Team.
+/* Copyright (c) 2009-2018. The SimGrid Team.
* All rights reserved. */
/* This program is free software; you can redistribute it and/or modify it
* under the terms of the license (GNU LGPL) which comes with this package. */
#include "simdag_private.hpp"
+#include "simgrid/s4u/Engine.hpp"
#include "simgrid/simdag.h"
#include "src/internal_config.h"
#include "xbt/file.hpp"
task = SD_task_create_comm_e2e(name.c_str(), nullptr, size);
else
task = SD_task_create_comm_par_mxn_1d_block(name.c_str(), nullptr, size);
- SD_task_dependency_add(nullptr, nullptr, src, task);
- SD_task_dependency_add(nullptr, nullptr, task, dst);
+ SD_task_dependency_add(src, task);
+ SD_task_dependency_add(task, dst);
jobs.insert({name, task});
xbt_dynar_push(result, &task);
} else {
XBT_WARN("Task '%s' is defined more than once", name.c_str());
}
} else {
- SD_task_dependency_add(nullptr, nullptr, src, dst);
+ SD_task_dependency_add(src, dst);
}
}
}
xbt_dynar_foreach (result, i, task){
if (task->predecessors->empty() && task->inputs->empty() && task != root) {
XBT_DEBUG("Task '%s' has no source. Add dependency from 'root'", task->name);
- SD_task_dependency_add(nullptr, nullptr, root, task);
+ SD_task_dependency_add(root, task);
}
if (task->successors->empty() && task->outputs->empty() && task != end) {
XBT_DEBUG("Task '%s' has no destination. Add dependency to 'end'", task->name);
- SD_task_dependency_add(nullptr, nullptr, task, end);
+ SD_task_dependency_add(task, end);
}
}
if(schedule){
if (schedule_success) {
- sg_host_t* workstations = sg_host_list();
+ std::vector<simgrid::s4u::Host*> hosts = simgrid::s4u::Engine::get_instance()->get_all_hosts();
+
for (auto const& elm : computers) {
SD_task_t previous_task = nullptr;
for (auto const& task : *elm.second) {
/* add dependency between the previous and the task to avoid parallel execution */
if(task){
if (previous_task && not SD_task_dependency_exists(previous_task, task))
- SD_task_dependency_add(nullptr, nullptr, previous_task, task);
+ SD_task_dependency_add(previous_task, task);
- SD_task_schedulel(task, 1, workstations[atoi(elm.first.c_str())]);
+ SD_task_schedulel(task, 1, hosts[atoi(elm.first.c_str())]);
previous_task = task;
}
}
delete elm.second;
}
- xbt_free(workstations);
} else {
XBT_WARN("The scheduling is ignored");
for (auto const& elm : computers)
}
if (result && not acyclic_graph_detail(result)) {
- std::string base = simgrid::xbt::Path(filename).getBasename();
+ std::string base = simgrid::xbt::Path(filename).get_base_name();
XBT_ERROR("The DOT described in %s is not a DAG. It contains a cycle.", base.c_str());
xbt_dynar_free(&result);
result = nullptr;