際際滷

際際滷Share a Scribd company logo
Przyczajony GPU
Ukryty smok
Konrad 皆噛温一看敬壊一庄
Koo  lista dyskusyjna
 Libra.cs.put.poznan.pl/mailman/listinfo/skisr-
kolo
 Skisr-kolo@libra.cs.put.poznan.pl
Agenda
 Po co?
 Kr坦tka prezentacja
 Skd?
 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
 Energia
120 GFLOPS / 120W
= 1 GFLOPS/W
(chodzenie not included)
GPU
 Pami
GDDR5 - 224 GB/s
 Wydajno
Radeon 7970 
4TFLOPS / 1TFLOPS
 Energia
1000 GFLOPS / 314W
= 3,1 GFLOPS/W
Moje dowiadczenie
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
 Pikne liczby, powoduj dreszcze, ale gdzie
jest haczyk?
Skd to si wzio?
 Na pocztku byo sowo
 Do komunikacji z komputerem wystarczay
terminale znakowe. (nadal wystarczaj  )
 Renderowanie obrazu skadajcego si z
pixeli (piksli).
 Akceleracja 2D, rysowanie ksztat坦w, z-
bufory, spritey.
Skd to si wzio?
 Gry komputerowe zaczynaj napdza biznes
 Wejcie w wiat 3D  obliczenia na
wierzchokach bry, wektorach, macierzach liczb
zmiennoprzecinkowych.
 Akceleracja 3D  coraz bogatsza grafika, coraz
wicej smaczk坦w, dynamiczne owietlenie
Skd to si wzio?
 Powstanie pierwszego GPU  NV10.
Karta graficzna przejmuje obliczenia
Transform&Lightning.
 Pojawiaj si shadery  kr坦tkie programiki
adowane do karty graficznej obrabiajce
znajdujce si w niej dane (NV30).
Skd to si wzio?
 Coraz wiksze 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 dostpem do prawie
caej infrastruktury karty graficznej w kodzie
pochodnym C.
Dlaczego tak to dziaa?
 wiat 3D jest konstruowany w karcie graficznej za pomoc liczb
zmiennoprzecinkowych.
 Liczby te opisuj wierzchoki bry kt坦re s rzutowane na ekran (lub
inne urzdzenia wywietlajce).
 Najczciej s to liczby pojedynczej precyzji.
 Architektura GPU jest dostosowana do natury oblicze obrazu 3D.
Wiele wierzchok坦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 DRAMGDDR5 DRAM
CON
TROL
CON
TROL
CACHECACHE
ALUALU
ALUALU
ALUALU
ALUALU
ALUALU
ALUALU
ALUALU
ALUALU
ALUALU
ALUALU
ALUALU
ALUALU
ALUALU
ALUALU
ALUALU
ALUALU
ALUALU
ALUALU
ALUALU
ALUALU
CON
TROL
CON
TROL
CACHECACHE
ALUALU
ALUALU
ALUALU
ALUALU
ALUALU
ALUALU
ALUALU
ALUALU
ALUALU
ALUALU
ALUALU
ALUALU
ALUALU
ALUALU
ALUALU
ALUALU
ALUALU
ALUALU
ALUALU
ALUALU
Architektura pamici karty graficznej
GDDR5 DRAMGDDR5 DRAM
CONSTANTS MEMORYCONSTANTS MEMORY
TEXTURE MEMORYTEXTURE MEMORY
ALUALUALUALU
REGISTERSREGISTERS REGISTERSREGISTERSINSTRUCTION
MEMORY
INSTRUCTION
MEMORY
SHARED MEMORYSHARED MEMORY
Gdzie znajd zastosowanie GPU
 Symulacje objtociowe cieczy i gaz坦w,
 Optymalizacja wydajnoci aerodynamicznej pojazd坦w,
 Analiza pogody,
 Wizualizacje,
 Obliczanie hashy,
  i wiele innych
 Gdziekolwiek gdzie zastosowanie znajduj algorytmy
oblicze r坦wnolegych najlepiej operujce na liczbach
zmiennoprzecinkowych.
Gdzie nie znajd zastosowania GPU
 Nadzorowanie macierzy RAID
 Kontrola ruchu sieciowego
 Obliczenia wymagajce du甜ej liczby
rekurencji
 Bazy danych
 Gdziekolwiek, gdzie potrzebne s operacje
IO.
Czasy obecne (u甜ytkownik)
 Zwikszanie precyzji oblicze
(double naprawd wchodz do gry)
 Ka甜dy producent chce mie swoje GPU  do
lider坦w nVidii i ATI(AMD) doczaj Apple,
Samsung, Intel, ARM
 Stopniowe odejcie od typowych zastosowa
rozrywkowych
 Programy u甜ytkowe zaczynaj czerpa korzyci 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
 Cytujc stron NVidii:
CUDA jest opracowan przez firm NVIDIA,
r坦wnoleg architektur obliczeniow, kt坦ra
zapewnia radykalny wzrost wydajnoci
oblicze dziki wykorzystaniu mocy ukad坦w
GPU (graphics processing unit  jednostka
przetwarzania graficznego).
CUDA
 Jest to r坦wnie甜 synonim rozszerzenia
standardowego jzyka C o skadni 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 wykad坦w i tutoriali
CUDA
 Kernel - funkcja adowana do pamici
instrukcji multiprocesora.
 Przykadowo
CUDA
 Jak si wywouje kernele?
CUDA
 Jak si wywouje kernele?
CUDA
 Jak si wywouje kernele?
CUDA
 Jak si wywouje kernele?
CUDA
 Organizacja kerneli:
Blok
Grid Grid Grid Grid
Grid Grid Grid Grid
Grid Grid Grid Grid
Grid Grid Grid Grid
Wtek Wtek Wtek Wtek
Wtek Wtek Wtek Wtek
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 wywouje kernele?
CUDA
 Ilo wtk坦w:
 1024 na blok do uo甜enia w 3 wymiarach w
zakresach x,y:<1;1024> z: <1;64>
 (2^31 -1)^3 blok坦w do uo甜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 mylenia o programowaniu
r坦wnolegym w bardziej masowy
 Opanowanie kruczk坦w obsugi pamici
 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/op
encl-sdk
 Apple
 https://developer.apple.com/library/mac/#docum
entation/Performance/Conceptual/OpenCL_MacProg
Guide/Introduction/Introduction.html
 ARM
OpenCL
 Podobna koncepcja do CUDY:
 Thread  work-item
 Block  work-group
 Grid  ND-range
 Dynamiczna kompilacja kerneli
 Du甜o wicej formalizmu w zapisie programu
OpenCL
 Kr坦tka prezentacja
CUDA
ZALETY
 Przodownik
programowania na GPU
 Prdko
 Dostp do wszystkich
smaczk坦w programowania
na GPU (zarzdzanie
pamici, wyr坦wnywanie
s坦w w pamici)
WADY
 Youll never know what
next CUDA will be 
programy pisane s tylko
na dany typ karty (chip)
 Monopol nVidii  dziaa
tylko na jej urzdzeniach
OpenCL
ZALETY
 Stay standard
 Wszyscy go implementuj
 Learn once
 Uniwersalny
 Dobrze integruje si z
OpenGLem
WADY
 Wolniejszy od CUDY
 Nie nad甜a za sprztem
 Formalny
 Dynamiczna kompilacja
kerneli
Koniec
 Dzikuj za 顎敬温乙
Pytania
 ?
Koo  lista dyskusyjna
 Libra.cs.put.poznan.pl/mailman/listinfo/skisr-
kolo
 Skisr-kolo@libra.cs.put.poznan.pl

More Related Content

[DSG] Przyczajony GPU - ukryty smok

  • 1. Przyczajony GPU Ukryty smok Konrad 皆噛温一看敬壊一庄
  • 2. Koo lista dyskusyjna Libra.cs.put.poznan.pl/mailman/listinfo/skisr- kolo Skisr-kolo@libra.cs.put.poznan.pl
  • 3. Agenda Po co? Kr坦tka prezentacja Skd? Dlaczego? Gdzie? Gdzie nie? Jak?
  • 4. Po co zajmowa si GPU? CPU Pami DDR3-19200 19,2 GB/s Wydajno i7-3770k (@4,7GHz) 120 GFLOPS Energia 120 GFLOPS / 120W = 1 GFLOPS/W (chodzenie not included) GPU Pami GDDR5 - 224 GB/s Wydajno Radeon 7970 4TFLOPS / 1TFLOPS Energia 1000 GFLOPS / 314W = 3,1 GFLOPS/W
  • 5. Moje dowiadczenie 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
  • 6. Prezentacja NBody simulation FluidSimulation2D MD5 Brute Force Attack
  • 7. Slajd bez kt坦rego nie mo甜e oby si 甜adna prezentacja o GPU
  • 8. Haczyk Pikne liczby, powoduj dreszcze, ale gdzie jest haczyk?
  • 9. Skd to si wzio? Na pocztku byo sowo Do komunikacji z komputerem wystarczay terminale znakowe. (nadal wystarczaj ) Renderowanie obrazu skadajcego si z pixeli (piksli). Akceleracja 2D, rysowanie ksztat坦w, z- bufory, spritey.
  • 10. Skd to si wzio? Gry komputerowe zaczynaj napdza biznes Wejcie w wiat 3D obliczenia na wierzchokach bry, wektorach, macierzach liczb zmiennoprzecinkowych. Akceleracja 3D coraz bogatsza grafika, coraz wicej smaczk坦w, dynamiczne owietlenie
  • 11. Skd to si wzio? Powstanie pierwszego GPU NV10. Karta graficzna przejmuje obliczenia Transform&Lightning. Pojawiaj si shadery kr坦tkie programiki adowane do karty graficznej obrabiajce znajdujce si w niej dane (NV30).
  • 12. Skd to si wzio? Coraz wiksze 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 dostpem do prawie caej infrastruktury karty graficznej w kodzie pochodnym C.
  • 13. Dlaczego tak to dziaa? wiat 3D jest konstruowany w karcie graficznej za pomoc liczb zmiennoprzecinkowych. Liczby te opisuj wierzchoki bry kt坦re s rzutowane na ekran (lub inne urzdzenia wywietlajce). Najczciej s to liczby pojedynczej precyzji. Architektura GPU jest dostosowana do natury oblicze obrazu 3D. Wiele wierzchok坦w, wiele pikseli, ale wszystkie obrabiane tym samym programem. GPU to procesory SIMD single instruction - multiple data
  • 14. Architektura komputera DDR3 DRAMDDR3 DRAM CONTROL UNITCONTROL UNIT ALUALU ALUALU ALUALU ALUALU CACHECACHE
  • 15. Architektura karty graficznej GDDR5 DRAMGDDR5 DRAM CON TROL CON TROL CACHECACHE ALUALU ALUALU ALUALU ALUALU ALUALU ALUALU ALUALU ALUALU ALUALU ALUALU ALUALU ALUALU ALUALU ALUALU ALUALU ALUALU ALUALU ALUALU ALUALU ALUALU CON TROL CON TROL CACHECACHE ALUALU ALUALU ALUALU ALUALU ALUALU ALUALU ALUALU ALUALU ALUALU ALUALU ALUALU ALUALU ALUALU ALUALU ALUALU ALUALU ALUALU ALUALU ALUALU ALUALU
  • 16. Architektura pamici karty graficznej GDDR5 DRAMGDDR5 DRAM CONSTANTS MEMORYCONSTANTS MEMORY TEXTURE MEMORYTEXTURE MEMORY ALUALUALUALU REGISTERSREGISTERS REGISTERSREGISTERSINSTRUCTION MEMORY INSTRUCTION MEMORY SHARED MEMORYSHARED MEMORY
  • 17. Gdzie znajd zastosowanie GPU Symulacje objtociowe cieczy i gaz坦w, Optymalizacja wydajnoci aerodynamicznej pojazd坦w, Analiza pogody, Wizualizacje, Obliczanie hashy, i wiele innych Gdziekolwiek gdzie zastosowanie znajduj algorytmy oblicze r坦wnolegych najlepiej operujce na liczbach zmiennoprzecinkowych.
  • 18. Gdzie nie znajd zastosowania GPU Nadzorowanie macierzy RAID Kontrola ruchu sieciowego Obliczenia wymagajce du甜ej liczby rekurencji Bazy danych Gdziekolwiek, gdzie potrzebne s operacje IO.
  • 19. Czasy obecne (u甜ytkownik) Zwikszanie precyzji oblicze (double naprawd wchodz do gry) Ka甜dy producent chce mie swoje GPU do lider坦w nVidii i ATI(AMD) doczaj Apple, Samsung, Intel, ARM Stopniowe odejcie od typowych zastosowa rozrywkowych Programy u甜ytkowe zaczynaj czerpa korzyci 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.
  • 22. Jak zacz programowa? Choose your destiny CUDA OpenCL ATI-Stream DirectCompute
  • 23. CUDA Cytujc stron NVidii: CUDA jest opracowan przez firm NVIDIA, r坦wnoleg architektur obliczeniow, kt坦ra zapewnia radykalny wzrost wydajnoci oblicze dziki wykorzystaniu mocy ukad坦w GPU (graphics processing unit jednostka przetwarzania graficznego).
  • 24. CUDA Jest to r坦wnie甜 synonim rozszerzenia standardowego jzyka C o skadni i biblioteki potrzebne do wygodnego przeprowadzania oblicze na kartach graficznych.
  • 25. 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 wykad坦w i tutoriali
  • 26. CUDA Kernel - funkcja adowana do pamici instrukcji multiprocesora. Przykadowo
  • 27. CUDA Jak si wywouje kernele?
  • 28. CUDA Jak si wywouje kernele?
  • 29. CUDA Jak si wywouje kernele?
  • 30. CUDA Jak si wywouje kernele?
  • 31. CUDA Organizacja kerneli: Blok Grid Grid Grid Grid Grid Grid Grid Grid Grid Grid Grid Grid Grid Grid Grid Grid Wtek Wtek Wtek Wtek Wtek Wtek Wtek Wtek
  • 32. 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
  • 33. 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
  • 34. CUDA Jak si wywouje kernele?
  • 35. CUDA Ilo wtk坦w: 1024 na blok do uo甜enia w 3 wymiarach w zakresach x,y:<1;1024> z: <1;64> (2^31 -1)^3 blok坦w do uo甜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 mylenia o programowaniu r坦wnolegym w bardziej masowy Opanowanie kruczk坦w obsugi pamici 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 wicej formalizmu w zapisie programu
  • 40. CUDA ZALETY Przodownik programowania na GPU Prdko Dostp do wszystkich smaczk坦w programowania na GPU (zarzdzanie pamici, wyr坦wnywanie s坦w w pamici) WADY Youll never know what next CUDA will be programy pisane s tylko na dany typ karty (chip) Monopol nVidii dziaa tylko na jej urzdzeniach
  • 41. OpenCL ZALETY Stay standard Wszyscy go implementuj Learn once Uniwersalny Dobrze integruje si z OpenGLem WADY Wolniejszy od CUDY Nie nad甜a za sprztem Formalny Dynamiczna kompilacja kerneli
  • 42. Koniec Dzikuj za 顎敬温乙
  • 44. Koo lista dyskusyjna Libra.cs.put.poznan.pl/mailman/listinfo/skisr- kolo Skisr-kolo@libra.cs.put.poznan.pl