文件名称:Heterogeneous Computing with OpenCL Revised OpenCL 1.2 Edition
文件大小:14.01MB
文件格式:PDF
更新时间:2017-06-13 00:44:45
opencl, gpu
"Heterogenous Computing with OpenCL" covers all the bases well in helping a programmer become comfortable with OpenCL programming. If I have any reservations, its that the book is a short 284 page read. I wanted to see a lot more code, but the writer gives a thorough introduction and steps the reader carefully into each step of the process. My other references are not as detailed or as complete. If you are entering this new world of parallel computing the list of new concepts and processes can be bewildering. Furthermore, the field is too new to have attracted the usual authors who know how to make the learning process seamless. The five authors of this book are PHd's in the field of parallel computing and bring their refined, and fairly narrow focus, to the text. That is why I skipped my usual breakdown of the text. This book covers too many subject areas for the in too few pages to deliver seamless development of the subject. There is a jumpy sense to the code sections perhaps because applied researchers are not the people who do the best teaching. My goal is to apply a practical bent to this largely theoretical viewpoint. I want to develop methodologies that will make it easy to divide up parallel programming seamlessly across the diverse range of GPU hardware and allow me to build a GPU library in C++ that I can apply conveniently to my parallel computing needs without having to concern myself greatly with the nature of the hardware. At this point in time that is not quite possible. All the current references divide evenly between using CUDA Thrush on NVidia products and OpenCL on AMD Ati products. Each reference takes a firm stand for one camp or the other and barely mentions the other hardware design issues. The cross platform winner is OpenCL. NVidia SDKs contain an OpenCL library for their products. Translaters such as Ocelot can convert CUDA output to OpenCL formats, but add several more computing steps. Both camps have C++ headers that allow their code to Compile through Visual Studio, however I haven't had the time to determine all the gotchas there. You will have to be your own pioneer in that area. Don't forget, Microsoft has weighed in here as well. I have sucessfully run a Microsoft AMP simulation off a trial Visual Studio 2012 IDE that produced a staggering increase of computing performance that amplified my CPU's abilities by 112 times on an MSI gaming portable with an NVidia Geforce 470M GPU. When your portable hits 355 GFlops it tends to make your hair stand on end. However, AMP and/or C++ C11 is only available on the very new and very expensive Visual Studio 2012. I'm saving my pennies up for a premium version and hitting on the tooth fairy for a very large gift. In the mean time and for work I need a much more portable solution. That drives me far into the OpenCL camp. I have work to be used on Linux and servers. That eliminates most of my attraction for AMP. My professional access to machines shows me that NVidia cards abound in my personal programming world. My internet research shows me that NVidia has more attractive qualities( more compute units and more streaming processers per unit ) with NVidia hardware than on Ati for the dollar. For the last two years new and better GPU hardware has been delivered about three or more times each year. Despite a small influence that shows that CUDA has a somewhat higher level of programming abstraction than OpenCL, it's not enough to be a decision point. All the current GPGPU references make it easier to learn to program in OpenCL and none of them are helpful in applying their code to C++ class design. So, the world around me indicates that I should optimize my parallel computing efforts on the use of OpenCL for the near future. There won't be a better CUDA reference produced until June. Thus this reference now delivers the best approach to GPGPU computing at this time. This is where I deliver my summary. GPGPU programming has become a computing performance solution that is driving both harware design and performance computing. There are two basic camps of thinking on this; NVidia is exclusively pushing CUDA, but doesn't travel well to other GPU cards, and OpenCL works on everything, but the references only give code and case studies that apply to Ati GPU cards. So, I'm going to remain an independent until one camp can give me a compelling reason to give up on the other. I'm going to keep on learning how to program code for both camps. But this book gives OpenCL the advantage in giving all of us the edge in learning how to benefit from this performance revolution. So, I am recommending that you either decide to start here or focus on OpenCL using this reference. If a better reference shows up, I'll review it for you.