Parallalelization of Convolution Algorithm
Parallelization using CUDA, MPI, PThreads
This project was completed as the final project for the Parallel Computing (COMP5055) course at the University of Puerto Rico @ Mayagüez. It consisted of the parallelization of a edge detection convolution algorithm which used the Prewitt operators given below:
\[P_x = \begin{pmatrix} 1 & 0 & -1\\ 1 & 0 & -1\\ 1 & 0 & -1 \end{pmatrix}; \;\;\; P_y = \begin{pmatrix} 1 & 1 & 1\\ 0 & 0 & 0\\ -1 & -1 & -1 \end{pmatrix}\]The serial algorithm was implemented in C++, and the three paralellized versions were developed using Pthreads, MPI and CUDA. Each of these implementations and their performance were tested on a dataset of satellite images sourced from the Dstl Satellite Imagery Feature Detection Competition hosted on Kaggle.


Left: Example of original satellite image. Right: Output of edge detection convolution algorithm using Prewitt operators.
The report detailing each implementation as well as the performance study can be found here: link.