INTRODUZIONE ALLA COMPUTER GRAPHICS Sommario • Cos’è la Computer Graphics (CG) – Ambiti di applicazione • Breve Storia della Computer Graphics • Tecnologie dei display • Grafica Raster e Grafica Vettoriale Cos’è la CG • La Computer Graphics (CG) si occupa di sintesi di immagini, cioè delle tecniche di produzione di scene rappresentanti oggetti del mondo reale o contenuti astratti. • Nel primo caso, entrano a far parte della CG anche tutte le tecniche volte a fornire una visualizzazione realistica del contenuto dell’immagine. – Rendering foto-realistico – Rendering non foto-realistico Cos’è la CG • Per contro, la disciplina che si occupa di analisi di immagini è denominata “Image Processing”. • In questo caso gli obiettivi dell’elaborazione possono essere quelli di aumentare il contenuto informativo, ridurre il rumore, restaurare una immagine e così via. – – – – Image enhancement Image restoration Image analysis … Cos’è la CG • In ogni caso in Image Processing si assume di partire da un’immagine digitale già acquisita e la si elabora, mentre in CG l’immagine digitale è l’obiettivo ultimo dell’elaborazione. • Altri ambiti che si occupano di immagini digitali sono la “Computer Vision” e la “Pattern Recognition” . Cos’è la CG • La “Computer Vision” tenta di riprodurre i processi percettivi propri della visione basandosi su sistemi artificiali di acquisizione/elaborazione dei dati. • Nell’ambito della “Pattern Recognition” si cerca di individuare la presenza di “strutture” più o meno complesse in un’immagine al fine di svolgere compiti di riconoscimento, sorveglianza, ispezione di manufatti per individuazione di guasti e così via. Cos’è la CG • Alcune tecniche di elaborazione sono ormai patrimonio della CG – Fotoritocco: effetti speciali che sono trasformazioni operate sul contenuto informativo delle immagini di partenza. – Image warping: trasformazioni delle strutture presenti in un’immagine a fini ludici o di correzione di deformazioni introdotte dai dispositivi di acquisizione. Ambiti di applicazione della CG • Disegno delle interfacce utente – Graphical User Interfaces (GUI) – Interfacce Web (grafica bidimensionale abilitata da opportuni linguaggi di scripting e descrizione delle forme con formalismi XML) • Simulazioni – Scientifiche (processi fisici, chimici...) – Professionali (simulazioni di dispositivi, CAD) Simulazione tridimensionale di onde e campi elettromagnetici Simulazione metereologica Immagine sintetica Immagine Sintetica La Computer Graphics nella realizzazione di film di animazione • 1) Modellazione • 2) Rigging 3) Texturing 4) Animazione 5) Rendering Modellazione • http://www.youtube.com/watch?v=jQpGmnM kUJk (a partire dal minuto 21) Rigging • Il termine “rig” normalmente si utilizza per definire il sistema di movimenti e di controllo delle marionette: lo stesso si farà con il nostro personaggio, ne costruiremo uno scheletro che muoveremo come una marionetta per il posizionamento di braccia e gambe. Texturing di un modello 3d • • • • • • • Per rendere realistici gli oggetti modellati occorre definire accuratamente l'aspetto delle loro superfici. Il modo piu' semplice consiste nel sovrapporvi speciali immagini. Queste immagini prendono il nome di texture o mappe. Animazione • Muovendo opportunamente i rig si dà vita al modello • http://www.youtube.com/watch?v=ukJMrvxM oWU Animation Studio’s Dreamwork • 1998, Z la formica Animation Studio’s Dreamwork 2001, Shrek • 2004 Shrek 2 • 2005 Magadascar (MAYA) • 2006 Giù per il tubo • 2008 Kung fu Panda(MAYA) • 2010 Shrek e vissero felici e contenti • 2011 Il gatto con gli stivali • Avatar (MAYA) 2009 • King Kong 2005 Blue Sky Studios • L’era Glaciale Pixar studio Animation • 1995 Toy Story – Il mondo dei giocattoli • 1998 - A Bug's Life - Megaminimondo • 1999 - Toy Story 2 - Woody e Buzz alla riscossa • 2001 - Monsters & Co. • 2003 - Alla ricerca di Nemo • 2004 - Gli Incredibili - Una "normale" famiglia di supereroi • 2006 - Cars - Motori ruggenti • 2007 - Ratatouille • 2009 - Up • 2010 - Toy Story 3 - La grande fuga • 2011 - Cars 2 Grafica Pubblicitaria • • • • • • • • • • • • • • • Lavatrici Ariston Aqualtis http://www.youtube.com/watch?v=2j2f5ONDU4c Ariston Hot Quadro http://www.youtube.com/watch?v=dimtH0Fsiic&feature=relmfu Parmareggio http://www.youtube.com/watch?v=Eqtc69kzMi8 http://www.youtube.com/watch?v=vaOm03b-u6I&NR=1 Gocciole Pavesi http://www.youtube.com/watch?v=mfsEkP6ZSq4 Intrattenimento – Videogames • God of War III • Rayman Raving Rabbids Realtà aumentata • La Realtà Aumentata (dall'inglese Augmented Reality) è un sistema di grafica interattiva che permette di intervenire su un flusso di immagini video live, modificando la realtà con l’aggiunta, in tempo reale, di contenuti ed animazioni virtuali. Realtà aumentata • Realtà virtuale: si osserva su uno schermo la proiezione di un mondo totalmente fittizio e costituito interamente da oggetti virtuali. • Realtà aumentata: non si è vincolati ad una visualizzazione su schermo, ma qualsiasi superficie può diventare un supporto per visualizzare il flusso video in Realtà Aumentata; ciò che viene ripreso, inoltre, è un’integrazione fra immagini reali ed oggetti virtuali. • Per cui: • realtà virtuale = mondo virtuale • Realtà Aumentata = mondo reale + oggetti virtuali Sistema di realtà aumentata Schema di un sistema di realtà aumentata: 1. meccanismo di riconoscimento di un particolare elemento grafico detto marker (una sorta di codice a barre bidimensionale ), 2. un sistema di tracciamento dei movimenti (della webcam o del marker) e un engine per la creazione e l’animazione di oggetti tridimensionali. I marker sono degli elementi grafici, su cui è stampato un simbolo facilmente riconoscibile (anche quando ruotato), che vengono “individuati e tracciati” attraverso una videocamera. • Esempio di sistema di realtà aumentata • http://www.youtube.com/watch?v=1_7NW_u 3VFo Navigatore con la realtà Aumentata Applicazioni in Medicina – Ricostruzioni di parti anatomiche da TAC/RM/PET a fini diagnostici 3D Projection mapping Consiste nel realizzare una mappatura di un palazzo o di un edificio sul quale attraverso l'uso di proiettori molto potenti verranno proiettate delle animazioni in 3d e motion graphic. • Si procede con la scansione e mappatura dellla facciata su cui verranno proiettate le immagini; • con un accurato studio di proiezioni si fa interagire in modo realistico ogni punto dell'oggetto con il video realizzato, facendo corrispondere ogni angolo, finestra e elemento architettonico. • Si realizza una mappatura esatta della facciata trasferendo su questa le animazioni che si andranno a realizzare. Il risultato è uno spettacolo coinvolgente dove l'architettura su cui si proietta si anima creando scenari e spettacoli visivi sorprendenti. • La tecnologia usata per la realizzazion edi uno spettacolo con la tecnica del 3D Projection mapping si avvale di proiettori con portata massima fino a 1,5 Km. Co una potenza di luce che parte da 18.000 fino a 35.000 Ansi Lumen (= emissione di luce) • Chi realizza questo tipo di spettacoli deve avere una conoscenza aprofondita di tutti i programmi di 3D Animazione e Motion Graphic per garantire uno spettacolo all'altezza della situazione. • http://3dmapping.lumosidea.it/videoblog/3d-mapping-intrattenimento.html Altre applicazioni • Simulatori di volo: per l’addestramento di piloti civili e militari basati su realtà virtuale e realtà aumentata • In cartografia: l’utilizzo di sistemi informativi territoriali consente la produzione di carte topografiche, schematiche e tematiche con facilità maggiore rispetto alle modalità manuali. Interattività vs Non Interattività • La grafica generata con un calcolatore può o meno essere interattiva, ovvero può o meno permettere ad un operatore esterno di interagire in tempo reale con uno qualsiasi (o tutti) dei parametri della rappresentazione grafica • Nel caso di grafica interattiva si richiede una risposta in tempo reale ai comandi dell’operatore; questo implica – necessità di hardware particolari (schede grafiche acceleratrici, processori potenti,molta memoria) – un modello semplificato di resa grafica (in genere le applicazioni interattive non sono fotorealistiche) • Con la grafica non interattiva si possono raggiungere qualità dell’immagine elevate a piacere, è solo questione di quanto tempo si è disposti ad aspettare per generarle • Entrambi i tipi di grafica sono interessanti ed hanno diverse applicazioni, a volte complementari; Interattività vs Non Interattività Schema di una applicazione grafica In genere le applicazioni grafiche di cui discuteremo (e che implementeremo) si possono inquadrare, piu’ o meno, nel seguente schema: • Vi è una descrizione di qualche tipo (procedurale o meno) del mondo che deve essere rappresentato. • La produzione di tale descrizione (modello) prende il nome di modellazione. • Da tale descrizione si ottiene una immagine bidimensionale; tale processo è chiamato globalmente rendering • La sequenza di procedure ed algoritmi che implementano il rendering prende il nome di pipeline grafica; • L’immagine ottenuta viene quindi visualizzata sullo schermo (in applicazioni interattive, per esempio) o salvata su file Schema di una applicazione grafica La descrizione del mondo che viene utilizzata dalla pipeline grafica comprende in genere tre elementi: 1. Gli oggetti che popolano il mondo; possono essere oggetti veri e propri (cubi, robot, mele..) oppure dati (punti nello spazio 3D, iso-superfici ..). Gli oggetti hanno proprietà posizionali (dove sono, come sono orientati etc) e di apparenza (di che colore, com’è fatta la superficie, se sono riflettenti etc) 2. Le luci che determinano le proprietà di illuminazione del mondo; hanno anch’esse proprietà posizionali, ma non di apparenza (tipicamente le luci non si vedono, al più si vedono degli oggetti che rappresentano l’emettitore di luce). 3. L’osservatore che descrive gli algoritmi che servono a generare una immagine 2D (lo schermo) dalla descrizione 3D del mondo, ovvero implementa una telecamera virtuale; anch’esso possiede proprietà posizionali, ma non di apparenza Processo di modellazione Il modello di un oggetto da rappresentare può essere ottenuto essenzialmente in tre modi: • Manuale, ovvero viene “disegnato” tramite un opportuno strumento grafico. In genere si ottengono oggetti complessi assemblando assieme oggetti semplici; es sfera, questa spesso viene disegnata tramite il mouse, selezionando il centro e trascinando il puntatore fino ad ottenere il raggio desiderato. • Automatica da strumenti che consentono l’acquisizione di un modello digitale di un oggetto reale. Per esempio le tecniche basate sulle immagini dell’oggetto sono molto studiate in Visione Computazionale, ed ultimamente anche in grafica. Spesso vengono indicare come Image based modeling • Procedurale, ovvero viene generato tramite una procedura opportuna. Un esempio tipico sono gli oggetti frattali, che hanno varie applicazioni nella grafica al calcolatore, o gli oggetti geometrici, come sfere, cubi, poliedri regolari o altro. Ad esempio una sfera è ottenuta specificando il raggio e la posizione del centro, poi ci pensa una procedura basata sull’equazione analitica della sfera a disegnarla. Le tecniche si possono mescolare tra di loro. Processo di modellazione 3d modeler 3d scanners Editor 3d scanners Modello: battistero di Cremona Hardware: laser scanner + camera 3d scanners Processo di rendering In base a tutte queste informazioni, dobbiamo effettuare un certo numero di passi per ottenere l’immagine desiderata: • Proiezione: proiettare (geometricamente) la scena dallo spazio 3D allo spazio 2D dello schermo della telecamera virtuale. • Shading: per ogni punto dell’immagine dobbiamo determinare il suo colore, che è funzione del colore della superficie dell’oggetto e della sua orientazione, della posizione delle luci e (nei modelli cosiddetti “globali”) della riflessione indiretta della luce da parte di altre superfici. • Rimozione delle superfici nascoste: gli elementi più vicini alla telecamera coprono quelli più lontani: dobbiamo determinare quali superfici sono visibili e quali no. • Rasterizzazione: quando sappiamo che colore assegnare a ciascun punto della immagine, il passo finale è mappare questa informazione sul display (ovvero: accendere i pixel). Modellazione vs Rendering In un immagine generata al calcolatore (3D o 2D, interattiva o meno) concorrono essenzialmente due elementi: • I modelli geometrici degli oggetti (o dati) rappresentati • Le loro caratteristiche di colore, ombreggiatura, tessitura, etc.; queste ultime vanno sotto il nome di shading • Alle volte è praticamente impossibile ottenere un modello di un oggetto con i dettagli desiderati; in tal caso si aggiungono i dettagli nella fase di rendering (alterando lo shading). • In genere è uno spreco di risorse costruire un modello complicato quando è possibile ottenere lo stesso effetto con un modello semplice ed un suo opportuno shading. Shading Add Lines Add colors Distance falloff “Real world” shading Breve storia della CG • La CG nasce insieme ai calcolatori, ma si mantiene fuori dal mercato del grande consumo per effetto dei costi elevati dei dispositivi grafici. • Il suo sviluppo nasce dalla necessità di rappresentare in maniera semplice e altamente flessibile i dati elaborati dal calcolatore; è il caso di applicazioni scientifiche e di simulazione di processi. Breve storia della CG • Problemi connessi con la larga diffusione delle applicazioni di CG: – costo HW grafico – necessità di elevate risorse computazionali – difficoltà di scrivere programmi interattivi (epoca del FORTRAN) – SW dedicato per l’HW grafico. Breve storia della CG • La diffusione, negli anni '80, dei primi calcolatori (ad esempio Apple Macintosh) che usano monitor con display di concezione moderna favorisce lo sviluppo di applicazioni grafiche per uso diffuso • Prime fra tutte si sviluppano le interfacce grafiche che consentono agli utenti inesperti di interagire con sistema operativo e le applicazioni presenti su un calcolatore. Breve storia della CG • I primi display per la visualizzazione grafica sono basati sull’uso di monitor del tipo televisivo in cui un “Tubo a Raggi Catodici” (Cathode Ray Tube: CRT) forma le immagini comandando la deflessione di un fascio focalizzato di elettroni (pennello elettronico). • Il fascio è in grado di colpire qualunque punto del fondo del tubo sul quale è disposto uno strato di materiale fotosensibile (fosfori) che reagisce all’impatto emettendo luce. Tubo a raggi catodici Architettura del sistema Il Video controller • Il componente hardware che, all’interno dell’ambiente computer monitor è responsabile di guidare il fascio elettronico è il video controller che trasforma informazioni grafiche(digitali) in impulsi elettrici (analogici). • La tecnologia del video controller può essere di due tipi: raster o vettoriale. • I primi dispositivi di output grafico basati sull’uso del CRT, erano detti vettoriali (dove il termine vettoriale è da intendersi come sinonimo di lineare). • In questi dispositivi, il fascio di elettroni può muoversi direttamente da una posizione all’altra, guidato dal computer, secondo l’ordine arbitrario dei comandi di display, e durante il moto traccia una linea. • Chiaramente, annullando l’intensità del fascio, questo può essere spostato in una nuova posizione, senza modificare l’immagine visibile sullo schermo. • Questa tecnica, chiamata random scan (scansione casuale), è rimasta in uso fino agli anni settanta, quando hanno cominciato a diffondersi i sistemi di grafica raster, basati sulle tecnologia televisiva. • Il termine raster (o percorso di scansione) è sinonimo di matrice. • Nella grafica raster, ogni immagine viene infatti rappresentata tramite una matrice di elementi, i cosiddetti pixel, ciascuno dei quali corrisponde ad una precisa porzione dell’immagine. • L’elaborazione delle immagini è dunque basata su matrici di pixel, che vengono memorizzate in un’apposita area di memoria, il frame buffer, localizzata nella memoria della CPU, o in una memoria separata. • Il contenuto del frame buffer, ovvero la rappresentazione in memoria delle matrici di pixel, è chiamato pixmap (da pixel map) o bitmap. La risoluzione del frame buffer, definita dal numero di pixel che può memorizzare, determina la qualità dell’immagine visualizzata. • L’immagine complessiva su un display di tipo raster si ottiene effettuando una scansione sistematica, raster scan, della matrice di pixel attraverso il fascio di elettroni, ovvero scorrendo sequenzialmente le linee di scansione orizzontali, composte da righe di pixel, una alla volta, e regolando l’intensità del fascio in modo da riflettere l’intensità di ciascun pixel. Ogni volta che il fascio di elettroni completa un ciclo di scansione, si dice che il CRT è refreshed. • I principali vantaggi della grafica raster rispetto a quella vettoriale includono costi più bassi (grazie allo sviluppo tecnologico che ha reso disponibili memorie di capacità elevata a basso costo) e la possibilità di visualizzare aree piene di colore, e disegni. • Uno dei principali svantaggi consiste invece nella natura intrinsecamente discreta della rappresentazione tramite pixel: le primitive grafiche (quali linee, cerchi, poligoni), devono essere convertite nelle matrici di pixel che meglio le rappresentano, per poter essere visualizzate su un display di tipo raster. • Questa operazione è chiamata scan conversion. Inoltre, mentre nella grafica vettoriale è possibile disegnare curve continue tra una qualsiasi coppia di punti del CRT, la riduzione a matrici di pixel può comportare problemi di frastagliamento delle immagini. Monitor LCD • • • Cristalli liquidi: determinate sostanze cristalline con struttura tipica di un solido, che se opportunamente riscaldate assumono una consistenza semiliquida, pur mantenendo una struttura cristallina al loro interno. I cristalli liquidi al microscopio appaiono come dei piccoli filamenti. I filamenti cristallini facendo parte di una sostanza semifluida sono caratterizzati da una certa libertà di movimento ed inoltre rifrangono i fasci di luce su di essi emessi. La rifrazione dipenderà dal loro orientamento. Questi filamenti, sotto lo stimolo di un opportuno campo elettrico possono modificare il proprio orientamento e di conseguenza modificare le caratteristiche del fascio di luce che li attraversa. I display a cristalli liquidi (LCD) dipendono da una sorgente di luce esterna. Essi funzionano polarizzando la luce dell’ambiente esterno. Alla base del funzionamento dei monitor LCD troviamo l’utilizzo della luce polarizzata. • La luce è un’onda elettromagnetica che viaggia nel vuoto. E' di solito non polarizzata in quanto prodotta da cariche elettriche che vibrano in tutte le direzioni . • E' possibile trasformare la luce non polarizzata in luce che vibra in una sola direzione (luce polarizzata linearmente).Il processo si dice di polarizzazione. • La luce viene polarizzata facendole attraversare un filtro che permette il passaggio solo di vettori luminosi posti su piani paralleli (es: solo orizzontali o solo verticali etc..). • Se polarizzassimo la luce per piani orizzontali e questa incontrasse poi un filtro che polarizza per piani verticali, essa non potrebbe passare e verrebbe quindi bloccata totalmente. Per passare attraverso un filtro polarizzante per piani verticali la luce polarizzata orizzontalmente necessita di essere ruotata di 90°. • I monitor LCD sono composti da ben sette strati. Internamente abbiamo delle lampade a fluorescenza che producono la luce. Poi un pannello che polarizza la luce per orizzontali e due pannelli centrali che racchiudono uno strato di celle contenenti i cristalli liquidi. Più esternamente abbiamo un altro pannello che polarizza la luce per piani orizzontali. E infine il cristallo esterno del display LCD. Viene applicato un campo elettrico. I cristalli vengono attivati e perdono la loro disposizione a elica. La luce, polarizzata orizzontalmente, non può più seguire i cristalli e non viene quindi ruotata. Arrivando ancora polarizzata orizzontalmente contro il filtro di polarizzazione verticale, la luce viene quindi bloccata. Non viene applicato nessun campo elettrico. I cristalli presentano la tipica disposizione a elica. La luce, che entra polarizzata orizzontalmente, ruota di 90° seguendo i cristalli e può così attraversare il filtro di polarizzazione verticale Retroilluminazione a LED • Quando si parla di schermi a LED non si intende una nuova tecnologia di generazione dell'immagine. Un termine più appropriato sarebbe "schermo LCD basato su retroilluminazione a LED" in quanto il pannello che produce le immagini resta quello di uno schermo piatto tradizionale. All'interno dello schermo a LED la luce emessa da 2160 piccoli LED rossi, verdi e blu, si combina per formare una luce bianca. Il fascio di luce attraversa una piastra di diffusione che la rende omogenea. • • Il vantaggio più evidente rispetto alla lampada tradizionale è la migliore qualità dei colori: il neon degli schermi LCD tradizionali, non restituisce infatti un bianco perfetto e la luce deve essere corretta utilizzando filtri di colore che non garantiscono risultati sorprendenti.La luce bianca illumina quindi il pannello a cristalli liquidi per formare l'immagine finale. La durata dello schermo LCD basato su tecnologia a LED è nell'ordine delle 100 mila ore mentre quella di uno schermo tradizionale è di 50 mila ore. Grazie alla tecnologia a LED è possibile costruire degli schermi sottilissimi spessi anche un paio di millimetri. Evoluzione dei controllori grafici • 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 Pipeline di rendering 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 circa – Si aggiungono funzioni al controllore VGA • Gestione triangoli • Rasterizzazione triangoli • Shading Cenni storici sui controllori grafici • Anni 2000 – Chip integrato che incorpora praticamente tutti gli elementi di una pipeline di rendering – Nasce la Graphics Processing Unit (GPU) • > 2005 – GPU 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 Architettura GPU Unificata di base • Adesso (>2008 circa) – 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 Pipeline mappata su schiera di processori Adesso (>2008 circa) L’esecuzione degli shaders viene mappata sulla “schiera di processori unificati” Architettura di una GPU unificata Arch. TESLA 112 SP 14 SM 1 SP 96 thread DRAM 64 bit NVIDIA GeForce 8800 Programmazione Grafica • Tre livelli – API grafiche • OpenGL • Direct3D – Linguaggi di shading • GLSL • HLSL • Cg – API di programmazione diretta dei core SP • CUDA • OpenCL 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 Linguaggi di shading • Gestiscono i tre tipi di shader – Shader 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 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 … 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 CUDA program can execute on any number of processor cores as illustrated by Figure 1-4, and only the runtime system needs to know the physical processor count. This scalable programming model allows the CUDA architecture to span a wide market range by simply scaling the number of processors and memory partitions: from the high-performance enthusiast GeForce GPUs and professional Quadro and Tesla computing products to a variety of inexpensive, mainstream GeForce GPUs (see Appendix A for a list of all CUDA-enabled GPUs). 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 Multithreaded CUDA Program Block 0 Block 1 Block 2 Block 3 Block 4 Block 5 Block 5 Block 6 Block 6 Block 7 GPU w ith 2 Cores GPU w ith 4 Cores Core 0 Core 1 Core 0 Core 1 Core 2 Core 3 Block 0 Block 1 Block 0 Block 1 Block 2 Block 3 Block 2 Block 3 Block 4 Block 5 Block 6 Block 7 Block 4 Block 5 Block 6 Block 7 A multithreaded program is partitioned into blocks of threads that execute independently from each other, so that a GPU with more cores will automatically execute the program in less time than a GPU with fewer cores. Figure 1-4. Automatic Scalability
© Copyright 2024 Paperzz