[DSG] Przyczajony GPU - ukryty smok

Preview:

Citation preview

Przyczajony GPUUkryty 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

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

Skisr-kolo@libra.cs.put.poznan.pl

Recommended