Show simple item record

dc.rights.licenseCC-BY-NC-ND
dc.contributor.advisorKeller, G.K.
dc.contributor.authorLu, Xinliang
dc.date.accessioned2024-08-26T23:05:50Z
dc.date.available2024-08-26T23:05:50Z
dc.date.issued2024
dc.identifier.urihttps://studenttheses.uu.nl/handle/20.500.12932/47433
dc.description.abstractWith 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.
dc.description.sponsorshipUtrecht University
dc.language.isoEN
dc.subjectThe main goal of the thesis is to examine whether it is possible or not to implement a Vulkan backend for Accelerate. Therefore, we investigate the following research questions: 1. Is it possible to generate GLSL kernel functions from Accelerate's intermediate representation (IR)? 2. Does the Vulkan provide suitable APIs to implement a backend for Accelerate? 3. Compared to the old CUDA backend, how is the performance of the new backend?
dc.titleA Vulkan Backend for Accelerate
dc.type.contentMaster Thesis
dc.rights.accessrightsOpen Access
dc.subject.keywordsGPGPU; Vulkan; Accelerate; Array Programming; Functional Programming
dc.subject.courseuuComputing Science
dc.thesis.id38038


Files in this item

Thumbnail

This item appears in the following Collection(s)

Show simple item record