\newpage
\addcontentsline{toc}{chapter}{Abstract}
\begin{center}
  {\bf Abstract}
\end{center}

As the era of Moore's Law and increasing CPU clock rates nears its stopping point
the focus of chip and hardware design has shifted to increasing the number of
computation cores present on the chip. This increase can be most clearly seen in
the rise of Graphic Processing Units (GPU) where hundreds or thousands of slower
cores work in parallel to accomplish tasks. Programming for these chips
represents a new set of challenges and concerns. Two of the APIs which have
emerged present two different approaches to harnessing the computational power
of the GPU. The first explored in this thesis, CUDA, applies a design philosophy
similar to the C programming language, low level and high speed. The second
discussed in this thesis, Thrust, is modeled after the design philosophy behind
the C++ Standard Template Library, low cost abstractions and high flexibility.
This thesis explores applications which use these programming models in the
quest to understand the reasons behind their use.