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.