
This section will focus on introducing papers and theses chosen to be discussed with the intention to emphasize work done in a similar field before and how this project will build upon them. The main fields focused on here are image processing, convolution, GPU accelleration, three dimensional data and multiple GPU systems. All these topics are relevant to this project, and have been researched to lay a foundation for the implementations performed.

%\section{Related Work} 

\subsubsection*{Image Convolution with CUDA, 2007 \cite{convolutioncuda}}

This is a paper written by NVIDIA to show how CUDA can be used to perform convolution in image processing. This is related to this project in that it also concerns convolution in the spatial domain and it is also implemented in CUDA. In contrast to this paper, the image processing performed in this project is on three dimensional data, and the data to be filtered does not fit in memory and so one must perform several communications in the memory hierarchy.

\subsubsection*{Accelerating 3D Convolution using Graphics Hardware, 1999 \cite{acclconv}}

This is a paper published by IEEE Visualization in 1999 that approaches the subject of 3D convolution performed on a GPU. The main idea here is to use the graphical hardware to accelerate the convolution process. This is work done in this area pre CUDA and this is where it differs from this project. Since before the CUDA architecture the use of shared memory was not available and this can be a good enhancement/optimization. Other than the use of CUDA this project differs in that it also considers the use of multiple GPU to accelerate the process and is concerned with larger data sets. 

\subsubsection*{Modeling Communication on Multi-GPU Systems, 2009 \cite{Spampinato}}

This is a master thesis concerning the use of communication and calculations on several GPUs  simultaneously. Another important subject taken into account here is partitioning of data such that calculations can be done on several GPUs. This is relevant to this project because of the large amount of data to be filtered and the advantage of using multi-GPU. It is also interesting to see how one can partition data such that communication between GPUs is optimal. In contrast to this thesis the problem solved here is of image processing and not a solution to partial differential equations. Another difference is again the consideration of large data sets.  

\subsubsection*{Paulius Micikevicius, 3D Finite Difference Computation on GPUs using CUDA, Nvidia, 2008. \cite{3dcuda} }

This is a paper by Nvidia that shows how one can process three dimensional data. The implementation is specific for a Tesla 10 series GPU, which is the same used in this project. The most interesting aspects here are that this is an ideal example of using CUDA on a three dimensional dataset and that its specificly developed by Nvidia for their 10 series GPU. All of these three elements are present in this project as well. There is also a discussion here on the use on multiple GPUs, which is also covered by this project.

\subsubsection*{Eirik Aksnes, Simulation of Fluid Flow through porous rocks on modern GPU, 2009. \cite{aksnes}}

This is a masters thesis, which focuses on a physics simulation in three dimensions. This was used in relation to programming large three dimensional objects on the GPU. This a good source since here as well as in this project the GPU in use is the Nvidia Tesla c1060, and here too the focus was on three dimentional data. This is not a heavy cited reference, but nevertheless it is a useful source since it discusses similar aspects.

