add mandelbrot

This commit is contained in:
Mylloon 2024-04-25 02:13:56 +02:00
parent 2e69f11b38
commit b82c3b3605
Signed by: Anri
GPG key ID: A82D63DFF8D1317F

View file

@ -62,7 +62,7 @@
\section{Descriptions} \section{Descriptions}
Description des différents algorithmes implémentés. Description des différents algorithmes implémentés.
\subsection{Naïf} \subsection{Séquentiel}
Cette implémentation naïve correspond au mode \texttt{serial} Cette implémentation naïve correspond au mode \texttt{serial}
de \texttt{quicksort.c}. Elle lance les tâches sans threads. de \texttt{quicksort.c}. Elle lance les tâches sans threads.
@ -92,37 +92,64 @@ aléatoire de la pile.
\end{itemize} \end{itemize}
\section{Statistiques} \section{Statistiques}
Chaque implémentation a été testée avec l'optimisation de niveau 2
de \texttt{gcc}, sur 2 machines.
Le programme utilisé pour tester les implémentations est le \texttt{quicksort}
fourni.
\def\mone{\textit{Machine 1}} % fixe \def\mone{\textit{Machine 1}} % fixe
\def\mtwo{\textit{Machine 2}} % portable \def\mtwo{\textit{Machine 2}} % portable
\def\bone{\textit{Benchmark quicksort}}
\def\btwo{\textit{Benchmark mandelbrot}}
Chaque implémentation a été testée avec l'optimisation de niveau 2
de \texttt{gcc}, sur 2 machines.
\begin{enumerate} \begin{enumerate}
\item \textbf{12 \coeurs} pour la \mone. \item \textbf{12 \coeurs} pour la \mone.
\item \textbf{8 \coeurs} pour la \mtwo. \item \textbf{8 \coeurs} pour la \mtwo.
\end{enumerate} \end{enumerate}
\subsection{Naïf}\label{stats:naive} Le programme utilisé pour tester les implémentations sont le quicksort fourni
et une adaptation de mandelbrot fournis dans le TP10.
\subsection{Séquentiel}\label{stats:seq}
\begin{description} \begin{description}
\item[\bone] \hspace{1em}
\begin{description}
\item[\mone] Le programme a été lancé \textbf{100 fois}. \item[\mone] Le programme a été lancé \textbf{100 fois}.
Le temps moyen d'exécution a été de \textbf{0,855 secs} Le temps moyen d'exécution a été de \textbf{0,855 secs}
\item[\mtwo] Le programme a été lancé \textbf{100 fois}. \item[\mtwo] Le programme a été lancé \textbf{100 fois}.
Le temps moyen d'exécution a été de \textbf{1,139 secs} Le temps moyen d'exécution a été de \textbf{1,139 secs}
\end{description}
\item[\btwo] \hspace{1em}
\begin{description}
\item[\mone] Le programme a été lancé \textbf{10 fois}.
Le temps moyen d'exécution a été de \textbf{3,733 secs}
\item[\mtwo] Le programme a été lancé \textbf{10 fois}.
Le temps moyen d'exécution a été de \textbf{6,020 secs}
\end{description}
\end{description} \end{description}
Ce programme ne bénéficie pas de toute la puissance de la machine. Ce programme ne bénéficie pas de toute la puissance de la machine.
\subsection{Threads sans gestion}\label{stats:th_ges} \subsection{Threads sans gestion}\label{stats:th_ges}
\begin{description} \begin{description}
\item[\bone] \hspace{1em}
\begin{description}
\item[\mone] Le programme a été lancé \textbf{10 fois}. \item[\mone] Le programme a été lancé \textbf{10 fois}.
Le temps moyen d'exécution a été de \textbf{35,985 secs} Le temps moyen d'exécution a été de \textbf{35,985 secs}
\item[\mtwo] Le programme a été lancé \textbf{10 fois}. \item[\mtwo] Le programme a été lancé \textbf{10 fois}.
Le temps moyen d'exécution a été de \textbf{18,854 secs} Le temps moyen d'exécution a été de \textbf{18,854 secs}
\end{description}
\item[\btwo] \hspace{1em}
\begin{description}
\item[\mone] Le programme a été lancé \textbf{10 fois}.
Le temps moyen d'exécution a été de \textbf{66,078 secs}
\item[\mtwo] Le programme a été lancé \textbf{10 fois}.
Le temps moyen d'exécution a été de \textbf{41,060 secs}
\end{description}
\end{description} \end{description}
La création des threads pour chaque tâche créer un énorme La création des threads pour chaque tâche créer un énorme
@ -136,10 +163,21 @@ et donc il faut gérer les tâches et décider de quelle tâche va sur quel thre
\subsection{Threads avec pile}\label{stats:stack} \subsection{Threads avec pile}\label{stats:stack}
\begin{description} \begin{description}
\item[\bone] \hspace{1em}
\begin{description}
\item[\mone] Le programme a été lancé \textbf{100 fois}. \item[\mone] Le programme a été lancé \textbf{100 fois}.
Le temps moyen d'exécution a été de \textbf{0,258 secs} Le temps moyen d'exécution a été de \textbf{0,258 secs}
\item[\mtwo] Le programme a été lancé \textbf{100 fois}. \item[\mtwo] Le programme a été lancé \textbf{100 fois}.
Le temps moyen d'exécution a été de \textbf{0,356 secs} Le temps moyen d'exécution a été de \textbf{0,356 secs}
\end{description}
\item[\btwo] \hspace{1em}
\begin{description}
\item[\mone] Le programme a été lancé \textbf{100 fois}.
Le temps moyen d'exécution a été de \textbf{0,787 secs}
\item[\mtwo] Le programme a été lancé \textbf{100 fois}.
Le temps moyen d'exécution a été de \textbf{1,858 secs}
\end{description}
\end{description} \end{description}
Le lancement de nouveau thread étant limité, les performances Le lancement de nouveau thread étant limité, les performances
@ -147,14 +185,25 @@ sont grandement améliorées par rapport aux tests de \docref{stats:th_ges}.
Également grâce au fait que désormais on utilise les \coeurs~de notre CPU, Également grâce au fait que désormais on utilise les \coeurs~de notre CPU,
les performances sont aussi améliorées par rapport aux tests de les performances sont aussi améliorées par rapport aux tests de
\docref{stats:naive}. \docref{stats:seq}.
\subsubsection{Sélection aléatoire de tâche} \subsubsection{Sélection aléatoire de tâche}
\begin{description} \begin{description}
\item[\bone] \hspace{1em}
\begin{description}
\item[\mone] Le programme a été lancé \textbf{100 fois}. \item[\mone] Le programme a été lancé \textbf{100 fois}.
Le temps moyen d'exécution a été de \textbf{0,390 secs} Le temps moyen d'exécution a été de \textbf{0,390 secs}
\item[\mtwo] Le programme a été lancé \textbf{100 fois}. \item[\mtwo] Le programme a été lancé \textbf{100 fois}.
Le temps moyen d'exécution a été de \textbf{0,438 secs} Le temps moyen d'exécution a été de \textbf{0,438 secs}
\end{description}
\item[\btwo] \hspace{1em}
\begin{description}
\item[\mone] Le programme a été lancé \textbf{100 fois}.
Le temps moyen d'exécution a été de \textbf{0,438 secs}
\item[\mtwo] Le programme a été lancé \textbf{100 fois}.
Le temps moyen d'exécution a été de \textbf{1,887 secs}
\end{description}
\end{description} \end{description}
Cette implémentation est identique à \docref{stats:stack}, à l'exception que Cette implémentation est identique à \docref{stats:stack}, à l'exception que
@ -165,10 +214,21 @@ Cette façon de faire réduit les performances.
\subsection{Répartition par work-stealing} \subsection{Répartition par work-stealing}
\begin{description} \begin{description}
\item[\bone] \hspace{1em}
\begin{description}
\item[\mone] Le programme a été lancé \textbf{100 fois}. \item[\mone] Le programme a été lancé \textbf{100 fois}.
Le temps moyen d'exécution a été de \textbf{0,229 secs} Le temps moyen d'exécution a été de \textbf{0,229 secs}
\item[\mtwo] Le programme a été lancé \textbf{100 fois}. \item[\mtwo] Le programme a été lancé \textbf{100 fois}.
Le temps moyen d'exécution a été de \textbf{0,397 secs} Le temps moyen d'exécution a été de \textbf{0,308 secs}
\end{description}
\item[\btwo] \hspace{1em}
\begin{description}
\item[\mone] Le programme a été lancé \textbf{100 fois}.
Le temps moyen d'exécution a été de \textbf{0,447 secs}
\item[\mtwo] Le programme a été lancé \textbf{100 fois}.
Le temps moyen d'exécution a été de \textbf{1,131 secs}
\end{description}
\end{description} \end{description}
Dans cet implémentation, on n'utilises plus une pile mais un deque de tâches. Dans cet implémentation, on n'utilises plus une pile mais un deque de tâches.