Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

GPGPU Michał Drobot Visual Technical Director Reality Pump.

Podobne prezentacje


Prezentacja na temat: "GPGPU Michał Drobot Visual Technical Director Reality Pump."— Zapis prezentacji:

1 GPGPU Michał Drobot Visual Technical Director Reality Pump

2 Plan GPGPUGPGPU Istniejące platformyIstniejące platformy DedykowaneDedykowane KlasyczneKlasyczne Sposób mapowania algorytmuSposób mapowania algorytmu Mapowanie danychMapowanie danych Mapowanie obliczeńMapowanie obliczeń Optymalizacje sprzętoweOptymalizacje sprzętowe Stencil / Z – bufferStencil / Z – buffer Sampler statesSampler states Typowe zastosowaniaTypowe zastosowania

3 GPGPU GPGPUGPGPU Obliczenia ogólnego zastosowania wykonywane na karcie graficznejObliczenia ogólnego zastosowania wykonywane na karcie graficznej Duże znaczenie naukowe ze względu na łatwość mapowania niektórych algorytmów na architektury wielopotokoweDuże znaczenie naukowe ze względu na łatwość mapowania niektórych algorytmów na architektury wielopotokowe Olbrzymia wydajność GPU w zastosowaniach wektorowychOlbrzymia wydajność GPU w zastosowaniach wektorowych Przyśpieszanie standardowych obliczeń w grach będących dotąd domeną CPUPrzyśpieszanie standardowych obliczeń w grach będących dotąd domeną CPU FizykaFizyka AIAI Powiązane ideowo i wykonawczo z postprocessingiem graficznymPowiązane ideowo i wykonawczo z postprocessingiem graficznym

4 Istniejące platformy Platformy dedykowane GPGPUPlatformy dedykowane GPGPU GPU zgodne z DX 10.0GPU zgodne z DX 10.0 Nvidia G80Nvidia G80 Nvidia CUDANvidia CUDA Nvidia TESLANvidia TESLA Ati HDAti HD Ati STREAMAti STREAM Ati CTMAti CTM

5 Istniejące platformy OferująOferują Wsparcie programistyczne dla GPUWsparcie programistyczne dla GPU Działają jak wrapperyDziałają jak wrappery Mapują typowe dla CPU operacje na GPU bez udziału użytkownikaMapują typowe dla CPU operacje na GPU bez udziału użytkownika Posiadają narzut obliczeniowy, ale też mają głębszy dostęp do sprzętuPosiadają narzut obliczeniowy, ale też mają głębszy dostęp do sprzętu Umożliwiają prace w standardowym C / C++ przy akceleracji sprzętowejUmożliwiają prace w standardowym C / C++ przy akceleracji sprzętowej Dają bezpośredni dostęp do sprzętuDają bezpośredni dostęp do sprzętu Obecnie mimo narzutu są dobrą alternatywą dla CPU z racji olbrzymiej wydajności ALU (większość mapowanych algorytmów 40:1)Obecnie mimo narzutu są dobrą alternatywą dla CPU z racji olbrzymiej wydajności ALU (większość mapowanych algorytmów 40:1)

6 Istniejące platformy GPU zgodne z DX 11.0GPU zgodne z DX 11.0 DX 11 wprowadza SM 5.0DX 11 wprowadza SM 5.0 Computational ShaderComputational Shader Tryb obsługi shaderów ukierunkowany na obliczenia ogólnego zastosowaniaTryb obsługi shaderów ukierunkowany na obliczenia ogólnego zastosowania Polimorfizm, klasowość i inne cechy C++ dla shaderówPolimorfizm, klasowość i inne cechy C++ dla shaderów Wykonywane sprzętowo z małym narzutem obliczeniowymWykonywane sprzętowo z małym narzutem obliczeniowym

7 Istniejące platformy Klasyczne GPGPUKlasyczne GPGPU Wymusza mapowanie algorytmów na platformę graficzną nieprzystosowaną do obliczeń ogólnego zastosowaniaWymusza mapowanie algorytmów na platformę graficzną nieprzystosowaną do obliczeń ogólnego zastosowania GPGPU wykonywane na X360 i PS3 wymaga podejścia klasycznegoGPGPU wykonywane na X360 i PS3 wymaga podejścia klasycznego Dużo użytkowników posiada GPU nie wspierające nowego GPGPUDużo użytkowników posiada GPU nie wspierające nowego GPGPU Większa wydajność niż przy użyciu wrapperaWiększa wydajność niż przy użyciu wrappera Zależne od GPU, algorytmów i interpretacjiZależne od GPU, algorytmów i interpretacji

8 Sposób mapowania algorytmu Ogólny pipelineOgólny pipeline Załadować zmienne do texturZaładować zmienne do textur textury GPU == tablice CPUtextury GPU == tablice CPU Koordynaty tekstur == domeny obliczenioweKoordynaty tekstur == domeny obliczeniowe Renderuj czworokątRenderuj czworokąt Wykonaj obliczenia w shaderachWykonaj obliczenia w shaderach Pixel Shader == pętle zewnętrzne CPUPixel Shader == pętle zewnętrzne CPU Sampler textur == odczyt pamięci CPUSampler textur == odczyt pamięci CPU Zapisz wynik obliczeń (renderingu) jako pixele w czworokącieZapisz wynik obliczeń (renderingu) jako pixele w czworokącie Render To Texture == zapis pamięci CPURender To Texture == zapis pamięci CPU koordynaty vertexów == zakres obliczeńkoordynaty vertexów == zakres obliczeń

9 Sposób mapowania algorytmu GatherScatter

10 Sposób mapowania algorytmu Metody pobierania danychMetody pobierania danych GatherGather Dla wyniku danej komórki zbieramy dane z innych niezależnych komórekDla wyniku danej komórki zbieramy dane z innych niezależnych komórek Niezależny odczytNiezależny odczyt A = x[i]A = x[i] Realizowane przez texture samplerRealizowane przez texture sampler texture2D()texture2D()

11 Sposób mapowania algorytmu Metody pobierania danychMetody pobierania danych ScatterScatter Dla danych komórek rozprzestrzeniamy wyniki w inne zadane niezależne komórkiDla danych komórek rozprzestrzeniamy wyniki w inne zadane niezależne komórki Niezależny zapisNiezależny zapis A[i] = xA[i] = x Niewykonalne na GPUNiewykonalne na GPU

12 Sposób mapowania algorytmu Korzystamy z algorytmów typu GatherKorzystamy z algorytmów typu Gather Algorytmu typu Scatter czasem możemy odwrócićAlgorytmu typu Scatter czasem możemy odwrócić Rozwiązania projektujemy myśląc w trybie GatherRozwiązania projektujemy myśląc w trybie Gather Nie istnieje możliwość jednoczesnego odczytu i zapisu => brak możliwości zastosowania algorytmów dynamicznych w pojedynczym przebieguNie istnieje możliwość jednoczesnego odczytu i zapisu => brak możliwości zastosowania algorytmów dynamicznych w pojedynczym przebiegu

13 Sposób mapowania algorytmu PS wykonuje określona funkcję na każdym pixelu (bloku danych) równoleglePS wykonuje określona funkcję na każdym pixelu (bloku danych) równolegle Przechowujemy dane wejściowe jako texele w texturzePrzechowujemy dane wejściowe jako texele w texturze Rysujemy czworokąt którego pixele stanowią wynik konkretnego działania na texelach textury wejsciowejRysujemy czworokąt którego pixele stanowią wynik konkretnego działania na texelach textury wejsciowej Zapisujemy wyrenderowany czworokąt jako texture do dalszych obliczeńZapisujemy wyrenderowany czworokąt jako texture do dalszych obliczeń

14 Sposób mapowania algorytmu Łatwość przeprowadzenia operacji złożonychŁatwość przeprowadzenia operacji złożonych Min, max, sumy, średnie itp..Min, max, sumy, średnie itp.. Wiele przejść podczas obliczeńWiele przejść podczas obliczeń Ciągi : textura -> RTT -> textura -> RTT…Ciągi : textura -> RTT -> textura -> RTT… Zawężanie zbioru danychZawężanie zbioru danych Ciągi renderujące do mniejszych texturCiągi renderujące do mniejszych textur Skalowalność lokalności pojedynczego przejścia jest związana z ilością przejśćSkalowalność lokalności pojedynczego przejścia jest związana z ilością przejść Więcej odczytów pamięci zwiększa czas przejścia ale zmniejsza ilość wymaganych przejśćWięcej odczytów pamięci zwiększa czas przejścia ale zmniejsza ilość wymaganych przejść

15 Sposób mapowania algorytmu Przykład : max – 1:4Przykład : max – 1:

16 Sposób mapowania algorytmu BranchingBranching W GPGPU należy szczególnie uważać na flow controlW GPGPU należy szczególnie uważać na flow control Często mapowane algorytmy ciężko przygotować do działania równoległegoCzęsto mapowane algorytmy ciężko przygotować do działania równoległego Stosowanie Flow control może okazać się nieefektywneStosowanie Flow control może okazać się nieefektywne Kompilatory preferują Predicated BranchingKompilatory preferują Predicated Branching Wykonanie obu gałęziWykonanie obu gałęzi Wybranie wyniku z jednejWybranie wyniku z jednej Wiąże się to z wielokrotnym liczeniemWiąże się to z wielokrotnym liczeniem

17 Sposób mapowania algorytmu Zamiast stosować branching czasem opłaca się dokonać określonych przebiegów PS dla ograniczonego zbioru pixeliZamiast stosować branching czasem opłaca się dokonać określonych przebiegów PS dla ograniczonego zbioru pixeli Stosowane w podczas liczenia warunków granicznych wielu symulacji ciągłychStosowane w podczas liczenia warunków granicznych wielu symulacji ciągłych

18 Sposób mapowania algorytmu Alogrytm właściwy Alogrytm z warunkami brzegowymi

19 Optymalizacje sprzętowe Wykorzystanie Z-Cullingu do przyspieszenia obliczeńWykorzystanie Z-Cullingu do przyspieszenia obliczeń Zapisujemy do Z-buffera wartość 0 jeśli chcemy pominąć obliczeniaZapisujemy do Z-buffera wartość 0 jeśli chcemy pominąć obliczenia Zapisujemy wartość 1 jeśli chcemy wykonać obliczeniaZapisujemy wartość 1 jeśli chcemy wykonać obliczenia PS dajemy na wejściu wartość głębi 0.5PS dajemy na wejściu wartość głębi 0.5 W ten sposób obliczenia zostaną pominięte sprzętowoW ten sposób obliczenia zostaną pominięte sprzętowo Przydatne np. w nieruchomych obszarach symulacjiPrzydatne np. w nieruchomych obszarach symulacji Podobnie można wykorzystać Stencil BufferPodobnie można wykorzystać Stencil Buffer Różne implementacje Hi-Z nie gwarantują pominięcia obliczeń co do pixelaRóżne implementacje Hi-Z nie gwarantują pominięcia obliczeń co do pixela W najgorszym wypadku policzymy redundantnieW najgorszym wypadku policzymy redundantnie

20 Optymalizacje sprzętowe Stałe dla systemu obliczeniowego liczymy na CPU i przekazujemy do GPUStałe dla systemu obliczeniowego liczymy na CPU i przekazujemy do GPU W zależności od konfiguracji sprzętowej funkcje wydajniejsze może być przechowywanie nisko wymiarowych funkcji w texturachW zależności od konfiguracji sprzętowej funkcje wydajniejsze może być przechowywanie nisko wymiarowych funkcji w texturach Odczyt interpolowany bądź punktowy w zależności od funkcjiOdczyt interpolowany bądź punktowy w zależności od funkcji

21 Optymalizacje sprzętowe Mniej bitowe struktury danych są szybsze w obliczeniachMniej bitowe struktury danych są szybsze w obliczeniach Podstawowa jednostka obliczeniowa : floatPodstawowa jednostka obliczeniowa : float Obsługa F32, F64, I32, I64Obsługa F32, F64, I32, I64 Wykorzystujemy istniejące formaty w sposób ekonomiczny R16G16, RGBA64, R16G16B16A16FWykorzystujemy istniejące formaty w sposób ekonomiczny R16G16, RGBA64, R16G16B16A16F Brak prostego wsparcia struktur danychBrak prostego wsparcia struktur danych Istnieją liczne implementacje hashmap, drzew, systemów kubełkowych etc.Istnieją liczne implementacje hashmap, drzew, systemów kubełkowych etc.

22 Optymalizacje sprzętowe Wykorzystanie stanów sampleraWykorzystanie stanów samplera Sampler textury może pracować w trybieSampler textury może pracować w trybie POINT – sampluje wg. Nearest neighbourPOINT – sampluje wg. Nearest neighbour LINEAR – podaje wartość wg interpolacji bilinearnej 2x2 texeliLINEAR – podaje wartość wg interpolacji bilinearnej 2x2 texeli W sytuacjach gdy liczymy wartości uśrednione możemy wykorzystać sprzętowe wsparcie LINEAR sampleraW sytuacjach gdy liczymy wartości uśrednione możemy wykorzystać sprzętowe wsparcie LINEAR samplera Przydatne również w wielu metodach relaksującychPrzydatne również w wielu metodach relaksujących Smoothing symulacji itp..Smoothing symulacji itp..

23 Optymalizacje sprzętowe Przestrzeń ciągła UV (0.5,0.5)

24 Optymalizacje sprzętowe Przestrzeń ciągła UV Puv = (0.6,0.6) P = P32 * D(P32, Puv) + P42 * D(P42, Puv) + P33 * D(P33, Puv) + P34 * D(P34, Puv) = 1.25

25 Optymalizacje sprzętowe LINEAR samplingLINEAR sampling Optymalizuje bluryOptymalizuje blury Dla blura o promieniu r wymaga r sampli (zamiast 2r)Dla blura o promieniu r wymaga r sampli (zamiast 2r) Uśredniona wartość 2 texeli pobierana przez samplowanie linioweUśredniona wartość 2 texeli pobierana przez samplowanie liniowe

26 Optymalizacje Możliwość użycia zaawansowanych algorytmów dla znanych problemówMożliwość użycia zaawansowanych algorytmów dla znanych problemów Licz drożej, lecz mniejLicz drożej, lecz mniej Filtrowania obrazuFiltrowania obrazu Median filterMedian filter Przy użyciu histogramu i dystrybuantyPrzy użyciu histogramu i dystrybuanty Heterogeniczny box blurHeterogeniczny box blur SAT – Summed Area TableSAT – Summed Area Table Blur homogenicznyBlur homogeniczny Metoda histogramu O(w) – w - szerokość okienka bluraMetoda histogramu O(w) – w - szerokość okienka blura

27 Typowe zastosowania Aplikacje o dużym stosunku obliczeń do przesyłu danychAplikacje o dużym stosunku obliczeń do przesyłu danych Równania różniczkoweRównania różniczkowe Automaty komórkoweAutomaty komórkowe Algebra liniowaAlgebra liniowa Systemy cząsteczkoweSystemy cząsteczkowe Przetwarzanie danychPrzetwarzanie danych Wspomaganie istniejących aplikacjiWspomaganie istniejących aplikacji PhotoshopPhotoshop Dekodowanie videoDekodowanie video

28 Typowe zastosowania Zastosowania w grachZastosowania w grach Detekcja kolizjiDetekcja kolizji FizykaFizyka Ciał stałychCiał stałych Cząsteczek, dymu, wody, ciał miękkichCząsteczek, dymu, wody, ciał miękkich Systemy cząsteczkoweSystemy cząsteczkowe Raycasting / RaytracingRaycasting / Raytracing Systemy komórkowe AISystemy komórkowe AI

29 Typowe zastosowania Istniejące systemy fizyczne wykorzystują obliczenia GPGPUIstniejące systemy fizyczne wykorzystują obliczenia GPGPU Havok FXHavok FX Nvidia PhysixNvidia Physix


Pobierz ppt "GPGPU Michał Drobot Visual Technical Director Reality Pump."

Podobne prezentacje


Reklamy Google