Corso di Informatica Grafica a.a. 2010-2011
DICGIM – University of Palermo
Dipartimento di Ingegneria Chimica, Gestionale, Informatica e Meccanica
Architettura delle GPU e
Pipeline di Rendering
Prof. Roberto Pirrone
22 marzo 2011
Corso di Informatica Grafica a.a. 2010-2011
DICGIM – University of Palermo
Sommario
Pipeline di rendering
Cenni storici sui controllori grafici
Implementazione della pipeline di rendering
Pipeline logica programmabile
Pipeline mappata sul processore
Architetture dei sistemi GPU
Cenni alla programmazione delle GPU
22 marzo 2011
Corso di Informatica Grafica a.a. 2010-2011
DICGIM – University of Palermo
Pipeline di rendering22 marzo 2011
Corso di Informatica Grafica a.a. 2010-2011
DICGIM – University of Palermo
Cenni storici sui controllori grafici
Video and Graphics Array controller - VGA
(<1990)Controllore di una memoria DRAM chiamata framebuffer e generatore di segnali (RAMDAC) collegato direttamente al video
Basato sul principio della grafica vettoriale
Implementa l’aritmetica intera indicizzata
1990 – 1997 circaSi aggiungono funzioni al controllore VGA• Gestione triangoli• Rasterizzazione triangoli• Shading
22 marzo 2011
Corso di Informatica Grafica a.a. 2010-2011
DICGIM – University of Palermo
Cenni storici sui controllori grafici22 marzo 2011
Corso di Informatica Grafica a.a. 2010-2011
DICGIM – University of Palermo
Cenni storici sui controllori grafici
Anni 2000Chip integrato che incorpora praticamente tutti gli elementi di una pipeline di rendering
Nasce la Graphics Processing Unit (GPU)
> 2005GPU con implementazione dell’aritmetica in virgola fissa e mobile
GPU programmabili • API di alto livello (OpenGL, Direct3D)• shaders delle geometrie, dei vertici e dei pixel
22 marzo 2011
Corso di Informatica Grafica a.a. 2010-2011
DICGIM – University of Palermo
Cenni storici sui controllori grafici22 marzo 2011
Variante: Architettura UMA (Unified Memory Architecture)CPU e GPU condividono la stessa DDR2 RAM
Corso di Informatica Grafica a.a. 2010-2011
DICGIM – University of Palermo
Architettura GPU Unificata di base
Adesso (>2008 circa)Da luogo a differenti implementazioni tutte compatibili “verso l’alto”
I processori sono massicciamente paralleli e multithread• Streaming Processors (SP) a flusso continuo• Gli SP sono organizzati in Streaming
Multiprocessors (SM)• La memoria è condivisa due livelli
– Dentro lo SM tra gli SP– Tramite rete di interconnessione tra gli SM
• Soluzione scalabile
22 marzo 2011
Corso di Informatica Grafica a.a. 2010-2011
DICGIM – University of Palermo
Pipeline mappata su schiera di processori22 marzo 2011
Adesso (>2008 circa)
L’esecuzione degli shaders viene mappata sulla “schiera di processori unificati”
Corso di Informatica Grafica a.a. 2010-2011
DICGIM – University of Palermo
Architettura di una GPU unificata22 marzo 2011
NVIDIA GeForce 8800
Arch. TESLA
112 SP14 SM1 SP 96 threadDRAM 64 bit
Corso di Informatica Grafica a.a. 2010-2011
DICGIM – University of Palermo
Programmazione Grafica
Tre livelliAPI grafiche• OpenGL• Direct3D
Linguaggi di shading• GLSL• HLSL• Cg
API di programmazione diretta dei core SP• CUDA• OpenCL
22 marzo 2011
Corso di Informatica Grafica a.a. 2010-2011
DICGIM – University of Palermo
API grafiche
Sono API di alto livello che definiscono logicamente la pipeline di rendering
L’applicazione si sviluppa definendo i vari stadi con primitive di alto livello
I dettagli sono nascosti allo sviluppatore e gestiti dalle API
22 marzo 2011
Corso di Informatica Grafica a.a. 2010-2011
DICGIM – University of Palermo
Linguaggi di shading
Gestiscono i tre tipi di shaderShader dei vertici• Mappano la posizione dei vertici dei triangoli nello
schermo, modificando posizione, colore e orientamento
Shader delle geometrie• Lavorano sulla base di primitive geometriche (ad
es. interi triangoli) definite come insiemi di vertici; le modificano ovvero ne aggiungono di nuove
Shader dei pixel (o dei frammenti)• Dipingono il pixel sullo schermo e gestiscono gli
artefatti visivi
22 marzo 2011
Corso di Informatica Grafica a.a. 2010-2011
DICGIM – University of Palermo
Linguaggi di shading
Gli shader sono programmati a “a flusso continuo” cioè su sequenze ininterrotte di dati; l’I/O è implicito
Le strutture di dati su cui operano consentono un elevato parallelismo e quindi possono essere lanciati più thread dello stesso shader
Hanno primitive per operazioni trigonometriche e su matrice, interpolazione, filtraggio …
22 marzo 2011
Corso di Informatica Grafica a.a. 2010-2011
DICGIM – University of Palermo
Linguaggi di shading22 marzo 2011
Shader Cg per environment mapping
Corso di Informatica Grafica a.a. 2010-2011
DICGIM – University of Palermo
Programmazione dei core SP
Sono API per programmazione general purpose su GPU
GPGPU: General Purpose computing on GPU
Il problema viene parallelizzato mappandolo sull’architettura
Il programmatore CUDA scrive una procedura detta kernel che istanzia tante esecuzioni di thread paralleli
22 marzo 2011
Corso di Informatica Grafica a.a. 2010-2011
DICGIM – University of Palermo
Programmazione CUDA
I thread sono organizzati gerarchicamente in blocchi 1D, 2D o 3D i quali sono organizzati in griglie 1D, 2D o 3D
Il mapping dipende dai core SP disponibili ed è scelto dal programmatore
22 marzo 2011
Corso di Informatica Grafica a.a. 2010-2011
DICGIM – University of Palermo
Programmazione CUDA22 marzo 2011
Calcola n valori in parallelo con n thread organizzatiin blocchi da 256 thread ciascuno