High-Level Stream and Data Parallelism in C++ for GPUs

  • Dinei A. Rockenbach PUCRS
  • Júnior Löff PUCRS
  • Gabriell Araujo PUCRS
  • Dalvan Griebler PUCRS
  • Luiz Gustavo Fernandes PUCRS

Resumo


GPUs are massively parallel processors that allow solving problems that are not viable to traditional processors like CPUs. However, implementing applications for GPUs is challenging to programmers as it requires parallel programming to efficiently exploit the GPU resources. In this sense, parallel programming abstractions, notably domain-specific languages, are fundamental for improving programmability. SPar is a high-level Domain-Specific Language (DSL) that allows expressing stream and data parallelism in the serial code through annotations using C++ attributes. This work elaborates on a methodology and tool for GPU code generation by introducing new attributes to SPar language and transformation rules to SPar compiler. These new contributions, besides the gains in simplicity and code reduction compared to CUDA and OpenCL, enabled SPar achieve of higher throughput when exploring combined CPU and GPU parallelism, and when using batching.
Palavras-chave: source-to-source code generation, algorithmic skeletons, parallel patterns, Programming language, C annotations, parallelism
Publicado
03/10/2022
ROCKENBACH , Dinei A.; LÖFF, Júnior; ARAUJO, Gabriell; GRIEBLER, Dalvan; FERNANDES, Luiz Gustavo. High-Level Stream and Data Parallelism in C++ for GPUs. In: SIMPÓSIO BRASILEIRO DE LINGUAGENS DE PROGRAMAÇÃO (SBLP), 26. , 2022, Uberlândia. Anais [...]. Porto Alegre: Sociedade Brasileira de Computação, 2022 . p. 41–49.