Pobierz prezentację
Pobieranie prezentacji. Proszę czekać
OpublikowałKrysia Lubczyński Został zmieniony 11 lat temu
1
Implementacja algorytmów na procesory kart graficznych
mgr inż. Krzysztof Wegner Katedra Telekomunikacji Multimedialnej i Mikroelektroniki Politechnika Poznańska Seminarium „Przetwarzanie obrazów i multimedia”, kwiecień 2009
2
Karta Graficzna GPU Podstawowym zadaniem karty graficznej jest przechowywanie informacji o tym jak powinien wyglądać obraz na ekranie monitora i odpowiednim sterowaniu monitorem. Nowoczesne procesory graficzne udostępniają wiele funkcji ułatwiających i przyśpieszających tworzenie obrazu. ATI Radeon 4850 NVIDIA GeForce GTX 285
3
Możliwości GPU Akceleracja 2D Rysowanie figur Warstwy i kafelki
Podwójne buforowanie Akceleracja 3D Mapowanie wypukłości Efekty cząsteczkowe Pixel Shader Vertex Shader Transform & Lighting HDR
4
Bardzo duża moc obliczeniowa
Możliwości GPU Filtrowanie anizotropowe Full Scene Anti-Aliasing Obliczanie fizyki gry – NVIDIA PhysX Bardzo duża moc obliczeniowa
5
Możliwości wykorzystania
W celu renderowania grafiki GPU W celu obliczeń ogólnego przeznaczenia GPGPU Zastosowanie jednostek obiczeniowych
6
Architektura Karty Graficznej
Potok przetwarzający
7
Porównanie kart graficznych
AIT Radeon HD 4850 NVIDIA GeForce GTX285 Ilość tranzystorów 965 milionów 1400 milionów Technologia wykonania 55nm 65nm Ilość procesorów strumieniujących 800 240 Ilość jednostek teksturujących 40 80 Częstotliwość GPU 625 MHz 648 MHz Wydajność zmiennoprzecinkowa 1 Tflops 1.063 Tflops Wielkość pamięci 512MB GDDR3 1024MB GDDR3 Przepustowość pamięci 200 GB/s 155 GB/s
8
Dostępne zasoby Zmienne - Pamięć Jednostki Obliczeniowe
Bufor wierzchołków(x y z, nx ny nz, t s, r g b a) 8 x Float x Int32 Bufor tekstury (RGBA) 4 x Float32 4 x Int32 Buffor ramki Jednostki Obliczeniowe Vertex Sheader Pixel Sheader
9
Filozofia wykorzystania GPU
Zapis danych w teksturze lub układzie wierzchołków (Array to Texture) Ograniczenie pojedynczej tekstury do rozmiaru 8192x8192 punktów Ograniczenie do 32 tekstur Tablica Tekstura
10
Filozofia wykorzystania GPU
Zaprogramowanie jednostek Pixel Shader i Vertex Shader Shader Model 4.0 Do 4096 instrukcji Do 4096 zmiennych lokalnych Wykorzystanie języków wysokiego poziomu Równoległość wykonywania obliczeń
11
Języki programowania Wszystkie języki oparte o język C
OpenGL Shader Language GLSL Stworzony przez OpenGL ARB Część API OpenGL 2.0 High Level Shader Language HLSL Stworzony przez Microsoft Część API DirectX C for Graphics Stworzony przez NVIDIE razem z Microsoft’em
12
Filozofia wykorzystania GPU
Wykonanie obliczeń następuje podczas renderowania obrazu Na ekranie rysuje się wielki prostokąt pokrywający obszar docelowej tablicy co inicjuje obliczenia Odczytuje się bufor ramki zawierający wynik obliczeń zaszyty w wyrenderowanym obrazie
13
Dodawanie 2 wektorów CPU GPU Umieszczenie danych w 2 tablicach A i B
Program float* add(float* A,float* B) { for(coords=0; coords<9<coords+) C[coords] = A[coords]+B[coords]; return C; } Umieszczanie danych w 2 teksturach A i B Shader void add(void) { coords = gl_TexCoord[0].xy; gl_FragColor.r = rect(A, coords) rect(B, coords); } A 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 2 4 6 8 B 2 4 6 8 A B
14
Dodawanie 2 wektorów CPU GPU Wywołanie obliczeń Czas Obliczeń
C=add(A,B); Czas Obliczeń 9 taktów Wywołanie obliczeń GL_Draw_Quad(); Read_FrameBuffer(C); Czas Obliczeń 1 takt A 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 2 4 6 8 B 2 4 6 8 C 3 6 9 12 7 10 13 16 11 A B 3 6 9 12 7 10 13 16 11 C
15
Podstawowe operacje Każdy algorytm można rozbić na następujące operacje Scater – Rozpraszanie Operacje typu output[j] = f(input); Realizacja na VertexShader Gather – Zbieranie/grupowianie output = f(input(i),input(j)) Realizacja na PixelShader
16
jednostki obliczeniowe
Wyznaczanie maksimum Operacja typu Gather – zbieranie/grupowianie Implementacja na pixel shader Oczywiste podejście Pixel Shader 16 taktów 2 4 5 9 8 7 3 1 6 9 Tekstura wejściowa Tekstura wyjściowa Nie wszystkie jednostki obliczeniowe wykorzystane
17
Wyznaczanie maksimum 8 taktów zamiast 16 Przyśpieszenie x2
Podejście zrównoleglone Pixel Shader 4 takty Pixel Shader 4 takty 2 4 5 9 8 7 3 1 6 9 7 6 8 9 Tekstura wejściowa Tekstura tymczasowa Tekstura wyjściowa 8 taktów zamiast 16 Przyśpieszenie x2
18
Różnice CPU GPU Struktury Danych Funkcje Sekwencyjne wykonanie
Zmienna globalna/lokalna Tablica Z tablicy można czytać i pisać do niej jednocześnie A[i] = A[i]+B[i] Funkcje Dozwolone wywołanie funkcji Dozwolone skoki warunkowe Wskaźniki Sekwencyjne wykonanie Struktury Danych Tylko zmienna lokalna Tekstura / Bufor Wierzchołków Z tekstury można tylko czytać lub tylko do niej pisać A[i] = A’[i]+B[i] Vertex/Pixel Shader Dozwolone wywołanie funkcji Brak skoków warunkowych Brak wskaźników Równoległe wykonanie
19
Zalety GPU Wykorzystanie zalet przetwarzania równoległego
Wielokrotne przyśpieszenie obliczeń Możliwość użycia „darmowej” mocy obliczeniowej komputera
20
Wady GPU Konieczność innego podejścia do typowych problemów
Konieczności pisania programów w innym języku Brak elastyczności struktury karty graficznej Stały schemat przepływu danych Problem z załadowaniem danych do tekstury Nie wszystkie algorytmy da się zrównoleglić
21
Proste odejmowanie 4 punktów
Implementacja na GPU Wyznaczanie mapy głębi Pixel Shader Proste odejmowanie 4 punktów Widok 7 Tekstura 2 Widok 10 Tekstura 1 Monochromatyczna mapa zakodowana w składowych RGBA kliku punktów tekstury Jeden przebieg Jeden render Koszt dopasowania Tekstura 3
22
Implementacja na GPU Miękka segentacja Pixel Shader
Wyznaczenie segmentu danego punktu Zapisane jako wektory kolumnowe Miękkie Segmenty widoku 10 Tekstura 4 Widok 10 Tekstura 1 Wykonywane w n przebiegach Każda linie oddzielnie
23
Implementacja na GPU Pasowanie segmentów i wyznaczanie głębi
Pixel Shader Wyznaczanie najlepszego dopasowania danego punktu Koszt dopasowania Tekstura 3 Miękkie Segmenty widoku 10 Tekstura 4 Wstępna mapa głębi Tekstura 6 Miękkie Segmenty widoku 7 Tekstura 5
24
Implementacja na GPU Porównanie szybkości algorytmu na CPU i GPU ATI
NVIDIA CPU 20x20 20,436 193,379 30x30 37,628 50,591 383,654 40x40 62,073 89,950 693,675
25
Dziękuje za uwagę Pytania?
Podobne prezentacje
© 2024 SlidePlayer.pl Inc.
All rights reserved.