[dsg] przyczajony gpu - ukryty smok

44
Przyczajony GPU Ukryty smok Konrad Szałkowski

Upload: konrad-szalkowski

Post on 16-Aug-2015

44 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: [DSG] Przyczajony GPU - ukryty smok

Przyczajony GPUUkryty smok

Konrad Szałkowski

Page 2: [DSG] Przyczajony GPU - ukryty smok

Koło – lista dyskusyjna

Libra.cs.put.poznan.pl/mailman/listinfo/skisr-kolo

[email protected]

Page 3: [DSG] Przyczajony GPU - ukryty smok

Agenda

Po co? Krótka prezentacja Skąd? Dlaczego? Gdzie? Gdzie nie? Jak?

Page 4: [DSG] Przyczajony GPU - ukryty smok

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

Page 5: [DSG] Przyczajony GPU - ukryty smok

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

Page 6: [DSG] Przyczajony GPU - ukryty smok

Prezentacja

NBody simulation

FluidSimulation2D

MD5 Brute Force Attack

Page 7: [DSG] Przyczajony GPU - ukryty smok

Slajd bez którego nie może obyć się żadna prezentacja o GPU

Page 8: [DSG] Przyczajony GPU - ukryty smok

Haczyk

Piękne liczby, powodują dreszcze, ale gdzie jest haczyk?

Page 9: [DSG] Przyczajony GPU - ukryty smok

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….

Page 10: [DSG] Przyczajony GPU - ukryty smok

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…

Page 11: [DSG] Przyczajony GPU - ukryty smok

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).

Page 12: [DSG] Przyczajony GPU - ukryty smok

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.

Page 13: [DSG] Przyczajony GPU - ukryty smok

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

Page 14: [DSG] Przyczajony GPU - ukryty smok

Architektura komputera

DDR3 DRAMDDR3 DRAM

CONTROL UNITCONTROL UNIT

ALUALU ALUALU

ALUALU ALUALU

CACHECACHE

Page 15: [DSG] Przyczajony GPU - ukryty smok

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

Page 16: [DSG] Przyczajony GPU - ukryty smok

Architektura pamięci karty graficznej

GDDR5 DRAM GDDR5 DRAM

CONSTANTS MEMORYCONSTANTS MEMORY

TEXTURE MEMORYTEXTURE MEMORY

ALUALUALUALU

REGISTERSREGISTERS REGISTERSREGISTERSINSTRUCTION MEMORY

INSTRUCTION MEMORY

SHARED MEMORYSHARED MEMORY

Page 17: [DSG] Przyczajony GPU - ukryty smok

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.

Page 18: [DSG] Przyczajony GPU - ukryty smok

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.

Page 19: [DSG] Przyczajony GPU - ukryty smok

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…

Page 20: [DSG] Przyczajony GPU - ukryty smok

Czasy obecne (programista)

C++ na kartach graficznych Rekurencja Pojawiają się struktury danych i rozwijają

biblioteki… (CuFFT, CuBLAS….) PRINTF!!! Debug na karcie graficznej

Page 21: [DSG] Przyczajony GPU - ukryty smok

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.

Page 22: [DSG] Przyczajony GPU - ukryty smok

Jak zacząć programować?

Choose your destiny CUDA OpenCL ATI-Stream DirectCompute

Page 23: [DSG] Przyczajony GPU - ukryty smok

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).

Page 24: [DSG] Przyczajony GPU - ukryty smok

CUDA

Jest to również synonim rozszerzenia standardowego języka C o składnię i biblioteki potrzebne do wygodnego przeprowadzania obliczeń na kartach graficznych.

Page 25: [DSG] Przyczajony GPU - ukryty smok

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

Page 26: [DSG] Przyczajony GPU - ukryty smok

CUDA

Kernel - funkcja ładowana do pamięci instrukcji multiprocesora.

Przykładowo

Page 27: [DSG] Przyczajony GPU - ukryty smok

CUDA

Jak się wywołuje kernele?

Page 28: [DSG] Przyczajony GPU - ukryty smok

CUDA

Jak się wywołuje kernele?

Page 29: [DSG] Przyczajony GPU - ukryty smok

CUDA

Jak się wywołuje kernele?

Page 30: [DSG] Przyczajony GPU - ukryty smok

CUDA

Jak się wywołuje kernele?

Page 31: [DSG] Przyczajony GPU - ukryty smok

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

Page 32: [DSG] Przyczajony GPU - ukryty smok

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

Page 33: [DSG] Przyczajony GPU - ukryty smok

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

Page 34: [DSG] Przyczajony GPU - ukryty smok

CUDA

Jak się wywołuje kernele?

Page 35: [DSG] Przyczajony GPU - ukryty smok

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>

Page 36: [DSG] Przyczajony GPU - ukryty smok

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…

Page 37: [DSG] Przyczajony GPU - ukryty smok

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

Page 38: [DSG] Przyczajony GPU - ukryty smok

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

Page 39: [DSG] Przyczajony GPU - ukryty smok

OpenCL

Krótka prezentacja

Page 40: [DSG] Przyczajony GPU - ukryty smok

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

Page 41: [DSG] Przyczajony GPU - ukryty smok

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

Page 42: [DSG] Przyczajony GPU - ukryty smok

Koniec

Dziękuję za uwagę

Page 43: [DSG] Przyczajony GPU - ukryty smok

Pytania

?

Page 44: [DSG] Przyczajony GPU - ukryty smok

Koło – lista dyskusyjna

Libra.cs.put.poznan.pl/mailman/listinfo/skisr-kolo

[email protected]