| 
																	
																	
																	
																 | 
																@ -0,0 +1,117 @@ | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																\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 1 - Macierze OMP} | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																Celem zadania jest obliczenie iloczynu dwóch macierzy prostokątnych na konkretnej liczbie wątków (dane te podane jako parametry programu). Istotą problemu są trzy pętle, których złożoność obliczeniowa jest O($n^3$) | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																\begin{lstlisting} | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																	#pragma omp parallel for default(none) shared(A, B, C) firstprivate(rozmiar)private(i, j) | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																	for (i=0; i<rozmiar; ++i)  | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																		for (j=0; j<rozmiar; ++j) | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																		{ | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																			C[i][j] = 0; | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																			for (long k=0; k<rozmiar; ++k) | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																				C[i][j] += A[i][k]*B[k][j]; | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																		}	 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																\end{lstlisting} | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																Zmienna \textit{i} ma za zadanie przechodzić po wierszach macierzy wyjściowej, a zmienna \textit{j} - jej kolumnach. Za przemnażanie wszystkich elementów z wektora macierzy A (po wierszach) i wektora macierzy B (po kolumnach) odpowiedzialna jest wewnętrzna pętla. | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																Poniższa dyrektywa: | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																\begin{lstlisting} | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																#pragma omp parallel for default(shared)   | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																\end{lstlisting} | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																oznacza, że wszystkie zmienne w przetwarzanym równolegle bloku kodu będą zmiennymi współdzielonymi, z wyjątkiem liczników pętli | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																Natomiast dyrektywa | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																\begin{lstlisting} | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																#pragma omp parallel for default(none) shared(A, B, C) | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																firstprivate(rozmiar)private(i, j) | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																\end{lstlisting} | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																oznacza, że współdzielone będą wskaźniki tablic (A,C,B), zmienna   \textit{rozmiar} jest prywatna dla każdego wątki i gdy jest tworzona jest kopią zmiennej globalnej. Zmienne  \textit{i} i \textit{j} są prywatne. | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																Program został skompilowany i uruchomiony z następującymi parametrami: macierz 1500x1500, ilość wątków 1-15, dla każdego wątku 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 wątków. Można na nim zauważać że wzrost przyspieszenia uzyskuje się tylko do momentu gdy liczba wątków jest mniejsza lub równa 4. Spowodowane jest to tym, że komputer na którym obliczane było zadanie posiada procesor o 4 rdzeniach oraz wykorzystuje technologię HyperThreading która pozwala na prace w sumie ośmiu wątków. Rysunek 2. przedstawia wykres zależności czasu obliczeń od liczby wątków.  Można zobaczyć na nim, że powyżej 4 wątków czas obliczeń nie ulega już skróceniu.  | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																Z powyższych obserwacji wynika, że wykorzystanie większej liczby wątków pozwala znacząco skrócić czas wykonania programu. Jednak zwiększanie liczby wątków ponad to co oferuje procesor nie powoduje wzrostu wydajności i wymusza współbieżne liczenie. | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																\begin{figure}[!h] | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																	\centering | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																  \includegraphics[width=0.7\textwidth]{dane/przyspieszenie.jpg} | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																  \caption{Wykres zależności przyspieszenia obliczeń od liczby wykorzystanych wątków} | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																\end{figure} | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																\begin{figure}[!h] | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																	\centering | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																  \includegraphics[width=0.7\textwidth]{dane/czas.jpg} | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																  \caption{Wykres zależności czasu obliczeń od liczby wykorzystanych wątków} | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																\end{figure} | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																\end{document} |