• Nie Znaleziono Wyników

lab_10/mat_mul uruchom program mnożenia macierz-macierz opracowany w ramach poprzedniego laboratorium

N/A
N/A
Protected

Academic year: 2021

Share "lab_10/mat_mul uruchom program mnożenia macierz-macierz opracowany w ramach poprzedniego laboratorium"

Copied!
1
0
0

Pełen tekst

(1)

Analiza i modelowanie wydajności obliczeń Lab 11. Studium skalowalności

Cel: Opanowanie techniki określania skalowalności w sensie silnym i w sensie słabym Kroki:

1. W celu rozszerzonego badania skalowalności algorytmu i programu mnożenia macierz-macierz dla pojedynczego węzła obliczeniowego, dokonaj studium zależności skalowalności w sensie silnym od rozmiaru zadania

2. W nowym katalogu np. lab_10/mat_mul uruchom program mnożenia macierz-macierz opracowany w ramach poprzedniego laboratorium. Przyjmij parametry w pliku sizes.h : BLOCK_SIZE_S 96, BLOCK_SIZE_L (BLOCK_SIZE_S), ALIGNMENT 64

3. Przeprowadź badanie skalowalności w sensie silnym dla różnych rozmiarów zadania odpowiadających wartościom parametru MULT = 7, 9, 11, 15, 19 (uwzględnij liczbę rdzeni 1, 2, 4, 10, 20). Wyniki pomiarów czasu zapisz w tabeli.

4. Utwórz odpowiednie wykresy przyspieszenia obliczeń. Zaznacz na jednym wykresie krzywe dla różnych wartości MULT. Skonstruuj co najmniej dwa wykresy, jeden dla swojej najlepszej wersji mnożenia macierzy i drugi dla procedury dgemm z biblioteki MKL (jeśli ta ostatnia jest dostępna)

5. Na podstawie wyników eksperymentów stwórz co najmniej dwa wykresy skalowalności w sensie słabym:

jeden dla swojej najlepszej procedury, drugi dla procedury dgemm. Sekwencja rozmiarów w p.3 jest tak dobrana, aby praca dla kolejnego rozmiaru rosła proporcjonalnie do liczby rdzeni w sekwencji

1,2,4,10,20).

6. Wyciągnij wnioski co do możliwości skalowania obliczeń w jednym węźle dla mnożenia macierz- macierz

7. Rozpakuj paczkę mat_vec_row_MPI_OpenMP.tgz w nowym katalogu np. lab_10/mat_vec_mpi_omp.

8. Uruchom kod przez wykonanie poleceń make i make run. Zaobserwuj możliwość sterowania wykonaniem przez podanie w linii komend parametru -np określającego liczbę prcesów MPI oraz ustalenie wartości zmiennej środowiskowej OMP_NUM_THREADS określającej liczbę wątków OpenMP. W pierwszej fazie przeprowadź badanie dla czystego modelu MPI (liczba wątków OpenMP ustawiona na 1).

9. Przeprowadź badanie skalowalności dla funkcji mnożenia macierz-wektor, analogiczne jak dla funkcji mnożenia macierz-macierz. Tym razem rozważ sekwencję wymiarów np. 3036, 4294, 6072, 9600, 13580 dobraną tak, żeby praca mnożenia macierz-wektor rosła proporcjonalnie do liczby rdzeni w sekwencji 1,2,4,10,20). Wyniki pomiarów czasu zapisz w tabeli.

10. Utwórz odpowiednie wykresy, wyciągnij wnioski co do możliwości skalowania obliczeń w jednym węźle dla mnożenia macierz-wektor. Wnioski dotyczą użytej platformy, w tym implementacji MPI.

Dalsze kroki:

1. Zaobserwuj zjawisko ewentualnego nagłego pogorszenia wydajności mnożenia macierz-macierz w przypadku rozmiaru zadania odpowiadającego wartości MULT=16 (związane jest to z faktem, że rozmiar macierzy jest wtedy wielokrotnością rozmiaru strony pamięci wirtualnej 4096B).

2. Dokonaj optymalizacji array padding. Należy zaalokować obszar jak dla macierzy o rozmiarze większym (np. zwiększyć liczbę kolumn o stały parametr OFFSET). Natomiast obliczenia mają być wykonane jak dla rozmiaru niezmodyfikowanego (funkcja dgemm pozwala na przesyłanie takich macierzy poprzez użycie parametrów leading dimension).

3. Zmodyfikuj odpowiednio własną funkcję mat_mul_... , sprawdź poprawność działania i uzyskaną wydajność (przetestuj różne wartości parametru OFFSET, który powinien być zdefiniowany w pliku sizes.h ).

4. Przeprowadź badanie skalowalności mnożenia macierz-wektor dla zrównoleglenia hybrydowego MPI- OpenMP. Wyciągnij wnioski co do charakterystyki pod tym względem użytej do obliczeń platformy.

Sprawozdanie:

1. Zrealizowane kroki, najważniejsze fragmenty modyfikowanego kodu (a także ewentualnie uzyskiwanego asemblera), spostrzeżenia z analizy kodu (i ewentualnie odpowiadającego kodu asemblera), tabele, wykresy, opisy, wnioski

Cytaty

Powiązane dokumenty

[r]

(3p.) Określ wartość logiczną zdań (Prawda- Fałsz) Drzewo oznacza tu zawsze drzewo o więcej niż jednym wierzchołku.!. a) każde drzewo T jest

[r]

Wykaza´ c, ˙ze je˙zeli odwzorowanie liniowe jest bijekcj a to odwzorowanie odwrotne te˙z , jest liniowe... Wyznaczy´ c macierz tego odwzorowania w wybranej wcze´

asercja jest prawdziwa: |= pSq, gdy program S rozpoczynając się w stanie p, znajdzie się w stanie q po zakończeniu obliczeń, o ile to nastąpi.. Wtedy mówimy, że program

[r]

Lista 6:

Wyrażenie jest kombinacją stałych, zmiennych i operatorów, które stosuje się najczęściej do zapisu operacji matematycznych.. Operatory umożliwiają