A decade after the beginning of the many-core era, multi-core CPU and GPU architectures are everywhere, from mobile devices up to high-performance workstations and servers. To this day, programmers willing to harness their power need to express their code via languages and frameworks that often lack of expressivity and high-level abstractions. These solutions, despite allowing users to reach unprecedented performance, can still be a hampering factor for productivity and portability. In this paper we propose PHAST, a modern C++, STL-like, single-source programming library and approach based on multi-dimensional dynamic containers and multilayered functors that can be targeted on NVIDIA GPUs and multi-core CPUs. Its main purpose is to let programmers write code once for different architectures at a high level of abstraction, to reach high-performance while allowing fine parameter tuning and not shielding code from low-level target-specific optimizations. To assess the value of our proposal, we consider benchmarks from different application domains, and we evaluate their PHAST implementations against CUDA, OpenCL, Kokkos, and SYCL ones from both performance and productivity points of view. We show that PHASTcan significantly reduce code complexity metrics while reaching very good performance.

Peccerillo, B., Bartolini, S. (2019). PHAST - A portable high-level modern C++ programming library for GPUs and multi-cores. IEEE TRANSACTIONS ON PARALLEL AND DISTRIBUTED SYSTEMS, 30(1), 174-189 [10.1109/TPDS.2018.2855182].

PHAST - A portable high-level modern C++ programming library for GPUs and multi-cores

Peccerillo, Biagio;Bartolini, Sandro
2019-01-01

Abstract

A decade after the beginning of the many-core era, multi-core CPU and GPU architectures are everywhere, from mobile devices up to high-performance workstations and servers. To this day, programmers willing to harness their power need to express their code via languages and frameworks that often lack of expressivity and high-level abstractions. These solutions, despite allowing users to reach unprecedented performance, can still be a hampering factor for productivity and portability. In this paper we propose PHAST, a modern C++, STL-like, single-source programming library and approach based on multi-dimensional dynamic containers and multilayered functors that can be targeted on NVIDIA GPUs and multi-core CPUs. Its main purpose is to let programmers write code once for different architectures at a high level of abstraction, to reach high-performance while allowing fine parameter tuning and not shielding code from low-level target-specific optimizations. To assess the value of our proposal, we consider benchmarks from different application domains, and we evaluate their PHAST implementations against CUDA, OpenCL, Kokkos, and SYCL ones from both performance and productivity points of view. We show that PHASTcan significantly reduce code complexity metrics while reaching very good performance.
2019
Peccerillo, B., Bartolini, S. (2019). PHAST - A portable high-level modern C++ programming library for GPUs and multi-cores. IEEE TRANSACTIONS ON PARALLEL AND DISTRIBUTED SYSTEMS, 30(1), 174-189 [10.1109/TPDS.2018.2855182].
File in questo prodotto:
File Dimensione Formato  
DownloadedFromIEEE-08410014.pdf

non disponibili

Descrizione: Articolo principale
Tipologia: PDF editoriale
Licenza: NON PUBBLICO - Accesso privato/ristretto
Dimensione 708.14 kB
Formato Adobe PDF
708.14 kB Adobe PDF   Visualizza/Apri   Richiedi una copia

I documenti in IRIS sono protetti da copyright e tutti i diritti sono riservati, salvo diversa indicazione.

Utilizza questo identificativo per citare o creare un link a questo documento: https://hdl.handle.net/11365/1064529