Our project consists of 2 types of programs. The first program converts a 3D object into a set of 2D slices. There is a serial, CUDA+MPI, and MPI version of this program. The second program is the inverse, it takes in a set of 2D slices and creates a 3D object. There is a serial and CUDA version of this code.

We choose to work on this project because we are very interested in computer graphics and how algorithms and programs could be speed up by MPI and CUDA. Instead of repurposing an existing algorithm, we created a new, novel way to perform both of the aforementioned functions. We implemented both the serial and parallel algorithm from scratch.

Furthermore, there are many real-world uses of this software. In the medical sphere, radiologists need to create a 3D model from a set of 2D slices (precisely our project). As technology improves, MRI machines will create more and more slices per scan. Soon, parallelized processing will be required in order to compute anything across these large image sets.

Sample Reconstructions and Decompositions