Simple MPI Ray Tracer

 

Quata è una parallelizzazione via MPI di un semplice, minimale raytracer sviluppato da Nicholas Chapman.

Questo progetto è stato sviluppato come progetto per l'esame di "Programmazione Concorrente e Parallela".
Partendo dal codice originale, ho fatto alcune modifiche strutturali per separare calcolo e visualizzazione del ray tracing. A quel punto, ho parallelizzato la parte di calcolo utilizzando MPI.

In breve, il nodo "root" aggiorna la scena, manda in broadcast l'aggiornamento ai nodi "worker", e poi attende che i rendering parziali siano tutti pronti per la visualizzazione a schermo.
Le strategie implementate dividono e ricompongono il carico di lavoro computazionale con approcci differenti.

Ecco tre immagini che mostrano l'incremento di fotogrammi al secondo e il maggiore utilizzo di CPU (entrambi i core eseguono computazione utile) nell'esecuzione di due delle strategie di parallelizzazione implementate (a confronto con l'esecuzione della versione sequenziale, nella prima immagine).

L'applicazione in esecuzione sequenziale
Esecuzione sequenziale
L'applicazione in esecuzione parallela con tasks e pool di workers
Tasks e pool di workers
L'applicazione in esecuzione parallela con splitting adattivo
Splitting adattivo

Codice sorgente e ulteriori informazioni sono disponibili per il download:

file "leggimi" note addizionali archivio codice sorgente repository codice sorgente