CUDA Programming: A Developer's Guide to Parallel Computing with GPUs (Applications of Gpu Computing)
R**K
Speedy (Bara)CUDA Programming Revealed
I have been looking over almost all of the books on GPGPU programming for three months now and IMHO this book is presently the best one to select for Nvidia hardware understanding and program development. "CUDA Programming" meets high standards for in depth hardware exploration and program approaches. There are almost 100 pages of code in this 550 page book that help the reader get acquainted with CUDA programming differences from standard C++.Although this is a fairly deep read, it delivers a host of understanding about GPU hardware architectures and how they create a demand for programming a certain way that supports the high throughput potential that the new GPU cards can deliver. There are new terms to learn in this arena: Grids, Blocks, Threads, Warps,and Kernels that are related to the parallel programming paradigm. The author does a good job of explaining what they are and the how and why of their proper use. I'm sure that there will be less erratic introductions of this material in the future, but for 2012, this is the best there is in print. No doubt, you will need to reread the material three times to get it all down correctly. That is why you will need many program examples to make it all clear.The book also covers the various programming libraries that surround the CUDA dialect of C++ and is helpful in understanding their usage. There is also an introduction to CUDA debugging tools and several program timing comparisons. The book devotes chapter 10 to the various support libraries and describes their area of support briefly. The current release release of the CUDA SDK.is version 5. This SDK contains a few dozen example programs and I believe that you will develop most of your understanding of CUDA from it. Expect a few months work with this before you attain a reasonable degree of expertise. Also realize that the immediate result of using CUDA programming is code that will only run on Nvidia hardware. The use of Ocelot or other translation libraries will be required to run the resulting programs on ATi hardware. This additional layer of work needed to attain complete portability my put off some programmers. On the other hand, Nvidia is the hardware of choice for many companies and there won't be any need for translation in that case.Despite the schism between OpenCL and Nvidia hardware approaches to GPGPU computing that limits the hardware tested on any book to one manufacturer only, the material in this book helps the reader become more efficient in applying programming knowledge than the OpenCL books that I have read. I found not only a deeper discussion of the hardware for both manufacturers here, but also more attention paid to becoming adept at programming the GPU hardware properly for high throughput. Admittedly, any current form of GPGPU program training is going to be a bit erratic and confusing because the training materials are written mostly by PHd candidates. This book was written by an expert business consultant( educator ) who apparently has more experience in teaching people to think in terms of parallel programming than other authors.I work primarily in Windows and I have both personal and professional interests in picking the most effective and highest performing approach to GPU programming. My research indicates that both OpenCL and CUDA are within 10% of each others top performance. So, I'm going to pick a 'language' which gives me the fastest path toward understanding and using one of these new 'languages' quickly. I'm going to give the edge to CUDA for three reasons. This book shows me that CUDA has debugging tools that far exceed OpenCL's toolset, CUDA is designed by the same people that produce hardware that I prefer( this book gave me a close comparison of ATi and Nvidia designs ), and this book is much better at teaching me how to accomplish parallel programming than any of my three OpenCL books.So, although not entirely compelling, I'm going to land on the side of "CUDA Programming" as my book of choice for GPGPU programming in 2012. I recommend this book highly as it has thoroughly opened my eyes to the possibilities of parallel programming and has given me the most comprehensive training available. Now, I'm going to apply that knowledge to accomplish goals that would have required me to buy several hundred computers previously. Happy computing.
A**R
A mediocre introduction to CUDA for beginners
To put this review into context, I come from a background of formal training in computer science, and my day-to-day job is systems engineering. With that said, I'm very comfortable with both systems architecture and the C programming language. It seemed that this book was perfectly targeted for somebody like me, as it assumes an substantial existing knowledge base and doesn't slow down to cover much of the basics.However, I do find that the manner in which the author covers things to be rather tedious. The writing style itself could use some work, and it frequently makes use of analogies that confuse rather than illuminate. The author will continuously repeat himself on several concepts, and although I agree repetition is critical to learning, it can be done so much at times that it is a hindrance. The book also doesn't necessarily follow a progression of increasing "detail". So while introducing a new concept, the author often goes down the rabbit hole of unnecessary detail and device specific optimizations, and other tangents that are not strictly critical at that time. Another slight complaint is that the CUDA spec has changed dramatically, and thus there are significant changes between CUDA 1/2/3. As a beginner, the complexity of learning something across multiple versions is also frustrating at times. I would've greatly preferred a focus on CUDA 3, and then added notes about backward compatibility in a later chapter, as opposed to covering all three simultaneously.On the plus side, I do like that the book doesn't spend much time teaching C or basic systems architecture. There is not a lot of introductory material to get through before you get to the meat of CUDA. The author does clearly convey the important concepts with CUDA / GPU programming and you do end up with a solid mental model of what is happening. I haven't finished the book yet, so I can't talk about the later half, but has been invaluable to learning the basics.In conclusion, I don't believe that any of my issues with the book are serious enough that they seriously affect the ability to learn CUDA. Thus, if you are new to CUDA or GPU programming in general, and want to get up to speed quickly and are confident in your knowledge of C, then this book may be just for you.
M**I
Unprofessional editorial preparation
Some fonts are missing. The reader has to guess what was meant by the author. This usually does not happen in printed books.In fact this situation makes the use of kindle version questionable. Once you get used to the editorial imperfections the book looks better. However, the author should have checked if the described pieces of code will by executable under user's conditions. The whole text in chapter 4 about error handling is useless. Probably you have to have some libraries to get the error handling working. In my installation it simply does not work. I have to look for the same subject in other books.
P**R
Good exposure to CUDA
Simple and clear explanation
L**I
Ottimo volume!
Ho avuto modo di discutere con Shane Cook su Linkedin per valutare le sezioni che avrebbero meritato una modifica o un ampliamento subito prima della pubblicazione. Sono pertanto rimasto piacevolmente colpito dalla cura con cui ciascun suggerimento sia stato correttamente sviluppato nella versione finale!Al contrario di altri libri sull'argomento, che presentano un piccolo gruppo di programmi d'esempio e si limitano a discuterne l'implementazione, quest'opera parte dalle fondamenta del calcolo parallelo, esegue una costante mappatura tra le caratteristiche intrinseche del parallelismo massiccio e gli elementi dell'hardware utilizzato per CUDA, spiega nel dettaglio le ragoni di ciascuna scelta nella ricerca di efficienza ed ottimizzazione, presenta brevi sezioni di codice d'esempio, e solo alla fine di ciascun capitolo mostra in che maniera i tasselli possono venir uniti a creare un programma funzionante, fornendo oltre al codice anche le funzioni di variazione al variare di input ed output.A mio avviso uno deei miglioi manuali sulla programmazione CUDA, anche se, purtroppo, al momento non sono comprese le nuove architetture Pascal.
M**O
In depth programming skills
For an in-depth learning of programming techniques, tricks, and shortcuts to CUDA. For learning the hardware details I might refer to other books though.
M**R
Nice CUDA intro
Currently I am in section 6 in the book.Very well written and very up to date, aspects of Kepler architecture also covered.The writer's background in hardware-close programming is incorporated into the book.Good to read if the reader has good knowlege in C/C++ and some experience in OpenMP.He captures the pro/cons of CPU vs. GPU with many examples.
R**T
Il più completo su CUDA
Sicuramente è il libro più completo su CUDA che abbia acquistato. E' utile per studiare in maniera approfondita la programmazione parallela. Dopo questo libro suggerisco l'acquisto di CUDA by Examples
Trustpilot
2 weeks ago
2 months ago