Simple MPI Ray Tracer

 

This is a MPI parallelization of a simple, minimal raytracer by Nicholas Chapman.

This project was developed as a coding assignment for the "Parallel and Concurrent Programming" course.
Starting from the original code, I did some refactoring to separate calculation and visualization of the ray tracing. I then parallelized the calculation part using MPI.

In short, the root node updates the scene, broadcasts the update to workers, and then waits for rendered frame blocks to show together on screen.
The implemented strategies split and merge the computation with different approaches.

Here's three images showing the fps gain and increased CPU usage (both cores do work) while running two of the implemented parallel strategies (compared to the sequential version in the first image).

The application running sequentially
Sequential execution
The application running in parallel with tasks and workers pool
Tasks and workers pool
The application running in parallel with adaptive splitting
Adaptive splitting

Source code and further information are available for download:

readMe file additional notes source code archive source code repository