From 00e921f219ae1e151c87478e981756b2fe36b159 Mon Sep 17 00:00:00 2001 From: elvis Date: Tue, 29 Aug 2023 15:34:45 +0200 Subject: [PATCH] fixed some latex warnings --- report/document.pdf | Bin 429821 -> 430057 bytes report/document.tex | 81 +++++++++++++++++++++++--------------------- 2 files changed, 42 insertions(+), 39 deletions(-) diff --git a/report/document.pdf b/report/document.pdf index 3b3f209cae718a18ee01512b5e41048e32778f89..2d4e9af544fde3bda4b859b93badb84546e5ceb8 100644 GIT binary patch delta 12935 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 delta 12631 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 F{tq{8E(`zw diff --git a/report/document.tex b/report/document.tex index 301645f..7031c00 100644 --- a/report/document.tex +++ b/report/document.tex @@ -15,7 +15,7 @@ \geometry{a4paper} \usepackage[utf8]{inputenc} %% use UTF-8, maybe not needed since 2018 -\usepackage[italian,main=english]{babel} %% language +\usepackage[english]{babel} %% language \pagestyle{headings} @@ -175,8 +175,7 @@ \usetikzlibrary{calc} \usepgfplotslibrary{groupplots} -\usepackage[% -binary-units=true, +\usepackage[ prefixes-as-symbols=false, ]{siunitx} @@ -205,9 +204,9 @@ prefixes-as-symbols=false, \pgfplotstableread[col sep=comma]{#1}{\table} \pgfplotstablegetcolsof{\table} \pgfmathtruncatemacro\numberofcols{\pgfplotsretval-1} - \pgfplotsinvokeforeach{1,...,\numberofcols}{ + \pgfplotsinvokeforeach{1,...,\numberofcols}{ % chktex 11 \pgfplotstablegetcolumnnamebyindex{##1}\of{\table}\to{\colname} - \addplot table [y index=##1] {\table}; + \addplot table [y index=##1] {\table}; % chktex 1 \addlegendentryexpanded{\colname} } \addplot[mark=none, black, samples=2, domain=0:64] {1}; @@ -322,31 +321,31 @@ The structure of the implementation with native C++ threads is as follows: \begin{algorithmic}[1] \Procedure{stdthread}{$Input,Output$} \For{$result \in Input$} - \State $arena = result$ + \State{$arena = result$} \While{$iter>0$} \For{$thread \in ThreadPool$} - \State send a new LAMBDA with appropriate bounds to the threadpool - \EndFor - \State swap $arena$ with $result$ - \State $iter = iter - 1$ - \EndWhile - \State wait for the threadpool to finish - \State append $result$ to $Output$ - \EndFor - \EndProcedure + \State{send a new LAMBDA with appropriate bounds to the threadpool} + \EndFor{} + \State{swap $arena$ with $result$} + \State{$iter = iter - 1$} + \EndWhile{} + \State{wait for the threadpool to finish} + \State{append $result$ to $Output$} + \EndFor{} + \EndProcedure{} \end{algorithmic} \begin{algorithmic}[1] - \Procedure{lambda}{$l, \Delta$}\Comment \textit{$l$ is the index of block of rows, $\Delta$ is the number of rows} + \Procedure{lambda}{$l, \Delta$}\Comment{\textit{$l$ is the index of block of rows, $\Delta$ is the number of rows}} \For{$x \in \{l \cdot \Delta, \ldots, (l+1) \cdot \Delta - 1\}$} \For{$y \in \{0, \ldots, Columns\}$} \If{$(x, y)$ not in the border} - \State calculate the neighborhood of $(x, y)$ - \State $arena[x][y] = Stencil(neighborhood)$ - \EndIf - \EndFor - \EndFor - \EndProcedure + \State{calculate the neighborhood of $(x, y)$} + \State{$arena[x][y] = Stencil(neighborhood)$} + \EndIf{} + \EndFor{} + \EndFor{} + \EndProcedure{} \end{algorithmic} \end{algorithm} @@ -364,30 +363,31 @@ Since it is required for all jobs to finish, a condition variable is used to wak The structure of the implementation using the FastFlow is similar to the one with native threads. Since the \texttt{Stencil} class is a subclass of \texttt{ff\_Map}, the method used for the execution is \texttt{parallel\_for}. -A custom emitter and collector would not have been faster and so the simpler approach of inheriting the methods from \texttt{ff\_Map} was chosen. +A custom emitter and collector would not have been significantly faster and so the simpler approach of inheriting the methods from \texttt{ff\_Map} was chosen. +A custom emitter would have had to split the range in the same number of blocks as number of workers and the custom collector would have had to function as a barrier for all workers. \begin{algorithm}[H] \begin{algorithmic}[1] \Procedure{fastflow}{$Task$} - \State $arena = Task$ + \State{$arena = Task$} \While{$iter>0$} - \State \texttt{parallel\_for} with LAMBDA as the function to execute - \State swap $arena$ with $Task$ - \State $iter = iter - 1$ - \EndWhile - \State return $Task$ - \EndProcedure + \State{\texttt{parallel\_for} with LAMBDA as the function to execute} + \State{swap $arena$ with $Task$} + \State{$iter = iter - 1$} + \EndWhile{} + \State{return $Task$} + \EndProcedure{} \end{algorithmic} \begin{algorithmic}[1] \Procedure{lambda}{$x$} \For{$y \in \{0, \ldots, Columns\}$} - \If {$(x, y)$ not in the border} - \State calculate the neighborhood of $(x, y)$ - \State $arena[x][y] = Stencil(neighborhood)$ - \EndIf - \EndFor - \EndProcedure + \If{$(x, y)$ not in the border} + \State{calculate the neighborhood of $(x, y)$} + \State{$arena[x][y] = Stencil(neighborhood)$} + \EndIf{} + \EndFor{} + \EndProcedure{} \end{algorithmic} \end{algorithm} @@ -407,11 +407,14 @@ Since and the value of $T_{\texttt{Reader}} + T_{\texttt{Writer}}$ is known on average then the values speedup, scalability and efficiency are calculated as follows +\begingroup +\addtolength{\jot}{1em} \begin{align*} - \text{Speedup}(n) &= \frac{T_{\text{seq}}}{T_{\text{par}}(n) - (T_{\texttt{Reader}} + T_{\texttt{Writer}})} \\ + \text{Speedup}(n) &= \frac{T_{\text{seq}} - (T_{\texttt{Reader}} + T_{\texttt{Writer}})}{T_{\text{par}}(n) - (T_{\texttt{Reader}} + T_{\texttt{Writer}})} \\ \text{Scalability}(n) &= \frac{T_{\text{par}}(1) - (T_{\texttt{Reader}} + T_{\texttt{Writer}})}{T_{\text{par}}(n) - (T_{\texttt{Reader}} + T_{\texttt{Writer}})} \\ - \text{Efficiency}(n) &= \frac{\text{Speedup}(n)}{n} \\ + \text{Efficiency}(n) &= \frac{\text{Speedup}(n)}{n} \end{align*} +\endgroup For very small matrices the efficiency, the speedup and the scalability is very poor for both versions. For larger examples instead a significant speedup is seen, but the implementation using native threads is slightly faster. @@ -457,7 +460,7 @@ the fastflow has a peek of speedup and scalability when using 4 workers in the s \end{center} The file \texttt{random400x2500} % chktex 29 -performs best with 16 workers in the Fastflow implementation and slightly better at 64 workers compared to 32 workers in terms of speedup and scalability but has a significant drop in efficiency from $0.361$ to $0.184$. The relationship between number of workers and speedup is close to linear up to 8 workers. +performs best with 16 workers in the Fastflow implementation and in the native thread implementation performs slightly better at 64 workers compared to 32 workers in terms of speedup and scalability, but has a significant drop in efficiency from $0.361$ to $0.184$. The relationship between number of workers and speedup is close to linear up to 8 workers. \begin{center} \begin{tikzpicture}