Paperback: 648 pages
Publisher: Addison-Wesley Professional; 1 edition (July 23, 2011)
Product Dimensions: 6.7 x 1.4 x 9 inches
Shipping Weight: 2.1 pounds (View shipping rates and policies)
Average Customer Review: 4.1 out of 5 stars See all reviews (15 customer reviews)
Best Sellers Rank: #313,098 in Books (See Top 100 in Books) #27 in Books > Computers & Technology > Programming > Parallel Programming #121 in Books > Computers & Technology > Digital Audio, Video & Photography > Video Production #1183 in Books > Textbooks > Computer Science > Programming Languages
OpenCL Programming Guide is the 2nd book (to my awareness) being published, which deals with the new and exciting standard by the KHRONOS Group: OpenCL. The goal of this book is to provide the reader with an extensive walkthrough of the standard, providing explanations to complement the standard's specs. The authors of the book dim it "a pragmatic guide for people interested in writing code", and that it is.The book is at its first edition, and it shows. Throughout the book there are typos, and what can only be explained as 'copy & paste' originated mistakes. Some of the code samples contain generic errors such as memory leaks or incorrect remarks, and some of the figures simply do not convey the intended concept, or are erroneous. The majority of errata I personally reported dealt with these types of errors, which are arguably acceptable (for a first edition) as they are not regarding the focus of the book, however, the book also contains some errata that does touch the actual focus, like an incorrect explanation (e.g. reported issue #14 on pg.132, and reported issue #4 on pg.65), or incorrect usage of returned information (e.g. reported issue #8 on page 88).On the other hand, the book does provide good insight on a vast portion of the standard. Although it claims to cover the entire spec, the level of this coverage is inconsistent and in some aspects completely lacking (e.g. the explanation of clEnqueueTask() could have been accompanied with a concise example, but in turn ended up as a short sub-section). On the portions with most interest, i.e., OpenCL's support for data-parallel algorithms, the book does provide extended information, and adds to the OpenCL specs, by clarifying the concepts.
The heavy book with the thin green cover is a "must read" book for beginning OpenCL developers. Experienced OpenCL developers could find some chapters interesting too. The book can be used both as day to day reference book and as a manual.The detailed introduction (chapter 1) enables the reader to understand the essentially important thing - the design of the technology (OpenCL standard v.1.1). It is considered in the book from 4 sides which are reviewed in the connection with each other: platform, execution, memory and programming models. If you are the novice in OpenCL, I urgently recommend you to read introduction firstly.The narration continues with the "Hello World" example (chapter 2). It is big enough and divided into several subsections. Each of them we can consider as simple steps to create a real OpenCL application. I like it. After 1st an 2nd chapters, I guess, it is hard enough to NOT understand how to write your own OpenCL software. Sure, in this case you need to use some reference book (or the text of OpenCL standard), but from this point you are able to do it without a special assistance.The next several chapters represent the mentioned by me so called "reference book". In particular, chapter 3 gives a detailed account of OpenCL platform, devices and context; chapters 4 ad 5 represent in detail OpenCL C programming language (operators, types, keywords and other things which you could find in any other programming language); chapters 6, 7, 8 and 9 describe in detail remained components of the technology: kernels, memory objects, images, events and so on. Well, I've concluded that chapters from 3 to 9 could be use as a real day to day reference book. For me it is quite useful.