HAPPY BOOKSGIVING
Use code BOOKSGIVING during checkout to save 40%-55% on books and eBooks. Shop now.
Register your product to gain access to bonus material or receive a coupon.
This eBook includes the following formats, accessible from your Account page after purchase:
EPUB The open industry format known for its reflowable content and usability on supported mobile devices.
PDF The popular standard, used most often with the free Acrobat® Reader® software.
This eBook requires no passwords or activation to read. We customize your eBook by discreetly watermarking it with your name, making it uniquely yours.
This eBook includes the following formats, accessible from your Account page after purchase:
EPUB The open industry format known for its reflowable content and usability on supported mobile devices.
PDF The popular standard, used most often with the free Acrobat® Reader® software.
This eBook requires no passwords or activation to read. We customize your eBook by discreetly watermarking it with your name, making it uniquely yours.
The Complete Guide to OpenACC for Massively Parallel Programming
Scientists and technical professionals can use OpenACC to leverage the immense power of modern GPUs without the complexity traditionally associated with programming them. OpenACCTM for Programmers is one of the first comprehensive and practical overviews of OpenACC for massively parallel programming.
This book integrates contributions from 19 leading parallel-programming experts from academia, public research organizations, and industry. The authors and editors explain each key concept behind OpenACC, demonstrate how to use essential OpenACC development tools, and thoroughly explore each OpenACC feature set.
Throughout, you’ll find realistic examples, hands-on exercises, and case studies showcasing the efficient use of OpenACC language constructs. You’ll discover how OpenACC’s language constructs can be translated to maximize application performance, and how its standard interface can target multiple platforms via widely used programming languages.
Each chapter builds on what you’ve already learned, helping you build practical mastery one step at a time, whether you’re a GPU programmer, scientist, engineer, or student. All example code and exercise solutions are available for download at GitHub.
Register your product at informit.com/register for convenient access to downloads, updates, and/or corrections as they become available.
For updated application codes from the authors, please visit their GitHub site.
Using OpenACC to Parallelize Real Code
Download the sample pages (includes Chapter 4 and the Index)
Foreword xv
Preface xxi
Acknowledgments xxiii
About the Contributors xxv
Chapter 1: OpenACC in a Nutshell 1
1.1 OpenACC Syntax 3
1.2 Compute Constructs 6
1.3 The Data Environment 11
1.4 Summary 15
1.5 Exercises 15
Chapter 2: Loop-Level Parallelism 17
2.1 Kernels Versus Parallel Loops 18
2.2 Three Levels of Parallelism 21
2.3 Other Loop Constructs 24
2.4 Summary 30
2.5 Exercises 31
Chapter 3: Programming Tools for OpenACC 33
3.1 Common Characteristics of Architectures 34
3.2 Compiling OpenACC Code 35
3.3 Performance Analysis of OpenACC Applications 36
3.4 Identifying Bugs in OpenACC Programs 51
3.5 Summary 53
3.6 Exercises 54
Chapter 4: Using OpenACC for Your First Program 59
4.1 Case Study 59
4.2 Creating a Naive Parallel Version 68
4.3 Performance of OpenACC Programs 71
4.4 An Optimized Parallel Version 73
4.5 Summary 78
4.6 Exercises 79
Chapter 5: Compiling OpenACC 81
5.1 The Challenges of Parallelism 82
5.2 Restructuring Compilers 88
5.3 Compiling OpenACC 92
5.4 Summary 97
5.5 Exercises 97
Chapter 6: Best Programming Practices 101
6.1 General Guidelines 102
6.2 Maximize On-Device Compute 105
6.3 Optimize Data Locality 108
6.4 A Representative Example 112
6.5 Summary 118
6.6 Exercises 119
Chapter 7: OpenACC and Performance Portability 121
7.1 Challenges 121
7.2 Target Architectures 123
7.3 OpenACC for Performance Portability 124
7.4 Code Refactoring for Performance Portability126
7.5 Summary 132
7.6 Exercises133
Chapter 8: Additional Approaches to Parallel Programming 135
8.1 Programming Models135
8.2 Programming Model Components142
8.3 A Case Study 155
8.4 Summary170
8.5 Exercises170
Chapter 9: OpenACC and Interoperability 173
9.1 Calling Native Device Code from OpenACC 174
9.2 Calling OpenACC from Native Device Code 181
9.3 Advanced Interoperability Topics 182
9.4 Summary185
9.5 Exercises185
Chapter 10: Advanced OpenACC 187
10.1 Asynchronous Operations 187
10.2 Multidevice Programming 204
10.3 Summary 213
10.4 Exercises 213
Chapter 11: Innovative Research Ideas Using OpenACC, Part I 215
11.1 Sunway OpenACC 215
11.2 Compiler Transformation of Nested Loops for Accelerators 224
Chapter 12: Innovative Research Ideas Using OpenACC, Part II 237
12.1 A Framework for Directive-Based High-Performance Reconfigurable Computing 237
12.2 Programming Accelerated Clusters Using XcalableACC 253
Index 269