From d0f87918a88d5a0d764c4536d51221c16bfdf55e Mon Sep 17 00:00:00 2001
From: Lionel GUEZ <guez@lmd.ens.fr>
Date: Wed, 6 Apr 2022 14:48:21 +0200
Subject: [PATCH] Polish

---
 .../Graphiques/.gitignore                     |  1 +
 .../Graphiques/perf_report.csv                | 11 +++++
 .../Graphiques/perf_report_ciclad_17.csv      |  9 ++++
 .../Graphiques/plot_test_output.py            | 42 ++++++++++++++++++
 .../Documentation_texfol/documentation.tex    | 44 +++++++++++++++++--
 5 files changed, 103 insertions(+), 4 deletions(-)
 create mode 100644 Inst_eddies/Documentation_texfol/Graphiques/perf_report.csv
 create mode 100644 Inst_eddies/Documentation_texfol/Graphiques/perf_report_ciclad_17.csv
 create mode 100755 Inst_eddies/Documentation_texfol/Graphiques/plot_test_output.py

diff --git a/Inst_eddies/Documentation_texfol/Graphiques/.gitignore b/Inst_eddies/Documentation_texfol/Graphiques/.gitignore
index b1683e08..93c2f445 100644
--- a/Inst_eddies/Documentation_texfol/Graphiques/.gitignore
+++ b/Inst_eddies/Documentation_texfol/Graphiques/.gitignore
@@ -5,3 +5,4 @@ copy.pdf
 set_all_outerm.pdf
 elapsed_time.pdf
 SHPC.pdf
+plot_test_output.pdf
diff --git a/Inst_eddies/Documentation_texfol/Graphiques/perf_report.csv b/Inst_eddies/Documentation_texfol/Graphiques/perf_report.csv
new file mode 100644
index 00000000..e613bbac
--- /dev/null
+++ b/Inst_eddies/Documentation_texfol/Graphiques/perf_report.csv
@@ -0,0 +1,11 @@
+"Name of test", "elapsed time, shapelib old", "elapsed time, shapelib new"
+,s,s
+name, time_old, time_new
+Medium_mix,181, 394
+Small_mix,45, 215
+Medium_sep,60, 313
+Small_sep,34, 112
+Create_mix,23, 111
+Create_sep,22, 61
+Big_mix,149, 398
+Big_sep,59, 315
diff --git a/Inst_eddies/Documentation_texfol/Graphiques/perf_report_ciclad_17.csv b/Inst_eddies/Documentation_texfol/Graphiques/perf_report_ciclad_17.csv
new file mode 100644
index 00000000..f43274c1
--- /dev/null
+++ b/Inst_eddies/Documentation_texfol/Graphiques/perf_report_ciclad_17.csv
@@ -0,0 +1,9 @@
+Name of test,"elapsed time, in s"
+Medium_mix,711
+Small_mix,377
+Medium_sep,532
+Small_sep,209
+Create_mix,249
+Create_sep,98
+Big_mix,580
+Big_sep,582
diff --git a/Inst_eddies/Documentation_texfol/Graphiques/plot_test_output.py b/Inst_eddies/Documentation_texfol/Graphiques/plot_test_output.py
new file mode 100755
index 00000000..5c059909
--- /dev/null
+++ b/Inst_eddies/Documentation_texfol/Graphiques/plot_test_output.py
@@ -0,0 +1,42 @@
+#!/usr/bin/env python3
+
+import pandas as pd
+import matplotlib.pyplot as plt
+
+def get_size_index(name):
+    for i, s in enumerate(name_prefix):
+        if name.startswith(s): break
+        
+    return pd.Series([i, s.lower()])
+
+perf_report = pd.read_csv("perf_report.csv", skiprows = 2,
+                          skipinitialspace = True)
+perf_report["time_ciclad_17"] = pd.read_csv("perf_report_ciclad_17.csv")\
+                ["elapsed time, in s"]
+name_prefix = ["Create", "Small", "Medium", "Big"]
+mix = perf_report["name"].map(lambda name:name.endswith("mix"))
+perf_report[["size_index", "size_name"]] = perf_report["name"]\
+    .apply(get_size_index)
+fig, ax = plt.subplots()
+perf_report[~mix].sort_values(by = "size_index")\
+                 .plot(x = "size_name", y = "time_old",
+                       label = "frontal separated old", ax = ax)
+perf_report[mix].sort_values(by = "size_index")\
+                .plot(x = "size_name", y = "time_old",
+                      label = "frontal mixed old", ax = ax)
+perf_report[~mix].sort_values(by = "size_index")\
+                 .plot(x = "size_name", y = "time_new",
+                       label = "frontal separated new", ax = ax)
+perf_report[mix].sort_values(by = "size_index")\
+                .plot(x = "size_name", y = "time_new",
+                      label = "frontal mixed new", ax = ax)
+perf_report[~mix].sort_values(by = "size_index")\
+                 .plot(x = "size_name", y = "time_ciclad_17",
+                       label = "ciclad 17 separated", ax = ax)
+perf_report[mix].sort_values(by = "size_index")\
+                .plot(x = "size_name", y = "time_ciclad_17",
+                      label = "ciclad 17 mixed", ax = ax)
+plt.ylabel("elapsed time, in s")
+plt.savefig("plot_test_output.pdf")
+##plt.show()
+
diff --git a/Inst_eddies/Documentation_texfol/documentation.tex b/Inst_eddies/Documentation_texfol/documentation.tex
index 48c1dfc0..036f3eae 100644
--- a/Inst_eddies/Documentation_texfol/documentation.tex
+++ b/Inst_eddies/Documentation_texfol/documentation.tex
@@ -1240,8 +1240,8 @@ l'exécutable Fortran. Cf. figure \ref{fig:elapsed_time}.
   \includegraphics[width=\textwidth]{elapsed_time}
   \caption[Temps écoulé]{Test de performance de
     \texttt{inst\_eddies.py}, temps écoulé par date traitée. Versions
-    0.17 et ba6ab118 sur Ciclad, ifort 19, release build. Domaine
-    global, 59 dates (janvier et février).}
+    0.17 et ba6ab118 sur Ciclad, AMD Opteron, ifort 19, release
+    build. Domaine global, 59 dates (janvier et février).}
   \label{fig:elapsed_time}
 \end{figure}
 Avec la version ba6ab118, bizarrement on ne gagne presque rien. \`A la
@@ -1252,7 +1252,9 @@ pour une période plus longue ne le confirme pas : figure
 \begin{figure}[htbp]
   \centering
   \includegraphics[width=\textwidth]{Inst_eddies_9}
-  \caption{Temps d'exécution pour l'expérience Inst\_eddies\_9.}
+  \caption[Temps d'exécution pour l'expérience Inst\_eddies\_9]{Temps
+    d'exécution pour l'expérience Inst\_eddies\_9. Sur Ciclad, AMD
+    Opteron.}
   \label{fig:Inst_eddies_9}
 \end{figure}
 En insérant des appels à \verb+cpu_time+ dans le code Fortran, j'ai
@@ -1268,7 +1270,7 @@ presque pas entre ces deux cas. Le temps des appels à
 \verb+write_eddy+ est à peu près égal à la partie CPU système
 rapportée par la commande time. Le temps du reste du code est à peu
 près égal à la partie CPU user rapportée par la commande time. Exemple
-de temps mesurés, domaine global, en interactif :
+de temps mesurés, domaine global, sur ciclad en interactif :
 \begin{itemize}
 \item 8 s system time, appels à \verb+write_eddy+, dans un SHPC
   contenant une seule date
@@ -1282,6 +1284,40 @@ n'est pas mesuré par gprof. On ne peut donc pas cerner plus
 précisément avec gprof dans quels appels sous \verb+write_eddy+ passe
 le temps système.
 
+Les tests dans \verb+test_output.json+ montrent, sur ciclad :
+\begin{itemize}
+\item pas de diminution systématique du temps écoulé lorsqu'on passe
+  de mixed vrai à faux ;
+\item augmentation du temps écoulé lorsqu'on passe de la création d'un
+  SHPC à l'ajout à un petit SHPC ;
+\item augmentation du temps écoulé lorsqu'on passe de l'ajout à un
+  petit SHPC à l'ajout à un SHPC de taille moyenne ;
+\item pas d'augmentation systématique du temps écoulé lorsqu'on passe
+  de l'ajout à un SHPC de taille moyenne à l'ajout à un SHPC de grande
+  taille.
+\end{itemize}
+Cf. figure \ref{fig:plot_test_output}.
+\begin{figure}[htbp]
+  \centering
+  \includegraphics[width=\textwidth]{plot_test_output}
+  \caption[Tests dans test\_output.json]{Tests dans test\_output.json,
+    sur Ciclad en interactif et sur un noeud de calcul, ciclad 17. \og
+    old\fg{} : avec la vieille bibliothèque shapelib installée avec la
+    distribution sur ciclad. \og new\fg{} : avec la dernière version
+    de la bibliothèque shapelib. Il y a un facteur 32 entre le plus
+    petit et le plus grand temps.}
+  \label{fig:plot_test_output}
+\end{figure}
+Sur vierne, jean-zay et spirit1, les huit tests prennent chacun entre
+2 et 3 s. Sur ces trois machines, la bibliothèque shp utilisée est
+\verb+libshp.so.2.1.0+, tandis que sur ciclad c'est
+\verb+libshp.so.1.0.1+. Sur jean-zay, c'est moi qui ai installé shp :
+cf. \href{/home/guez/Vierne_documents/Informatique_fonctionnement/User_install_texfol/user_install.pdf}{installation
+  de Shapelib}. J'ai donc fait le test d'installer la dernière version
+de shapelib sur Ciclad et de recompiler avec cette dernière
+version. Il n'y a pas de réduction des temps. Cf. figure
+\ref{fig:plot_test_output}.
+
 \section{Améliorations, prolongements}
 
 Idée de chercher les contours extérieurs dans un rayon de 10 points
-- 
GitLab