X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/cc4eceb15c80a597e44222b8c0ff60caf85db959..090f69e16fc2256292aa7ca819b9d80a2a51d8d4:/src/surf/network_ib.hpp diff --git a/src/surf/network_ib.hpp b/src/surf/network_ib.hpp index f15fcfd1a9..37884ed705 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-2021. The SimGrid Team. * All rights reserved. */ /* This program is free software; you can redistribute it and/or modify it @@ -19,49 +19,45 @@ namespace 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); + 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_action_init_callback(NetworkAction& action); }; -} +} // namespace resource } // namespace kernel } // namespace simgrid #endif