If this is what AMD has to provide developers no wonder OpenCL hasn't caught on yet.
First thing that caught my attention were the blatant spelling and grammatical errors. As though the book wasn't even proofread?
The first chapter starts off easy enough but the book warns that concurrent programming is hard and if you thought serial programming was hard you ain't seen nothing yet. They weren't kidding! The amount of code and steps just to write a basic hello program in OpenCL is ridiculous. Granted a lot of it is boilerplate code that only has to be written once and reused but the book doesn't even do a great job of making it any easier. The code samples also look like they were each written by a different person using C sometimes and C++ at other times.
Other than the nice illustrations and diagrams probably the best thing about this book is that is was so bad that it made me learn more about OpenCL than I ever cared to know by forcing me to Google for information missing from it and referring to other better resources. So that's why I'm even giving it 3 stars.
Like the OpenCL Programming Guide for Mac OS X. Apple's developer documentation which is from 2009 is seems to exactly the same thing as the first chapter in this book but Apple's is way better since they actually have code comments on just about every line walking you step-by-step through the code. So in the end this book showed me how good Apple's documentation really is. I always heard it was pretty good but didn't have an idea until now.
Later chapters seem to be a bunch of random case studies on what OpenCL is good at and some advanced ways to use it. The typical matrix, histogram and image processing examples you normally see in any parallel programming book, nothing that really stands out. Later chapters provide only minimal explanation of the code and that probably explains why the book is so short. Many of the details like OpenCL types, etc. are left for the reader to look up in some other book. If you are thinking of using this book as an introductory textbook they also leave the reader to come up with exercises/problems since there are absolutely no exercises included. The book also spends some time talking about various obscure loop unrolling methods which I'm not sure how relevant they are since this is now built into IDE's like XCode via auto-vectorization option.
As everyone has already stated the book is pretty AMD and Windows centric so none of the code worked on my Apple with MacOSX. Granted the book never said anything about Macs but isn't the whole point of OpenCL to be able to run on any hardware and OS? Also, the last several chapters deal exclusively with tools only available on Windows so not so useful on other operating systems.
I eventually did get the code examples to work on my Mac after some hard reworking of the code in the book. This was not as easy task, since depending on who you ask and where you look Macs either support or don't support OpenCL. Mac OS X, Mountain Lion, just released supports the latest version OpenCL 1.2 according to their documentation. Seems to me they should've worked closer with Apple since it seems that they are making more use of OpenCL than Windows which is introducing C++ AMP to compete with it.
I don't see OpenCL gaining much momentum as suggested in this book in the future until they make it easier to program than mpi,pthreads,not harder than competing alternatives and improve support across all platforms.
As the book states there are some embarrassingly parallel problems that OpenCL is very good at. Unfortunately, it is also embarrassingly hard to program and this book doesn't help much. Don't take my word for it as the majority of the OpenCL information in the book and better examples, video's, etc... can easily be found on AMD's developer website or any other number of places on the web.