Wysokowydajne obliczenia dynamiki płynów na

Transkrypt

Wysokowydajne obliczenia dynamiki płynów na
Wysokowydajne obliczenia dynamiki płynów na procesorach
graficznych (GPU) metodą siatkową Boltzmanna
Michał Januszewski
1
Metoda siatkowa Boltzmanna
Metoda siatkowa Boltzmanna (LB) jest stosunkowo nowym sposobem na numeryczne symulacje
przepływu cieczy. W ciągu swojej ok. 20-letniej historii stała się ona ciekawą alternatywą dla
bardziej tradycyjnych rozwiązań opartych na bezpośrednim rozwiązywaniu równania NavieraStokesa (NS). W przeciwieństwie do nich, LB symuluje przepływ cieczy na poziomie wirtualnych
cząstek rozmieszczonych na regularnej siatce i poruszających się w ściśle określonych kierunkach.
Można jednak pokazać, że uzyskane w ten sposób rozwiązania spełniają równanie NS.
Jedną z największych zalet metody LB jest lokalność obliczeń, która powoduje, że LB doskonale sprawdza się na architekturach równoległych. Te z kolei zyskują coraz większe znaczenie
ze względu na fizyczne ograniczenia, które znacząco spowolniły wzrost prędkości procesorów w
ciągu pierwszej dekady XXI wieku. Ponadto, od ok. 5 lat procesory kart graficznych (GPU) oferują atrakcyjną alternatywę dla bardziej tradycyjnych architektur, niejednokrotnie pozwalającą
na przyspieszenie obliczeń o 1-2 rzędy wielkości.
2
Sailfish
Sailfish jest otwartym pakietem oprogramowania pozwalającym na wykonywanie symulacji przepływu cieczy metodą siatkową Boltzmanna. Pakiet ten został od podstaw zaprojektowany i zoptymalizowany pod kątem nowoczesnych, masywnie równoległych architektur obliczeniowych, w
szczególności procesorów graficznych. Dzięki zastosowaniu technik automatycznej generacji kodu, kluczowe elementy stosowanych modeli mogą być opisywane na wysokim poziomie abstrakcji,
często odpowiadającym bezpośrednio matematycznemu zapisowi równań użytych w symulacji.
Pierwsza wersja Sailfisha charakteryzowała się brakiem wsparcia dla symulacji na kilku GPU, co
znacząco ograniczało jej stosowalność do przepływów przy dużej liczbie Reynoldsa, jakie mają
miejsce w przypadku problemów np. z zakresu aerodynamiki. Problem ten został rozwiązany w
ramach pracy nad drugą wersją oprogramowania, która wprowadziła wiele innowacji:
1. Wsparcie dla rozproszonych symulacji na wielu GPU z wykorzystaniem wszystkich wspieranych modeli LB. Testy z wykorzystaniem infrastruktury PLGRID z programu POWIEW
pokazały bardzo dobre słabe skalowanie nowej implementacji z wydajnością ok. 95%.
Warto zaznaczyć, że nowa wersja Sailfisha może działać na szerokim zakresie sprzętu –
zaczynając od laptopa, a kończąc na największych klastrach GPU na świecie.
2. Model entropowy. Model wzbogaca standardową metodę siatkową Boltzmanna o struktury
zapewniające spełnienie drugiej zasady termodynamiki, co przekłada się w praktyce na
1
Rysunek 1: Schemat rozproszonej symulacji w Sailfishu ilustrujący hierarchiczną strukturę modułów oraz różne technologie użyte do komunikacji pomiędzy procesami.
stabilizację obliczeń pozwalającą na symulację przepływów przy dużych liczbach Reynoldsa.
3. Warunki brzegowe zależne od czasu. Aktualna implementacja tej funkcjonalności pozwala
na uzależnienie od czasu dowolnego typu warunku brzegowego, np. określającego prędkość
albo ciśnienie cieczy.
4. Checkpointing. Checkpointing pozwala na zapisanie stanu symulacji w dowolnym momencie oraz jej późniejszą kontynuację, potencjalnie na innym sprzęcie lub z nieznacznie
zmienionymi ustawieniami.
5. Schemat dostępu do pamięci z jedną kopią domeny. Implementacja LB w Sailfishu przechowuje w pamięci dwie kopie domeny symulacji, co pozwala na osiągnięcie maksymalnej
wydajności. Nowy schemat dostępu do pamięci ogranicza zużycie pamięci o 50% kosztem
nieznacznego spowolnienia symulacji.
Dodatkowe zasoby:
• dokumentacja projektu
• kod źródłowy na GitHubie
3
Przykładowe symulacje
W celu walidacji stworzonego oprogramowania, wykonana została seria realistycznych symulacji,
których wyniki zostały porównane z rezultatami uzyskanymi innymi metodami lub za pomocą
innego oprogramowania.
3.1
Przepływ w zagłębieniu (3D)
Przepływ w zagłębieniu (ang. lid-driven cavity) jest jednym ze standardowych testów współczesnej obliczeniowej dyniki płynów. Wykonane przeze mnie testy pokazały doskonałą zgodność
między wynikami dla Re = 1000 uzyskanymi za pomocą oprogramowania Sailfish oraz opublikowanymi w pracy S. Albensoeder, H. Kuhlmann, Accurate three-dimensional lid-driven cavity
flow, Journal of Computational Physics 206 (2) (2005) 536 – 558.
2
h!
Rysunek 2: Profile prędkości uy (x, 0, 0) oraz ux (0, y, 0) mierzone w płaszczyznach symetrii zagłębienia o kształcie sześcianu, z przepływem w kierunku y wymuszanym w płaszczyźnie x = −0.5.
3.2
Badanie przepuszczalności skał
Rysunek 3: Powierzchnie stałej prędkości (0.01, 0.015) w symulacji przepływu wody przez stałę
o porowatości ok. 14%. Kolor ilustruje rozkład ciśnienia.
Wykonana została symulacja przepływu wodu przez porowatą skałę, której struktura została
wyznaczona metodą mikrotomografii promieni X. Uzyskane wartości współczynnika przenikalności były zgodne z rozwiązaniem referencyjnym. Problemy tego typu mają dużą wartość prak-
3
tyczną np. w eksploatacji złóż naturalnych. Badania w tym kierunku są prowadzone m.in. w
ramach polskiego programu obliczeń wielkich wyzwań nauki i techniki (POWIEW).
3.3
Turbulencja w wirze Kidy
Rysunek 4: Wir Kidy. Kwadrat prędkości cieczy dla Re = 4000.0 po t = 0.706 s.
Wir Kidy (ang. Kida vortex) opisuje turbulentny przepływ cieczy z dobrze zadanymi warunkami
początkowymi. Symulacje przypadku dla liczby Reynoldsa 4000 zostały wykonane za pomocą
4 GPU na siatce 3503 z wykorzystaniem kilku modeli LB. Udało się uzyskać wyniki zgodne z
literaturowymi ze spektrum energii kinetycznej wykazującej skalowanie Kolmogorova k −5/3
4
Upowszechnianie wyników
1. Wizualizacje przykładowych symulacji:
• nieustalony przepływ wokół sfery,
• niestabilność Saffmana-Taylora,
• spontaniczna separacja faz w dwukomponentowej mieszance płynów.
2. Prezentacje na konferencjach:
• GPU Technology Conference 2012
3. Publikacje:
4
• A Kuzmin, M Januszewski, D Eskin, F Mostowfi, JJ Derksen, Lattice Boltzmann
study of mass transfer for two-dimensional Bretherton/Taylor bubble train flow (w
trakcie recenzji)
• A Kuzmin, M Januszewski, D Eskin, F Mostowfi, JJ Derksen, Simulations of gravitydriven flow of binary liquids in microchannels, Chemical Engineering Journal, Vol.
171, 646–654,
• A Kuzmin, M Januszewski, D Eskin, F Mostowfi, JJ Derksen, Three-dimensional
binary-liquid lattice Boltzmann simulation of microchannels with rectangular cross
sections, Chemical Engineering Journal, Vol. 178, 306–316.
5