Biagio Cosenza
blog
Archives - Previous posts

14 marzo 2007

Seminario su Ray Tracing su Architetture Parallele
Sabato ci sarà un seminario sul mio argomento di tesi all'Università di Salerno.
Contenuti
Illuminazione globale e ray tracing. Le componenti di un ray tracer: traversal, intersezioni, shading e frame buffer. Ray tracing su architetture parallele, dalle estensioni SIMD ai sistemi multi processori a memoria distribuita. Infine le problematiche e gli scenari di ricerca attuali legati al ray tracing.
Cosa
Seminario IsisLab

Quando
2007-03-16 dal 12:00 al 13:00

Dove
Lab 10 Piano 2 (Fisciano)

Contatto e-mail
biacos [at] gmail [dot] com

Etichette: , , ,


09 marzo 2007




Parallelismi nascosti

I nostri computer sono già architetture parallele. Probabilmente lo ignoriamo ma i processori attualmente in vendita hanno già un potente strumento parallelo: le istruzioni SIMD.

Secondo la tassonomia di Flynn, si tratta di istruzioni singole in grado di operare contemporaneamente su più dati. Di fatto sono istruzioni vettoriali presenti oramai in tutti i processori in commercio: i processori Intel (MMX, SSE2, SSE3, SSSE3, SSE4), gli AMD (3d Now), i Motorola Altivec.

Queste istruzioni sono lungamente usate nello streaming e nelle applicazioni multimediali, dove la loro applicazione è banale. Molto più difficile è pensare di utilizzarle nelle normali applicazioni di uso comune. Con queste istruzioni, ad esempio, è possibile eseguire 4 moltiplicazioni al costo di una (ovviamente sotto determinate condizioni).

I compilatori possono in qualche modo venirci incontro, utilizzando tecniche come il loop unrolling o il riordino delle istruzioni. Tuttavia queste tecniche sono piuttosto complesse da implementare (questo paper dell'ACM ne da una panoramica). Attualmente l'unico compilatore che le implementa seriamente è quello dell'Intel.
Inoltre solo il programmatore può essere in grado di gestire ottimizzazioni avanzate di alto livello, quali ad esempio l'allineamento della memoria (segnalo un interessante articolo al proposito).


Un ultimo esempio viene dalla computer grafica. L'utilizzo di tecniche SIMD nel ray tracing ha evidenziato un enorme aumento delle prestazioni. Queste ottimizzazioni si possono effettuare su quasi tutte le componenti di un ray tracer (intersezioni, traversal, shader), a dimostrazione di quanto il loro utilizzo possa essere applicato ovunque.

Certo, non vi aspettate di poterlo fare in Java!

Etichette: , ,