CUDA OpenCL PhysX Literatura NPGR019. Úvod do architektury CUDA. MFF UK Praha. Jan Horáček CUDA 1 / 53

Podobné dokumenty
Nvidia CUDA Paralelní programování na GPU

CUDA J. Sloup a I. Šimeček

Nvidia CUDA Paralelní programování na GPU

GPGPU. Jan Faigl. Gerstnerova Laboratoř pro inteligentní rozhodování a řízení České vysoké učení technické v Praze

Pokročilé architektury počítačů

GPU A CUDA HISTORIE GPU CO JE GPGPU? NVIDIA CUDA

Úvod do GPGPU J. Sloup, I. Šimeček

Pokročilé architektury počítačů

Obecné výpočty na GPU v jazyce CUDA. Jiří Filipovič

Pokročilé architektury počítačů

Přehled paralelních architektur. Dělení paralelních architektur Flynnova taxonomie Komunikační modely paralelních architektur

GPU a CUDA. Historie GPU. Co je GPGPU? Nvidia CUDA

PŘEDSTAVENÍ GRAFICKÉHO PROCESORU NVIDIA G200

REALIZACE SUPERPOČÍTAČE POMOCÍ GRAFICKÉ KARTY

OPS Paralelní systémy, seznam pojmů, klasifikace

Optimalizace pro GPU hardware

GPU Computing.

Paralelní a distribuované výpočty (B4B36PDV)

2.8 Procesory. Střední průmyslová škola strojnická Vsetín. Ing. Martin Baričák. Název šablony Název DUMu. Předmět Druh učebního materiálu

GPU a CUDA. Historie GPU. Co je GPGPU? Nvidia CUDA

VÝUKOVÝ MATERIÁL. 3. ročník učebního oboru Elektrikář Přílohy. bez příloh. Identifikační údaje školy

VYUŽITÍ GRAFICKÉHO ADAPTÉRU PRO OBECNÉ VÝPOČTY GENERAL-PURPOSE COMPUTATION USING GRAPHICS CARD

Co je grafický akcelerátor

GPGPU Aplikace GPGPU. Obecné výpočty na grafických procesorech. Jan Vacata

Pokročilá architektura počítačů

IB109 Návrh a implementace paralelních systémů. Organizace kurzu a úvod. RNDr. Jiří Barnat, Ph.D.

Řešíme úlohu zpracování velkého množství dat. Data jsou symetrická, úloha je dobře paralelizovatelná. Propaganda výrobců grafických karet:

Řešíme úlohu zpracování velkého množství dat. Data jsou symetrická, úloha je dobře paralelizovatelná

Procesy a vlákna (Processes and Threads)

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY

Jiné výpočetní platformy J. Sloup, M. Skrbek, I. Šimeček

Vyuºití GPGPU pro zpracování dat z magnetické rezonance

Architektura Intel Atom

Představení a vývoj architektur vektorových procesorů

PROCESOR. Typy procesorů

Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti

Procesor. Hardware - komponenty počítačů Procesory

Základy informatiky. 2. Přednáška HW. Lenka Carr Motyčková. February 22, 2011 Základy informatiky 2

Identifikátor materiálu: ICT-1-08

Paralení programování pro vícejádrové stroje s použitím OpenMP. B4B36PDV Paralelní a distribuované výpočty

Základní operace. Prefix sum. Segmentovaný prefix-sum

Přednášky o výpočetní technice. Hardware teoreticky. Adam Dominec 2010

vlastnosti, praktické zkušenosti

Část 2 POROVNÁNÍ VÝKONNOSTI A POUŽITELNOSTI ARCHITEKTUR V TYPICKÝCH APLIKACÍCH

Sběrnicová struktura PC Procesory PC funkce, vlastnosti Interní počítačové paměti PC

Architektura počítače

Přednáška 1. Katedra počítačových systémů FIT, České vysoké učení technické v Praze Jan Trdlička, 2012

Paralelní architektury se sdílenou pamětí typu NUMA. NUMA architektury

Hlavní využití počítačů

Základní úrovně: Moorův zákon: multi-core mikroprocesory (CPU) hypertherading pipeline many-core Paralelní systém Instrukce iterace procedura Proces

Operační systémy. Jednoduché stránkování. Virtuální paměť. Příklad: jednoduché stránkování. Virtuální paměť se stránkování. Memory Management Unit

Paralelní programování

Xbox 360 Cpu = IBM Xenon

INDIVIDUÁLNÍ PROJEKT 1 - ZPRACOVÁNÍ GNSS SIGNÁLU V GPU

Paralelní programování

Metoda sledování paprsku na grafických akcelerátorech. Martin Zlatuška

AGP - Accelerated Graphics Port

Charakteristika dalších verzí procesorů v PC

VYUŽITÍ KNIHOVNY SWING PROGRAMOVACÍHO JAZYKU JAVA PŘI TVORBĚ UŽIVATELSKÉHO ROZHRANÍ SYSTÉMU "HOST PC - TARGET PC" PRO ŘÍZENÍ POLOVODIČOVÝCH MĚNIČŮ

Pokročilé architektury počítačů

Úvod do architektur personálních počítačů

ZÁKLADY PROGRAMOVÁNÍ. Mgr. Vladislav BEDNÁŘ /14

NSWI /2011 ZS. Principy cpypočítačůčů aoperačních systémů ARCHITEKTURA

Intel (2) Intel (1) Intel (3) Intel (4) Intel (6) Intel (5) Nezřetězené zpracování instrukcí:

Operační systémy. Správa paměti (SP) Požadavky na SP. Spojování a zavedení programu. Spojování programu (linking) Zavádění programu (loading)

Architektury paralelních počítačů I.

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY

Paměťový podsystém počítače

GPU jako levný výpočetní akcelerátor pro obrazovou JPEG2000 kompresi. ORS 2011 Karviná,

Matematika v programovacích

Paralelní a distribuované výpočty (B4B36PDV)

Real Time programování v LabView. Ing. Martin Bušek, Ph.D.

Masivně paralelní zpracování obrazu v prostředí systému VisionLab Liberec Roman Cagaš, rc@mii.cz

Obsah. Kapitola 1 Hardware, procesory a vlákna Prohlídka útrob počítače...20 Motivace pro vícejádrové procesory...21

FAKULTA INFORMAČNÍCH TECHNOLOGIÍ

Procesor EU peníze středním školám Didaktický učební materiál

Operační systémy. Přednáška 7: Správa paměti I

Přednáška. Správa paměti II. Katedra počítačových systémů FIT, České vysoké učení technické v Praze Jan Trdlička, 2012

Hardware. Z čeho se skládá počítač

CHARAKTERISTIKA MODERNÍCH PENTIÍ. Flynnova klasifikace paralelních systémů

Procesor Intel Pentium (1) Procesor Intel Pentium (3) Procesor Intel Pentium Pro (1) Procesor Intel Pentium (2)

Princip funkce počítače

Paralelní výpočetní jádro matematického modelu elektrostatického zvlákňování

FAKULTA INFORMAČNÍCH TECHNOLOGIÍ

Sběrnicová struktura PC Procesory PC funkce, vlastnosti Interní počítačové paměti PC

ARCHITEKTURA PROCESORŮ

Gymnázium Vysoké Mýto nám. Vaňorného 163, Vysoké Mýto

Paralelní programování

Činnost CPU. IMTEE Přednáška č. 2. Několik úrovní abstrakce od obvodů CPU: Hodinový cyklus fáze strojový cyklus instrukční cyklus

Blue Gene Vysoká škola báňská-technická univerzita Ostrava. Blue Gene. Karel Chrastina. Úvod. Blue Gene L. Blue Gene P.

INFORMAČNÍ A KOMUNIKAČNÍ TECHNOLOGIE

Řízení IO přenosů DMA řadičem

Přidělování paměti II Mgr. Josef Horálek

Pohled do nitra mikroprocesoru Josef Horálek

PB002 Základy informačních technologií

Procesor. Procesor FPU ALU. Řadič mikrokód

Operační systémy. Přednáška 1: Úvod

Hardware - komponenty počítačů Von Neumannova koncepce počítače. Von Neumannova koncepce počítače

Strojový kód k d a asembler procesoru MIPS SPIM. MIPS - prostředí NMS NMS. 32 ks 32bitových registrů ( adresa registru = 5 bitů).

Transkript:

Hardware pro počítačovou grafiku NPGR019 do architektury Jan Horáček http://cgg.mff.cuni.cz/ MFF UK Praha 2012 Jan Horáček 1 / 53

Obsah Historie Vícejádrové zpracování CPU vs GPU 1 2 3 4 5 Jan Horáček 2 / 53

Historie Historie Vícejádrové zpracování CPU vs GPU vývoj křemíkových čipů rychlý - žádáno trhem kolem roku 2003 - přestala se zvyšovat frekvence CPU (spotřeba energie a zbytkové teplo u existujících technologíı přestaly být únosné) současný trend - zvyšování počtu jader - vhodné pro paralelizovatelné úlohy tradičně většina programů a algoritmů sekvenční paralelní programování dávno známé v high-performance computing komunitě - nyní se přenáší i do spotřebitelské sféry Jan Horáček 3 / 53

Historie GPU Historie Vícejádrové zpracování CPU vs GPU vývoj grafického HW: 1 specializovaný jednoúčelový 2 konfigurovatelný 3 programovatelný dnes dokáže spustit téměř libovolný algoritmus (až na limity délky kódu a paměti) efektivní pouze pro specifickou skupinu algoritmů Jan Horáček 4 / 53

Historie Vícejádrové zpracování CPU vs GPU Technologie vícejádrového zpracování 1 1 Multicore soustředí se na běh sekvenčních programů dvouo- a vícejádrové procesory (řádově do několika málo desítek) plná instrukční sada x86 příklad: Core i7 - čtyři jádra s out-of-order execution a technologíı hyperthreading Jan Horáček 5 / 53

Historie Vícejádrové zpracování CPU vs GPU Technologie vícejádrového zpracování 2 1 Many-core soustředí se na běh paralelních programů grafické akcelerátory programovatelné GPU velmi vysoký hrubý výkon, v roce 2008 dokonce 1:10 vs CPU příklad: nvidia GeForce GTX 280-240 jader, každé jádro heavily multithreaded, in-order, single-instruction issue processor, sdíĺı kontrolu a instrukční cache se 7 dalšími Jan Horáček 6 / 53

GPU vs CPU porovnání rychlosti Historie Vícejádrové zpracování CPU vs GPU zdroj: nvidia Programming guide Jan Horáček 7 / 53

GPU vs CPU porovnání čipu Historie Vícejádrové zpracování CPU vs GPU Jan Horáček 8 / 53

GPU vs CPU porovnání čipu 2 Historie Vícejádrové zpracování CPU vs GPU GPU - GT200 CPU - i7 Jan Horáček 9 / 53

Historie Vícejádrové zpracování CPU vs GPU GPU vs CPU porovnání čipu - přehledněji Control ALU Cache DRAM CPU DRAM GPU Jan Horáček 10 / 53

GPU vs CPU Historie Vícejádrové zpracování CPU vs GPU CPU velká plocha pro cache preferuje nižší latenci GPU rasterizační algoritmy mají tradičně koherentní přístup do paměti skrývá latenci pixel shadery jsou navíc limitovány výpočetním výkonem velká plocha pro operace v plovoucí řádové čárce preferuje přenosovou rychlost nepotřebuje (tolik) cache Jan Horáček 11 / 53

Obsah Proč Architektura Programy 1 2 3 4 5 Jan Horáček 12 / 53

Proč Proč Architektura Programy dříve: GPGPU - výpočet probíhal v shaderech, data v texturách programátoři potřebují jednodušší přístup k prostředkům GPU 2007: architektura nvidia Tesla (G80 - GeForce 8800) obecnější model paralelního programování hierarchie paralelních vláken bariérová synchronizace atomické operace = Compute Unified Device Architecture C for = jazyk, kterým se dá programovat architektura efektivní programování ovšem stále potřebuje dobrou znalost HW Jan Horáček 13 / 53

Architektura Proč Architektura Programy GPU organizováno do skupiny highly threaded streaming multiprocessors několik SM tvoří blok (počet SM v bloku různý v každé generaci) každý SM obsahuje několik streaming processors G80: 1 SM = 8 SP GF100: 1 SM = 32 SP SP v rámci jednoho SM sdíĺı kontrolní obvody a instrukční cache technologie provádění kódu: SIMT (Single Instruction Multiple Threads) Jan Horáček 14 / 53

Architektura G80 Proč Architektura Programy GeForce 8800 Jan Horáček 15 / 53

Architektura GF100 Proč Architektura Programy GeForce 480 Jan Horáček 16 / 53

Compute capabilities 1 Proč Architektura Programy Jan Horáček 17 / 53

Compute capabilities 2 Proč Architektura Programy Zbytek v nvidia Programming Guide Jan Horáček 18 / 53

Datový paralelismus Proč Architektura Programy mnoho aplikací modelující reálný svět pracuje s velkým množstvím dat datový paralelismus = na datech může být prováděno mnoho operací souběžně například: násobení matic Jan Horáček 19 / 53

Struktura programu Proč Architektura Programy jedna nebo více fází mohou být puštěny na hostitelském CPU nebo na GPU zdrojový kód může obsahovat obě části nvcc (nvidia C Compiler) tyto části odděluje během kompilace podle generace GPU podpora od ANSI C až po téměř úplnou podporu C++ kód pro GPU nazýván kernel kernel typicky spouští řádově tisíce vláken na rozdíl od CPU vláken jsou řádově lehčí vytvoření i přepínání během několika cyklů Jan Horáček 20 / 53

Struktura programu 2 Proč Architektura Programy kĺıčová slova global, host, device určují, kde a odkud může být kód spuštěn Kĺıčové slovo Běží na Spustitelné z global float KernelFunc() GPU host device float DeviceFunc() GPU GPU host float HostFunc() host host device znamená, že fce smí být spuštěna pouze z kernelu nebo jiné funkce na GPU host a device najednou znamená, že se generují 2 verze, jedna pro CPU a druhá pro GPU Jan Horáček 21 / 53

Běh programu Proč Architektura Programy zdroj: Wikipedia.org Jan Horáček 22 / 53

Princip kernelů Proč Architektura Programy spust jedno vlákno CPU kód for(int y = 0; y < height; y++) for(int x = 0; x < width; x++) dosomething(x,y); Jan Horáček 23 / 53

Princip kernelů Proč Architektura Programy spust jedno vlákno spust x y vláken CPU kód for(int y = 0; y < height; y++) for(int x = 0; x < width; x++) dosomething(x,y); GPU kernel 1 zjisti x, y ze svého id 2 dosomething(x,y); Jan Horáček 23 / 53

Ukázka kernelu Proč Architektura Programy // Definice kernelu global void VecAdd(float *A, float *B, float *C) { int i = threadidx.x; C[i] = A[i] + B[i]; } int main() {... // Spuštění kernelu s N vlákny VecAdd<<<1, N>>>(A,B,C); } Jan Horáček 24 / 53

Hierarchie vláken Proč Architektura Programy kernel je spuštěn jako grid paralelních vláken vlákna v gridu jsou ve dvouúrovňové hierarchii grid obsahuje 2D strukturu bloků blok obsahuje 3D strukturu vláken všechny bloky v gridu stejné velikosti blok obsahuje max. 512 (1024) vláken velikosti gridu, bloků a počet vláken je zadán při spouštění kernelu Jan Horáček 25 / 53

Hierarchie vláken 2 Proč Architektura Programy Příklad parametrů kernelu // Nastav konfiguraci spuštění dim3 dimblock(threadsx, ThreadsY) dim3 dimgrid(blocksx,blocksy) // Spust kernel MujKernel<<<dimGrid, dimblock>>> (param1, param2); schéma hierarchie vláken Jan Horáček 26 / 53

ID vlákna Proč Architektura Programy definuje několik rozšíření ANSI C o vestavěné proměnné pro identifikaci vláken Proměnná threadidx.x, threadidx.y, threadidx.z blockidx.x, blockidx.y blockdim.x, blockdim.y, blockdim.z griddim.x, griddim.y warpsize význam index vlákna v bloku index bloku v gridu velikost bloku velikost gridu velikost warpu Jan Horáček 27 / 53

Synchronizace Proč Architektura Programy mezivláknová komunikace pomocí bariérové synchronizace funkce syncthreads() garantuje, že všechny vlákna v bloku provedly každou instrukci do tohoto místa v případě if-then-else musí všechna vlákna v bloku jít stejnou cestou komunikace mezi bloky není možná bloky v libovolném pořadí škálovatelnost synchronizace mezi bloky se řeší rozdělením práce do více kernelů Jan Horáček 28 / 53

Přiřazování vláken Proč Architektura Programy nemá vliv pro funkčnost, ale je dobré to znát pro efektivnost každý SM může mít na sobě až 8 bloků (ovlivněno volnými zdroji) každý blok rozdělen na jednotky o 32 vláknech zvané warp každý warp obsahuje 32 vláken s po sobě jdoucími threadidx maximálně 24(48) warpů na SM maximálně 768(1536) vláken na SM velké množství a rychlé přepínání vláken skrývá operace s dlouhou latencí (latency-hiding) Jan Horáček 29 / 53

Pamět Proč Architektura Programy pro kernely několik typů paměti, drastické rozdíly v rychlosti per-thread registry per-thread lokální pamět per-block sdílená pamět per-grid globální pamět per-grid konstantní pamět (pouze pro čtení) globální pamět typicky DRAM, přístup řádově stovky cyklů registry a lokální pamět jsou na čipu, přístup řádově jednotky cyklů aplikace (host) může přesouvat data do/z globální a konstantní paměti sousední vlákna mohou sdílet přístup do globální paměti (memory coalescing) Jan Horáček 30 / 53

Typové kvalifikátory proměnných Proč Architektura Programy Deklarace Pamět Viditelnost Životnost autom. proměnné mimo poĺı registry vlákno kernel autom. pole lokální vlákno kernel shared sdílená blok kernel device globální grid aplikace constant konstantní grid aplikace max. velikost sdílené paměti: 16KB (48KB) max. velikost konstantní paměti: 64KB max. počet 32-bit registrů na SM: 8K(32K) lokální pamět je pomalá jako globální Jan Horáček 31 / 53

Principy programování Proč Architektura Programy příklad běhu programu 1 každé vlákno načte část dat z globální do sdílené paměti 2 syncthreads() 3 hlavní výpočet 4 uložení výsledku 5 příp. přičtení další části dat a pokračování výpočtu dát si pozor na větvení if-then-else větvení nezpůsobuje výkonový propad, pokud všechna vlákna na SM jdou stejnou cestou pokud se ovšem větví v rámci zpracování jednoho SM, musí se spočítat obě větve Jan Horáček 32 / 53

Obsah 1 2 3 4 5 Jan Horáček 33 / 53

alternativa k C for základní myšlenka převzaná z C for, v některých oblastech téměř 1:1 ekvivalence programovací model pro spouštění masivně paralelních úloh na CPU, GPU, Cell,... podrobnější výběr výpočetního zařízení širší spektrum schopností zařízení daný algoritmus nemusí běžet na každém HW Jan Horáček 34 / 53

koncepty kernel host program NDRange (index space) work item work group ekvivalent kernel host program grid thread block Jan Horáček 35 / 53

vlákna get_global_id(0) get_local_id(0) get_global_size(0) get_local_size(0) ekvivalent blockidx.x blockdim.x + threadidx.x threadidx.x griddim.x blockdim.x blockdim.x Jan Horáček 36 / 53

pamět global memory constant memory local memory private memory ekvivalent global memory constant memory shared memory local memory Jan Horáček 37 / 53

Ukázka kernelu // Definice kernelu kernel void VecAdd( global const float *A, global const float *B, global float *C) { int id = get_global_id(0); C[id] = A[id] + B[id]; } Jan Horáček 38 / 53

Obsah 1 2 3 4 5 Jan Horáček 39 / 53

(Velmi lehký) úvod do HW akcelerované rozhraní pro simulaci fyzikálních dějů ve virtuálních světech výborné pro herní simulace pro spolehlivé stabilní výpočty nízká přesnost, ovšem i tak občas použitelné nejčastěji využívané pro kolize částic a jednoduchých těles Jan Horáček 40 / 53

Historie Švýcarská firma NovodeX AG začala vyvíjet platformu pro výpočet fyziky jako konkurenci pro Havok 2004 - akvizice firmou Ageia, NovodeX Physics SDK se stalo základem pro 2.x SDK dodnes mnoho původních lidí z NovodeXu na vývoji Ageia vyvinula HW platformu pro akceleraci fyziky PPU (Physics Processing Unit) 2008 - akvizice firmou nvidia implementace na architektuře postupné odstranění podpory Ageia PPU podpora ve stovkách her silný marketing - cílené odstranění podpory na cizích GPU Jan Horáček 41 / 53

Současnost CPU implementace běží tedy všude ve hrách často simulace několika málo hlavních objektů, aby to zvládalo i CPU při použití GPU přidání částicového nepořádku, lepší interakce s vodou, více dynamických objektů (bez závislosti na gameplay) pro GPU akceleraci nutných alespoň 32 jader a 256MB paměti dostupné nejen na PC, ale i na PS3, Xbox 360, Wii fyzikální systémy všeobecně: aktuálně snahy o dobrou implementaci na mobilní zařízení ios Android Jan Horáček 42 / 53

2.x rigid body dynamics (mechanika tuhých těles) kolizní primitiva - kapsule, koule, kvádr, rovina, výšková mapa, konvexní těleso) různé typy kloubů ragdoll, materiály, tření,... deformovatelná tělesa simulace látky (textilie) trhání, kolize sama se sebou,... částice a kapaliny jedno- a oboustranná interakce s látkami dynamika vozidel objemová silová pole Jan Horáček 43 / 53

3.x vylepšený systém kloubů neuniformní škálování těles stabilní depenetrace nový solver na simulaci látek mnoho zlepšení výkonu vylepšené cachování pro PC a Xbox360 zlepšený multithreading nový model simulace vozidla motor, převodovka, pneumatiky, kola, tlumiče,... změny a vyčištění API... Jan Horáček 44 / 53

Příklad implementace 2.x Inicializace // Initialize PhysicsSDK gphysicssdk = NxCreatePhysicsSDK(NX_PHYSICS_SDK_VERSION); if (!gphysicssdk) return; // Set the debug visualization parameters gphysicssdk->setparameter(nx_visualization_scale, 1); gphysicssdk->setparameter(nx_visualize_collision_shapes, 1); gphysicssdk->setparameter(nx_visualize_actor_axes, 1); // Set scale dependent parameters NxReal scale = 1.0f; // scale is meters per units gphysicssdk->setparameter(nx_skin_width, 0.05*(1/scale)); //... other parameters initialization Jan Horáček 45 / 53

Příklad implementace 2.x Vytvoření scény // Create a scene NxSceneDesc scenedesc; scenedesc.gravity = NxVec3(0.0f, -9.81f, 0.0f); gscene = gphysicssdk->createscene(scenedesc); if(gscene == NULL) return false; // Set default material NxMaterial* defaultmaterial = gscene->getmaterialfromindex(0); defaultmaterial->setrestitution(0.0f); defaultmaterial->setstaticfriction(0.5f); defaultmaterial->setdynamicfriction(0.5f); // Create ground plane NxPlaneShapeDesc planedesc; NxActorDesc actordesc; actordesc.shapes.pushback(&planedesc); gscene->createactor(actordesc); Jan Horáček 46 / 53

Příklad implementace 2.x Vytvoření objektu // Create body NxBodyDesc bodydesc; bodydesc.angulardamping = 0.5f; if(initialvelocity) bodydesc.linearvelocity = *initialvelocity; NxBoxShapeDesc boxdesc; boxdesc.dimensions = NxVec3((float)size, (float)size, (float)size); NxActorDesc actordesc; actordesc.shapes.pushback(&boxdesc); actordesc.body = &bodydesc; actordesc.density = 10.0f; actordesc.globalpose.t = pos; gscene->createactor(actordesc); Jan Horáček 47 / 53

Příklad implementace 2.x Asynchronní simulace // Start simulation (non blocking) gscene->simulate(1.0f/60.0f); Čekání na výsledek gscene->flushstream(); gscene->fetchresults(nx_rigid_body_finished, true); Jan Horáček 48 / 53

Příklad implementace 2.x Vykreslení int nbactors = gscene->getnbactors(); NxActor** actors = gscene->getactors(); while(nbactors--) { NxActor* actor = *actors++; } // Render actor float glmat[16]; actor->getglobalpose().getcolumnmajor44(glmat);... Jan Horáček 49 / 53

Nástroje vyšší úrovně nvidia vytvořila nástroje vyšší úrovně - APEX 2 části tvorba - samostatné programy a pluginy pro modelování runtime - pro jednoduchou implementaci do vlastního engine APEX Clothing simulace kompletního oblečení používané nejen ve hrách, ale i u návrhářů atd. APEX Destruction tvorba komplikovaných zničitelných objektů např. možnost rozpadnutí zdi na cihly APEX Particles kompletní částicové efekty, kouř, kapaliny APEX Turbulence kouř, prach, částice s turbulentním chováním eulerovský solver kapalin na mřížce APEX Vegetation -? Jan Horáček 50 / 53

Alternativy Havok (Havok Inc. + Intel) Open Dynamics Engine Newton Game Dynamics Physics Abstraction Layer (AMD...?)... Jan Horáček 51 / 53

Obsah 1 2 3 4 5 Jan Horáček 52 / 53

David B. Kirk, Wen-mei W. Hwu: Programming massive parallel processors, Morgan Kaufman, 2010, ISBN:978-0-12-381472-2 Jason Sanders, Edward Kandrot: by Example: An Introduction to General-Purpose GPU Programming, Addison-Wesley, 2010, ISBN:978-0131387683 nvidia Corporation: ( C/) Programming Guide nvidia Corporation: ( C/) Best Practices http://developer.nvidia.com http://www.opencl.org http://www.ati.com Jan Horáček 53 / 53