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 (ShanChen, 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łeciecz (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 TayloraGreena (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: ShanChen, 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 bounceback), trwają badania modelu entropowego oraz zaawansowanych modeli ścianek (warunki brzegowe typu TammMottSmith). 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 BrethertonaTaylora 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.