Multi-GPU Rendering with the open Vulkan API

Lars Olav Tolo

Ivan Viola

Atle Geitung

Harald Soleim

Daniel Patel

Abstract

The Vulkan API provides a low level interface to modern Graphics Processing Units (GPUs). 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. Performance benchmarks have been performed in order to evaluate the implementation. We also show that we can utilize the additional GPU memory from multiple GPUs to render larger data sets than possible with a single GPU.