Obliczenia równoległe w grafice komputerowej Michał Radziszewski
Plan prezentacji Równoległość – motywacja Karty graficzne – rasteryzacja Techniki śledzenia promieni Przetwarzanie strumieniowe Technologie SLI i Crossfire Obliczenia GPGPU vs. maszyny wieloprocesorowe Podsumowanie
Równoległość – motywacja Obecna technologia nie pozwala na zwięk-szenie częstotliwości ponad ~3GHz bez znacznego wzrostu poboru prądu Optymalizacje architektury też mają swoje granice © Tom’s Hardware
Równoległość – motywacja Obecnie jedyną możliwością znacznego zwiększenia mocy obliczeniowej pojedyn-czego komputera jest zwiększenie liczby procesorów bądź rdzeni w procesorze
Rasteryzacja Obiekty trójwymiarowe opisane poprzez tablice wierzchołków i trójkątów Przekształcanie wierzchołków niezależne Rysowanie trójkątów: poprzez bufor głębi, rozbicie na poszczególne piksele, wypełniane niezależnie Idealne do zrównoleglenia Niestety słaba jakość generowanej grafiki
Rasteryzacja – cd.
Rasteryzacja – cd. Podstawowy algorytm używany w grafice kompu-terowej – od początków tej dyscypliny do dziś W komputerach PC równoległe wykonanie znacznie wcześniej niż wiele rdzeni – od 2. połowy lat ‘90
Techniki śledzenia promieni Powstały w celu generacji grafiki o jakości znacznie przewyższającej rasteryzację Podstawowy algorytm: śledzenie promieni światła ‘pod prąd’, od kamery, szukając przecięć z elementami sceny odbicia od elementów uwzględnienie oświetlenia pochodzącego ze źródeł światła
Techniki śledzenia promieni – cd.
Techniki śledzenia promieni – cd.
Techniki śledzenia promieni – cd. Przy podstawowej metodzie obliczanie kolo-ru każdego fragmentu obrazu wynikowego jest niezależne Metody bardziej zaawansowane wprowadza-ją pewne zależności Mimo to, śledzenie promieni jest doskona-łym kandydatem do zrównoleglenia Źle działa na kartach graficznych
Techniki śledzenia promieni – cd. Do zrównoleglenia algorytmów śledzenia promieni najlepiej nadają się maszyny wieloprocesorowe Od opublikowania biblioteki DirectX 9 są próby uruchomienia tych algorytmów na kartach graficznych Ta druga opcja, mimo nieznacznego wzrostu wydajności, wciąż narzuca zbyt poważne ograniczenia na oprogramowanie
Mapowanie fotonów Zaawansowany algorytm oparty o śledzenie promieni Technika dwuprzebiegowa śledzenie promieni od źródeł światła, rejestracja fotonów w mapie w punktach przecięcia z geometrią sceny rendering podobnie jak w zwykłej metodzie śledzenia promieni, ale z użyciem mapy fotonów zamiast oryginalnych źródeł światła
Mapowanie fotonów – cd. © Henrik Wann Jensen
Mapowanie fotonów – cd. Bardzo dobre rezultaty Niestety duże zużycie pamięci, w szczególności dla złożonych scen Nieco trudniejsze w zrównolegleniu, niż podstawowy algorytm śledzenia promieni Śledzenie fotonów – zrównoleglenie podobnie jak w przypadku metody podstawowej, rejestracja fotonów w tablicy
Mapowanie fotonów – cd. Nieco trudniejsze w zrównolegleniu, niż podstawowy algorytm śledzenia promieni budowa struktury kd-tree na podstawie tablicy fotonów – tez można zrównoleglić, choć nieco trudniej rendering mapy fotonów – zrównoleglenie identyczne jak w przypadku metody podstawowej
Przetwarzanie strumieniowe Podejścia SIMD i MIMD A może jedna procedura i wiele danych?
Przetwarzanie strumieniowe – cd. Model pewnej klasy algorytmów równoległych Abstrakcyjny model procesora strumieniowe-go pozwala wykonać dowolny program na każdym elemencie strumienia wejściowego Przetwarzanie elementów strumienia niezależne, bez zachowania kolejności Procesor strumieniowy narzuca pewne ograniczenia, ale oferuje lepszą wydajność
Przetwarzanie strumieniowe – cd. Podstawowa metoda śledzenia promieni jest idealnym kandydatem na przetwarzanie strumieniowe Opis sceny reprezentowany przez pamięć tylko do odczytu Strumień wejściowy – numery promieni Strumień wyjściowy – światło wpadające do kamery wzdłuż danego promienia
Przetwarzanie strumieniowe – cd. Niestety, mapowanie fotonów nie daje się opisać przy pomocy jednej procedury Pierwszy krok strumieniowy – numery fotonów na wejściu, ich energie i położenia na wyjściu Budowa mapy fotonów na podstawie wyjścia poprzedniego kroku, ogólny (nie-strumieniowy) algorytm równoległy Drugi krok strumieniowy – rendering, w pamięci do odczytu opis sceny + mapa fotonów
Technologie SLI/Crossfire Zwiększenie mocy obliczeniowej poprzez użycie kilku kart graficznych bądź karty dwuprocesorowej Metody SFR (Split Frame Rendering) i AFR (Alternate Frame Rendering)
Technologie SLI/Crossfire – cd. Niestety, technologie te są przykładem na to, jak teoretycznie bardzo dobre rozwiązanie można zepsuć w praktyce Replikacja danych w pamięci, karta mająca w sloganach reklamowych 1GB pamięci potrafi przechowywać 512MB danych Niektóre aplikacje mogą skorzystać z trybu multi-GPU, a inne nie (nie wiadomo dlaczego) Niestabilne działanie, błędy w sterownikach
Obliczenia GPGPU GPGPU – General Purpose GPU – obliczenia ogól-nego przeznaczenia na procesorach graficznych © Goodnight, Woolley, Lewin, Luebke, Humphreys: Graphics Hardware 2003
Obliczenia GPGPU – cd. Ogromna moc obliczeniowa (450 GFlops peak Nvidia Tesla GPU vs. 80 GFlops peak 4-rdzeniowego 3GHz CPU) Pojedyncza precyzja Ograniczenia na możliwe algorytmy Brak zarządzania pamięcią, dynamicznych struktur danych, rekurencji, funkcji wirtual-nych, max. 1.5GB pamięci na procesor
Algorytmy GPGPU Algebra liniowa (np. mnożenie macierzy) Równania różniczkowe cząstkowe FFT I wiele innych, ogólnie: wszystkie te algorytmy, które operują na regularnych strukturach danych Budowa i przeszukiwanie drzew niestety działa źle
Algorytmy GPGPU – cd. Jeżeli dany algorytm da się bezproblemowo uruchomić w technologii GPGPU, to algorytm ten będzie działał wielokrotnie szybciej niż na CPU W przeciwnym wypadku straty wydajności na podziale na elementy CPU i GPGPU oraz na transmisje danych powodują nieopłacal-ność podejścia GPGPU
Nvidia CUDA Compute Unified Device Architecture Środowisko programistyczne dedykowane GPGPU Kompilator implementujący podzbiór języka C © Nvidia
Nvidia CUDA – GPU Tesla
Maszyny wieloprocesorowe Moc obliczeniowa znacznie większa niż w przypadku maszyn jednoprocesorowych Jednak wyraźnie mniejsza niż nawet pojedynczego GPU Możliwość uruchamiania dowolnych algorytmów, podwójna precyzja W przypadku rozwiązań Intela wąskim gardłem jest dostęp do pamięci, pod koniec tego roku ma to ulec poprawie
Maszyny wieloprocesorowe – cd. © Ulrich Drepper, http://lwn.net
Śledzenie promieni CPU vs. GPU Algorytm używa nieregularnych struktur danych – np. drzew kd do przechowywania geometrii sceny Trudność tę można obejść, jednak kosztem utraty wydajności Obecne implementacje GPU nieco szybsze, jednak za cenę poważnych ograniczeń (np. same trójkąty, niewielkie sceny) i nieprecy-zyjnych obliczeń
Podsumowanie Do uruchamiania algorytmu rasteryzacji najlepiej nadaje się wydajna karta graficzna z pojedynczym GPU Należy unikać technologii SLI i Crossfire Do śledzenia promieni najlepsze są maszyny wieloprocesorowe, oparte o CPU Rozwiązania GPGPU zapewniają ogromną moc obliczeniową, niestety dla wąskiej klasy algorytmów