CUDA for Engineers

CUDA for Engineers book cover

CUDA for Engineers

$44.99

In stock
0 out of 5

$44.99

SKU: 9780134177410 Category:
Title Range Discount
Trade Discount 5 + 25%

Description

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

 

The first practical introduction to CUDA for engineers and domain scientists

  • Working examples show how to bring low-cost, high-performance parallel computing to engineering and scientific applications
  • Includes easy-to-understand, fully-tested code for all examples
  • For every scientist, engineer, or student with at least introductory programming experience
  • Provides CUDA training that can significantly improve an engineer’s job market readiness

CUDA for Engineers gives you direct, hands-on engagement with personal, high-performance parallel computing, enabling you to do computations on a gaming-level PC that would have required a supercomputer just a few years ago.

 

The authors introduce the essentials of CUDA C programming clearly and concisely, quickly guiding you from running sample programs to building your own code. Throughout, you’ll learn from complete examples you can build, run, and modify, complemented by additional projects that deepen your understanding. All projects are fully developed, with detailed building instructions for all major platforms.

 

Ideal for any scientist, engineer, or student with at least introductory programming experience, this guide assumes no specialized background in GPU-based or parallel computing. In an appendix, the authors also present a refresher on C programming for those who need it.

 

Coverage includes

  • Preparing your computer to run CUDA programs
  • Understanding CUDA’s parallelism model and C extensions
  • Transferring data between CPU and GPU
  • Managing timing, profiling, error handling, and debugging
  • Creating 2D grids
  • Interoperating with OpenGL to provide real-time user interactivity
  • Performing basic simulations with differential equations
  • Using stencils to manage related computations across threads
  • Exploiting CUDA’s shared memory capability to enhance performance
  • Interacting with 3D data: slicing, volume rendering, and ray casting
  • Using CUDA libraries
  • Finding more CUDA resources and code

 

Realistic example applications include

  • Visualizing functions in 2D and 3D
  • Solving differential equations while changing initial or boundary conditions
  • Viewing/processing images or image stacks
  • Computing inner products and centroids
  • Solving systems of linear algebraic equations
  • Monte-Carlo computations

 

Duane Storti is a professor of mechanical engineering at the University of Washington in Seattle. He has thirty-five years of experience in teaching and research in the areas of engineering mathematics, dynamics and vibrations, computer-aided design, 3D printing, and applied GPU computing.

 

Mete Yurtoglu is currently pursuing an M.S. in applied mathematics and a Ph.D. in mechanical engineering at the University of Washington in Seattle. His research interests include GPU-based methods for computer vision and machine learning.

 

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.

  • Working examples show how to bring low-cost, high-performance parallel computing to engineering and scientific applications
  • Includes easy-to-understand, fully-tested code for all examples
  • For students with at least introductory programming experience
  • Provides CUDA training that can significantly improve an engineer’s job market readiness

Additional information

Dimensions 1.00 × 7.20 × 9.00 in
Imprint

Format

ISBN-13

ISBN-10

Author

,

BISAC

Subjects

professional, higher education, COM051220, Employability, IT Professional, Y-BA MOBILE/GRAPHICS/GAME DEV