X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/a75b3497803ad593515eb6815db046af3b14a2fd..HEAD:/src/smpi/include/smpi_host.hpp diff --git a/src/smpi/include/smpi_host.hpp b/src/smpi/include/smpi_host.hpp index 5a006548d8..503df80ee0 100644 --- a/src/smpi/include/smpi_host.hpp +++ b/src/smpi/include/smpi_host.hpp @@ -1,4 +1,4 @@ -/* Copyright (c) 2017-2018. The SimGrid Team. All rights reserved. */ +/* Copyright (c) 2017-2023. 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. */ @@ -9,32 +9,36 @@ #include "smpi_utils.hpp" #include "simgrid/s4u/Host.hpp" +#include "src/kernel/resource/FactorSet.hpp" #include #include #include -namespace simgrid { -namespace smpi { - +namespace simgrid::smpi { +static auto factor_lambda(std::vector const& values, double size) +{ + return values[0] + values[1] * size; +} class Host { - - private: - std::vector orecv_parsed_values; - std::vector osend_parsed_values; - std::vector oisend_parsed_values; - simgrid::s4u::Host *host = nullptr; - - public: - static simgrid::xbt::Extension EXTENSION_ID; - - explicit Host(simgrid::s4u::Host *ptr); - ~Host(); - - double orecv(size_t size); - double osend(size_t size); - double oisend(size_t size); + kernel::resource::FactorSet orecv_{"smpi/or", 0.0, factor_lambda}; + kernel::resource::FactorSet osend_{"smpi/os", 0.0, factor_lambda}; + kernel::resource::FactorSet oisend_{"smpi/ois", 0.0, factor_lambda}; + s4u::Host* host = nullptr; + /** + * @brief Generates warning message if user's config is conflicting (callback vs command line/xml) + * @param op String with config name (smpi/os, smpi/or, smpi/ois) + */ + void check_factor_configs(const std::string& op) const; + +public: + static xbt::Extension EXTENSION_ID; + + explicit Host(s4u::Host* ptr); + + double orecv(size_t size, s4u::Host* src, s4u::Host* dst) const; + double osend(size_t size, s4u::Host* src, s4u::Host* dst) const; + double oisend(size_t size, s4u::Host* src, s4u::Host* dst) const; }; -} -} +} // namespace simgrid::smpi #endif