As the computer industry retools to leverage massively parallel graphics processing units (GPUs), this book is designed to meet the needs of working software developers who need to understand GPU programming with CUDA and increase efficiency in their projects. CUDA Application Design and Development starts with an introduction to parallel computing concepts for readers with no previous parallel experience, and focuses on issues of immediate importance to working software achieving high performance, maintaining competitiveness, analyzing CUDA benefits versus costs, and determining application lifespan. The book then details the thought behind CUDA and teaches how to create, analyze, and debug CUDA applications. Throughout, the focus is on software engineering how to use CUDA in the context of existing application code, with existing compilers, languages, software tools, and industry-standard API libraries. Using an approach refined in a series of well-received articles at Dr Dobb's Journal, author Rob Farber takes the reader step-by-step from fundamentals to implementation, moving from language theory to practical coding.
If you recall the "CUDA, Supercomputing for the Masses" series by Rob at Dr.Dobb's sometime in 2009, this book is like that just a bit better. Of course, the code samples won't compile straight away against latest headers, there are new ways to optimise (especially on synchronisation and memory sharing / management level) with latest CUDA releases (and latest GPUs from nVidia). However, it's still a relevant book that will get you started (especially if you are on Windows and older hardware) and if nothing else will teach you how things used to be. IMHO CUDA past is relevant in order to gain an intuition whilst working with older libraries and understand why other developers are getting so excited about recent improvements.