]> AND Private Git Repository - loba.git/blobdiff - main.cpp
Logo AND Algorithmique Numérique Distribuée

Private GIT Repository
More updates to METRICS.
[loba.git] / main.cpp
index aa964bb7d87e183496b70b9ba790d259471fb088..6417250d128315df81fa935b377f40037ee0a1c1 100644 (file)
--- a/main.cpp
+++ b/main.cpp
@@ -1,4 +1,5 @@
 #include <cerrno>
+#include <cmath>
 #include <csignal>
 #include <cstring>              // strchr
 #include <iostream>
@@ -28,7 +29,7 @@ XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(main);
 #include "tracing.h"
 #include "version.h"
 
-#define DATA_DESCR_WIDTH 37
+#define DATA_DESCR_WIDTH 39
 
 namespace {
     // Failure exit status
@@ -50,6 +51,8 @@ namespace {
 
     statistics loads;
     statistics comps;
+    statistics comp_iterations;
+    statistics all_comp_iterations;
     statistics data_send_amount;
     statistics data_recv_amount;
     statistics data_send_count;
@@ -77,6 +80,8 @@ static int simulation_main(int argc, char* argv[])
         proc_mutex->acquire();
         loads.push(proc->get_real_load());
         comps.push(proc->get_comp_amount());
+        comp_iterations.push(proc->get_comp_iter());
+        all_comp_iterations.push(proc->get_all_comp_iter());
         data_send_amount.push(proc->get_data_send_amount());
         data_recv_amount.push(proc->get_data_recv_amount());
         data_send_count.push(proc->get_data_send_count());
@@ -171,7 +176,7 @@ static void install_signal_handler()
 
 #define PR_STATS(descr, st)                                             \
     XBT_INFO("| %.*s: %g / %g / %g", DATA_DESCR_WIDTH,                  \
-             descr " (total/avg./stddev)................................", \
+             descr " (total/avg./stddev).............................", \
              st.get_sum(), st.get_mean(), st.get_stddev())
 
 int main(int argc, char* argv[])
@@ -245,11 +250,18 @@ int main(int argc, char* argv[])
                 opt::auto_depl::nhosts = hostdata::size();
             }
             if (opt::auto_depl::load == 0.0) {
-                XBT_WARN("Initial load is zero!  Falling back on old behaviour.");
+                XBT_WARN("Initial load is zero!  "
+                         "Falling back on old behaviour (load = nhosts).");
                 opt::auto_depl::load = opt::auto_depl::nhosts;
             } else if (opt::auto_depl::load < 0.0)
                 opt::auto_depl::load =
                     -opt::auto_depl::load * opt::auto_depl::nhosts;
+            double iload = std::trunc(opt::auto_depl::load);
+            if (opt::integer_transfer && opt::auto_depl::load != iload) {
+                XBT_WARN("Total load %g is not an integer.  Truncate it.",
+                         opt::auto_depl::load);
+                opt::auto_depl::load = iload;
+            }
             MY_launch_application(); // it is already opt::* aware...
         } else {
             MSG_launch_application(opt::deployment_file.c_str());
@@ -305,6 +317,8 @@ int main(int argc, char* argv[])
         XBT_INFO(",----[ Results ]");
         PR_STATS("Load", loads);
         PR_STATS("Computation", comps);
+        PR_STATS("Comp. iterations", comp_iterations);
+        PR_STATS("X-Comp. iterations", all_comp_iterations);
         PR_STATS("Data send amount", data_send_amount);
         PR_STATS("Data recv amount", data_recv_amount);
         PR_STATS("Data send count", data_send_count);