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.