A C++ Programming Model for Heterogeneous System Architecture

Ralph Potter, Russell Bradford, Alastair Murray, Uwe Dolinsky

Research output: Chapter or section in a book/report/conference proceedingChapter in a published conference proceeding


This paper describes a shared-source programming model and compiler for Heterogeneous System Architecture, based on C++14.

Heterogeneous System Architecture provides hardware specifications, a runtime API and a virtual instruction set to enable heterogeneous processors to interoperate through a unified virtual address space. However, it does not define a high-level kernel language such as OpenCL C or CUDA. This lack of a high-level kernel language presents a barrier to the exploitation of the capabilities of these heterogeneous systems.

Through the use of automatic call-graph duplication in the compiler, we enable code reuse and sharing of data structures between host processor and accelerator devices with fewer annotations than CUDA or C++AMP. We utilize the unified virtual address space to enable sharing data between devices via pointers, rather than requiring copies. We show that through the use of address space inference, existing standard C++ code such as the standard template library can be utilized with minimal modifications on accelerators.
Original languageEnglish
Title of host publicationHigh Performance Computing
Subtitle of host publicationISC High Performance 2016 International Workshops, ExaComm, E-MuCoCoS, HPC-IODC, IXPUG, IWOPH, P^3MA, VHPC, WOPSSS, Frankfurt, Germany, June 19–23, 2016, Revised Selected Papers
EditorsM. Taufer, B. Mohr, J. M. Kunkel
PublisherSpringer International Publishing
Number of pages17
ISBN (Print)9783319460789
Publication statusPublished - 6 Oct 2016

Publication series

NameLecture Notes in Computer Science


Dive into the research topics of 'A C++ Programming Model for Heterogeneous System Architecture'. Together they form a unique fingerprint.

Cite this