CUDA Application Design and Development

CUDA Application Design and Development

1st Edition - October 8, 2011

Write a review

  • Author: Rob Farber
  • eBook ISBN: 9780123884329
  • Paperback ISBN: 9780123884268

Purchase options

Purchase options
DRM-free (PDF, Mobi, EPub)
Sales tax will be calculated at check-out

Institutional Subscription

Free Global Shipping
No minimum order


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 developers: 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 issues: 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.

Key Features

  • Includes multiple examples building from simple to more complex applications in four key areas: machine learning, visualization, vision recognition, and mobile computing
  • Addresses the foundational issues for CUDA development: multi-threaded programming and the different memory hierarchy
  • Includes teaching chapters designed to give a full understanding of CUDA tools, techniques and structure.
  • Presents CUDA techniques in the context of the hardware they are implemented on as well as other styles of programming that will help readers bridge into the new material


Software engineers, programmers, hardware engineers, advanced students

Table of Contents

  • CHAPTER 1 First Programs and How to Think in CUDA

    Source Code and Wiki

    Distinguishing CUDA from Conventional Programming with a Simple Example

    Choosing a CUDA API

    Some Basic CUDA Concepts

    Understanding Our First Runtime Kernel

    Three Rules of GPGPU Programming

    Big-O Considerations and Data Transfers

    CUDA and Amdahl’s Law

    Data and Task Parallelism

    Hybrid Execution: Using Both CPU and GPU Resources

    Regression Testing and Accuracy

    Silent Errors

    Introduction to Debugging

    UNIX Debugging

    Windows Debugging with Parallel Nsight


    CHAPTER 2 CUDA for Machine Learning and Optimization

    Modeling and Simulation

    Machine Learning and Neural Networks

    XOR: An Important Nonlinear Machine-Learning Problem

    Performance Results on XOR

    Performance Discussion


    The C++ Nelder-Mead Template

    CHAPTER 3 The CUDA Tool Suite: Profiling a PCA/NLPCA


    PCA and NLPCA

    Obtaining Basic Profile Information

    Gprof: A Common UNIX Profiler

    The NVIDIA Visual Profiler: Computeprof

    Parallel Nsight for Microsoft Visual Studio

    Tuning and Analysis Utilities (TAU)


    CHAPTER 4 The CUDA Execution Model

    GPU Architecture Overview

    Warp Scheduling and TLP

    ILP: Higher Performance at Lower Occupancy

    Little’s Law

    CUDA Tools to Identify Limiting Factors


    CHAPTER 5 CUDA Memory

    The CUDA Memory Hierarchy

    GPU Memory

    L2 Cache

    L1 Cache

    CUDA Memory Types

    Global Memory


    CHAPTER 6 Efficiently Using GPU Memory


    Utilizing Irregular Data Structures

    Sparse Matrices and the CUSP Library

    Graph Algorithms

    SoA, AoS, and Other Structures

    Tiles and Stencils


    CHAPTER 7 Techniques to Increase Parallelism

    CUDA Contexts Extend Parallelism

    Streams and Contexts

    Out-of-Order Execution with Multiple Streams

    Tying Data to Computation


    CHAPTER 8 CUDA for All GPU and CPU Applications

    Pathways from CUDA to Multiple Hardware Backends

    Accessing CUDA from Other Languages





    CHAPTER 9 Mixing CUDA and Rendering



    Introduction to the Files in the Framework


    CHAPTER 10 CUDA in a Cloud and Cluster Environments

    The Message Passing Interface (MPI)

    How MPI Communicates


    Balance Ratios

    Considerations for Large MPI Runs

    Cloud Computing

    A Code Example


    CHAPTER 11 CUDA for Real Problems

    Working with High-Dimensional Data


    Force-Directed Graphs

    Monte Carlo Methods

    Molecular Modeling

    Quantum Chemistry

    Interactive Workflows

    A Plethora of Projects


    CHAPTER 12 Application Focus on Live Streaming Video

    Topics in Machine Vision


    TCP Server

    Contents ix

    Live Stream Application

    The simpleVBO.cpp File

    The callbacksVBO.cpp File

    Building and Running the Code

    The Future


    Listing for simpleVBO.cpp

Product details

  • No. of pages: 336
  • Language: English
  • Copyright: © Morgan Kaufmann 2011
  • Published: October 8, 2011
  • Imprint: Morgan Kaufmann
  • eBook ISBN: 9780123884329
  • Paperback ISBN: 9780123884268

About the Author

Rob Farber

Rob Farber
Rob Farber has served as a scientist in Europe at the Irish Center for High-End Computing as well as U.S. national labs in Los Alamos, Berkeley, and the Pacific Northwest. He has also been on the external faculty at the Santa Fe Institute, consultant to fortune 100 companies, and co-founder of two computational startups that achieved liquidity events. He is the author of “CUDA Application Design and Development” as well as numerous articles and tutorials that have appeared in Dr. Dobb's Journal and Scientific Computing, The Code Project and others.

Affiliations and Expertise

CEO/Publisher of, Wall Street Analyst, and consultant to scientific and commercial technology companies around the world.

Ratings and Reviews

Write a review

There are currently no reviews for "CUDA Application Design and Development"