|
|
- \documentclass[a4paper,12pt]{article}
- \usepackage{amsmath}
- \usepackage{amssymb}
- \usepackage[polish]{babel}
- \usepackage{polski}
- \usepackage[utf8]{inputenc}
- \usepackage{indentfirst}
- \usepackage{geometry}
- \usepackage{array}
- \usepackage[pdftex]{color,graphicx}
- \usepackage{subfigure}
- \usepackage{afterpage}
- \usepackage{setspace}
- \usepackage{color}
- \usepackage{wrapfig}
- \usepackage{listings}
- \usepackage{datetime}
-
- \renewcommand{\onehalfspacing}{\setstretch{1.6}}
-
- \geometry{tmargin=2.5cm,bmargin=2.5cm,lmargin=2.5cm,rmargin=2.5cm}
- \setlength{\parindent}{1cm}
- \setlength{\parskip}{0mm}
-
- \newenvironment{lista}{
- \begin{itemize}
- \setlength{\itemsep}{1pt}
- \setlength{\parskip}{0pt}
- \setlength{\parsep}{0pt}
- }{\end{itemize}}
-
- \newcommand{\linia}{\rule{\linewidth}{0.4mm}}
-
- \definecolor{lbcolor}{rgb}{0.95,0.95,0.95}
- \lstset{
- backgroundcolor=\color{lbcolor},
- tabsize=4,
- language=C++,
- captionpos=b,
- tabsize=3,
- frame=lines,
- numbers=left,
- numberstyle=\tiny,
- numbersep=5pt,
- breaklines=true,
- showstringspaces=false,
- basicstyle=\footnotesize,
- identifierstyle=\color{magenta},
- keywordstyle=\color[rgb]{0,0,1},
- commentstyle=\color{Darkgreen},
- stringstyle=\color{red}
- }
-
- \begin{document}
-
- \noindent
- \begin{tabular}{|c|p{11cm}|c|} \hline
- Grupa 1 & Piotr Dergun, Dominik Waśko & \ddmmyyyydate\today \tabularnewline
- \hline
- \end{tabular}
-
-
- \section*{Zadanie 2 - Mnożenie macierzy MPI}
-
- Celem zadania jest obliczenie iloczynu dwóch macierzy prostokątnych o wymiarach n x n, na określonej liczbie procesów p (dane te podane jako parametry programu). Posługując się zapisem matematycznym zadanie można zapisać jako równanie: A*B = C. Kluczowy jest odpowiedni podział obliczeń pomiędzy procesami. Przyjęto, że gdy n/p jest liczbą całkowitą każdy proces oblicza n/p kolumn macierzy C. W przeciwnym wypadku jeden z procesów oblicza n modulo p kolumn macierzy C, a pozostałe procesy otrzymują po [n/p] kolumn macierzy C.
-
- Zadanie zostało uruchomione na klastrze składającym się z 3 komputerów MacPro 3,1 z dwoma procesorami Xeon E5462 oraz z 3 komputerów iMac14,2 z procesorem i5-4570. Taka konfiguracja daje w sumie 30 rdzeni bez Hyper Threading. Na potrzeby tego zadania wykorzystano jednak tylko 24, ponieważ pozostałe rdzenie były wykorzystywane do innych obliczeń. Program został skompilowany i uruchomiony z następującymi parametrami: macierz 2000x2000, ilość procesów 1-24, dla każdego przypadku wykonano 10 powtórzeń. Z otrzymanych wyników obliczono przyspieszenie oraz średni czas liczenia macierzy.
-
- Rysunek 1 przedstawia wykres zależności przyspieszenia od ilości procesów. Dla pewnych wartości procesów można zauważyć nierównomierne przyspieszanie, tzw. ,,schodki". Jest to spowodowane tym, że wraz z zwiększaniem liści rdzeni dokładane są kolejne maszyny, co wymaga komunikacji sieciowej, która powoduje kilkudziesięcio milisekundowe opóźnienia. Rysunek 2 przedstawia wykres zależności czasu obliczeń od liczby procesów.
-
-
- Z powyższych obserwacji wynika, że wykorzystanie większej liczby rdzeni - zwiększając tym samym liczbę procesów- pozwala znacząco skrócić czas obliczeń. Pomimo, że konieczność komunikacji sieciowej spowalnia działanie programu wzrost przyspieszenia nadal jest duży.
-
-
-
-
- \begin{figure}[!h]
- \centering
- \includegraphics[width=0.7\textwidth]{dane/przyspieszenie.jpg}
- \caption{Wykres zależności przyspieszenia obliczeń od liczby procesów}
- \end{figure}
-
-
- \begin{figure}[!h]
- \centering
- \includegraphics[width=0.7\textwidth]{dane/czas.jpg}
- \caption{Wykres zależności czasu obliczeń od liczby procesów}
- \end{figure}
-
-
-
- \end{document}
|