By the same authors

Implicit mapping of pointers inside C++ Lambda closure objects in OpenMP target offload regions

Research output: Contribution to conferencePaperpeer-review

Standard

Implicit mapping of pointers inside C++ Lambda closure objects in OpenMP target offload regions. / Truby, David R.; Bertolli, Carlo; Wright, Steven A.; Bercea, Gheorghe-Teodor; O'Brien, Kevin; Jarvis, Stephen A.

2018. Paper presented at UK OpenMP Users' Conference 2018, Oxford, United Kingdom.

Research output: Contribution to conferencePaperpeer-review

Harvard

Truby, DR, Bertolli, C, Wright, SA, Bercea, G-T, O'Brien, K & Jarvis, SA 2018, 'Implicit mapping of pointers inside C++ Lambda closure objects in OpenMP target offload regions', Paper presented at UK OpenMP Users' Conference 2018, Oxford, United Kingdom, 21/05/18 - 22/05/18.

APA

Truby, D. R., Bertolli, C., Wright, S. A., Bercea, G-T., O'Brien, K., & Jarvis, S. A. (Accepted/In press). Implicit mapping of pointers inside C++ Lambda closure objects in OpenMP target offload regions. Paper presented at UK OpenMP Users' Conference 2018, Oxford, United Kingdom.

Vancouver

Truby DR, Bertolli C, Wright SA, Bercea G-T, O'Brien K, Jarvis SA. Implicit mapping of pointers inside C++ Lambda closure objects in OpenMP target offload regions. 2018. Paper presented at UK OpenMP Users' Conference 2018, Oxford, United Kingdom.

Author

Truby, David R. ; Bertolli, Carlo ; Wright, Steven A. ; Bercea, Gheorghe-Teodor ; O'Brien, Kevin ; Jarvis, Stephen A. / Implicit mapping of pointers inside C++ Lambda closure objects in OpenMP target offload regions. Paper presented at UK OpenMP Users' Conference 2018, Oxford, United Kingdom.

Bibtex - Download

@conference{fa47bdda109e4b4b83b54f1bdc514b35,
title = "Implicit mapping of pointers inside C++ Lambda closure objects in OpenMP target offload regions",
abstract = "With the diversification of HPC architectures beyond traditional CPU-based clusters, a number of new frameworks for performance portability across architectures have arisen. One way of implementing such frameworks is to use C++ templates and lambda expressions to design loop-like functions. However, lower level programming APIs that these implementations must use are often designed with C in mind and do not specify how they interact with C++ features such as lambda expressions. This paper proposes a change to the behavior of the OpenMP specification with respect to lambda expressions such that when functions generated by lambda expressions are called inside GPU regions, any pointers used in the lambda expression correctly refer to device pointers. This change has been implemented in a branch of the Clang C++ compiler and demonstrated with two representative codes. Our results show that the implicit mapping of lambda expressions always exhibits identical performance to an explicit mapping but without breaking the abstraction provided by the high level frameworks, and therefore also reduces the burden on the application developer.",
keywords = "OpenMP, C++",
author = "Truby, {David R.} and Carlo Bertolli and Wright, {Steven A.} and Gheorghe-Teodor Bercea and Kevin O'Brien and Jarvis, {Stephen A.}",
year = "2018",
month = feb,
day = "1",
language = "English",
note = "UK OpenMP Users' Conference 2018 ; Conference date: 21-05-2018 Through 22-05-2018",
url = "https://www.eventbrite.co.uk/e/uk-openmp-users-conference-2018-tickets-37685633745#",

}

RIS (suitable for import to EndNote) - Download

TY - CONF

T1 - Implicit mapping of pointers inside C++ Lambda closure objects in OpenMP target offload regions

AU - Truby, David R.

AU - Bertolli, Carlo

AU - Wright, Steven A.

AU - Bercea, Gheorghe-Teodor

AU - O'Brien, Kevin

AU - Jarvis, Stephen A.

PY - 2018/2/1

Y1 - 2018/2/1

N2 - With the diversification of HPC architectures beyond traditional CPU-based clusters, a number of new frameworks for performance portability across architectures have arisen. One way of implementing such frameworks is to use C++ templates and lambda expressions to design loop-like functions. However, lower level programming APIs that these implementations must use are often designed with C in mind and do not specify how they interact with C++ features such as lambda expressions. This paper proposes a change to the behavior of the OpenMP specification with respect to lambda expressions such that when functions generated by lambda expressions are called inside GPU regions, any pointers used in the lambda expression correctly refer to device pointers. This change has been implemented in a branch of the Clang C++ compiler and demonstrated with two representative codes. Our results show that the implicit mapping of lambda expressions always exhibits identical performance to an explicit mapping but without breaking the abstraction provided by the high level frameworks, and therefore also reduces the burden on the application developer.

AB - With the diversification of HPC architectures beyond traditional CPU-based clusters, a number of new frameworks for performance portability across architectures have arisen. One way of implementing such frameworks is to use C++ templates and lambda expressions to design loop-like functions. However, lower level programming APIs that these implementations must use are often designed with C in mind and do not specify how they interact with C++ features such as lambda expressions. This paper proposes a change to the behavior of the OpenMP specification with respect to lambda expressions such that when functions generated by lambda expressions are called inside GPU regions, any pointers used in the lambda expression correctly refer to device pointers. This change has been implemented in a branch of the Clang C++ compiler and demonstrated with two representative codes. Our results show that the implicit mapping of lambda expressions always exhibits identical performance to an explicit mapping but without breaking the abstraction provided by the high level frameworks, and therefore also reduces the burden on the application developer.

KW - OpenMP, C++

M3 - Paper

T2 - UK OpenMP Users' Conference 2018

Y2 - 21 May 2018 through 22 May 2018

ER -