GPGPU General Purpose Computation on GPU Emanuele Ruffaldi 2005 Corso su Elasticità non lineare ed Oggetti Deformabili
Calcolo parallelo Il calcolo parallelo permette di accelerare la risoluzione di un problema attraverso il parallelismo Soluzioni possibili –Multiprocessore –Cluster –GPU –Cluster di GPU!!
Calcolo parallelo (2) La computazione parallela può essere portata sintetizzata in due concetti Stream –Un insieme di unità di informazione sulle quali vengono fatte delle operazioni Kernel –Un’operazione da effettuare sui flussi, altamente parallelizzabile
Perchè le GPU? Velocità di calcolo –Un 3GHz Pentium 4 ha 6GFLOPS teorici (55MT) –Una GeForceFX 5900 ha 20 GFLOPS reali (130MT) Sviluppo temporale –Le CPU hanno seguito la legge di Moore per molti anni (1.5x annuale, 60x nel decennio) –Lo sviluppo delle GPU è nettamente superiore per via degli interessi nel campo del gaming (investimenti nella ricerca) 2x annuale, 1000x nel decennio Altri aspetti –Parallelismo –Aritmetica specializzata: i transistor aggiunti ad una CPU vengono usati per la memoria cache (tranne nei recenti dualcore) mentre nelle GPU sono unità di calcolo [gpudb]gpudb
Problemi del GPGPU Nello sviluppo... –Le tecnologie sono state sviluppate nel mondo della grafica –Il modello di programmazione è altamente parallelo Nell’esecuzione... –Limitazioni nella memoria per le matrici –Precisione (32-bit)
Campi Applicativi In campo ludico –Simulazione di effetti ambientali: Fluidi, Nuvole –Dinamica di oggetti rigidi –Sistemi a particelle Il GPGPU può essere utilizzato anche in ambiti non ludici –Simulazione di Fluidi –Dinamica dei Corpi –TomografiaTomografia –Simulazione di corpi deformabili –Computer Vision [here]here Algoritmi possibili –FFT –Linear Algebra per PDE –Risoluzione sistemi Masse-Molle –FEMFEM
Programmazione La programmazione delle GPU parte dalla pipeline grafica Concetti chiave Primitive Vertici Texture Passaggi
Programmazione La flessibilità delle GPU sta in due elementi: –Vertex Program (VP) opera a livello di vertici delle primitive accedendo eventualmente alle texture –Fragment Program (FP) opera a livello di pixel accedento a più textures Le funzioni a disposizione dei due sono simili, ma il vantaggio dei fragment program sta nel loro numero –1VP/4 FP nei sistemi low-end e 6VP/16FP in quelli high end.
Programmazione – Dati Le matrici ed i vettori del nostro algoritmo vanno rappresentati sulle texture Ogni texture –Dimensione potenze di 2 fino a 2048 x 2048 –4 componenti RGBA Matrici Dense, Banded, Random Sparse N 2D-Textures... 1iN
Programmazione Operazioni Operatori lineari: prodotti MxV, MxM e VxV Risolutori di equazioni
Sistema Masse e Molle Un problema classico facilmente parallelizzabile –Ogni iterazione dipende dalla precendenti Aspetti per la trasposizione in GPU –Topologia: volumetrica, griglia planare, tetraedro –Mappatura delle informazioni in gioco: lunghezza di riposo, massa, posizioni, forze esterne, volume –Rappresentazione della topologia: si utilizza la texture per fare il lookup dei nodi vicini Riferimenti: MOSEEGARD GEORGIIMOSEEGARDGEORGII
Sistema Masse Molle Informazioni per ciascun vertice: –Posizione, Massa e Forze esterne Informazioni per ciascuna relazione vicinanza –Posizione di riposo
Algoritmo Integrazione Verlet (senza velocità) Implementazione [THMG04]
Strumenti Soluzione a basso livello: sviluppo attraverso gli strumenti grafici per il 3D –OpenGL ed linguaggio di shading GLSL/Cg –DirectX ed il linguaggio di shading Cg OpenGL Mathematics (GLM)GLM –Orientata alla computazione generica su GPU Brook for GPUBrook for GPU –Un linguaggio per il calcolo parallelo che utilizza la GPU
Riferimenti Corso SIGGRAPH 2004 [here]here Libro GPUGems2 [here]here Sito Simulazione su GPU [here]here Corso UPenn [here]here