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).
Codice sorgente e ulteriori informazioni sono disponibili per il download:
file "leggimi" note addizionali archivio codice sorgente repository codice sorgente