X-Git-Url: http://bilbo.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/cc4eceb15c80a597e44222b8c0ff60caf85db959..6ca5c122412a958bea1a85b6a67248003d0e6564:/src/surf/network_ib.hpp diff --git a/src/surf/network_ib.hpp b/src/surf/network_ib.hpp index f15fcfd1a9..915c0a7e3b 100644 --- a/src/surf/network_ib.hpp +++ b/src/surf/network_ib.hpp @@ -1,4 +1,4 @@ -/* Copyright (c) 2014-2019. The SimGrid Team. +/* Copyright (c) 2014-2022. The SimGrid Team. * All rights reserved. */ /* This program is free software; you can redistribute it and/or modify it @@ -7,61 +7,53 @@ #ifndef SURF_NETWORK_IB_HPP_ #define SURF_NETWORK_IB_HPP_ -#include "src/surf/network_smpi.hpp" +#include "src/surf/network_cm02.hpp" #include "xbt/base.h" #include #include -namespace simgrid { -namespace kernel { -namespace resource { +namespace simgrid::kernel::resource { class XBT_PRIVATE IBNode; -class XBT_PRIVATE ActiveComm { -public: - IBNode* destination; - NetworkAction* action; - double init_rate; - ActiveComm() : destination(nullptr), action(nullptr), init_rate(-1){}; - virtual ~ActiveComm() = default; +struct XBT_PRIVATE ActiveComm { + IBNode* destination = nullptr; + NetworkAction* action = nullptr; + double init_rate = -1; }; class IBNode { public: - int id; + int id_; // store related links, to ease computation of the penalties - std::vector ActiveCommsUp; + std::vector active_comms_up_; // store the number of comms received from each node - std::map ActiveCommsDown; + std::map active_comms_down_; // number of comms the node is receiving - int nbActiveCommsDown; - explicit IBNode(int id) : id(id), nbActiveCommsDown(0){}; - virtual ~IBNode() = default; + int nb_active_comms_down_ = 0; + explicit IBNode(int id) : id_(id){}; }; -class XBT_PRIVATE NetworkIBModel : public NetworkSmpiModel { -private: - void updateIBfactors_rec(IBNode* root, std::vector& updatedlist); - void computeIBfactors(IBNode* root); +class XBT_PRIVATE NetworkIBModel : public NetworkCm02Model { + std::unordered_map active_nodes; + std::unordered_map> active_comms; + + double Bs_; + double Be_; + double ys_; + void update_IB_factors_rec(IBNode* root, std::vector& updatedlist) const; + void compute_IB_factors(IBNode* root) const; public: - NetworkIBModel(); - explicit NetworkIBModel(const char* name); + explicit NetworkIBModel(const std::string& name); NetworkIBModel(const NetworkIBModel&) = delete; NetworkIBModel& operator=(const NetworkIBModel&) = delete; - ~NetworkIBModel() override; - void updateIBfactors(NetworkAction* action, IBNode* from, IBNode* to, int remove); - - std::unordered_map active_nodes; - std::unordered_map> active_comms; + void update_IB_factors(NetworkAction* action, IBNode* from, IBNode* to, int remove) const; - double Bs; - double Be; - double ys; + static void IB_create_host_callback(s4u::Host const& host); + static void IB_action_state_changed_callback(NetworkAction& action, Action::State /*previous*/); + static void IB_comm_start_callback(const activity::CommImpl& comm); }; -} -} // namespace kernel -} // namespace simgrid +} // namespace simgrid::kernel::resource #endif