Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Reduce the exposition of s_smpi_factor_t
authorMartin Quinson <martin.quinson@ens-rennes.fr>
Sat, 22 Oct 2022 19:10:50 +0000 (21:10 +0200)
committerMartin Quinson <martin.quinson@ens-rennes.fr>
Sat, 22 Oct 2022 19:10:50 +0000 (21:10 +0200)
src/smpi/include/smpi_host.hpp
src/smpi/include/smpi_utils.hpp
src/smpi/internals/smpi_utils.cpp

index 4223134..48c7ce5 100644 (file)
@@ -14,9 +14,9 @@
 #include <xbt/Extendable.hpp>
 
 namespace simgrid::smpi {
-static auto factor_lambda(s_smpi_factor_t const& fact, double size)
+static auto factor_lambda(std::vector<double> const& values, double size)
 {
-  return fact.values[0] + fact.values[1] * static_cast<size_t>(size);
+  return values[0] + values[1] * static_cast<size_t>(size);
 }
 class Host {
   utils::FactorSet orecv_{"smpi/or", 0.0, factor_lambda};
index 0e8b6fb..f382fb6 100644 (file)
@@ -27,19 +27,18 @@ class FactorSet {
   const std::string& name_;
   std::vector<s_smpi_factor_t> factors_;
   double default_value_;
-  const std::function<double(s_smpi_factor_t const&, double)> lambda_;
+  const std::function<double(std::vector<double> const&, double)> lambda_;
   bool initialized_ = false;
 
 public:
   // Parse the factor from a string
   FactorSet(
       const std::string& name, double default_value = 1,
-      std::function<double(s_smpi_factor_t const&, double)> const& lambda = [](s_smpi_factor_t const& factor, double) {
-        return factor.values.front();
-      });
+      std::function<double(std::vector<double> const&, double)> const& lambda = [](std::vector<double> const& values,
+                                                                                   double) { return values.front(); });
   void parse(const std::string& values);
   bool is_initialized() const { return initialized_; }
-  // Get the default factor, the one that is not a function of the size
+  // Get the default value
   double operator()();
   // Get the factor to use for the provided size
   double operator()(double size);
index 6660c50..8ccf2db 100644 (file)
@@ -56,14 +56,14 @@ void FactorSet::parse(const std::string& values)
 }
 
 FactorSet::FactorSet(const std::string& name, double default_value,
-                     std::function<double(s_smpi_factor_t const&, double)> const& lambda)
+                     std::function<double(std::vector<double> const&, double)> const& lambda)
     : name_(name), default_value_(default_value), lambda_(lambda)
 {
 }
 
 double FactorSet::operator()()
 {
-  return lambda_(factors_.front(), 0);
+  return default_value_;
 }
 
 double FactorSet::operator()(double size)
@@ -80,12 +80,12 @@ double FactorSet::operator()(double size)
         XBT_DEBUG("%s: %f <= %zu return default %f", name_.c_str(), size, fact.factor, default_value_);
         return default_value_;
       }
-      double val = lambda_(factors_[i - 1], size);
+      double val = lambda_(factors_[i - 1].values, size);
       XBT_DEBUG("%s: %f <= %zu return %f", name_.c_str(), size, fact.factor, val);
       return val;
     }
   }
-  double val = lambda_(factors_.back(), size);
+  double val = lambda_(factors_.back().values, size);
 
   XBT_DEBUG("%s: %f > %zu return %f", name_.c_str(), size, factors_.back().factor, val);
   return val;