Zrównoleglanie i automatyczne dostosowanie algorytmów numerycznych do architektur
hybrydowych z akceleratorami GPU
Jeden z najbardziej perspektywicznych kierunków zwiększenia wydajności
współczesnych komputerów stanowi budowa systemów obliczeniowych wykorzystujących
rozwiązania hybrydowe, łączące wielordzeniowe procesory ogólnego przeznaczenia i
dedykowane, masywnie zrównoleglone akceleratory obliczeniowe, takie jak np. procesory
graficzne GPU czy też koprocesory Intel Xeon Phi.
Jednakże pomimo potencjalnie dużej mocy obliczeniowej, efektywne przeprowadzenie
obliczeń równoległych w środowisku architektur hybrydowych, charakteryzujących się
znacznym stopniem heterogeniczności, jest dla programistów dużym wyzwaniem. Budowa
równoległych aplikacji dla takich środowisk jest dużo bardziej skomplikowana niż
tworzenie programów dla konwencjonalnych, homogenicznych systemów równoległych.
Efektywne wykorzystanie dostępnych zasobów wymaga odpowiedniego odwzorowania algorytmów
oraz jak najbardziej optymalnego równoważenia obciążenia.
W niniejszej monografii metody rozwiązywania powyższych problemów przedstawiono na
przykładzie algorytmów stosowanych do analizy przepływów geo- i astrofizycznych w
modelu numerycznym EULAG, zaproponowanym przez polskich badaczy i rozwijanym następnie
przez szerokie grono uczonych z rożnych krajów, zajmujących się m.in. numeryczną
prognozą pogody.
Książka jest przeznaczona dla szerokiego kręgu osób zainteresowanych architekturą,
programowaniem i wykorzystaniem współczesnych systemów równoległych, a w
szczególności systemów z masywnie wielordzeniowymi akceleratorami obliczeniowymi,
takimi jak procesory graficzne GPU.
1. Wstęp
2. Architektury hybrydowe z akceleratorami obliczeniowymi
2.1. Kierunki rozwoju architektur hybrydowych
2.2. Architektury na bazie procesorów CPU i GPU
2.3. Wprowadzenie do współczesnych architektur akceleratorów GPU
2.3.1. Charakterystyka procesorów graficznych NVIDIA
2.3.2. Charakterystyka procesorów graficznych AMD
2.3.3. Porównanie kart NVIDIA oraz AMD
2.4. Architektura akceleratorów obliczeniowych firmy Intel
2.4.1. Wprowadzenie do akceleratorów Intel MIC
2.4.2. Charakterystyka koprocesorów Intel Xeon Phi
2.5. AMD Fusion jako przykład jednoukładowego procesora hybrydowego
2.6. Ocena efektywności wykorzystania architektur hybrydowych
2.6.1. Metryki wydajności hybrydowych systemów obliczeniowych
2.6.2. Ocena wydajności obliczeń z wykorzystaniem modelu Roofline
3. Środowiska programistyczne dla architektur hybrydowych
3.1. OpenCL jako standard programowania architektur wielordzeniowych
3.1.1. Wprowadzenie do standardu OpenCL
3.1.2. Charakterystyka poszczególnych modeli wykorzystywanych w standardzie OpenCL
3.2. Hybrydowe środowisko programowania
3.2.1. OpenMP
3.2.2. Model programowania hybrydowego
3.3. Intel Cilk Plus: standard programowania z pamięcią współdzieloną
3.4. Programowanie niskopoziomowe z wykorzystaniem rozszerzenia AVX
4. Model numeryczny EULAG i zagadnienie zrównoleglania algorytmu MPDATA
4.1. Wprowadzenie do modelu numerycznego EULAG
4.2. Określenie bazowych procedur numerycznych w modelu EULAG
4.3. Opis wielowymiarowego dodatnio określonego algorytmu adwekcji
4.3.1. Opis algorytmu wykorzystującego kartezjańskie siatki obliczeniowe
4.3.2. Rozszerzenie algorytmu z wykorzystaniem metody redukującej scylacje (ang.
nonoscillatory option)
4.4. Analiza zależności informacyjnych w algorytmie MPDATA
4.5. Analiza ograniczeń realizacji algorytmu MPDATA na architekturach hybrydowych
5. Adaptacja obliczeń w algorytmie MPDATA do architektur hybrydowych
5.1. Metoda adaptacji algorytmu MPDATA do architektur hybrydowych
5.2. Propozycja metody równoważenia obciążenia obliczeń
5.3. Zarządzanie zasobami obliczeniowymi CPU-GPU
6. Odwzorowanie algorytmu MPDATA na architektury procesorów CPU
6.1. Opracowanie blokowej dekompozycji algorytmu MPDATA
6.1.1. Koncepcja podziału algorytmu na bloki z wykorzystaniem technik temporal blocking
oraz space blocking
6.1.2. Metoda poprawy wydajności obliczeń dla blokowej wersji algorytmu MPDATA
6.1.3. Realizacja mechanizmu mapowania przestrzeni w pamięci podręcznej
6.1.4. Analiza wydajnościowa blokowej dekompozycji algorytmu MPDATA
6.2. Opracowanie równoległej organizacji obliczeń dla wielordzeniowej architektury CPU
6.3. Badanie wydajności obliczeń
6.3.1. Porównanie zaproponowanych wersji zrównoleglenia algorytmu MPDATA
6.3.2. Badanie wydajności obliczeń dla różnych rozmiarów siatki obliczeniowej
6.3.3. Badanie wydajności obliczeń procesora o architekturze Sandy Bridge z
wykorzystaniem rozszerzenia AVX
6.3.4. Porównanie wydajności platform wieloprocesorowych
6.3.5. Porównanie dwóch standardów programowania z pamięcią współdzieloną: OpenMP
i Cilk
7. Odwzorowanie algorytmu MPDATA na architektury GPU
7.1. Określenie poziomów zrównoleglenia obliczeń dla algorytmu MPDATA
7.2. Metody dekompozycji algorytmu MPDATA w oparciu o kernele obliczeniowe
7.2.1. Dekompozycja algorytmu MPDATA na kernele obliczeniowe
7.2.2. Metoda dekompozycji algorytmu MPDATA zapewniająca spójność struktur danych
7.3. Przetwarzanie strumieniowe jako sposób nałożenia transferu danych i obliczeń
7.4. Zrównoleglenie i wektoryzacja obliczeń w strukturze zasobów obliczeniowych GPU
7.4.1. Wielowątkowa realizacja obliczeń z wykorzystaniem GPU
7.4.2. Proces wektoryzacji obliczeń w algorytmie MPDATA
7.5. Opracowanie dyspozytora zadań dla organizacji obliczeń w modelu EULAG
7.5.1. Koncepcja dyspozytora zadań jako narzędzia zarządzania kernelami obliczeniowymi
7.5.2. Realizacja dyspozytora zadań z uwzględnieniem opracowanych wcześniej metod
8. Metody automatycznego dostosowania obliczeń do architektur GPU
8.1. Ogólna charakterystyka metod automatycznego dostosowania obliczeń do architektur
komputerowych
8.2. Koncepcja automatycznego dostosowania obliczeń dla algorytmu MPDATA
8.3. Zdefiniowanie zbioru parametrów charakteryzujących proces dostosowania
8.4. Zdefiniowanie przestrzeni poszukiwań
8.4.1. Definiowanie lokalnej przestrzeni poszukiwań dla liczby strumieni
8.4.2. Definiowanie lokalnych przestrzeni poszukiwań dla pozostałych parametrów
8.5. Automatyczne wyznaczanie konfiguracji algorytmu MPDATA
8.5.1. Podejście empiryczne
8.5.2. Podejście oparte o metodę machinę learning
8.5.3. Podejście wykorzystujące model matematyczny
8.6. Weryfikacja poprawności i badanie efektywności mechanizmu autotuningu
8.6.1. Sprawdzenie poprawności i badanie efektywności metod opracowanych dla modułu
empirycznego
8.6.2. Sprawdzenie poprawności i badanie efektywności modułu machinę learning
8.6.3. Sprawdzenie poprawności i badanie efektywności modułu matematycznego
8.7. Badanie wydajności opracowanej implementacji algorytmu MPDATA dla GPU
9. Badanie wydajności obliczeń dla wybranych platform hybrydowych
9.1. Hybrydowe platformy testowe
9.2. Wyniki badań eksperymentalnych
10. Podsumowanie
10.1. Wnioski końcowe
10.2. Kierunki dalszych badań
Literatura
204 strony, Format: 16.5x23.5cm, oprawa miękka