From cb2a139b4f798c1b82017cdd77337c12bd2fcf01 Mon Sep 17 00:00:00 2001 From: elvis Date: Tue, 29 Aug 2023 17:26:23 +0200 Subject: [PATCH] added reasons for current implementation --- report/document.pdf | Bin 430057 -> 430599 bytes report/document.tex | 10 +++++++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/report/document.pdf b/report/document.pdf index 2d4e9af544fde3bda4b859b93badb84546e5ceb8..1f5e94905540aa5e2bd3d17ede96d864841d89a6 100644 GIT binary patch delta 12495 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 K&`7JuApIX=n`f&4 diff --git a/report/document.tex b/report/document.tex index 7031c00..6faf77e 100644 --- a/report/document.tex +++ b/report/document.tex @@ -274,6 +274,9 @@ prefixes-as-symbols=false, %% - - - - - - - - - - - - - - - - - %% +\thispagestyle{empty} +\addtocounter{page}{-1} + \tableofcontents \newpage @@ -306,11 +309,16 @@ The class \texttt{Stencil} holds both the parallel implementation using the Fast The class \texttt{Reader} reads a binary file composed of 4 bytes representing the number of rows, 4 bytes representing the number of columns and then the raw matrix data. Each element is a \texttt{char} in all the test cases. The result is stored in the class \texttt{Task} which will be passed to the next node. If instead the operator \texttt{()} is called, only the data will be returned as a pointer. -The \texttt{Task} class can support matrices of different element type rather than \texttt{char}. +The \texttt{Task} class can support matrices of different element type other than \texttt{char}. The \texttt{Writer} instead writes to disk the task to the same folder, overwriting existing files if present. The \texttt{Stencil} class divides the matrix in roughly equal parts and distributes them to other workers. +Since the ammount of work for simple stencil functions is roughly equal between blocks of columns, the matrix is split into equal blocks and each block is processed by a different worker. +The result is stored in a copy of the original matrix and the pointers swapped at the end of each iteration. +Since a neighbourhood of columns is needed for the next iteration, the simplest solution of waiting for all workers has been implemented. +A countiguous block of columns reduces the probability of false sharing. +The loops of the workers thread cannot be vectorized by the compiler since the stencil function may be calling library functions or use conditional statements. %% - - - - - - - - - - - - - - - - - - %% \subsection{Native C++ Threads}