: NetworkModel(Model::UpdateAlgo::FULL), hostModel_(hmodel)
{
set_maxmin_system(sys);
- loopback_ = NetworkL07Model::create_link("__loopback__", 498000000, 0.000015, s4u::Link::SharingPolicy::FATPIPE);
+ loopback_ = NetworkL07Model::create_link("__loopback__", std::vector<double>{498000000}, 0.000015,
+ s4u::Link::SharingPolicy::FATPIPE);
}
NetworkL07Model::~NetworkL07Model()
set_maxmin_system(nullptr);
}
-double HostL07Model::next_occuring_event(double now)
+double HostL07Model::next_occurring_event(double now)
{
- double min = HostModel::next_occuring_event_full(now);
+ double min = HostModel::next_occurring_event_full(now);
for (kernel::resource::Action const& action : *get_started_action_set()) {
const L07Action& net_action = static_cast<const L07Action&>(action);
if (net_action.latency_ > 0 && (min < 0 || net_action.latency_ < min)) {
/* Need to check that none of the model has failed */
int i = 0;
- kernel::lmm::Constraint* cnst = action.get_variable()->get_constraint(i);
+ const kernel::lmm::Constraint* cnst = action.get_variable()->get_constraint(i);
while (cnst != nullptr) {
i++;
- void* constraint_id = cnst->get_id();
- if (not static_cast<simgrid::kernel::resource::Resource*>(constraint_id)->is_on()) {
+ const kernel::resource::Resource* constraint_id = cnst->get_id();
+ if (not constraint_id->is_on()) {
XBT_DEBUG("Action (%p) Failed!!", &action);
action.finish(kernel::resource::Action::State::FAILED);
break;
kernel::resource::Action* NetworkL07Model::communicate(s4u::Host* src, s4u::Host* dst, double size, double rate)
{
std::vector<s4u::Host*> host_list = {src, dst};
- double* flops_amount = new double[2]();
+ const double* flops_amount = new double[2]();
double* bytes_amount = new double[4]();
bytes_amount[1] = size;
return new CpuL07(this, host, speed_per_pstate, core);
}
-kernel::resource::LinkImpl* NetworkL07Model::create_link(const std::string& name, double bandwidth, double latency,
- s4u::Link::SharingPolicy policy)
+kernel::resource::LinkImpl* NetworkL07Model::create_link(const std::string& name, const std::vector<double>& bandwidths,
+ double latency, s4u::Link::SharingPolicy policy)
{
- return new LinkL07(this, name, bandwidth, latency, policy);
+ xbt_assert(bandwidths.size() == 1, "Non WIFI link must have only 1 bandwidth.");
+ return new LinkL07(this, name, bandwidths[0], latency, policy);
}
/************
if (policy == s4u::Link::SharingPolicy::FATPIPE)
get_constraint()->unshare();
- s4u::Link::on_creation(this->piface_);
+ s4u::Link::on_creation(*get_iface());
}
kernel::resource::CpuAction* CpuL07::execution_start(double size)
/** @brief take into account changes of speed (either load or max) */
void CpuL07::on_speed_change()
{
- kernel::lmm::Variable* var = nullptr;
+ const kernel::lmm::Variable* var;
const kernel::lmm::Element* elem = nullptr;
get_model()->get_maxmin_system()->update_constraint_bound(get_constraint(), speed_.peak * speed_.scale);
while ((var = get_constraint()->get_variable(&elem))) {
- kernel::resource::Action* action = static_cast<kernel::resource::Action*>(var->get_id());
+ const kernel::resource::Action* action = static_cast<kernel::resource::Action*>(var->get_id());
get_model()->get_maxmin_system()->update_variable_bound(action->get_variable(), speed_.scale * speed_.peak);
}
void LinkL07::set_latency(double value)
{
- kernel::lmm::Variable* var = nullptr;
+ const kernel::lmm::Variable* var;
L07Action *action;
const kernel::lmm::Element* elem = nullptr;
if (communicationAmount_ != nullptr) {
for (size_t i = 0; i < host_count; i++) {
for (size_t j = 0; j < host_count; j++) {
-
if (communicationAmount_[i * host_count + j] > 0) {
double lat = 0.0;
std::vector<kernel::resource::LinkImpl*> route;