A C++ Programming Model for Heterogeneous System Architecture

Ralph Potter, Russell Bradford, Alastair Murray, Uwe Dolinsky

Research output: Chapter in Book/Report/Conference proceedingConference contribution

Abstract

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
Pages433-450
Number of pages17
ISBN (Print)9783319460789
DOIs
Publication statusPublished - 6 Oct 2016

Publication series

NameLecture Notes in Computer Science
Volume9945

Fingerprint

Virtual addresses
High level languages
Particle accelerators
Codes (standards)
Application programming interfaces (API)
Data structures
Specifications
Hardware

Cite this

Potter, R., Bradford, R., Murray, A., & Dolinsky, U. (2016). A C++ Programming Model for Heterogeneous System Architecture. In M. Taufer, B. Mohr, & J. M. Kunkel (Eds.), High Performance Computing: ISC 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 (pp. 433-450). (Lecture Notes in Computer Science; Vol. 9945). Springer International Publishing. https://doi.org/10.1007/978-3-319-46079-6_31

A C++ Programming Model for Heterogeneous System Architecture. / Potter, Ralph; Bradford, Russell; Murray, Alastair; Dolinsky, Uwe.

High Performance Computing: ISC 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. ed. / M. Taufer; B. Mohr; J. M. Kunkel. Springer International Publishing, 2016. p. 433-450 (Lecture Notes in Computer Science; Vol. 9945).

Research output: Chapter in Book/Report/Conference proceedingConference contribution

Potter, R, Bradford, R, Murray, A & Dolinsky, U 2016, A C++ Programming Model for Heterogeneous System Architecture. in M Taufer, B Mohr & JM Kunkel (eds), High Performance Computing: ISC 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. Lecture Notes in Computer Science, vol. 9945, Springer International Publishing, pp. 433-450. https://doi.org/10.1007/978-3-319-46079-6_31
Potter R, Bradford R, Murray A, Dolinsky U. A C++ Programming Model for Heterogeneous System Architecture. In Taufer M, Mohr B, Kunkel JM, editors, High Performance Computing: ISC 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. Springer International Publishing. 2016. p. 433-450. (Lecture Notes in Computer Science). https://doi.org/10.1007/978-3-319-46079-6_31
Potter, Ralph ; Bradford, Russell ; Murray, Alastair ; Dolinsky, Uwe. / A C++ Programming Model for Heterogeneous System Architecture. High Performance Computing: ISC 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. editor / M. Taufer ; B. Mohr ; J. M. Kunkel. Springer International Publishing, 2016. pp. 433-450 (Lecture Notes in Computer Science).
@inproceedings{9896d47d43a54d059944aac46cd3a02d,
title = "A C++ Programming Model for Heterogeneous System Architecture",
abstract = "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.",
author = "Ralph Potter and Russell Bradford and Alastair Murray and Uwe Dolinsky",
year = "2016",
month = "10",
day = "6",
doi = "10.1007/978-3-319-46079-6_31",
language = "English",
isbn = "9783319460789",
series = "Lecture Notes in Computer Science",
publisher = "Springer International Publishing",
pages = "433--450",
editor = "M. Taufer and B. Mohr and Kunkel, {J. M.}",
booktitle = "High Performance Computing",
address = "Switzerland",

}

TY - GEN

T1 - A C++ Programming Model for Heterogeneous System Architecture

AU - Potter, Ralph

AU - Bradford, Russell

AU - Murray, Alastair

AU - Dolinsky, Uwe

PY - 2016/10/6

Y1 - 2016/10/6

N2 - 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.

AB - 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.

UR - http://dx.doi.org/10.1007/978-3-319-46079-6_31

U2 - 10.1007/978-3-319-46079-6_31

DO - 10.1007/978-3-319-46079-6_31

M3 - Conference contribution

SN - 9783319460789

T3 - Lecture Notes in Computer Science

SP - 433

EP - 450

BT - High Performance Computing

A2 - Taufer, M.

A2 - Mohr, B.

A2 - Kunkel, J. M.

PB - Springer International Publishing

ER -