9. 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….
10. 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…
11. 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).
12. 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.
13. 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
17. 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.
18. 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.
19. 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…
20. Czasy obecne (programista)
C++ na kartach graficznych
Rekurencja
Pojawiają się struktury danych i rozwijają
biblioteki… (CuFFT, CuBLAS….)
PRINTF!!!
Debug na karcie graficznej
21. 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.
23. 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).
24. CUDA
Jest to również synonim rozszerzenia
standardowego języka C o składnię i
biblioteki potrzebne do wygodnego
przeprowadzania obliczeń na kartach
graficznych.
35. 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>
36. 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…
37. OpenCL
AMD
http://developer.amd.com/tools/hc/Pages/default
.aspx
Intel
http://software.intel.com/en-us/vcsource/tools/op
encl-sdk
Apple
https://developer.apple.com/library/mac/#docum
entation/Performance/Conceptual/OpenCL_MacProg
Guide/Introduction/Introduction.html
ARM
38. 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
40. 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
41. 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