SlideShare a Scribd company logo
1 of 44
Download to read offline
Przyczajony GPU
Ukryty smok
Konrad Szałkowski
Koło – lista dyskusyjna
 Libra.cs.put.poznan.pl/mailman/listinfo/skisr-
kolo
 Skisr-kolo@libra.cs.put.poznan.pl
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
 Energia
120 GFLOPS / 120W
= 1 GFLOPS/W
(chłodzenie not included)
GPU
 Pamięć
GDDR5 - 224 GB/s
 Wydajność
Radeon 7970 –
4TFLOPS / 1TFLOPS
 Energia
1000 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 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 pamięci 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 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/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 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
 Skisr-kolo@libra.cs.put.poznan.pl

More Related Content

Similar to [DSG] Przyczajony GPU - ukryty smok

PLNOG 6: Łukasz Jagiełło - Wdrożenie skalowalnego systemu plików GlusterFS w ...
PLNOG 6: Łukasz Jagiełło - Wdrożenie skalowalnego systemu plików GlusterFS w ...PLNOG 6: Łukasz Jagiełło - Wdrożenie skalowalnego systemu plików GlusterFS w ...
PLNOG 6: Łukasz Jagiełło - Wdrożenie skalowalnego systemu plików GlusterFS w ...PROIDEA
 
PLNOG19 - Jakub Słociński - Wieloprocesorowa platforma x86 a wydajny routing ...
PLNOG19 - Jakub Słociński - Wieloprocesorowa platforma x86 a wydajny routing ...PLNOG19 - Jakub Słociński - Wieloprocesorowa platforma x86 a wydajny routing ...
PLNOG19 - Jakub Słociński - Wieloprocesorowa platforma x86 a wydajny routing ...PROIDEA
 
Gluster FS
Gluster FSGluster FS
Gluster FS3camp
 
Procesory- rozwój, stan obecny, przykładowe parametry, zakup.
Procesory- rozwój, stan obecny, przykładowe parametry, zakup.Procesory- rozwój, stan obecny, przykładowe parametry, zakup.
Procesory- rozwój, stan obecny, przykładowe parametry, zakup.MarioPL
 
HPE 3PAR All Flash_webinar2
HPE 3PAR All Flash_webinar2HPE 3PAR All Flash_webinar2
HPE 3PAR All Flash_webinar2hpepolska
 
100 M pakietów na sekundę dla każdego.
100 M pakietów na sekundę dla każdego. 100 M pakietów na sekundę dla każdego.
100 M pakietów na sekundę dla każdego. Redge Technologies
 
SFI 2017: Deep Learning zmieniający branże przemysłu
SFI 2017: Deep Learning zmieniający branże przemysłuSFI 2017: Deep Learning zmieniający branże przemysłu
SFI 2017: Deep Learning zmieniający branże przemysłuMatthew Opala
 
PLNOG 13: Piotr Okupski: Implementation of Wanguard software as a protection ...
PLNOG 13: Piotr Okupski: Implementation of Wanguard software as a protection ...PLNOG 13: Piotr Okupski: Implementation of Wanguard software as a protection ...
PLNOG 13: Piotr Okupski: Implementation of Wanguard software as a protection ...PROIDEA
 
Budowa jednostki centralnej kaputera
Budowa jednostki centralnej kaputeraBudowa jednostki centralnej kaputera
Budowa jednostki centralnej kaputeraaro1207
 
Prezetacja
PrezetacjaPrezetacja
Prezetacjaaro1207
 
Prezetacja
PrezetacjaPrezetacja
Prezetacjaaro1207
 
Plasystation III Kanada
Plasystation III KanadaPlasystation III Kanada
Plasystation III Kanadaguestc14efe
 
Plasystation III Kanada
Plasystation III KanadaPlasystation III Kanada
Plasystation III Kanadaguestc14efe
 
Plasystation III Kanada
Plasystation III KanadaPlasystation III Kanada
Plasystation III Kanadaguestc14efe
 
Plasystation III Kanada
Plasystation III KanadaPlasystation III Kanada
Plasystation III Kanadaguestc14efe
 
Plasystation III Kanada
Plasystation III KanadaPlasystation III Kanada
Plasystation III Kanadaguestc14efe
 
Plasystation III Kanada
Plasystation III KanadaPlasystation III Kanada
Plasystation III Kanadaguestc14efe
 

Similar to [DSG] Przyczajony GPU - ukryty smok (20)

PLNOG 6: Łukasz Jagiełło - Wdrożenie skalowalnego systemu plików GlusterFS w ...
PLNOG 6: Łukasz Jagiełło - Wdrożenie skalowalnego systemu plików GlusterFS w ...PLNOG 6: Łukasz Jagiełło - Wdrożenie skalowalnego systemu plików GlusterFS w ...
PLNOG 6: Łukasz Jagiełło - Wdrożenie skalowalnego systemu plików GlusterFS w ...
 
PLNOG19 - Jakub Słociński - Wieloprocesorowa platforma x86 a wydajny routing ...
PLNOG19 - Jakub Słociński - Wieloprocesorowa platforma x86 a wydajny routing ...PLNOG19 - Jakub Słociński - Wieloprocesorowa platforma x86 a wydajny routing ...
PLNOG19 - Jakub Słociński - Wieloprocesorowa platforma x86 a wydajny routing ...
 
Gluster FS
Gluster FSGluster FS
Gluster FS
 
GlusterFS
GlusterFSGlusterFS
GlusterFS
 
Procesory- rozwój, stan obecny, przykładowe parametry, zakup.
Procesory- rozwój, stan obecny, przykładowe parametry, zakup.Procesory- rozwój, stan obecny, przykładowe parametry, zakup.
Procesory- rozwój, stan obecny, przykładowe parametry, zakup.
 
DTrace
DTraceDTrace
DTrace
 
HPE 3PAR All Flash_webinar2
HPE 3PAR All Flash_webinar2HPE 3PAR All Flash_webinar2
HPE 3PAR All Flash_webinar2
 
Barcamp 08/06/2010
Barcamp 08/06/2010Barcamp 08/06/2010
Barcamp 08/06/2010
 
100 M pakietów na sekundę dla każdego.
100 M pakietów na sekundę dla każdego. 100 M pakietów na sekundę dla każdego.
100 M pakietów na sekundę dla każdego.
 
SFI 2017: Deep Learning zmieniający branże przemysłu
SFI 2017: Deep Learning zmieniający branże przemysłuSFI 2017: Deep Learning zmieniający branże przemysłu
SFI 2017: Deep Learning zmieniający branże przemysłu
 
PLNOG 13: Piotr Okupski: Implementation of Wanguard software as a protection ...
PLNOG 13: Piotr Okupski: Implementation of Wanguard software as a protection ...PLNOG 13: Piotr Okupski: Implementation of Wanguard software as a protection ...
PLNOG 13: Piotr Okupski: Implementation of Wanguard software as a protection ...
 
Budowa jednostki centralnej kaputera
Budowa jednostki centralnej kaputeraBudowa jednostki centralnej kaputera
Budowa jednostki centralnej kaputera
 
Prezetacja
PrezetacjaPrezetacja
Prezetacja
 
Prezetacja
PrezetacjaPrezetacja
Prezetacja
 
Plasystation III Kanada
Plasystation III KanadaPlasystation III Kanada
Plasystation III Kanada
 
Plasystation III Kanada
Plasystation III KanadaPlasystation III Kanada
Plasystation III Kanada
 
Plasystation III Kanada
Plasystation III KanadaPlasystation III Kanada
Plasystation III Kanada
 
Plasystation III Kanada
Plasystation III KanadaPlasystation III Kanada
Plasystation III Kanada
 
Plasystation III Kanada
Plasystation III KanadaPlasystation III Kanada
Plasystation III Kanada
 
Plasystation III Kanada
Plasystation III KanadaPlasystation III Kanada
Plasystation III Kanada
 

[DSG] Przyczajony GPU - ukryty smok

  • 2. Koło – 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  Skąd?  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 (chłodzenie not included) GPU  Pamięć GDDR5 - 224 GB/s  Wydajność Radeon 7970 – 4TFLOPS / 1TFLOPS  Energia 1000 GFLOPS / 314W = 3,1 GFLOPS/W
  • 5. 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
  • 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  Piękne liczby, powodują dreszcze, ale gdzie jest haczyk?
  • 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
  • 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 pamięci 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 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.
  • 22. Jak zacząć programować? Choose your destiny  CUDA  OpenCL  ATI-Stream  DirectCompute
  • 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.
  • 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 wykładów i tutoriali
  • 26. CUDA  Kernel - funkcja ładowana do pamięci instrukcji multiprocesora.  Przykładowo
  • 27. CUDA  Jak się wywołuje kernele?
  • 28. CUDA  Jak się wywołuje kernele?
  • 29. CUDA  Jak się wywołuje kernele?
  • 30. CUDA  Jak się wywołuje kernele?
  • 31. 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
  • 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ę wywołuje kernele?
  • 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
  • 44. Koło – lista dyskusyjna  Libra.cs.put.poznan.pl/mailman/listinfo/skisr- kolo  Skisr-kolo@libra.cs.put.poznan.pl