CUDA for Engineers: An Introduction to High-Performance Parallel Computing, 1st edition

Published by Addison-Wesley Professional (2 November 2015) © 2016

  • Duane Storti
  • Mete Yurtoglu
Products list

Details

  • A print text
  • Free shipping
  • Also available for purchase as an ebook from all major ebook resellers, including InformIT.com

Title overview

Ideal for students with at least introductory programming experience, this tutorial presents examples and reusable C code to jumpstart a wide variety of applications. Students will walk through moving from serial to parallel computation; computing values of a function in parallel; understanding 2D parallelism; simulating dynamics in the phase plane; simulating heat conduction; interacting with 3D data; walking through a basic N-body simulation, and more.

Table of contents

Acknowledgments            xvii

About the Authors             xix

 

Introduction          1

What Is CUDA?     1

What Does “Need-to-Know” Mean for Learning CUDA?     2

What Is Meant by “for Engineers”?     3

What Do You Need to Get Started with CUDA?      4

How Is This Book Structured?      4

Conventions Used in This Book      8

Code Used in This Book      8

User’s Guide      9

Historical Context      10

References      12

 

Chapter 1: First Steps            13

Running CUDA Samples      13

Running Our Own Serial Apps      19

Summary      22

Suggested Projects      23

 

Chapter 2: CUDA Essentials           25

CUDA’s Model for Parallelism     25

Need-to-Know CUDA API and C Language Extensions     28

Summary      31

Suggested Projects      31

References      31

 

Chapter 3: From Loops to Grids           33

Parallelizing dist_v1    33

Parallelizing dist_v2      38

Standard Workflow      42

Simplified Workflow      43

Summary      47

Suggested Projects      48

References      48

 

Chapter 4: 2D Grids and Interactive Graphics           49

Launching 2D Computational Grids      50

Live Display via Graphics Interop     56

Application: Stability      66

Summary      76

Suggested Projects      76

References      77

 

Chapter 5: Stencils and Shared Memory           79

Thread Interdependence      80

Computing Derivatives on a 1D Grid      81

Summary     117

Suggested Projects      118

References      119

 

Chapter 6: Reduction and Atomic Functions          121

Threads Interacting Globally      121

Implementing parallel_dot      123

Computing Integral Properties: centroid_2d      130

Summary      138

Suggested Projects      138

References       138

 

Chapter 7: Interacting with 3D Data           141

Launching 3D Computational Grids: dist_3d     144

Viewing and Interacting with 3D Data: vis_3d      146

Summary      171

Suggested Projects     171

References     171

 

Chapter 8: Using CUDA Libraries           173

Custom versus Off-the-Shelf      173

Thrust      175

cuRAND      190

NPP      193

Linear Algebra Using cuSOLVER and cuBLAS      . 201

cuDNN      207

ArrayFire      207

Summary      207

Suggested       208

References     209

 

Chapter 9: Exploring the CUDA Ecosystem            211

The Go-To List of Primary Sources      211

Further Sources      217

Summary      218

Suggested Projects     219

 

Appendix A: Hardware Setup           221

Checking for an NVIDIA GPU: Windows      221

Checking for an NVIDIA GPU: OS X     222

Checking for an NVIDIA GPU: Linux     223

Determining Compute Capability      223

Upgrading Compute Capability      225

 

Appendix B: Software Setup            229

Windows Setup     229

OS X Setup      238

Linux Setup      240

 

Appendix C: Need-to-Know C Programming          245

Characterization of C     245

C Language Basics      246

Data Types, Declarations, and Assignments      248

Defining Functions      250

Building Apps: Create, Compile, Run, Debug      251

Arrays, Memory Allocation, and Pointers      262

Control Statements: for, if      263

Sample C Programs     267

References     277

 

Appendix D: CUDA Practicalities: Timing, Profiling, Error Handling, and Debugging            279

Execution Timing and Profiling      279

Error Handling     292

Debugging in Windows      298

Debugging in Linux     305

CUDA-MEMCHECK     308

Using Visual Studio Property Pages      309

References     312

 

Index            313

 

Need help?Get in touch