początek pisania dokumentacji
This commit is contained in:
@@ -55,28 +55,31 @@
|
||||
|
||||
\noindent
|
||||
\begin{tabular}{|c|p{11cm}|c|} \hline
|
||||
Grupa 3 & Adam Nowak & \ddmmyyyydate\today \tabularnewline
|
||||
Grupa 1? & Piotr Dergun, Dominik Waśko & \ddmmyyyydate\today \tabularnewline
|
||||
\hline
|
||||
\end{tabular}
|
||||
|
||||
|
||||
\section*{Zadanie 1 - Macierze OMP}
|
||||
|
||||
Opis w kilku zdaniach jak to wspaniale działa program. Wyjaśnione tutaj jest w jaki sposób udało się uzyskać równoległe działanie programu. Przytoczony poniżej fragment kodu pokazuje najważniejszy askepkt działania naszego programu.
|
||||
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
|
||||
for(int i = 0; i < 10000000; i++)
|
||||
{
|
||||
double * d = new double[100000];
|
||||
cout << "om nom nom" << endl;
|
||||
}
|
||||
#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żej kodu znajduje się jego opis, który nie jest opisem w stylu "Tak, to nawet działa! Jest pętla i jest kolorowe. Szkoda, że się nie rusza".
|
||||
(wyjaśnić dyrektywy pragma - jaki wpływ na zrównoleglenie)
|
||||
|
||||
Poniżej zamieszone są wykresy na dowód posiadania umiejętności obsługi pakietu biurowego Microsoft Office Excel lub LibreOffice Calc. Można tutaj również pochawlić się znajomością małego lecz potężnego programu gnuplot.
|
||||
Program został skompilowany i uruchomiony z następującymi parametrami: macierz 1000x1000, 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. Poniżej przedstawione są wykresy zależności czasu obliczeń oraz przyspieszenia od ilości wątków.
|
||||
|
||||
\begin{figure}[!hbp]
|
||||
\centering
|
||||
|
||||
Reference in New Issue
Block a user