daje numero

Transkrypt

daje numero
Przetwarzanie współbieżne. Programowanie równoległe i rozproszone
Laboratorium 9
Cel:
Nabycie umiejętności tworzenia i implementacji programów równoległych z wykorzystaniem OpenMP.
Kroki:
1.
2.
3.
Utworzenie katalogu roboczego (np. lab_9/petle) .
Skopiowanie pliku openmp_petle.c, rozpakowanie w katalogu roboczym, uruchomienie programu.
Napisanie 4 wersji zrównoleglenia pętli obliczających sumę wyrazów tablicy dla 4 wariantów podziału macierzy
między wątki:
1. wierszowego – zrównoleglenie pętli zewnętrznej – klauzula reduction
2. wierszowego – zrównoleglenie pętli wewnętrznej – tablica wartości dla wątków (sumowanie po wyjściu z
obszaru równoległego)
3. kolumnowego - zrównoleglenie pętli wewnętrznej – klauzula reduction
4. kolumnowego - zrównoleglenie pętli zewnętrznej – zmienna prywatna dla każdego wątku i sekcja krytyczna
4. Dla każdego wariantu dekompozycji rozważenie różnych wariantów przydziału iteracji wątkom za pomocą klauzuli
schedule z parametrami:
1. static, rozmiar porcji=3,
2. static, rozmiar porcji domyślny,
3. dynamic rozmiar porcji=2,
4. dynamic, rozmiar porcji domyślny.
5. Przetestowanie wykonania programu dla powyższych strategii podziału i metod zrównoleglenia. Wydruk testowy
powinien zawierać informację o przypisaniu każdej pozycji tablicy (czyli każdej iteracji) konkretnemu wątkowi.
Można zastosować wzór z pliku openmp_petle.c (dla wypisywania z pętlą po wierszach jako zewnętrzną jest to
zapis naturalny, dla pętli po kolumnach jako pętli zewnętrznej zapis jest transpozycją zapisu właściwego!) Dla
czytelności wydruku należy użyć klauzuli i dyrektywy ordered oraz należy sprawdzić każdorazowo, że wersja
równoległa daje te same wyniki co wersja sekwencyjna. W sumie ma powstać 16 wydruków dla różnych wariantów
zrównoleglenia i przydziału iteracji wątkom, ocena powinna dotyczyć każdego kolejnego wariantu z p.3 (ocena)
6. Napisanie wersji zrównoleglenia pętli obliczających sumę wyrazów tablicy dla podziału blokowego (zrównoleglenie
obu pętli):
1. należy zapewnić realizację zagnieżdżenia obszarów równoległych ( omp_set_nested(1); )
2. należy odpowiednio sterować liczbą wątków (np. 3 w wierszach i 4 w kolumnach)
3. przydział iteracji wykonać w sposób statyczny, z rozmiarami porcji:
1. 1 w kolumnach, domyślnie w wierszach
2. 2 w kolumnach i wierszach
3. domyślnie w kolumnach i wierszach
7. Przetestowanie wykonania programu oraz sprawdzenie, że wersja równoległa daje te same wyniki co wersja
sekwencyjna. Wydruk testowy powinien zawierać informację o przypisaniu każdej pozycji tablicy (czyli każdej
iteracji) konkretnemu wątkowi. Można zastosować wzór z pliku openmp_petle.c. Dla podziału blokowego i
zagnieżdżonej równoległości numer wątku stanowi parę: numer wątku w zewnętrznym obszarze równoległym (np.
przekazany do wewnętrznego obszaru poprzez zmienną firstprivate), numer wątku w wewnętrznym obszarze (dla
czytelności wydruku należy użyć klauzuli i dyrektywy ordered). W sumie mają powstać 3 wydruki. (ocena)
8. Utworzenie katalogu roboczego (np. lab_9/mat_vec) .
9. Skopiowanie paczki openmp_mat_vec.tgz, rozpakowanie w katalogu roboczym, uruchomienie programu.
10. Napisanie 2 wersji zrównoleglenia algorytmu mnożenia macierz-wektor (w obu przypadkach należy zrównoleglić
procedury zawarte w pliku mat_vec.c, zrównoleglenie ma dotyczyć pętli zewnętrznej, a wynik ma być identyczny
jak obliczany w pliku openmp_mat_vec.c w pętlach testowych), dla 2 wariantów podziału macierzy między wątki:
1. wierszowego (mat_vec_row) – dla macierzy przechowywanych wierszami (row major) (ocena)
2. kolumnowego (mat_vec_col) – dla macierzy przechowywanych kolumnami (column major) (ocena)
Dalsze kroki:
1. Dla wariantu podziału kolumnowego z p. 10.2 rozważenie (w dodatkowej procedurze) pętli po kolumnach jako pętli
wewnętrznej (w algorytmie kolejność pętli można zamienić bez zmiany wyniku) (ocena)
2. Napisanie trzeciej wersji zrównoleglenia algorytmu mnożenia macierz-wektor dla wariantu podziału macierzy
między wątki blokowego (2D) (ocena)
Warunki zaliczenia:
1. Obecność na zajęciach i wykonanie kroków 1-7.
2. Oddanie sprawozdania z opisem zadania, kodem źródłowym programów i wydrukami dla wszystkich wariantów
zrównoleglenia.

Podobne dokumenty