Multi-GPU Rendering with Vulkan API
Abstract
Vulkan API provides a low level interface to modern Graphics Processing Units (GPUs). With this thesis, we demonstrate how to use Vulkan to send commands explicitly to separate GPUs for implementing platform- and vendor independent multi-GPU rendering. We describe how to implement the sort-first and sort-last approaches to perform parallel rendering with Vulkan. We introduce an abstraction library which we have made available, and an application for multi-GPU rendering of meshes. The introduced solution is the first publicly available implementation of heterogeneous multi-GPU rendering with Vulkan API. The introduced abstraction library supports creating partial renderers for the sort-first and sort-last approaches to multi-GPU rendering, and takes care of the details of multi-GPU synchronization and compositing. Performance benchmarks have been performed in order to evaluate the implementation. The sort-last implementation has been tested to render geometry with high-resolution textures, which would otherwise not fit in the memory of a single GPU.