and high memory bandwidths. GPU architectures are becoming increasingly programmable, offering the
potential for dramatic speedups for a variety of general-purpose applications compared to contemporary
general-purpose processors (CPUs). This paper uses NVIDIA’s C-like CUDA language and an engineering
sample of their recently introduced GTX 260 GPU to explore the effectiveness of GPUs for a variety of
application types, and describes some specific coding idioms that improve their performance on the GPU.
GPU performance is compared to both single-core and multicore CPU performance, with multicore CPU
implementations written using OpenMP. The paper also discusses advantages and inefficiencies of the
CUDA programming model and some desirable features that might allow for greater ease of use and also
more readily support a larger body of applications.