[dsg] przyczajony gpu - ukryty smok
TRANSCRIPT
Przyczajony GPUUkryty smok
Konrad Szałkowski
Koło – lista dyskusyjna
Libra.cs.put.poznan.pl/mailman/listinfo/skisr-kolo
Agenda
Po co? Krótka prezentacja Skąd? Dlaczego? Gdzie? Gdzie nie? Jak?
Po co zajmować się GPU?
CPU
PamięćDDR3-19200 – 19,2 GB/s
Wydajnośći7-3770k (@4,7GHz) – 120 GFLOPS
Energia120 GFLOPS / 120W = 1 GFLOPS/W (chłodzenie not included)
GPU
PamięćGDDR5 - 224 GB/s
WydajnośćRadeon 7970 – 4 TFLOPS / 1 TFLOPS
Energia1000 GFLOPS / 314W= 3,1 GFLOPS/W
Moje doświadczenie
CPU(CORE 2 DUO QUAD Q6600 2,4GHZ 4GB DDR2)
RayTracer 720p: 3-4 FPS
SGEMM 1000: 5924 ms
Sort 10^6: 43 ms
Sort 10^8: 1 s
GPU(NVIDIA GEFORCE GTX470 1296MB GDDR5)
RayTracer 720p: 80 FPS
SGEMM 1000: 528 ms
Sort 10^6: 547 ms
Sort 10^8: 800 ms
Prezentacja
NBody simulation
FluidSimulation2D
MD5 Brute Force Attack
Slajd bez którego nie może obyć się żadna prezentacja o GPU
Haczyk
Piękne liczby, powodują dreszcze, ale gdzie jest haczyk?
Skąd to się wzięło?
Na początku było słowo… Do komunikacji z komputerem wystarczały
terminale znakowe. (nadal wystarczają )
Renderowanie obrazu składającego się z pixeli (piksli).
Akceleracja 2D, rysowanie kształtów, z-bufory, sprite’y….
Skąd to się wzięło?
Gry komputerowe zaczynają napędzać biznes…
Wejście w świat 3D – obliczenia na wierzchołkach brył, wektorach, macierzach liczb zmiennoprzecinkowych.
Akceleracja 3D – coraz bogatsza grafika, coraz więcej smaczków, dynamiczne oświetlenie…
Skąd to się wzięło?
Powstanie pierwszego GPU – NV10. Karta graficzna przejmuje obliczenia Transform&Lightning.
Pojawiają się shadery – krótkie programiki ładowane do karty graficznej obrabiające znajdujące się w niej dane (NV30).
Skąd to się wzięło?
Coraz większe wymagania dla potoku przetwarzania i shaderów….
Pomysł obrabiania zjawisk fizyki w grach na GPU….
Pojawia się CUDA (chipset G80) – „dowolne” programowanie na GPU z dostępem do prawie całej infrastruktury karty graficznej w kodzie pochodnym C.
Dlaczego tak to działa?
Świat 3D jest konstruowany w karcie graficznej za pomocą liczb zmiennoprzecinkowych.
Liczby te opisują wierzchołki brył które są rzutowane na ekran (lub inne urządzenia wyświetlające).
Najczęściej są to liczby pojedynczej precyzji.
Architektura GPU jest dostosowana do natury obliczeń obrazu 3D. Wiele wierzchołków, wiele pikseli, ale wszystkie obrabiane tym samym programem.
GPU to procesory SIMD – single instruction - multiple data
Architektura komputera
DDR3 DRAMDDR3 DRAM
CONTROL UNITCONTROL UNIT
ALUALU ALUALU
ALUALU ALUALU
CACHECACHE
Architektura karty graficznej
GDDR5 DRAM GDDR5 DRAM
CONTROLCONTROL
CACHECACHE
ALUALU
ALUALU
ALUALU
ALUALU
ALUALU
ALUALU
ALUALU
ALUALU
ALUALU
ALUALU
ALUALU
ALUALU
ALUALU
ALUALU
ALUALU
ALUALU
ALUALU
ALUALU
ALUALU
ALUALU
CONTROLCONTROL
CACHECACHE
ALUALU
ALUALU
ALUALU
ALUALU
ALUALU
ALUALU
ALUALU
ALUALU
ALUALU
ALUALU
ALUALU
ALUALU
ALUALU
ALUALU
ALUALU
ALUALU
ALUALU
ALUALU
ALUALU
ALUALU
Architektura pamięci karty graficznej
GDDR5 DRAM GDDR5 DRAM
CONSTANTS MEMORYCONSTANTS MEMORY
TEXTURE MEMORYTEXTURE MEMORY
ALUALUALUALU
REGISTERSREGISTERS REGISTERSREGISTERSINSTRUCTION MEMORY
INSTRUCTION MEMORY
SHARED MEMORYSHARED MEMORY
Gdzie znajdą zastosowanie GPU
Symulacje objętościowe cieczy i gazów, Optymalizacja wydajności aerodynamicznej pojazdów, Analiza pogody, Wizualizacje, Obliczanie hashy, … i wiele innych
Gdziekolwiek gdzie zastosowanie znajdują algorytmy obliczeń równoległych najlepiej operujące na liczbach zmiennoprzecinkowych.
Gdzie nie znajdą zastosowania GPU
Nadzorowanie macierzy RAID Kontrola ruchu sieciowego Obliczenia wymagające dużej liczby
rekurencji Bazy danych
Gdziekolwiek, gdzie potrzebne są operacje IO.
Czasy obecne (użytkownik)
Zwiększanie precyzji obliczeń (double naprawdę wchodzą do gry)
Każdy producent chce mieć swoje GPU – do liderów nVidii i ATI(AMD) dołączają Apple, Samsung, Intel, ARM
Stopniowe odejście od typowych zastosowań rozrywkowych
Programy użytkowe zaczynają czerpać korzyści z GPU: Photoshop, AutoCAD, ArchiCAD, pakery…
Czasy obecne (programista)
C++ na kartach graficznych Rekurencja Pojawiają się struktury danych i rozwijają
biblioteki… (CuFFT, CuBLAS….) PRINTF!!! Debug na karcie graficznej
Wady GPU
Kiepskie IO.(generalnie tylko O – monitor komputera)
Brak wydajnego mostu CPU-GPU. (PCI-E 16x jest za wolne)
Ilość zużywanej energii. Sposób programowania.
Jak zacząć programować?
Choose your destiny CUDA OpenCL ATI-Stream DirectCompute
CUDA
Cytując stronę NVidii:CUDA jest opracowaną przez firmę NVIDIA, równoległą architekturą obliczeniową, która zapewnia radykalny wzrost wydajności obliczeń dzięki wykorzystaniu mocy układów GPU (graphics processing unit – jednostka przetwarzania graficznego).
CUDA
Jest to również synonim rozszerzenia standardowego języka C o składnię i biblioteki potrzebne do wygodnego przeprowadzania obliczeń na kartach graficznych.
CUDA
Kup GeForce'a/Quadro/Tesla/Tegra... CUDA Zone - nVidia dba o devów
http://www.nvidia.pl/object/cuda_home_new_pl.html
Duże community, dużo wykładów i tutoriali
CUDA
Kernel - funkcja ładowana do pamięci instrukcji multiprocesora.
Przykładowo
CUDA
Jak się wywołuje kernele?
CUDA
Jak się wywołuje kernele?
CUDA
Jak się wywołuje kernele?
CUDA
Jak się wywołuje kernele?
CUDA
Organizacja kerneli:Blok
Grid Grid Grid Grid
Grid Grid Grid Grid
Grid Grid Grid Grid
Grid Grid Grid Grid
Wątek Wątek Wątek Wątek
Wątek Wątek Wątek Wątek
CUDA
Organizacja kerneli:Grid
Grid Grid Grid Grid
Grid Grid Grid Grid
Grid Grid Grid Grid
Grid Grid Grid Grid
Blok Blok Blok Blok
Blok Blok Blok Blok
CUDA
Organizacja kerneli:Wykonanie
Grid Grid Grid Grid
Grid Grid Grid Grid
Grid Grid Grid Grid
Grid Grid Grid Grid
Grid Grid Grid Grid
Grid Grid Grid Grid
CUDA
Jak się wywołuje kernele?
CUDA
Ilość wątków: 1024 na blok do ułożenia w 3 wymiarach w
zakresach x,y:<1;1024> z: <1;64> (2^31 -1)^3 bloków do ułożenia w 3 wymiarach na
gridzie w zakresach x,y,z:<1;2^31-1>
CUDA
Klucz do dobrego programowania w CUDA(moim zdaniem): Zmiana sposobu myślenia o programowaniu
równoległym w bardziej masowy… Opanowanie kruczków obsługi pamięci… Opanowanie dobrego programowania w C…
OpenCL
AMD http://developer.amd.com/tools/hc/Pages/default
.aspx Intel
http://software.intel.com/en-us/vcsource/tools/opencl-sdk
Apple https://developer.apple.com/library/mac/#docum
entation/Performance/Conceptual/OpenCL_MacProgGuide/Introduction/Introduction.html
ARM nVidia
OpenCL
Podobna koncepcja do CUDY: Thread – work-item Block – work-group Grid – ND-range
Dynamiczna kompilacja kerneli Dużo więcej formalizmu w zapisie programu
OpenCL
Krótka prezentacja
CUDA
ZALETY
Przodownik programowania na GPU
Prędkość Dostęp do wszystkich
smaczków programowania na GPU (zarządzanie pamięcią, wyrównywanie słów w pamięci)
WADY
You’ll never know what next CUDA will be – programy pisane są tylko na dany typ karty (chip)
Monopol nVidii – działa tylko na jej urządzeniach
OpenCL
ZALETY
Stały standard Wszyscy go implementują Learn once „Uniwersalny” Dobrze integruje się z
OpenGL’em
WADY
Wolniejszy od CUDY Nie nadąża za sprzętem „Formalny” Dynamiczna kompilacja
kerneli
Koniec
Dziękuję za uwagę
Pytania
?
Koło – lista dyskusyjna
Libra.cs.put.poznan.pl/mailman/listinfo/skisr-kolo