ABSTRACT

Primarily driven by the video and gaming industry, GPUs have specialized their architecture for the particular nature of graphics algorithms and problems. In due course, this allowed the development of a highly specialized computing architecture which is heavily multithreaded, allowing for thousands of concurrent threads to be actively executing toward the completion of a given kernel. Moreover, as general-purpose programming models were introduced, programmers no longer had to run their algorithms through the graphics pipeline, but could express their algorithms in high-level programming languages familiar to scientists. CUDA is one such example-extending a subset of the C++ programming language-which exploits the parallel architecture by keeping the programming constructs closely bound to it.