We are entering the golden age of GPU computing. Since the introduction of CUDA in 2007, more
than 100 million computers with CUDA-capable GPUs have been shipped to end users. Unlike the
previous GPGPU shader programming models, CUDA supports parallel programming in C. From my
own experience in teaching CUDA programming, C programmers can begin to write basic CUDA
programs after only attending one lecture and reading one textbook chapter. With such a low barrier of
entry, researchers all over the world have been engaged in developing new algorithms and applications
to take advantage of the extreme floating point execution throughout these GPUs.
Today, there is a large community of GPU computing practitioners. Many of them have reported a
10 to 100 times speedup of their applications with GPU computing. To put this into perspective, with
the historical 2X performance growth every 2 years, these researchers are experiencing the equivalent
of time travel of 8 to 12 years. That is, they are getting the performance today that they would have to
wait for 8 to 12 years if they went for the “free-ride” advancement of performance in microprocessors.
Interestingly, such “free ride” advancement is no longer available. Furthermore, once they develop
their application in CUDA, they will likely see continued performance growth of 2X for every two
years from this day forward.
After discussing with numerous researchers, I have reached the conclusion that many of them are
solving similar algorithm problems in their programming efforts. Although they are working on diverse
applications, they often end up developing similar algorithmic strategies. The idea of GPU Computing
Gems is to provide a convenient means for application developers in diverse application areas to
benefit from each other’s experience. In this volume, we have collected 50 gem articles written by
researchers in 10 diverse areas. Each gems article reports a successful application experience in GPU
computing. These articles describe the techniques or “secret sauce” that contributed to the success.
The authors highlight the potential applicability of their techniques to other application areas. In our
editorial process, we have emphasized the accessibility of these gems to researchers in other areas.
When we issued the call for proposals for the first GPU Computing Gems, we received more than
280 submissions, an overwhelming response. After careful review, we accepted 110 proposals that
have a high likelihood of making valuable contributions to other application developers. Many highquality
proposals were not accepted because of concerns that they may not be accessible to a large
audience. With so many accepted proposals, we were forced to divide these gems into two volumes.
This volume covers 50 gems in the application areas of scientific simulation, life sciences, statistical
modeling, emerging data-intensive applications, electronic design automation, ray tracing and rendering,
computer vision, video and image processing, signal and audio processing, and medical imaging.