Wielkoskalowe obliczenia komputerowej dynamiki płynów

Transkrypt

Wielkoskalowe obliczenia komputerowej dynamiki płynów
Michał Januszewski
Materialy do broszury końcowej TWING.
Wielkoskalowe obliczenia komputerowej dynamiki płynów na
procesorach graficznych -- pakiet Sailfish
Od około 5 lat procesory graficzne (GPU) znajdują coraz szersze zastosowanie w wielu
dziedzinach nauki, techniki i przemysłu, gdzie pozwalają wykonywać zadania obliczeniowe o
wiele szybciej i taniej niż jest to możliwe przy użyciu standardowych procesorów. Na
początku projektu TWING w 2011 roku, pakiet Sailfish rozwijany na Uniwersytecie Śląskim w
Katowicach i implementujący metodę siatkową Boltzmanna pozwalał na wykonywanie
prostych symulacji przepływu cieczy z wykorzystaniem jednego GPU. Stanowiło to poważne
ograniczenie w jego praktycznych zastosowaniach ze względu na ograniczoną ilość pamięci
i co za tym idzie, wielkość symulacji.
W trakcie 2 lat pracy w ramach projektu, Sailfish został znacznie rozbudowany i może być
obecnie wykorzystywany do symulacji wielu typów przepływów, przykłady których podamy
poniżej. Pakiet ten stał się również najbardziej zaawansowanym oprogramowaniem open
source do symulacji metodą siatkową Boltzmanna i wykorzystującym GPU. Wydajność
symulacji jest porównywalna lub lepsza do wyników publikowanych wcześniej w literaturze
fachowej. Udało się również opracować nowatorskie, nieprezentowane wcześniej
rozwiązania poprawiające wydajność symulacji dwufazowych (Shan­Chen, model energii
swobodnej) i symulacji metodą entropową.
Wsród najważniejszych nowych elementów należy wymienić:
● Wsparcie dla rozproszonych symulacji na klastrach GPU. Udało się uzyskać bardzo
dobre słabe i silne skalowanie ­­ testowane były symulacje do 64 GPU na klastrze
Zeus dostępnym w ramach projektu PLGRID. Dzięki tej funkcjonalności możliwe jest
badanie geometrycznie dużych problemów, wymagających znacznej ilości pamięci
operacyjnej.
● Nowe modele: model entropowy (pozwala na symulacje z dużą liczbą Reynoldsa),
model zregularyzowany (bardziej stabilny niż standardowy model BGK) oraz model
redukujący błędy zaokrągleń (poprawia dokładność szybkich symulacji w pojedynczej
precyzji).
● Schemat dostępu do pamięci typu AA (50% redukcja użytej pamięci operacyjnej) oraz
adresowanie niebezpośrednie (znaczna redukcja użytej pamięci w przypadku
nieregularnych geometrii, np. pochodzących ze skanów CT albo z programów CAD).
● Nowe warunki brzegowe na wypływ (typu Yu, typu Neumanna, metoda kopiowania
najbliższych sąsiadów) oraz ugólnienie wszystkich warunków brzegowych
pozwalające na ich zmienność w czasie (ważne np. dla przepływów pulsacyjnych).
● Wsparcie dla wznawiania symulacji (checkpointing) i automatycznej jej weryfikacji w
trakcie obliczeń (pozwalają na efektywniejsze wykorzystanie czasu obliczeniowego).
● Statystyki przepływu na GPU (pozwalają badać przepływy turbulentne bez spadku
wydajności symulacji).
● Wstępna implementacja metody zanurzonej ścianki (ang. immersed boundary
method), pozwalająca na budowanie modelu interakcji ciało stałe­ciecz (ważne w
niektórych przepływach z zakresu hemodynamiki i zastasowaniach technicznych).
Otrzymane wyniki były prezentowane na wykładach na GPU Technology Conference 2012 w
San Jose w USA (największa konferencja poświęcona technologii kart graficznych w
zastosowaniach naukowych i przemysłowych) oraz na konferencji Discrete Simulations in
Fluid Dynamics 2013 w Erywaniu, w Armenii (jedna z dwóch głównych konferencji
poświęconych metodzie siatkowej Boltzmanna).
Rys. 1. Skalowanie wydajności symulacji pakietem Sailfish na klastrze do 64 GPU.
Walidacja zaimplementowanych modeli
W ramach rozwoju pakietu, wszystkie zaimplementowane modele zostały dokładnie
zweryfikowane poprzez porównanie wyników symulacji wykonanych pakietem Sailfish z
danymi literaturowymi lub przewidywaniami teoretycznymi:
● przepływ w zagłębieniu w trzech wymiarach dla liczby Reynoldsa 1000 (wszystkie
modele jednofazowe: LBGK, MRT, zregularyzowany, ELBM),
● wir Kidy (w/w modele jednofazowe oraz model ELBM i Smagorinskiego dla liczb
Reynoldsa > 100000),
● wir Taylora­Greena (badanie wpływu pojedynczej i podwójnej precyzji na dokładność
wyników oraz wyznaczenie zakresu parametrów gdzie błędy w pojedynczej precyzji
są minimalne),
● fala kapilarna i dwufazowy przepływ Poiseuille (modele dwufazowe: Shan­Chen,
wolnej energii).
Rys. 2. Wir Kidy. Kwadrat prędkości cieczy dla Re = 4000.0 po t = 0.706 s
Praktyczne zastosowania pakietu Sailfish
Dzięki dodanej nowej funkcjalności, pakiet Sailfish znalazł zastosowanie w wielu
praktycznych problemach, których przykłady przedstawiono poniżej.
Przepływy turbulentne
Przy współpracy z Politechniką Federalną w Zurychu (ETH) rozpoczęliśmy badania różnych
sposobów modelowania turbulentnego przepływu w kanale za pomocą metody siatkowej
Boltzmanna. Pokazaliśmy zakres stosowalności prostego modelu LBGK i ścianek (metoda
bounce­back), trwają badania modelu entropowego oraz zaawansowanych modeli ścianek
(warunki brzegowe typu Tamm­Mott­Smith).
Rys. 3. Izopowierzchnie wirowości w turbulentnym przepływie przez kanał. Kolor obrazuje
szybkość przepływu cieczy.
Przepływy w ośrodkach porowatych
Badanie były dwa typy problemów:
1. Przepływ wody przez porowatą skałę (z rzeczywistą geometrią uzyskaną metodą
mikrotomografii promieni X udostępnioną przez firmę Chevron); ze względu na duże
użycie pamięci, symulacja wymagała klastra GPU; uzyskane wartości
współczynnika przenikalności były zgodne z rozwiązaniem referencyjnym.
2. Anizotropia przepływu w ośrodkach porowatych przy współpracy z Uniwersytetem
Wrocławskim; udało się wykazać zależność nierównoległości wektora prędkości
przepływu i wektora siły wymuszającego w/w przepływ w zależności od stosunku
wielkości ziaren do wielkości całej domeny symulacji.
Rys. 4. 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.
Przepływy dwufazowe
Razem z Alexandrem Kuzminem z University of Alberta zbadaliśmy stosowalność metody
siatkowej Boltzmanna do wyznaczania współczynnika transferu masy w przepływie typu
Brethertona­Taylora w zakresie liczb kapilarnych 0.1 – 1.0, przy użyciu metody energii
swobodnej. Udało się uzyskać wyniki zgodne z rezultatami literaturowymi uzyskanymi innymi
metodami, co udowadnia, że metoda siatkowa Boltzmanna może być z powodzeniem
stosowana do tego typu symulacji (mających duże praktyczne znaczenie w przemyśle).
Symulacje biomedyczne
Przy współpracy z mgr Jakubem Połą, również stypendystą projektu TWING, porównaliśmy
wydajność metody siatkowej Boltzmanna i metody objętości skończonych w
zastosowaniach do przepływów krwi, zarówno w sztucznych geometriach (rurka w kształcie
U), jak i w bardziej realnych przypadkach (tętnica podstawna i fragment koła tętniczego
mózgu ­­ dane uzyskane metodą CT). Wyniki będą opublikowane wkrótce.