Data Parallel C++

Mastering DPC++ for Programming of Heterogeneous Systems using C++ and SYCL

by James Reinders, Ben Ashbaugh, James Brodman, Michael Kinsner, John Pennycook, Xinmin Tian

DescriptionTable of ContentsDetailsHashtagsReport an issue

Book Description

Learn how to accelerate C++ programs using data parallelism. This open book enables C++ programmers to be at the forefront of this exciting and important new development that is helping to push computing to new levels. It is full of practical advice, detailed explanations, and code examples to illustrate key topics.

Data parallelism in C++ enables access to parallel resources in a modern heterogeneous system, freeing you from being locked into any particular computing device. Now a single C++ application can use any combination of devices - including GPUs, CPUs, FPGAs and AI ASICs - that are suitable to the problems at hand.

This book teaches data-parallel programming using C++ and the SYCL standard from the Khronos Group and walks through everything needed to use SYCL for programming heterogeneous systems. The book begins by introducing data parallelism and foundational topics for effective use of SYCL and Data Parallel C++ (DPC++), the open source compiler used in this book. Later chapters cover advanced topics including error handling, hardware-specific programming, communication and synchronization, and memory model considerations.

You will learn:
- How to accelerate C++ programs using data-parallel programming;
- How to target multiple device types (e.g. CPU, GPU, FPGA);
- How to use SYCL and SYCL compilers;
- How to connect with computing's heterogeneous future via Intel's oneAPI initiative.

This open book is licensed under a Creative Commons License (CC BY). You can download Data Parallel C++ ebook for free in PDF format (15.8 MB).

Table of Contents

Chapter 1
Introduction
Chapter 2
Where Code Executes
Chapter 3
Data Management
Chapter 4
Expressing Parallelism
Chapter 5
Error Handling
Chapter 6
Unified Shared Memory
Chapter 7
Buffers
Chapter 8
Scheduling Kernels and Data Movement
Chapter 9
Communication and Synchronization
Chapter 10
Defining Kernels
Chapter 11
Vectors
Chapter 12
Device Information
Chapter 13
Practical Tips
Chapter 14
Common Parallel Patterns
Chapter 15
Programming for GPUs
Chapter 16
Programming for CPUs
Chapter 17
Programming for FPGAs
Chapter 18
Libraries
Chapter 19
Memory Model and Atomics
Epilogue
Future Direction of DPC++

Book Details

Subject
Computer Science
Publisher
Apress
Published
2021
Pages
565
Edition
1
Language
English
ISBN13
9781484255735
ISBN10
1484255739
ISBN13 Digital
9781484255742
ISBN10 Digital
1484255747
PDF Size
15.8 MB
License
CC BY

Related Books

Pro TBB
This book is a modern guide for all C++ programmers to learn Threading Building Blocks (TBB). Written by TBB and parallel programming experts, this book reflects their collective decades of experience in developing and teaching parallel programming with TBB, offering their insights in an approachable manner. Throughout the book the authors present ...
XcalableMP PGAS Programming Language
XcalableMP is a directive-based parallel programming language based on Fortran and C, supporting a Partitioned Global Address Space (PGAS) model for distributed memory parallel systems. This open book presents XcalableMP language from its programming model and basic concept to the experience and performance of applications described in XcalableMP....
Data and Text Processing for Health and Life Sciences
This book is a step-by-step introduction on how shell scripting can help solve many of the data processing tasks that Health and Life specialists face everyday with minimal software dependencies. The examples presented in the book show how simple command line tools can be used and combined to retrieve data and text from web resources, to filter and...
Programming Persistent Memory
Beginning and experienced programmers will use this comprehensive guide to persistent memory programming. You will understand how persistent memory brings together several new software/hardware requirements, and offers great promise for better performance and faster application startup times - a huge leap forward in byte-addressable capacity compar...
Real-time Linked Dataspaces
This book explores the dataspace paradigm as a best-effort approach to data management within data ecosystems. It establishes the theoretical foundations and principles of real-time linked dataspaces as a data platform for intelligent systems. The book introduces a set of specialized best-effort techniques and models to enable loose administrative ...
Open Data Structures (in C++)
There are plenty of books that teach introductory data structures. Some of them are very good. Most of them cost money, and the vast majority of computer science undergraduate students will shell out at least some cash on a data structures book. Open Data Structures (in C++) - The goal of this project is to free undergraduate computer science stud...