Javascript must be enabled to continue!
High-level Programming of Vulkan-based GPUs Through OpenMP
View through CrossRef
Abstract
Modern applications often involve complex, structured or data-parallel computations on large datasets. Traditionally, GPUs have served as the primary accelerators for such tasks, mostly through compute-focused models like CUDA and OpenCL. Vulkan is a more recent cross-platform API, widely adopted for both high-performance graphics and compute. These models require lower-level programming, as developers have to be aware of architectural details; this is not easily accomplished given the dramatic rise in hardware heterogeneity. It has thus become increasingly desirable to adopt higher-level models that abstract away the low-level hardware and API details, and simplify GPU programming. In this paper we present a full-fledged OpenMP translator and runtime offloading infrastructure that targets the Vulkan Compute pipeline. While previous works usually focus on OpenCL or CUDA, this is the first time an OpenMP compiler targets Vulkan shaders. As such, apart from the support for off-the-shelf NVIDIA and AMD GPUs, we are the first to provide OpenMP support for mobile and embedded GPUs, such as VideoCore GPUs. The proposed translator, which is based on an open-source compilation framework, receives standard OpenMP code and converts it to tunable Vulkan shaders. Our approach preserves the simplicity of higher-level programming, while still achieving high performance, as demonstrated by our experimental results.
Springer Science and Business Media LLC
Title: High-level Programming of Vulkan-based GPUs Through OpenMP
Description:
Abstract
Modern applications often involve complex, structured or data-parallel computations on large datasets.
Traditionally, GPUs have served as the primary accelerators for such tasks, mostly through compute-focused models like CUDA and OpenCL.
Vulkan is a more recent cross-platform API, widely adopted for both high-performance graphics and compute.
These models require lower-level programming, as developers have to be aware of architectural details; this is not easily accomplished given the dramatic rise in hardware heterogeneity.
It has thus become increasingly desirable to adopt higher-level models that abstract away the low-level hardware and API details, and simplify GPU programming.
In this paper we present a full-fledged OpenMP translator and runtime offloading infrastructure that targets the Vulkan Compute pipeline.
While previous works usually focus on OpenCL or CUDA, this is the first time an OpenMP compiler targets Vulkan shaders.
As such, apart from the support for off-the-shelf NVIDIA and AMD GPUs, we are the first to provide OpenMP support for mobile and embedded GPUs, such as VideoCore GPUs.
The proposed translator, which is based on an open-source compilation framework, receives standard OpenMP code and converts it to tunable Vulkan shaders.
Our approach preserves the simplicity of higher-level programming, while still achieving high performance, as demonstrated by our experimental results.
Related Results
High-level compiler analysis for OpenMP
High-level compiler analysis for OpenMP
Nowadays, applications from dissimilar domains, such as high-performance computing and high-integrity systems, require levels of performance that can only be achieved by means of s...
On the programmability of multi-GPU computing systems
On the programmability of multi-GPU computing systems
Multi-GPU systems are widely used in High Performance Computing environments to accelerate scientific computations.
This trend is expected to continue as integrated GPUs will be i...
Towards a safe and efficient OpenMP
Towards a safe and efficient OpenMP
(English) The growing complexity of contemporary multi-core and heterogeneous architectures necessitates parallel programming models capable of efficiently leveraging the available...
Automatic Parallelization for Heterogeneous Embedded Systems
Automatic Parallelization for Heterogeneous Embedded Systems
Parallélisation automatique pour systèmes hétérogènes embarqués
L'utilisation d'architectures hétérogènes, combinant des processeurs multicoeurs avec des accélérate...
Grain graphs
Grain graphs
Average programmers struggle to solve performance problems in OpenMP programs with tasks and parallel for-loops. Existing performance analysis tools visualize OpenMP task performan...
Résolution de systèmes linéaires et non linéaires creux sur grappes de GPUs
Résolution de systèmes linéaires et non linéaires creux sur grappes de GPUs
Depuis quelques années, les grappes équipées de processeurs graphiques GPUs sont devenues des outils très attrayants pour le calcul parallèle haute performance. Dans cette thèse, n...
An Analysis of Programmer Productivity versus Performance for High Level Data Parallel Programming
An Analysis of Programmer Productivity versus Performance for High Level Data Parallel Programming
Data parallel programming provides an accessible model for exploiting the power of parallel computing elements without resorting to the explicit use of low level programming techni...
Scheduler guided OpenMP execution in cloud VMs
Scheduler guided OpenMP execution in cloud VMs
Exécution OpenMP guidée par le ordonnanceur dans les machines virtuelles cloud
OpenMP est un cadre largement utilisé pour paralléliser les applications, permettant ...

