scispace - formally typeset
Open AccessJournal ArticleDOI

CUDA by Example: An Introduction to General-Purpose GPU Programming

Jie Cheng
- 01 Jan 2010 - 
- Vol. 11, Iss: 4, pp 401-401
TLDR
This book is designed for readers who are interested in studying how to develop general parallel applications on graphics processing unit (GPU) by using CUDA C, a programming language which combines industry standard programming C language and some more features which can exploit CUDA architecture.
Abstract
CUDA by Example: An Introduction to General-Purpose GPU Programming Jason Sanders and Edward Kandrot ISBN-13: 978-0131387683 Addison-Wesley Professional; 1 edition (July 29, 2010) Introduction This book is designed for readers who are interested in studying how to develop general parallel applications on graphics processing unit (GPU) by using CUDA C. CUDA C is a programming language, which combines industry standard programming C language and some more features which can exploit CUDA architecture. With proper introduction to NVIDA's CUDA architecture and in depth explanation for setting up development environment, this book is an easy to read, easy to understand, and hands on book. Readers of this book are assumed to have at least C language as background. Through this book, readers will not only gain experience in CUDA C development languages, but also will understand a lot of important underlying hardware knowledge, which in return can help software developers develop more efficient and effective applications. Outline of the Book This book is very well organized. Each chapter consists of general introduction, chapter objectives and Chapter Review. Both Sanders and Kandrot are senior software engineers in the CUDA Platform group and CUDA Algorithm team in NVIDIA Company, respectively. First chapter provide users background about history of GPU and CUDA architecture. Special features in CUDA architecture enable GPU to perform general purpose computation in addition to carry out traditional graphic computation. Readers can easily understand the benefit of CUDA architecture by reading though three different applications varying from medical field to environmental filed. In Chapter 2, Sanders and Kandrot equip users with complete lists of hardware and software support for running CUDA C applications. All software can be downloaded for free from websites suggested from authors. Then by a familiar Hello world program in Chapter 3, authors demystified that the CUDA C fundamentally is a standard C language with additional features which can allow application developer to specify which code can be run on device (GPU and its memory) or host (CPU and system memory). After setting all of proper background, the use of CUDA C to run parallel programs on GPU are discussed from Chapter 4 to Chapter 7. In Chapter 8, authors try to illustrate how to incorporate rendering and general purpose computation by using CUDA C. Readers without background in OpenGL or DirectX, can skip this chapter and go to the next. However, this chapter is a great addition to the book since it gives readers complete view of CUDA C. Even though CUDA C turns complicated application with single thread execution into easier case by parallel processing, there are some situation that special care should be taken when simple single thread application are tried to implement on massively parallel architecture; Chapter 9 discusses this topic. Compared to parallelism discussed in above chapters, which refers to parallel execution of a function on different sets of data, in Chapter 10, readers are exposed to a different class of parallelism on GPU, which refers to two or more completely independent tasks to be performed in parallel. Chapter 11 covers how to develop CUDA C application on Multiple GPUS. For further study, Chapter 12 shows more tools to aid CUDA C development and more resources to enhance reader's CUBA C development skills to another level. Summary Jason Sanders and Edward Kandrot wrote this book in such a way that is very easy to read and follow. Also, Sanders and Kandrot never forget the great sense of humor throughout the book. Reading this book is not only a discovery about CUDA C but also a joyful journal. It is highly recommended for students who are interested to learn CUDA C application development as Computer Science major. This book is recommended to be adopted as textbook for undergraduate students studying parallel programming. Jie Cheng, University of Hawaii Hilo

read more

Citations
More filters
Journal ArticleDOI

Medical Image Processing on the GPU : Past, Present and Future

TL;DR: This review presents the past and present work on GPU accelerated medical image processing, and is meant to serve as an overview and introduction to existing GPU implementations.
Proceedings ArticleDOI

Copperhead: compiling an embedded data parallel language

TL;DR: The language, compiler, and runtime features that enable Copperhead to efficiently execute data parallel code are discussed and the program analysis techniques necessary for compiling Copperhead code into efficient low-level implementations are introduced.
Journal ArticleDOI

Fast Volume Reconstruction From Motion Corrupted Stacks of 2D Slices

TL;DR: A novel and fully automatic procedure for selecting the image stack with least motion to serve as an initial registration target and ensures high reconstruction accuracy by exact computation of the point-spread function for every input data point, which has not previously been possible due to computational limitations.
Posted Content

SplitFed: When Federated Learning Meets Split Learning.

TL;DR: A novel approach, named splitfed (SFL), is presented that amalgamates the two approaches of federated learning and split learning eliminating their inherent drawbacks and offers better efficiency than SL by incorporating the parallel ML model update paradigm of FL.
Journal ArticleDOI

Understanding throughput-oriented architectures

TL;DR: For workloads with abundant parallelism, GPUs deliver higher peak computational throughput than latency-oriented CPUs.
Trending Questions (1)
How can I learn C++ for software development?

It is highly recommended for students who are interested to learn CUDA C application development as Computer Science major.