Implementacja algorytmów na procesory kart graficznych

Slides:



Advertisements
Podobne prezentacje
Video DR-S Cyfrowy rejestrator wideo
Advertisements

Monitory i systemy graficzne
System graficzny komputera
DirectX Jacek Filipek IUz gr. 21.
Weronika Podjaska Patryk Gromski
Akceleratory grafiki.
Skalowalny algorytm estymacji ruchu dla systemów rozproszonych
Telewizja trójwymiarowa - wyzwania
Obliczenia równoległe w grafice komputerowej
Opis, budowa, zasada działania, funkcje, technologie
Schemat blokowy komputera
Temat : Części komputera
Systemów Operacyjnych
Wieloprocesowy system operacyjny dla komputerów ATARI XL/XE
Elementy informatyki w nauczaniu zintegrowanym
Budowa Komputera.
Przegląd ważniejszych bibliotek używanych przy projekcie Quall.
Zastosowanie technologii CUDA w sztucznej inteligencji
Techniki programowania gier
OPRACOWANIE: Orsik Mirosław, Paweł Hajduk, Bożena
ZESTAW KOMPUTEROWY.
Wykonał: Tomasz Nocek kl. III B
CUDA (Compute Unified Device Architecture)
Spis Treści Płyta Główna………………………………………………………………
Autorzy: Mariusz Młynek Andrzej Bieniek
Projektowanie architektur systemów filtracji i akwizycji danych z wykorzystaniem modelowania w domenie zdarzeń dyskretnych Krzysztof Korcyl.
Microsoft Expression Studio
Modelowanie elementów świata 3D przy użyciu biblioteki Managed Directx
Karty graficzne Karta graficzna, często określana też mianem akcelerator grafiki, to element komputera tworzący sygnał dla monitora. Podstawowym zadaniem.
Karty Graficzne.
Programowanie gier komputerowych Tomasz Martyn
Urządzenia wewnętrzne komputera
Autor: Justyna Radomska
1.Z ogólnego, niezależnego od implementacji punktu widzenia, dane stanowiące opis geometrii modelu zorganizowane są w skończoną sekwencję (lub grupę sekwencji)
ATA - dyski Advanced Technology Attachments - interfejs systemowy PC przeznaczony do komunikacji z dyskami twardymi. Stosowane początkowo oznaczenia ATA-1,
Light pre-pass renderer
Odwzorowywanie tekstur
Mikroprocesory.
Mikroprocesory mgr inż. Sylwia Glińska.
Temat: Karta graficzna, karta dźwiękowa.
Podsystem graficzny i audio
Tablice. Tablica struktura danych, służy do przechowywania danych tego samego typu, zapisana w pamięci w sposób ciągły. Deklaracja tablicy PascalC++,
Budowa komputera.
PROCESORY (C) Wiesław Sornat.
Wojciech Toman. Dotychczasowe podejście do oświetlenia Idea deferred shadingu Typowe problemy wraz z propozycjami rozwiązania Optymalizacja wydajności.
Gra komputerowa na komputer Raspberry Pi
Minimalne wymagania systemowe dla Systemu Windows 8
SPRZET KOMPUTEROWY.
Architektura współczesnych gier video Adam Sawicki asawicki.infoasawicki.info
Procesor – charakterystyka elementów systemu. Parametry procesora.
Budowa wewnętrzna KOMPUTERA
Teksturowanie obiektów z wykorzystaniem reprogramowalnych modułów do obliczania cieniowania Daniel Kos promotor: dr inż. Radosław Mantiuk Wydział Informatyki,
Budowa komputera Autor: Piotr Morawski.
Xbox 360 a Playstation 3 technologie kodowania informacji
notebooki uniwersalne notebooki uniwersalne notebooki biznesowe notebooki biznesowe notebooki mobilne i ultra mobilne notebooki mobilne i ultra mobilne.
Metody komunikacji i synchronizacji w obliczeniach równoległych Michał Radziszewski.
Grid Dziedzinowy: HEP (High Energy Physics) Andrzej Olszewski ACK Cyfronet, Kraków Spotkanie Techniczne PL-Grid PLUS, Zawiercie, 8-11 kwiecień 2014.
Prezentacja słuchacza policealnej szkoły PROFESJA CKK oddz. Wocław.
BUDOWA WEWNĘTRZNA KOMPUTERA
Budowa komputera.
Draver/GRK/cw3_result.jpg. Grafika 3D Wprowadzenie.
mysz drukarka Jednostka centralna monitor klawiatura.
Projekt i implementacja symulatora żaglówki z wykorzystaniem biblioteki DirectX Promotor: dr hab. prof. WWSI Grabowski Michał Dyplomant: Radosław Czebreszuk.
Akademia ETI 2016 LABORATORIUM 2 – OBSŁUGA WYŚWIETLACZA GRAFICZNEGO.
1 2 Spis treści 1. Czym jest? Czym jest? 2. Jaką pełni rolę w komputerze? Jaką pełni rolę w komputerze? 3. Typy kart graficznych. Typy kart graficznych.
Schemat blokowy komputera
CARAT Hardware-Zalecana konfiguracja
Podział mikroprocesorów
GeForce® GTX 1060 G1 Gaming 6G.  Karty graficzne GIGABYTE G1 Gaming Series zostały stworzone z myślą o doskonałej grafice dla entuzjastów gier. Oparta.
Budowa Komputera Sebastian Basara 1AT. Menu Karta graficzna\ budowa Karta graficznabudowa CPU Pamięć RAM Pamięć ROM Pamięć HDD Płyta Główna.
Zapis prezentacji:

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

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

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

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

Możliwości wykorzystania W celu renderowania grafiki GPU W celu obliczeń ogólnego przeznaczenia GPGPU Zastosowanie jednostek obiczeniowych

Architektura Karty Graficznej Potok przetwarzający

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

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 Float32 + 4 x Int32 Bufor tekstury (RGBA) 4 x Float32 4 x Int32 Buffor ramki Jednostki Obliczeniowe Vertex Sheader Pixel Sheader

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

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ń

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

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

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

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

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

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

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

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

Zalety GPU Wykorzystanie zalet przetwarzania równoległego Wielokrotne przyśpieszenie obliczeń Możliwość użycia „darmowej” mocy obliczeniowej komputera

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ć

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

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

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

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

Dziękuje za uwagę Pytania?