Skip to main content
  • Book
  • Open Access
  • © 2021

Data Parallel C++

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

Apress
  • Learn heterogenous programming for CPU, GPU, FPGA, ASIC, etc.
  • Gain a vision for the future of parallel programming support in C++
  • Program with industrial strength implementations of SYCL, with extensions

Table of contents (19 chapters)

  1. Front Matter

    Pages i-xxvi
  2. Introduction

    • James Reinders, Ben Ashbaugh, James Brodman, Michael Kinsner, John Pennycook, Xinmin Tian
    Pages 1-24Open Access
  3. Where Code Executes

    • James Reinders, Ben Ashbaugh, James Brodman, Michael Kinsner, John Pennycook, Xinmin Tian
    Pages 25-59Open Access
  4. Data Management

    • James Reinders, Ben Ashbaugh, James Brodman, Michael Kinsner, John Pennycook, Xinmin Tian
    Pages 61-90Open Access
  5. Expressing Parallelism

    • James Reinders, Ben Ashbaugh, James Brodman, Michael Kinsner, John Pennycook, Xinmin Tian
    Pages 91-130Open Access
  6. Error Handling

    • James Reinders, Ben Ashbaugh, James Brodman, Michael Kinsner, John Pennycook, Xinmin Tian
    Pages 131-147Open Access
  7. Unified Shared Memory

    • James Reinders, Ben Ashbaugh, James Brodman, Michael Kinsner, John Pennycook, Xinmin Tian
    Pages 149-171Open Access
  8. Buffers

    • James Reinders, Ben Ashbaugh, James Brodman, Michael Kinsner, John Pennycook, Xinmin Tian
    Pages 173-193Open Access
  9. Scheduling Kernels and Data Movement

    • James Reinders, Ben Ashbaugh, James Brodman, Michael Kinsner, John Pennycook, Xinmin Tian
    Pages 195-212Open Access
  10. Communication and Synchronization

    • James Reinders, Ben Ashbaugh, James Brodman, Michael Kinsner, John Pennycook, Xinmin Tian
    Pages 213-240Open Access
  11. Defining Kernels

    • James Reinders, Ben Ashbaugh, James Brodman, Michael Kinsner, John Pennycook, Xinmin Tian
    Pages 241-258Open Access
  12. Vectors

    • James Reinders, Ben Ashbaugh, James Brodman, Michael Kinsner, John Pennycook, Xinmin Tian
    Pages 259-276Open Access
  13. Device Information

    • James Reinders, Ben Ashbaugh, James Brodman, Michael Kinsner, John Pennycook, Xinmin Tian
    Pages 277-295Open Access
  14. Practical Tips

    • James Reinders, Ben Ashbaugh, James Brodman, Michael Kinsner, John Pennycook, Xinmin Tian
    Pages 297-322Open Access
  15. Common Parallel Patterns

    • James Reinders, Ben Ashbaugh, James Brodman, Michael Kinsner, John Pennycook, Xinmin Tian
    Pages 323-352Open Access
  16. Programming for GPUs

    • James Reinders, Ben Ashbaugh, James Brodman, Michael Kinsner, John Pennycook, Xinmin Tian
    Pages 353-385Open Access
  17. Programming for CPUs

    • James Reinders, Ben Ashbaugh, James Brodman, Michael Kinsner, John Pennycook, Xinmin Tian
    Pages 387-418Open Access
  18. Programming for FPGAs

    • James Reinders, Ben Ashbaugh, James Brodman, Michael Kinsner, John Pennycook, Xinmin Tian
    Pages 419-469Open Access
  19. Libraries

    • James Reinders, Ben Ashbaugh, James Brodman, Michael Kinsner, John Pennycook, Xinmin Tian
    Pages 471-493Open Access
  20. Memory Model and Atomics

    • James Reinders, Ben Ashbaugh, James Brodman, Michael Kinsner, John Pennycook, Xinmin Tian
    Pages 495-530Open Access

About this book

Learn how to accelerate C++ programs using data parallelism. This open access 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 begins by introducing data parallelism and foundational topics for effective use of the SYCL standard from the Khronos Group 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.

Data Parallel C++ provides you with everything needed to use SYCL for programming heterogeneous systems.

What You'll Learn

  • Accelerate C++ programs using data-parallel programming
  • Target multiple device types (e.g. CPU, GPU, FPGA)
  • Use SYCL and SYCL compilers 
  • Connect with computing’s heterogeneous future via Intel’s oneAPI initiative

Who This Book Is For

Those new data-parallel programming and computer programmers interested in data-parallel programming using C++.




Authors and Affiliations

  • Beaverton, USA

    James Reinders

  • Folsom, USA

    Ben Ashbaugh

  • Marlborough, USA

    James Brodman

  • Halifax, Canada

    Michael Kinsner

  • San Jose, USA

    John Pennycook

  • Fremont, USA

    Xinmin Tian

About the authors

James Reinders is a consultant with more than three decades experience in Parallel Computing, and is an author/co-author/editor of nine technical books related to parallel programming.  He has had the great fortune to help make key contributions to two of the world's fastest computers (#1 on Top500 list) as well as many other supercomputers, and software developer tools. James finished 10,001 days (over 27 years) at Intel in mid-2016, and now continues to write, teach, program, and do consulting in areas related to parallel computing (HPC and AI).  


     

Bibliographic Information