diff --git a/Inst_eddies/Documentation_texfol/Graphiques/.gitignore b/Inst_eddies/Documentation_texfol/Graphiques/.gitignore index b1683e08f5b3653136161d42648e0ff7ee4faeb0..93c2f44584f7dbec58273f1abf58fe73147ee038 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 0000000000000000000000000000000000000000..e613bbac98f939cf75006c29bf3d89d2ac448655 --- /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 0000000000000000000000000000000000000000..f43274c1c0de9321a9045081d7bfe320bf2d9058 --- /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 0000000000000000000000000000000000000000..5c0599093e8045ef0827948b1bed4908b1987a3a --- /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 48c1dfc0a0fe4f22961a4c883a0e6b0ca3d8162d..036f3eaec8ab307f5d12d5d33b74d836f40ddc93 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