Aktualności
2011-11-13
Multi-GPU na usługach
Interaktywna wizualizacja obliczeń w czasie rzeczywistym na przykładzie mechaniki płynów
Obliczenia dużej mocy w minionych latach bardzo zyskały na znaczeniu. Towarzyszą praktycznie każdej dziedzinie życia, choć pozornie są niezauważalne. Bez mocy obliczeniowej obecnych superkomputerów byłoby praktycznie niemoż- liwe wybudowanie wytrzymałych wieżowców, zaprojektowanie ekonomicznych i bezpiecznych samolotów, czy chociażby stworzenie nowoczesnych szczepionek na niebezpieczne wirusy.

Symulacje modeli numerycznych przeprowadzane równolegle w wielkiej skali, nierzadko na dziesiątkach tysięcy węzłów obliczeniowych (komputerów), pozwalają na znalezienie odpowiedzi na pytania nurtujące naukowców, a będące wcześniej poza zasięgiem. Przeprowadzanie obliczeń w takich środowiskach jest dla programistów jednak nie lada wyzwaniem. Poza optymalizacją kodu na poziomie każdego węzła, konieczna jest także odpowiednia optymalizacja całościowa procesu przetwarzania. Poszczególne węzły  muszą się ze sobą komunikować i wymieniać cząstkowymi wynikami swoich obliczeń na tyle efektywnie, by zwiększanie mocy obliczeniowej poprzez dodawanie kolejnych jednostek obliczeniowych nie wpływało negatywnie na wydajność obliczeń. Dodatkowo ważnym elementem każdej wysokowydajnej symulacji jest takie zrównoważenie gęstości operacji w klastrze, by nie powstał tzw. efekt wąskiego gardła, gdzie cały klaster czeka na zakończenie obliczeń przez jeden lub kilka węzłów.

W ostatnich latach naukowcy stanęli jednak przed kolejnym wyzwaniem. Wysokie koszty zakupu superkomputerów okazują się często być niższe od rocznych kosztów ich utrzymania. Systematyczny wzrost mocy obliczeniowej komputerów idzie w parze z proporcjonalnym podnoszeniem zapotrzebowania na energię elektryczną, zarówno samych komputerów, jak i urządzeń potrzebnych do ich chłodzenia. Producenci sprzętu komputerowego nie pozostali jednak bierni wobec tego problemu. Projektowane są ciągle nowe architektury obliczeniowe, których charakterystyka pozwala na uzyskanie większej mocy obliczeniowej przy jednoczesnym znacznym spadku zapotrzebowania na moc elektryczną. Uzyskanie wysokiej wydajności tychże systemów wiąże się jednak z koniecznością wprowadzania kolejnych optymalizacji do już istniejących programów lub, nierzadko, całkowitej re-implementacji. Mimo że konieczny nakład pracy jest ogromny, to sumaryczne korzyści płynące ze zmiany architektury obliczeniowej są wciąż opłacalne.

Jedną z alternatywnych metod przeprowadzania obliczeń, zyskującą ostatnimi czasy na popularności jest GPGPU (ang. General-Purpose Computing on Graphics Processing Units). Powstałe na potrzeby wymagającego i ciągle nienasyconego rynku gier komputerowych, wysokowydajne karty graficzne, szybko okazały się sprawdzać także w zastosowaniach równoległych obliczeń ogólnego przeznaczenia. Początkowe próby oprogramowania tych jednostek wiązały się jednak ze skomplikowaną adaptacją języków przeznaczonych do renderowania grafiki w celach obliczeniowych. Bardzo duży wkład w tej dziedzinie wniosła firma NVIDIA, która w 2007 wypuściła środowisko CUDA umożliwiające przeprowadzanie obliczeń na tej architekturze. Relatywnie łatwy i przejrzysty sposób pisania programów oraz ich uruchamiania, ciągłe usprawnienia, stosunkowo łatwa możliwość sprawdzania poprawności kodu i wykrywania błędów, atakże duża ilość gotowych bibliotek zawierających już gotowe implementacje wielu algorytmów, sprawiły, że NVIDIA stała się wiodącym producentem sprzętu ioprogramowania opartego na idei GPGPU.

W trwającym od 2010 roku projekcie UCoMS (Ubiquitous Computing and Monitoring System), w którym uczestniczy także Poznańskie Centrum Superkomputerowo-Sieciowe, podstawowym celem jest znajdowanie i zarządzanie złożami energetycznymi; prace związane zprzetwarzaniem na jednostkach graficznych stały się w nim jednym z głównych tematów badawczych. Stosunkowo niski koszt zakupu i utrzymania idące wparze z wysoką wydajnością urządzeń GPU sprawia, że obliczenia na kartach graficznych stały się kuszącą alternatywą dla istniejących rozwiązań przeprowadzania złożonych obliczeniowo symulacji wydobywania, modelowania oraz ekspertyz kosztowych procesów eksploatacyjnych złóż. Ze względu na złożoność zarówno architektury przetwarzania jak i samego procesu wydobywczego, w początkowej fazie zdecydowano się na implementację i testy wydajnościowe znacznie uproszczonego modelu mechaniki płynów – problemu jednofazowego przepływu wymuszonego w zamkniętym kanale z ruchomą ścianką górną (ang. moving lid driven cavity). Celem prowadzonych badań było stworzenie pewnych schematów optymalizacyjnych oraz komunikacyjnych, wykorzystanych w kolejnych etapach do symulacji bardziej złożonych modeli numerycznych.

Metoda numeryczna wykorzystana wobliczeniach została oparta na równaniach Naviera-Stokesa, które wywodzą się z drugiego prawa Newtona (zachowania pędu) oraz zachowania masy (nieściśliwości). Ciągły model matematyczny został zdyskretyzowany przy użyciu metody skończonych różnic. Tak powstałe numeryczne zależności matematyczne zostały następne zaimplementowane wpostaci sekwencyjnego kodu uruchamianego na tradycyjnych procesorach x86 jako programu referencyjnego dla obliczeń równoległych wielkiej skali. Kolejnym etapem implementacyjnym było przepisanie jednowątkowego programu do środowiska programistycznego CUDA w celu uruchamiania obliczeń na kartach graficznych NVIDIA'i. Końcowe prace dotyczyły metod wymiany wartości granicznych poprzez środowisko MPI.

Stworzony w ten sposób program do symulacji mechaniki płynów zaowocował 70-krotnym przyspieszeniem na pojedynczej karcie NVIDIA Tesla M2050 oraz 650-krotnym na 16 takich jednostkach (8 węzłów obliczeniowych) w porównaniu do sekwencyjnego kodu wykonywanego na procesorze i7 Intela. Bardziej szczegółowe rezultaty wydajnościowe tych obliczeń oraz ich zależności od wielkości domeny obliczeniowej oraz szerokości wartości granicznych, zostały przedstawione na wykresie. Jak widać, najwyższą wydajność w obliczeniach rozproszonych uzyskuje się dla dużych instancji domeny (7683, 6403). Ponadto odpowiednia wartość parametru ghost-zone, decydująca o częstotliwości i wielkości wymienianych komunikatów między węzłami, również ma kluczowy wpływ na wydajność metody.

Istotnym elementem zaimplementowanego rozwiązania jest możliwość wizualizacji rezultatów w czasie rzeczywistym. Ponieważ aplikacja uruchamiana jest na wielu węzłach, niezbędna jest transmisja wyników obliczeń na stację roboczą przeznaczona do wizualizacji. Ze względu na relatywnie wysoki koszt transmisji wprowadzono pewne modyfikacje w celu minimalizacji spadku wydajności przepro- wadzanych obliczeń. Jedną z nich jest możliwość wizualizacji wyników co określony kwant czasu – jedynie wyniki wybranych iteracji odsyłane są na stację do wizualizacji. Oprócz zmniejszania rozdzielczości czasowej możliwa jest również zmiana rozdzielczości domeny. Daje to unikalną możliwość wizualnego podglądu przeprowadzanych obliczeń wczasie rzeczywistym. Zaobserwowany przez nas spadek wydajności związany zwizualizacją wyniósł jedynie około 20%.

Badania w dziedzinie wysokowydajnych obliczeń przeprowadzanych na architekturach hybrydowych, czyli składających się z różnych jednostek obliczeniowych, z jednoczesną wizualizacją wyników tych obliczeń w czasie rzeczywistym przy jednoczesnym znikomym spadku ich wydajności - to wyzwanie, nad którym trwają intensywne prace rozwojowe. Zastosowania tych metod wykraczają dalece poza projekt UCoMS iprzykłady dynamiki płynów, co potwierdzają dotychczasowe eksperymenty. Czas więc pokaże, jak potoczą się dalsze rozwiązania zarówno sprzętowe, jak i scenariusze użycia tych obiecujących technologii, także w innych, poza fizyką cieczy, problemach wizualizacji.

Marek Błażewicz, PCSS
Michał Kierzynka, PCSS