From d3b6a0aacc12b4caadb80db0782b2fb7bf23e4f7 Mon Sep 17 00:00:00 2001 From: Krzysztof Rudnicki Date: Mon, 9 Dec 2024 21:41:50 +0100 Subject: [PATCH] report: added procesy description and results --- report/first_part/main.pdf | Bin 38123 -> 46486 bytes report/first_part/main.tex | 53 +++++++++++++++++++++++++++++++++++++ 2 files changed, 53 insertions(+) diff --git a/report/first_part/main.pdf b/report/first_part/main.pdf index 06d0eabfe3c3190a66dc8933ff89b870f57b7655..361fee56443f1fac2ce898eec89ff39816ce852f 100644 GIT binary patch delta 29646 zcmZs>W3VROvMt=pwr$%sdfB#Zv!7nJZQHhO+qUiR-TS*I?%6l?kBX>@$f_B0WaZ3} znd71iIQas&77+=+#KpzN&kybF;$&)Q3+=Jqq$M4L!vWj-D>QGQ-1yU-FL7=f#kZX+fu4pZnfMs@{u-9BrO(rbau&1cne-jL^)T|d zF>`hjvjhNmZ2JBrY)iI@S}$GSnU)M7SFT-U>2@x4j64ABA&3^eiDVFk`3YXc(;tV6 z^s_S+_NbaNW5$cz`MXp~3hvJ|dj#dPvL~s&iswTq1CvI4?bO=V`g41SM?--FX3PS}|Y)F8?Zyo9UF}tE(zi>YJD+T~K+7I}p7B>TJn;o)!q|BB7sb<;N zo0U7jNW;FLB%kRgS`BXIafZ3BxD!M9T&sr#az8if`H0j@>lk2e`v5LI(J1EC7f##N z7V+%|u|@QO!7#w2lnoBSghs8xJv#}99h!+c@b<&_=$&wUCF(RjSbGhX-lJE7^YTlEjZ?Y!)W9 BE*6dn!| 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 WL=fxO$VCH_y&VCSprE<|lIlMlWxrei diff --git a/report/first_part/main.tex b/report/first_part/main.tex index 0bd9e26b..b1cba23f 100644 --- a/report/first_part/main.tex +++ b/report/first_part/main.tex @@ -87,5 +87,58 @@ metody zrównoleglenia bez zmiany podstawowego kodu Richardsona \section{Zrównoleglenie} +Wykorzystaliśmy 3 metody zrównoleglenia: +\begin{enumerate} + \item Tablice rozproszone + \item Wątki + \item Procesy +\end{enumerate} +\subsection{Procesy} +Aby wykonać obliczenia na wielu rdzeniach procesora \textbf{jednocześnie} wykorzystujemy model w którym różne +frakcje danych są przetwarzane przez oddzielne procesy. Dzięki temu dla dużych zbiorów danych możemy +znacznie zwiększyć wydajnośc obliczeń \\ +W tym celu wykorzystujemy klasę \textbf{multiprocessing.Pool} z biblioteki \textbf{multiprocessing}. +Wykorzystujemy ją do stworzenia puli procesów które potem niezależnie wykonują funkcje na różnych frakcjach +danych. +\paragraph{Funkcje} +Procesy wykorzystujemy do: +\begin{enumerate} + \item Obliczenia iloczynu skalarnego - Metoda $dot\_product$ wykorzystuje pulę procesów do obliczenia iloczynów par elementów dwóch wektorów, a następnie sumuje te wyniki. Zrównoleglenie tej operacji jest korzystne, gdy mamy do czynienia z bardzo długimi wektorami. + \item Mnożenia macierzy przez wektor - $matrix\_vector\_multiply$, każdy wiersz macierzy jest mnożony przez wektor w osobnym procesie. Dzięki temu każde takie mnożenie może być przeprowadzane równolegle, co jest szczególnie efektywne dla macierzy o dużym rozmiarze. + \item Obliczenia normy wektora - Procesy są używane do obliczenia kwadratów poszczególnych elementów wektora, a następnie sumowanie tych wartości (także w procesach) umożliwia obliczenie pierwiastka kwadratowego z ich sumy, co daje normę wektora. + \item Działania na wektorach i macierzach - Działania takie jak dodawanie i odejmowanie wektorów, dzielenie wektora przez skalar, czy mnożenie macierzy przez skalar, są przeprowadzane w segmentach, gdzie każdy segment jest przetwarzany przez osobny proces. +\end{enumerate} +\paragraph{Wyzwania} +\begin{itemize} + \item Zarządzanie procesami jest kosztowne - tworzenie i zarządzanie procesami jest droższe od wątków ze względu na większy narzut systemowy. + \item Wymiana danych między procesami - wymaga serializacji i deserializacji danych, co może wprowadzić dodatkowe opóźnienia. + \item Brak korzyści dla małych danych - w przypadku małych macierzy, gdzie rozmiar nie przekracza 5 tysięcy x 5 tysięcy elementów, zarządzanie procesami i koszty komunikacji międzyprocesowej mogą przewyższać korzyści wynikające z równoległego przetwarzania, +\end{itemize} +\subsection{Wyniki} +\begin{table}[h!] + \centering + \begin{tabular}{|l|l|l|l|l|} + \hline + \textbf{Wielkość} & \textbf{Sekwencyjnie [s]} & \textbf{Procesy [s]} & \textbf{Wątki [s]} & \textbf{Tablice [s]} \\ \hline + 2 & 7.784e-05 & 2.896e+00 & 9.772e-03 & 8.817e-02 \\ \hline + 5 & 1.746e-04 & 3.897e+00 & 1.960e-02 & 9.443e-02 \\ \hline + 10 & 6.769e-04 & 7.073e+00 & 2.895e-02 & 1.674e-01 \\ \hline + 50 & 2.735e-02 & 2.153e+01 & 1.059e-01 & 4.899e-01 \\ \hline + 100 & 1.195e-01 & 2.167e+01 & 2.067e-01 & 6.921e-01 \\ \hline + 300 & 7.863e-01 & 2.363e+01 & 9.558e-01 & 7.461e-01 \\ \hline + 500 & 2.206e+00 & 2.657e+01 & 2.494e+00 & 8.521e-01 \\ \hline + 750 & 4.785e+00 & 2.939e+01 & 5.520e+00 & 9.408e-01 \\ \hline + 1000 & 8.689e+00 & 3.259e+01 & 9.672e+00 & 1.201e+00 \\ \hline + 5000 & 2.170e+02 & 9.077e+01 & 2.402e+02 & 1.368e+01 \\ \hline + 10000 & 8.615e+02 & 2.378e+02 & 9.705e+02 & 4.643e+01 \\ \hline + \end{tabular} + \caption{Wyniki dla różnych zrównolegleń (procesy, wątki i tablice rozproszone)} + \label{tab:test_results_full} +\end{table} + + + + + \end{document}