Kokkos GPU Compiler

RESOURCE

Abstract

The Kokkos Clang compiler is a version of the Clang C++ compiler that has been modified to perform targeted code generation for Kokkos constructs in the goal of generating highly optimized code and to provide semantic (domain) awareness throughout the compilation toolchain of these constructs such as parallel for and parallel reduce. This approach is taken to explore the possibilities of exposing the developer’s intentions to the underlying compiler infrastructure (e.g. optimization and analysis passes within the middle stages of the compiler) instead of relying solely on the restricted capabilities of C++ template metaprogramming. To date our current activities have focused on correct GPU code generation and thus we have not yet focused on improving overall performance. The compiler is implemented by recognizing specific (syntactic) Kokkos constructs in order to bypass normal template expansion mechanisms and instead use the semantic knowledge of Kokkos to directly generate code in the compiler’s intermediate representation (IR); which is then translated into an NVIDIA-centric GPU program and supporting runtime calls. In addition, by capturing and maintaining the higher-level semantics of Kokkos directly within the lower levels of the compiler has the potential for significantly improving the ability of the compiler to communicate with the  More>>
Developers:
Release Date:
2016-07-18
Project Type:
Open Source, Publicly Available Repository
Software Type:
Scientific
Licenses:
Other (Commercial or Open-Source): https://github.com/lanl/kokkos-clang/blob/master/LICENSE
Sponsoring Org.:
Code ID:
4432
Site Accession Number:
7076
Research Org.:
Los Alamos National Laboratory (LANL), Los Alamos, NM (United States)
Country of Origin:
United States

RESOURCE

Citation Formats

Moss, Nicholas. Kokkos GPU Compiler. Computer Software. https://github.com/losalamos/kokkos-clang. USDOE. 18 Jul. 2016. Web. doi:10.11578/dc.20171025.1800.
Moss, Nicholas. (2016, July 18). Kokkos GPU Compiler. [Computer software]. https://github.com/losalamos/kokkos-clang. https://doi.org/10.11578/dc.20171025.1800.
Moss, Nicholas. "Kokkos GPU Compiler." Computer software. July 18, 2016. https://github.com/losalamos/kokkos-clang. https://doi.org/10.11578/dc.20171025.1800.
@misc{ doecode_4432,
title = {Kokkos GPU Compiler},
author = {Moss, Nicholas},
abstractNote = {The Kokkos Clang compiler is a version of the Clang C++ compiler that has been modified to perform targeted code generation for Kokkos constructs in the goal of generating highly optimized code and to provide semantic (domain) awareness throughout the compilation toolchain of these constructs such as parallel for and parallel reduce. This approach is taken to explore the possibilities of exposing the developer’s intentions to the underlying compiler infrastructure (e.g. optimization and analysis passes within the middle stages of the compiler) instead of relying solely on the restricted capabilities of C++ template metaprogramming. To date our current activities have focused on correct GPU code generation and thus we have not yet focused on improving overall performance. The compiler is implemented by recognizing specific (syntactic) Kokkos constructs in order to bypass normal template expansion mechanisms and instead use the semantic knowledge of Kokkos to directly generate code in the compiler’s intermediate representation (IR); which is then translated into an NVIDIA-centric GPU program and supporting runtime calls. In addition, by capturing and maintaining the higher-level semantics of Kokkos directly within the lower levels of the compiler has the potential for significantly improving the ability of the compiler to communicate with the developer in the terms of their original programming model/semantics.},
doi = {10.11578/dc.20171025.1800},
url = {https://doi.org/10.11578/dc.20171025.1800},
howpublished = {[Computer Software] \url{https://doi.org/10.11578/dc.20171025.1800}},
year = {2016},
month = {jul}
}