Book Image

OpenCL Parallel Programming Development Cookbook

By : Raymond Tay
Book Image

OpenCL Parallel Programming Development Cookbook

By: Raymond Tay

Overview of this book

<p>OpenCL (Open Computing Language) is the first royalty-free standard for cross platform, parallel programming of modern processors found in personal computers, servers, mobiles, and embedded devices. OpenCL greatly improves speed and responsiveness for a wide spectrum of applications in numerous market categories, from gaming and entertainment to scientific and medical software. OpenCL has proved itself to be versatile in that it now runs on not only operating systems like Windows and Linux powered by Intel and AMD processors, but also on low power chips like ARM, and it has also been adopted by processor manufacturers like ARM Corp, Vivante, and Altera, among others.</p> <p>OpenCL Parallel Programming Development Cookbook was designed to be practical so that we achieve a good balance between theory and application. Learning to program in a parallel way is relatively easy, but to be able to take advantage of all of the resources available to you efficiently is quite different. You need to be shown not only application, but also the theory behind it.</p> <p>This book is roughly in two parts, where the first part is the fundamentals of OpenCL parallel development and the second part is the various algorithms we will explore with you. Each part is packed with many code samples and illustrations to demonstrate various concepts. The first part is essential for a beginner to not only program in parallel, but also to think in parallel and become equipped with the mental model with which to tackle parallel programming. The second part consists of seven different algorithms that the author has identified; you will learn various parallel programming techniques that experts have used in the past 60 years that are applicable to OpenCL.</p> <p>This book will demonstrate how you think in parallel by illustrating and demonstrating programming techniques like data partitioning, thread coarsening, register tiling, data pre-fetching, and algorithm transformation. These techniques are demonstrated in the seven algorithms you’ll be shown, from image processing and solving sparse linear systems to in-memory sorting.<br />OpenCL Parallel Programming Development Cookbook combines recipes, illustrations, code, and explanations to allow you to learn the essentials of parallel programming in OpenCL, and the author has added in enough math so that the readers understand the motivation and can also lay the foundation upon which they will begin their own exploration.</p>
Table of Contents (17 chapters)
OpenCL Parallel Programming Development Cookbook
Credits
About the Author
About the Reviewers
www.PacktPub.com
Preface
Index

About the Reviewers

Nitesh Bhatia is a tech geek with a background in information and communication technology (ICT) with an emphasis on computing and design research. He worked with Infosys Design as a user experience designer, and is currently a doctoral scholar at the Indian Institute of Science, Bangalore. His research interests include visual computing, digital human modeling, and applied ergonomics. He delights in exploring different programming languages, computing platforms, embedded systems and so on. He is a founder of several social media startups. In his leisure time, he is an avid photographer and an art enthusiast, maintaining a compendium of his creative works through his blog Dangling-Thoughts (http://www.dangling-thoughts.com).

Darryl Gove is a senior principal software engineer in the Oracle Solaris Studio team, working on optimizing applications and benchmarks for current and future processors. He is also the author of the books, Multicore Application Programming, Solaris Application Programming, and The Developer's Edge. He writes his blog at http://www.darrylgove.com.

Seyed Hadi Hosseini is a software developer and network specialist, who started his career at the age of 16 by earning certifications such as MCSE, CCNA, and Security+. He decided to pursue his career in Open Source Technology, and for this Perl programming was the starting point. He concentrated on web technologies and software development for almost 10 years. He is also an instructor of open source courses. Currently, Hadi is certified by the Linux Professional Institute, Novell, and CompTIA as a Linux specialist (LPI, LINUX+, NCLA and DCTS). High Performance Computing is one of his main research areas. His first published scientific paper was awarded as the best article in the fourth Iranian Bioinformatics Conference held in 2012. In this article, he developed a super-fast processing algorithm for SSR in Genome and proteome datasets, by using OpenCL as the GPGPU programming framework in C language, and benefiting from the massive computing capability of GPUs.

Kyle Lutz is a software engineer and is a part of the Scientific Computing team at Kitware, Inc, New York. He holds a bachelor's degree in Biological Sciences from the University of California at Santa Barbara. He has several years of experience writing scientific simulation, analysis, and visualization software in C++ and OpenCL. He is also the lead developer of the Boost.Compute library – a C++ GPU/parallel-computing library based on OpenCL.

Viraj Paropkari has done his graduation in computer science from University of Pune, India, in 2004, and MS in computer science from Georgia Institute of Technology, USA, in 2008. He is currently a senior software engineer at Advanced Micro Devices (AMD), working on performance optimization of applications on CPUs, GPUs using OpenCL. He also works on exploring new challenges in big data and High Performance Computing (HPC) applications running on large scale distributed systems. Previously, he was systems engineer at National Energy Research Scientific Computing Center (NERSC) for two years, where he worked on one of the world's largest supercomputers running and optimizing scientific applications. Before that, he was a visiting scholar in Parallel Programming Lab (PPL) at Computer Science Department of University of Illinois, Urbana-Champaign, and also a visiting research scholar at Oak Ridge National Laboratory, one of the premier research labs in U.S.A. He also worked on developing software for mission critical flight simulators at Indian Institute of technology, Bombay, India, and Tata institute of Fundamental Research (TIFR), India. He was the main contributor of the team that was awarded the HPC Innovation Excellence Award to speed up the CFD code and achieve the first ever simulation of a realistic fuel-spray related application. The ability to simulate this problem helps reduce design cycles to at least 66 percent and provides new insights into the physics that can provide sprays with enhanced properties.