CUDA for Engineers: An Introduction to High-Performance Parallel Computing

¡
¡ Addison-Wesley Professional
ā§Ģ.ā§Ļ
ā§¨ āĻŸāĻž āĻĒā§°ā§āĻ¯āĻžāĻ˛ā§‹āĻšāĻ¨āĻž
āĻ‡āĻŦā§āĻ•
352
āĻĒā§ƒāĻˇā§āĻ āĻž
āĻ¯ā§‹āĻ—ā§āĻ¯

āĻāĻ‡ āĻ‡āĻŦā§āĻ•āĻ–āĻ¨ā§° āĻŦāĻŋāĻˇā§Ÿā§‡

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.

āĻāĻ‡ āĻ‡āĻŦā§āĻ•āĻ–āĻ¨āĻ• āĻŽā§‚āĻ˛ā§āĻ¯āĻžāĻ‚āĻ•āĻ¨ āĻ•ā§°āĻ•

āĻ†āĻŽāĻžāĻ• āĻ†āĻĒā§‹āĻ¨āĻžā§° āĻŽāĻ¤āĻžāĻŽāĻ¤ āĻœāĻ¨āĻžāĻ“āĻ•āĨ¤

āĻĒāĻĸāĻŧāĻžā§° āĻ¨āĻŋāĻ°ā§āĻĻā§‡āĻļāĻžā§ąāĻ˛ā§€

āĻ¸ā§āĻŽāĻžā§°ā§āĻŸāĻĢ’āĻ¨ āĻ†ā§°ā§ āĻŸā§‡āĻŦāĻ˛ā§‡āĻŸ
Android āĻ†ā§°ā§ iPad/iPhoneā§° āĻŦāĻžāĻŦā§‡ Google Play Books āĻāĻĒāĻŸā§‹ āĻ‡āĻ¨āĻˇā§āĻŸāĻ˛ āĻ•ā§°āĻ•āĨ¤ āĻ‡ āĻ¸ā§āĻŦāĻ¯āĻŧāĻ‚āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻ­āĻžā§ąā§‡ āĻ†āĻĒā§‹āĻ¨āĻžā§° āĻāĻ•āĻžāĻ‰āĻŖā§āĻŸā§° āĻ¸ā§ˆāĻ¤ā§‡ āĻ›āĻŋāĻ‚āĻ• āĻšāĻ¯āĻŧ āĻ†ā§°ā§ āĻ†āĻĒā§āĻ¨āĻŋ āĻ¯'āĻ¤ā§‡ āĻ¨āĻžāĻĨāĻžāĻ•āĻ• āĻ¤'āĻ¤ā§‡āĻ‡ āĻ•ā§‹āĻ¨ā§‹ āĻ…āĻĄāĻŋāĻ…'āĻŦā§āĻ• āĻ…āĻ¨āĻ˛āĻžāĻ‡āĻ¨ āĻŦāĻž āĻ…āĻĢāĻ˛āĻžāĻ‡āĻ¨āĻ¤ āĻļā§āĻ¨āĻŋāĻŦāĻ˛ā§ˆ āĻ¸ā§āĻŦāĻŋāĻ§āĻž āĻĻāĻŋāĻ¯āĻŧā§‡āĨ¤
āĻ˛ā§‡āĻĒāĻŸāĻĒ āĻ†ā§°ā§ āĻ•āĻŽā§āĻĒāĻŋāĻ‰āĻŸāĻžā§°
āĻ†āĻĒā§āĻ¨āĻŋ āĻ•āĻŽā§āĻĒāĻŋāĻ‰āĻŸāĻžā§°ā§° ā§ąā§‡āĻŦ āĻŦā§āĻ°āĻžāĻ‰āĻœāĻžā§° āĻŦā§āĻ¯ā§ąāĻšāĻžā§° āĻ•ā§°āĻŋ Google PlayāĻ¤ āĻ•āĻŋāĻ¨āĻž āĻ…āĻĄāĻŋāĻ…'āĻŦā§āĻ•āĻ¸āĻŽā§‚āĻš āĻļā§āĻ¨āĻŋāĻŦ āĻĒāĻžā§°ā§‡āĨ¤
āĻ‡-ā§°ā§€āĻĄāĻžā§° āĻ†ā§°ā§ āĻ…āĻ¨ā§āĻ¯ āĻĄāĻŋāĻ­āĻžāĻ‡āĻš
Kobo eReadersā§° āĻĻā§°ā§‡ āĻ‡-āĻšāĻŋā§ŸāĻžāĻāĻšā§€ā§° āĻĄāĻŋāĻ­āĻžāĻ‡āĻšāĻ¸āĻŽā§‚āĻšāĻ¤ āĻĒā§āĻŋāĻŦāĻ˛ā§ˆ, āĻ†āĻĒā§āĻ¨āĻŋ āĻāĻŸāĻž āĻĢāĻžāĻ‡āĻ˛ āĻĄāĻžāĻ‰āĻ¨āĻ˛â€™āĻĄ āĻ•ā§°āĻŋ āĻ¸ā§‡āĻ‡āĻŸā§‹ āĻ†āĻĒā§‹āĻ¨āĻžā§° āĻĄāĻŋāĻ­āĻžāĻ‡āĻšāĻ˛ā§ˆ āĻ¸ā§āĻĨāĻžāĻ¨āĻžāĻ¨ā§āĻ¤ā§°āĻŖ āĻ•ā§°āĻŋāĻŦ āĻ˛āĻžāĻ—āĻŋāĻŦāĨ¤ āĻ¸āĻŽā§°ā§āĻĨāĻŋāĻ¤ āĻ‡-ā§°āĻŋāĻĄāĻžā§°āĻ˛ā§ˆ āĻĢāĻžāĻ‡āĻ˛āĻŸā§‹ āĻ•ā§‡āĻ¨ā§‡āĻ•ā§ˆ āĻ¸ā§āĻĨāĻžāĻ¨āĻžāĻ¨ā§āĻ¤ā§° āĻ•ā§°āĻŋāĻŦ āĻœāĻžāĻ¨āĻŋāĻŦāĻ˛ā§ˆ āĻ¸āĻšāĻžāĻ¯āĻŧ āĻ•ā§‡āĻ¨ā§āĻĻā§ā§°āĻ¤ āĻĨāĻ•āĻž āĻ¸āĻŦāĻŋāĻļā§‡āĻˇ āĻ¨āĻŋā§°ā§āĻĻā§‡āĻļāĻžā§ąāĻ˛ā§€ āĻšāĻžāĻ“āĻ•āĨ¤