GPU Michał Drobot Technical Art Director Reality Pump.

Slides:



Advertisements
Podobne prezentacje
Introduction to SystemC
Advertisements

ALLEGRO PIERWSZA GRA: WYŚCIG
C++ w Objectivity Marcin Michalak s1744. Pomocne pakiety: Data Definition Language (DDL). Standard Template Library (STL). Active Schema.
Implementacja algorytmów na procesory kart graficznych
Pracownia Gier w OpenGL
Rekursja Teoretyczne podstawy informatyki Wykład 5
Parallel Processing, Pipelining, Flynn’s taxonomy
Testowanie oprogramowania metodą badania pokrycia kodu
Współprogramy Plan: Motywacja Składnia Scenariusz obiektu współprogramu Przykłady Producent – konsument ( instrukcja attach ) Czytelnik -pisarze ( instukcja.
MS ASP.NET 2005/2006
REKURENCJA.
PROPOZYCJE ZAPISU Autorzy: Uczniowie należący do Samorządu Szkolnego.
Czyli jak zrobić prezentację komputerową?
Tajemnice klawiatury.
FUNKCJA L I N I O W A Autorzy: Jolanta Kaczka Magdalena Wierdak
III. Proste zagadnienia kwantowe
Systemy klastrowe inaczej klasterowe.
FUNKCJE TRYGONOMETRYCZNE - podstawy
Elektronika cyfrowa Prezentacja Remka Kondrackiego.
Prąd Elektryczny.
Podstawowe jednostki informacji, co to jest bit i bajt?
Tablice.
Prezentacja z przedmiotu „systemy wizyjne”
Prezentacja z przedmiotu systemy wizyjne Biblioteka Point Cloud Library Przygotowali: Paweł Król, Michał Kulbat Recenzent: Krzysztof Holak.
Podstawy programowania
Szkoła w chmurze.
Microsoft® Office EXCEL 2003
Dyplomant : Karol Czułkowski
ALGORYTM.
Podstawy licencjonowania Exchange, SharePoint oraz Lync.
Automatyczne wyznaczanie złożoności obliczeniowej algorytmów
Wykonała Sylwia Kozber
Komunikacja z platformą T2S
1 Oddziaływanie grawitacyjne. 2 Eliminując efekty związane z oporem powietrza możemy stwierdzić, że wszystkie ciała i lekkie i ciężkie spadają z tym samym.
xHTML jako rozszerzenie HTML
HTML Podstawy języka hipertekstowego Damian Urbańczyk.
Architektury wielopotokowe Michał Drobot. Multithreading WielowątkowośćWielowątkowość Umożliwia zwiększenie funkcjonalności, wydajności poprzez równoległe.
Dual Paraboloid Mapping Michał Drobot Technical Art Director Reality Pump.
Optimization Michał Drobot Technical Art Director Reality Pump.
Architektury Deferred Michał Drobot Technical Art Director Reality Pump.
Bazy danych w systemie SimCallCenter Krótkie omówienie wyboru baz danych stosowanych w CallCenter, integracja z zewnętrznymi bazami danych Czas 15 min.
WPROWADZENIE DO PROBLEMATYKI PSYCHOLOGII UCZENIA SIĘ
J AK ZACZĄĆ PRACĘ Z ?. przed rejestracją Upewnij się, że posiadasz: aktywne konto zainstalowaną przeglądarkę Internet Explorer indywidualny studencki.
Następstwa ODD ODD może przekształcić się w Zespół Zaburzenia Zachowania tj. CD (Conduct Disorder), Dzieci z tym zespołem to jednostki niedostosowane społecznie!
Warsztaty C# Część 2 Grzegorz Piotrowski Grupa.NET PO
Warsztaty C# Część 3 Grzegorz Piotrowski Grupa.NET PO
BEZPIECZNY INTERNET. PRZEGLĄDANIE STRON INTERNETOWYCH.
SKALA MAPY Skala – stosunek odległości na mapie do odpowiadającej jej odległości w terenie. Skala najczęściej wyrażona jest w postaci ułamka 1:S, np. 1:10.
Sieci komputerowe. Nowe technologie komputerowe
1 Strategia dziel i zwyciężaj Wiele ważnych algorytmów ma strukturą rekurencyjną. W celu rozwiązania rozwiązania problemu algorytm wywołuje sam siebie.
A. Jędryczkowski – 2006 ©. Tablica to struktura danych zawierająca zbiór obiektów tego samego typu i odpowiada matematycznemu pojęciu wektora (tablica.
Pliki elementowe – A. Jędryczkowski © 2007 Turbo Pascal umożliwia wykorzystanie w programach plików elementowych. Pliki takie zawierają informację zakodowaną
Prawo o aktach stanu cywilnego
Zadanie: przy pomocy algorytmu simplex rozwiązać następujące zadanie programowania liniowego: przy ograniczeniach: Autor: Michał KĘPIEŃ (I4X2S0)
Strategie badań – ilościowe v. jakościowe - porównanie
Psychologia w sprzedaży. Co wpływa na decyzje klienta? Załącznik do videocastu nr 2 Agata Matuszewska.
KRWIODAWSTWO.
Grupy użytkowników1 Administracja Sieciami komputerowymi Grupy użytkowników.
Temat 1: Umieszczanie skryptów w dokumencie
Temat 6: Elementy podstawowe
Temat 4: Znaki diakrytyczne i definiowanie języka dokumentu
Informacje podstawowe
Matmatura 2013; 2014; 2015; 2016; 2017…. p. Katarzyna Misztal z uczniami klasy 2F: Monika Tobera Milena Ściana Radosław Stochmal KTO?
Warsztaty użytkowników programu PLANS – Karwia06 Język makropoleceń JMP programu PLANS Część I mgr inż. Tomasz Zdun.
Instrukcja switch switch (wyrażenie) { case wart_1 : { instr_1; break; } case wart_2 : { instr_2; break; } … case wart_n : { instr_n; break; } default.
Instrukcja switch switch (wyrażenie) { case wart_1 : { instr_1; break; } case wart_2 : { instr_2; break; } … case wart_n : { instr_n; break; } default.
Instrukcje sterujące: W instrukcjach sterujących podejmowane są decyzje o wykonaniu tych czy innych instrukcji programu. Decyzje te podejmowane są w zależności.
Rozdział 6: Analiza protokołu TCP/IP
Komtech Sp. z o.o. Magic Janusz ROŻEJ.
Magic Janusz ROŻEJ Komtech Sp. z o.o.
Zapis prezentacji:

GPU Michał Drobot Technical Art Director Reality Pump

GPU PipelineGPU Pipeline Architektura współczesnego GPUArchitektura współczesnego GPU SIMD – konsekwencjeSIMD – konsekwencje StrukturaStruktura Obsługa GPU w oparciu o SM 3.0Obsługa GPU w oparciu o SM 3.0 Praktyki programistycznePraktyki programistyczne Podstawy prawidłowego kodowania w oparciu o znajomość architektury i sprzętuPodstawy prawidłowego kodowania w oparciu o znajomość architektury i sprzętu Plan wykładu

Vertex Shader – programowalnyVertex Shader – programowalny Geometry Shader – programowalnyGeometry Shader – programowalny Clipping – konfigurowalnyClipping – konfigurowalny Screen Mapping – fixedScreen Mapping – fixed Triangle Setup – fixedTriangle Setup – fixed Triangle Traversal – fixedTriangle Traversal – fixed Pixel Shader – programowalnyPixel Shader – programowalny Merger - konfigurowalnyMerger - konfigurowalny GPU Pipeline

Vertex ShaderVertex Shader Implementuje funkcjonalnośćImplementuje funkcjonalność Model View TransformModel View Transform Vertex ShadingVertex Shading ProjectionProjection Geometry ShaderGeometry Shader Opcjonalny etapOpcjonalny etap Operuje na prymitywachOperuje na prymitywach Create / DestroyCreate / Destroy Per primitive shadingPer primitive shading GPU Pipeline

Pixel ShaderPixel Shader Implementuje pixel shadingImplementuje pixel shading Potężne narzędziePotężne narzędzie MergerMerger KonfigurowalnyKonfigurowalny ParametrycznyParametryczny Umożliwia wykonanie wielu wcześniej niewykonalnych operacjiUmożliwia wykonanie wielu wcześniej niewykonalnych operacji Implementuj operacje merginguImplementuj operacje mergingu GPU Pipeline

GPU Pipeline ewoluował z czysto stałego (hard coded) do w pełni programowalnegoGPU Pipeline ewoluował z czysto stałego (hard coded) do w pełni programowalnego Największą zmianą było wprowadzenie programowalnych etapówNajwiększą zmianą było wprowadzenie programowalnych etapów GPU Pipeline

Pipeline

Pipeline Dx 10 / OGl 3.0

Architektura GPU GPU – Graphic Processing UnitGPU – Graphic Processing Unit Równoległa architektura SIMDRównoległa architektura SIMD Komputer wektorowy (4 skalarne wektory)Komputer wektorowy (4 skalarne wektory) 4-way SIMD4-way SIMD GPU vs Multicore CPUGPU vs Multicore CPU GPU – olbrzymia ilość lekkich wątków, szybkie przez równoległość, powolne pojedynczoGPU – olbrzymia ilość lekkich wątków, szybkie przez równoległość, powolne pojedynczo CPU – mała liczba ciężkich wątków, szybkie pojedynczoCPU – mała liczba ciężkich wątków, szybkie pojedynczo GPU dobre w rozwiązywaniu problemów równoległych, strumieniowych pamięciowo, ciężkich arytmetycznieGPU dobre w rozwiązywaniu problemów równoległych, strumieniowych pamięciowo, ciężkich arytmetycznie

Architektura GPU Każdy rejestr zawiera 4 niezależne wartościKażdy rejestr zawiera 4 niezależne wartości 32-bitowe skalary float32-bitowe skalary float 32-bitowe skalary int (od SM 4.0)32-bitowe skalary int (od SM 4.0) Struktury agregacyjneStruktury agregacyjne ArrayArray MatrixMatrix StructStruct Wektory obsługująWektory obsługują MaskowanieMaskowanie SwizzlingSwizzling ReplikacjeReplikacje

Architektura GPU Wektory zawierają daneWektory zawierają dane Pozycji (xyzw)Pozycji (xyzw) Normalnych, macierzy, koloru (rgba)Normalnych, macierzy, koloru (rgba) Koordynatów tekstur (Koordynatów tekstur (

Architektura GPU Wykonuje operacje wektorowe / skalarneWykonuje operacje wektorowe / skalarne Add, mul, muladdAdd, mul, muladd NajszybszeNajszybsze Square root, reciprocal, sin, cos, exp, logSquare root, reciprocal, sin, cos, exp, log Stosunkowo wolneStosunkowo wolne texFetchtexFetch Szybkie, lecz ograniczone wydajnością poprzez oczekiwanie na dostęp do texturySzybkie, lecz ograniczone wydajnością poprzez oczekiwanie na dostęp do textury IntrinsicIntrinsic Dot(), log(), atan()Dot(), log(), atan() Zoptymalizowane makraZoptymalizowane makra

Architektura GPU Podstawowe jednostki sprzętowePodstawowe jednostki sprzętowe ALUALU Texture SamplersTexture Samplers Jednostki wykonawcze wątkówJednostki wykonawcze wątków Vertex Processing UnitVertex Processing Unit Pixel Processing UnitPixel Processing Unit Unified Thread ProcessorUnified Thread Processor Pamięć DRAMPamięć DRAM

Architektura GPU Obiekty w pamieciObiekty w pamieci Buffered ObjectsBuffered Objects Uniform Registers/State TableUniform Registers/State Table Interpolated RegistersInterpolated Registers Temporary RegistersTemporary Registers TexturesTextures

Architektura GPU Buffered ObjectsBuffered Objects Strumienie danych generowane przez CPUStrumienie danych generowane przez CPU Ograniczona modyfikowalnośćOgraniczona modyfikowalność PrzykładPrzykład dane Vertexów obiektudane Vertexów obiektu

Architektura GPU Uniform Registers/State TableUniform Registers/State Table Stałe podczas działania potokuStałe podczas działania potoku Przekazywane per Draw CallPrzekazywane per Draw Call rejestry dowolnego przeznaczenia (16 INT, 224 Float)rejestry dowolnego przeznaczenia (16 INT, 224 Float) Rejestry Tablic StanuRejestry Tablic Stanu MacierzeMacierze ŚwiatłaŚwiatła Itp….Itp….

Architektura GPU Interpolated RegistersInterpolated Registers Dane zmienne dla każdego pixelaDane zmienne dla każdego pixela Posiadają dane interpolowane wzdłuż poligonuPosiadają dane interpolowane wzdłuż poligonu 10 interpolatorów dowolnego przeznaczenia10 interpolatorów dowolnego przeznaczenia

Architektura GPU Temporary RegistersTemporary Registers Typowa reprezentacja rejestrówTypowa reprezentacja rejestrów Tymczasowe rejestry obliczeń chwilowychTymczasowe rejestry obliczeń chwilowych

Architektura GPU TexturesTextures Pojęciowo bliskie tablicom typu RAMPojęciowo bliskie tablicom typu RAM Nie można naraz czytać/pisaćNie można naraz czytać/pisać Kosztowne w dostępieKosztowne w dostępie Wykorzystują samplery hardwareoweWykorzystują samplery hardwareowe Wyjątkowo kosztowne odczyty zależneWyjątkowo kosztowne odczyty zależne

Pipeline 6th generation GPU

Pipeline 8th generation GPU

Pipeline - Shaders ShadersShaders Operacje na:Operacje na: MacierzachMacierzach WektorachWektorach Tablice stałeTablice stałe Podział danych:Podział danych: Per-instance – np.. Per-vertex positionPer-instance – np.. Per-vertex position Per-pixel interpolated – np.. Koordynaty UVPer-pixel interpolated – np.. Koordynaty UV Per-batch – np…dane zewnętrzne dt. światłaPer-batch – np…dane zewnętrzne dt. światła

Pipeline – Shaders (VS 3.0) Input:Input: Vertex posVertex pos Tex coordTex coord ConstantConstant Dodatkowe kanały : fog, color itp..Dodatkowe kanały : fog, color itp.. Output – wyjście przekazuje do pixel shaderOutput – wyjście przekazuje do pixel shader Vertex shader działa raz per vertexVertex shader działa raz per vertex

Pipeline – Shaders (VS 3.0) v0 Vertex Shader v1v2 v15 r0r1r2 r31 c0c1c2 cN aLa0 Vertex Stream – 16 rejestrów 32 rejestry tymczasowe >256F & 16int - const Rejestr Pętli Rejestr Adresu oPos oTn oPts position Tex coord 12 Rejestrów wyjścia

Pipeline – Shaders (PS 3.0) Ustala wyjściowy kolor pixelaUstala wyjściowy kolor pixela SamplowanieSamplowanie Operacje na pixelachOperacje na pixelach InputInput Interpolowane wyjście z VSInterpolowane wyjście z VS Podstawowe rejestry z VS : vertex: pos, normal, tex coors, etc.Podstawowe rejestry z VS : vertex: pos, normal, tex coors, etc. Rejestry dowolnego przeznaczeniaRejestry dowolnego przeznaczenia OutputOutput Wektor R/G/B/A koloruWektor R/G/B/A koloru Depth – głębia wg ustaleń Render StateDepth – głębia wg ustaleń Render State Pixel shader uruchamiany raz dla każdego pixelaPixel shader uruchamiany raz dla każdego pixela

Pipeline – Shaders (PS 3.0) v0 Pixel Shader v1v2 v9 r0r1r2 r31 c0c1c2 cN aLa0 Pixel Stream – 10 rejestrów 32 rejestry tymczasowe >256F & 16int - const oC0 oDepth Wyjście dla 4 kanałów oC1 oC2 oC3 s0s1s2 s15 16 Rejestrów Samplerów

Pipeline DX 10 DX 10 virtual shader machine specificationDX 10 virtual shader machine specification Varying Input RegistersVarying Input Registers 16/16/32 registers16/16/32 registers Constant RegistersConstant Registers 16 buforów 4096 rejestrów16 buforów 4096 rejestrów Temporary RegistersTemporary Registers 4096 rejestrów4096 rejestrów TexturesTextures 128 tablic 512 textur128 tablic 512 textur Output RegistersOutput Registers 16/32/8 registers16/32/8 registers

Pipeline DX 10 Geometry ShaderGeometry Shader Opcjonalny etapOpcjonalny etap Operuje na prymitywachOperuje na prymitywach Umożliwia dodawanie, bądź usuwanie elementów prymitywuUmożliwia dodawanie, bądź usuwanie elementów prymitywu Umożliwia między innymiUmożliwia między innymi TessalacjeTessalacje Techniki finówTechniki finów Zaawansowane operacje na cząsteczkachZaawansowane operacje na cząsteczkach

Pipeline DX 10 Stream OutputStream Output Umożliwia wysłanie danych obrobionych vertexów do indexowanej tablicy a następnie jej powrót do pipelineuUmożliwia wysłanie danych obrobionych vertexów do indexowanej tablicy a następnie jej powrót do pipelineu Możliwe wyłączenie rasteryzacjiMożliwe wyłączenie rasteryzacji Przydatne w iteracyjnych procesach obliczeniowychPrzydatne w iteracyjnych procesach obliczeniowych Np.. Systemów cząsteczkowychNp.. Systemów cząsteczkowych

Pipeline Dodatkowe elementy potokuDodatkowe elementy potoku Vertex cacheVertex cache Texture cacheTexture cache Z-bufferZ-buffer Early-ZEarly-Z StencilStencil Branch processor – >= SM 3.0Branch processor – >= SM 3.0

Pipeline Vertex cacheVertex cache Cache pamięci na vertexyCache pamięci na vertexy Przeważnie liniowy długości 256 bitsPrzeważnie liniowy długości 256 bits Dostępny globalnie dla wszystkich vertex fetchyDostępny globalnie dla wszystkich vertex fetchy

Pipeline Texture cacheTexture cache Liniowy o niewielkiej długości (32K dla X360)Liniowy o niewielkiej długości (32K dla X360) Współdzielony / segmentowany między wszystkie sampleryWspółdzielony / segmentowany między wszystkie samplery Multitexturing niszczy cacheMultitexturing niszczy cache Naraz odczytuje jedynie pojedynczy sektor w pobliżu aktualnej operacjiNaraz odczytuje jedynie pojedynczy sektor w pobliżu aktualnej operacji Odczyty zależne niszczą cacheOdczyty zależne niszczą cache Przechowuje dane w liniach o określonej długościPrzechowuje dane w liniach o określonej długości Segmentuje tablice na małe bloki używane przy cacheowaniuSegmentuje tablice na małe bloki używane przy cacheowaniu

Pipeline Texture cacheTexture cache Cache TrashingCache Trashing MultitexturingMultitexturing Volume texture (skomplikowane obliczanie adresowań)Volume texture (skomplikowane obliczanie adresowań) Dependant readsDependant reads Odczyt z jednej textury decyduje o dalszym meijscu odczytuOdczyt z jednej textury decyduje o dalszym meijscu odczytu Nieprzewidywalne miejsca samplowańNieprzewidywalne miejsca samplowań

Pipeline Texture samplingTexture sampling Obliczenie miejsca pobrania z textury (adresowanie)Obliczenie miejsca pobrania z textury (adresowanie) Odczytanie sampli z caheuOdczytanie sampli z caheu Filtrowanie sampliFiltrowanie sampli AnizoAnizo Blinn / PointBlinn / Point MipMip

Pipeline Z-bufferZ-buffer Dodatkowy bufor karty graficznej przechowujący głębie każdego pixelaDodatkowy bufor karty graficznej przechowujący głębie każdego pixela Używany w rozwiązywaniu problemu widoczności pixela przy zapisywaniu do bufora ramkiUżywany w rozwiązywaniu problemu widoczności pixela przy zapisywaniu do bufora ramki Algorytm malarzaAlgorytm malarza Aktualna głębia pixela jest sprawdzana z głebią zapisana w Z-buforze, jeśli jest większa pixel nie jest rysowanyAktualna głębia pixela jest sprawdzana z głebią zapisana w Z-buforze, jeśli jest większa pixel nie jest rysowany Obecnie 24b lub 32b o skali logObecnie 24b lub 32b o skali log Problematyka artefaktówProblematyka artefaktów Z-FightingZ-Fighting Obsługa parametryczna, sprzętowa, nie programowalnaObsługa parametryczna, sprzętowa, nie programowalna

Pipeline Z-bufferZ-buffer Early-ZEarly-Z Naturalne rozwinięcie Z-buforaNaturalne rozwinięcie Z-bufora Podczas budowania Z, dokonuje testuPodczas budowania Z, dokonuje testu Odpalany przed wykonaniem RasteryzacjiOdpalany przed wykonaniem Rasteryzacji Posiada wartość Z pixela z Vertex ShaderaPosiada wartość Z pixela z Vertex Shadera Może być wykorzystywany jako świadoma optymalizacjaMoże być wykorzystywany jako świadoma optymalizacja Depth pre-passDepth pre-pass Front – to – Back sortingFront – to – Back sorting Obsługa parametryczna, sprzętowa, nie programowalnaObsługa parametryczna, sprzętowa, nie programowalna

Pipeline Z-bufferZ-buffer Hi-ZHi-Z Hierarchiczny Z-buforHierarchiczny Z-bufor Z – bufor traktowany jako piramidalna struktura – podobieństwo do mip-map / drzew czwórkowych o różnych gęstościachZ – bufor traktowany jako piramidalna struktura – podobieństwo do mip-map / drzew czwórkowych o różnych gęstościach Umożliwia odrzucanie całych grup pixeliUmożliwia odrzucanie całych grup pixeli

Pipeline Z-bufferZ-buffer TrashingTrashing oDepth – pisanie do bufora Z wyłącza optymalizacje (powoduje dekompresje Z, oraz uniemożliwia Hi-Z)oDepth – pisanie do bufora Z wyłącza optymalizacje (powoduje dekompresje Z, oraz uniemożliwia Hi-Z) texKill – używanie instrukcji zabijającej wykonanie pixela powoduje wymuszenie obliczeń Z dla danego quada (brak możliwości odrzucenia)texKill – używanie instrukcji zabijającej wykonanie pixela powoduje wymuszenie obliczeń Z dla danego quada (brak możliwości odrzucenia)

Pipeline StencilStencil Dodatkowy bufor używany wraz z buforem ZDodatkowy bufor używany wraz z buforem Z Służy dodatkowych testom odrzucania pixeliSłuży dodatkowych testom odrzucania pixeli Można do niego pisać i wykorzystywać przy optymalizacjiMożna do niego pisać i wykorzystywać przy optymalizacji Obsługa parametryczna, sprzętowa, nie programowalnaObsługa parametryczna, sprzętowa, nie programowalna

Pipeline Render stateRender state Stany sprzętowe GPUStany sprzętowe GPU Z-testZ-test StencilStencil CullingCulling BlendingBlending Parametryzują wewnętrzne sprzętowe systemy optymalizacjiParametryzują wewnętrzne sprzętowe systemy optymalizacji

Pipeline Flow controlFlow control Wykorzystanie IF..Else (loop)Wykorzystanie IF..Else (loop) Static flow controlStatic flow control Bazuje jedynie na stałychBazuje jedynie na stałych Na podstawie stałej decyduje o wyborze ścieżki wykonawczejNa podstawie stałej decyduje o wyborze ścieżki wykonawczej Dynamic flow controlDynamic flow control Bazuje na zmiennych dynamicznychBazuje na zmiennych dynamicznych Na ich podstawie dokonuje wyboru ścieżkiNa ich podstawie dokonuje wyboru ścieżki Utrudnia operacje adresowania, liczenia gradientów itp..Utrudnia operacje adresowania, liczenia gradientów itp.. Ręczne liczenie adresowania dla texturRęczne liczenie adresowania dla textur

Pipeline Flow controlFlow control Kompilator na podstawie heurystyk (ilośc instrukcji, typ, odwołania…) może zdecydować o statycznym rozwiązaniu (unroll, wykonanie obu gałęzi IF i wybranie logiczne wyniku) bądź dynamicznym (loop, branch)Kompilator na podstawie heurystyk (ilośc instrukcji, typ, odwołania…) może zdecydować o statycznym rozwiązaniu (unroll, wykonanie obu gałęzi IF i wybranie logiczne wyniku) bądź dynamicznym (loop, branch) Możemy to wymuszać dyrektywami jeśli wiemy co robimyMożemy to wymuszać dyrektywami jeśli wiemy co robimy [branch] [flatten] [loop] [unroll] etc…[branch] [flatten] [loop] [unroll] etc…

Pipeline Branch processor (>= SM 3.0)Branch processor (>= SM 3.0) Umożliwia wprowadzenie architektury MIMDUmożliwia wprowadzenie architektury MIMD Operacje na fragmentach są przeprowadzane w bloczkach (np. 32x32, 8x8, 2x2)Operacje na fragmentach są przeprowadzane w bloczkach (np. 32x32, 8x8, 2x2) Każdy z bloczków za pomocą Branch processora i tzw. Flow control może wykonać odmienną ścieżkę wykonawcząKażdy z bloczków za pomocą Branch processora i tzw. Flow control może wykonać odmienną ścieżkę wykonawczą Jeśli którykolwiek texel z bloczku musi wybrać odmienną drogę od innych,obliczenia są wykonywane dla wszystkich texeli i wszystkich drógJeśli którykolwiek texel z bloczku musi wybrać odmienną drogę od innych,obliczenia są wykonywane dla wszystkich texeli i wszystkich dróg Wprowadza fizyczną obsługę dynamicznych if, else, for, while itp.Wprowadza fizyczną obsługę dynamicznych if, else, for, while itp. Narzut obliczeniowy < 6 cykliNarzut obliczeniowy < 6 cykli

Pipeline Scan converter dzieli trójkąt na bloki 8x8Scan converter dzieli trójkąt na bloki 8x8 Każdy blok jest dzielony dalej na quady 2x2Każdy blok jest dzielony dalej na quady 2x2 Mogą wśród nich wystąpić martwe pixeleMogą wśród nich wystąpić martwe pixele Sprawa komplikuje się przy wykorzystaniu flow controlSprawa komplikuje się przy wykorzystaniu flow control W jednym bloku mogą być pixele wymagające odmiennych ścieżek wykonawczych == wykonanie wszystkich ścieżek i wybór logiczny rezultatuW jednym bloku mogą być pixele wymagające odmiennych ścieżek wykonawczych == wykonanie wszystkich ścieżek i wybór logiczny rezultatu

Pipeline Wybór ścieżki powinien być względnie oczywisty dla GPUWybór ścieżki powinien być względnie oczywisty dla GPU Quady 2x2 zawierające różne ścieżki wykonawcze zostaną wykonane w całości i wybrany właściwy logicznie wynikQuady 2x2 zawierające różne ścieżki wykonawcze zostaną wykonane w całości i wybrany właściwy logicznie wynik Dążymy do lokalizacji wykonań koduDążymy do lokalizacji wykonań kodu

Języki GLSLGLSL HLSLHLSL CGCG Wszystkie są podobne składniowoWszystkie są podobne składniowo Różnice występują jedynie na poziomie składniowym kilku funkcjiRóżnice występują jedynie na poziomie składniowym kilku funkcji Np.. Lerp (HLSL) = mix(GLSL), float4 = vec4 etc.Np.. Lerp (HLSL) = mix(GLSL), float4 = vec4 etc. HLSL > CG > GLSLHLSL > CG > GLSL

Języki Języki przygotowane do obliczeń wektorowychJęzyki przygotowane do obliczeń wektorowych Podstawowe typyPodstawowe typy FloatFloat Float2, float3, float4 / vec2, vec3, vec4Float2, float3, float4 / vec2, vec3, vec4 Float4x4 / mat4Float4x4 / mat4 Operacje wektorowe ALUOperacje wektorowe ALU DotDot MulMul NormalizeNormalize Lerp / mixLerp / mix ClampClamp

Języki Obsługa samplerówObsługa samplerów tex2D / texture2Dtex2D / texture2D texCube / textureCubetexCube / textureCube tex3D / texture3Dtex3D / texture3D FiltrowanieFiltrowanie POINTPOINT LINEARLINEAR ANIZOANIZO Etc.Etc.

Języki Dyrektywy kompilatoraDyrektywy kompilatora AsmAsm SM 1.0 – 3.0SM 1.0 – 3.0 SM 4.0 – możliwość jedynie podglądu kodu asmSM 4.0 – możliwość jedynie podglądu kodu asm X360 – specjalne dyrektywy mikrokoduX360 – specjalne dyrektywy mikrokodu Flow controlFlow control [loop][loop] [flatten][flatten] [branch][branch] Etc.Etc.

Podsumowanie For more information contact me Slides will be available at Drobot.org

Questions ?