Parallel Programming with OpenACC is a modern, practical guide to implementing dependable computing systems. The book explains how anyone can use OpenACC to quickly ramp-up application performance using high-level code directives called pragmas. The OpenACC directive-based programming model is designed to provide a simple, yet powerful, approach to accelerators without significant programming effort.
Author Rob Farber, working with a team of expert contributors, demonstrates how to turn existing applications into portable GPU accelerated programs that demonstrate immediate speedups. The book also helps users get the most from the latest NVIDIA and AMD GPU plus multicore CPU architectures (and soon for Intel (R) Xeon Phi (TM) as well). Downloadable example codes provide hands-on OpenACC experience for common problems in scientific, commercial, big-data, and real-time systems.
Topics include writing reusable code, asynchronous capabilities, using libraries, multicore clusters, and much more. Each chapter explains how a specific aspect of OpenACC technology fits, how it works, and the pitfalls to avoid. Throughout, the book demonstrates how the use of simple working examples that can be adapted to solve application needs.
Rob Farber has served as a scientist in Europe at the Irish Center for High-End Computing as well as U.S. national labs in Los Alamos, Berkeley, and the Pacific Northwest. He has also been on the external faculty at the Santa Fe Institute, consultant to fortune 100 companies, and co-founder of two computational startups that achieved liquidity events. He is the author of "CUDA Application Design and Development" as well as numerous articles and tutorials that have appeared in Dr. Dobb's Journal and Scientific Computing, The Code Project and others.
Foreword Michael Wolfe 1. From Serial to Parallel Programming using OpenACC Rob Farber 2. Profile-Guided Development with OpenACC Jeff Larkin 3. Profiling Performance of Hybrid Applications with Score-P and Vampir Guido Jukeland 4. Pipelining Data Transfers with OpenACC Jeff Larkin 5. Advanced Data Management Mat Colgrove 6. Tuning OpenACC loop execution Saber Feki 7. Multi Device Programming with OpenACC Jiri Kraus 8. Using OpenACC for Stencil and Feldkamp Algorithms Sunita Chandrasekaran 9. Accelerating 3D Wave Equations using OpenACC Ty McKercher 10. The Detailed Development of an OpenACC Application Andy Herdman 11. GPU-Accelerated Molecular Dynamics Clustering Analysis with OpenACC John Stone 12. Incrementally accelerating the RI-MP2 correlated method of electronic structure theory using OpenACC compiler directives Janus J. Eriksen 13. Using OpenACC to port large legacy climate and weather modelling code to GPUs Xavier Lapillonne