Zadanie z dekompozycji Algorytmy Równoległe Bartosz Baliś
Informacje ogólne Zadania z dekompozycji domenowej Tematy dzielą się na trudniejsze (z modelem fizycznym) i łatwiejsze Realizacja w grupach 2-osobowych Oddawanie w etapach
Zagadnienia Algorytm równoległy dla wybranego problemu Symulacja metodologia PCAM ew. zamiana ciągłego modelu fizycznego na dyskretny Symulacja warunki brzegowe i początkowe zapisywanie danych z kolejnych kroków symulacji warunek stopu Wizualizacja on-line lub off-line zbieranie danych z symulacji Pomiar wydajności w zależności od stopnia aglomeracji Sprawozdanie
Zadania – informacje ogólne Symulacja zmiany jakiejś wielkości w czasie w dziedzinie dwuwymiarowej W niektórych zadaniach zadany model fizyczny – równania różniczkowe cząstkowe 2 stopnia w trudniejszych modelach czas występuje explicite jako składowa równania
Zasada konstrukcji algorytmu Podział dziedziny na siatkę 2-D (o stałym skoku) w implementacji nie występują wymiary fizyczne, jedynie liczba punktów siatki Wymóg: dekompozycja dwuwymiarowa (każde zadanie dostaje wycinek domeny – „podmacierz”) Szukamy formuły iteracyjnej typu: hi,jt+1 = f(ht) gdzie: hij – szukana wielkość w punkcie (i,j) siatki t – dany krok symulacji Implementacja w MPI
Przykład dyskretyzacji modelu fizycznego W równaniu opisującym problem, np.: d2h/dx2 + d2h/dy2 = 0 Zmieniamy pochodne cząstkowe na ilorazy różnicowe: dh/dx = (hi+1,j–hi-1,j) / ∆x d2h/dx2 = (hi+1,j–2hi,j+hi–1,j) / ∆x2 W przypadku pochodnej po czasie: dh/dt = (hijt–hijt-1) / ∆t hijt-1 to wartość obliczanej wielkość w danym punkcie siatki w poprzednim kroku symulacji Następnie wyliczamy hij
Symulacja Obliczanie w kolejnych iteracjach szukanej wielkości we wszystkich punktach siatki W danym kroku do obliczenia konieczne są zwykle wartości sąsiadów Jeśli wartości sąsiedniego punktu są w innym procesie, konieczna jest komunikacja
Warunki brzegowe i początkowe Warunki brzegowe – parametry układu na jego brzegu (poza obszarem badanym) Np. temperatura płytki na brzegu Warunki początkowe – stan układu w iteracji „zerowej” Np. temperatura początkowa płytki, początkowe wychylenie membrany
Zapisywanie kolejnych kroków symulacji Konieczne gdy wizualizacja jest off-line Dwie możliwości: w każdym kroku zbieramy dane z wszystkich zadań i zapisujemy je w globalnym pliku każde zadanie zapisuje lokalnie częściowy przebieg symulacji, zaś na końcu wszystkie pliki są zbierane i scalane
Warunek stopu symulacji Czasem go nie ma ... Z góry zadajemy liczbę kroków Czasem symulacja ma się zakończyć po osiągnięciu pewnego stanu Np. problem kolorowania obszarów W każdym kroku konieczna dodatkowa komunikacja (globalna?), żeby sprawdzić czy osiągnięto warunek stopu
Wizualizacja On-line – wizualizacja w trakcie trwania symulacji Konieczne połączenie programu wizualizującego z aplikacją MPI ... Lub MPI w każdym kroku generuje plik i wysyła sygnał do programu wizualizacyjnego Off-line – wizualizacja po zakończeniu symulacji, na podstawie pliku śladu Konieczne zapisanie całego przebiegu symulacji w pliku Można samemu napisać aplikację lub użyć zestawu funkcji MPE_xxxx – rozszerzenie MPI!
Pomiar wydajności Badanie czasu wykonania symulacji w zależności od stopnia aglomeracji ... Minimalny – wszystkie dane w jednym procesie Maksymalny – jeden punkt siatki w jednym procesie W praktyce byłoby za dużo procesów – trzeba ograniczyć, np. do podziału pomiędzy 16 procesów ... a także od rozmiaru problemu (całkowitej liczbie punktów siatki)
Sprawozdanie Opis algorytmu, opis implementacji, wyniki pomiarów wydajności Opis zastosowania schematu PCAM – zwłaszcza checklist dla kolejnych etapów Partitioning, communication, agglomeration, mapping