A Vulkan Backend for Accelerate
Summary
With the continuous advancement of parallel hardware, and the growing demand for cross-platform high-performance computing, Vulkan, as an open standard and cross-platform, low-overhead, low-level library for 3D graphics and computing, has emerged noticeably. The vast majority of scientific software, however, only supports executing programs on NVIDIA graphics processing units (GPUs) due to various reasons. Accelerate, a domain-specific language (DSL) for high-performance array computation in the functional programming language -- Haskell, is one example that traditionally relies on CUDA for GPU acceleration.
This thesis presents the development of a Vulkan backend for Accelerate, enabling general-purpose GPU computing on a broader range of hardware. The main contribution includes the design and implementation of a code generator for the OpenGL shading language (GLSL), which is a language for building the Vulkan computing kernel. The code generator supports most primitive scalar operations in Accelerate. Additionally, a runtime for the Vulkan backend was developed.
Experimental results demonstrate that the Vulkan backend offers competitive performance compared to the CUDA backend, proving its viability as an alternative. However, Vulkan extension support across various platforms poses the biggest limitation of our work, restricting the ability to run programs on certain devices.
Beyond technical contributions, this thesis also provides comprehensive introductions to the components of Accelerate and the features of Vulkan. We hope to provide extensive learning material for those interested in the Vulkan compute pipeline and possibly developing a Vulkan backend for similar DSLs.
Collections
Related items
Showing items related by title, author, creator and subject.
-
Compiling an Haskell EDSL to C: A new C back-end for the Copilot runtime verification framework
Dedden, F.H. (2018)Electronics and computers are all around us, ranging from cellphones to aircraft avionics. Some systems, including aircraft and nuclear powerplants, are considered safety-critical: failure can lead to the injury or death ... -
The Agda UHC Backend
Hausmann, P. (2015)This thesis studies how we can facilitate combined Haskell/Agda developments. As foundation for our research we have created the Agda UHC backend, targeting the intermediate Core language of the Utrecht Haskell Compiler. ... -
A backend for excuting machine learning models stored in the Open Neural Network Exchange format.
Fatah, Youssef (2024)This thesis investigates the effectiveness of using ONNX-based machine learning models to simulate cellular automata, specifically focusing on Conway’s Game of Life. The primary goal is to evaluate how well an ONNX-based ...