Vulkan Renderer (Beta)

‚ÄčVulkan is a low-level graphics API used to program the GPU to perform graphics rendering and other tasks. It is a modern, high-performance replacement of the legacy OpenGL API. It is supported by all desktop and mobile GPU vendors, and support is included in all recent graphics drivers, although you may need to install the small Vulkan loader manually. Vulkan will soon replace OpenGL as the primary graphics driver for the backend renderer.

The Vulkan library is required for Release 5.7, regardless of which renderer you use. If you do not install Vulkan, you will see the following error when trying to start a rendering-enabled server for the first time:

error while loading shared libraries: libvulkan.so.1: cannot open shared object file: No such file or directory

If you receive this error, you need to install the Vulkan API loader. For a summary of how to install the Vulkan loader on various linux distributions, see: https://linuxconfig.org/install-and-test-vulkan-on-linux.

Advantages of Using Vulkan

Vulkan __provides the following improvements over OpenGL in the backend renderer:

Performance
Memory Efficiency
Concurrency
Performance

Vulkan is designed specifically for speed. The Vulkan renderer is often 2 times faster than OpenGL, and performance will improve in the future.

Memory Efficiency

OpenGL does not provide direct access to GPU memory, making it difficult to manage memory utilization. Vulkan requires the application to manage GPU memory directly, and you can use the same memory for multiple, nonoverlapping tasks, which allows more work with less memory. Interaction with Cuda is more direct, because Cuda can reference and use the same memory as Vulkan with virtually no overhead.

Concurrency

Vulkan is more multi-thread friendly than OpenGL. It is designed to give the application far more control of task scheduling on the GPU. This will enable a more efficient end-to-end rendering process by providing opportunities to overlap multiple render requests at different stages.

Enabling Vulkan

For Release 5.7, the Vulkan renderer is considered a Beta feature while OpenGL is the default driver. In Release 5.8, Vulkan will be made the default. OpenGL rendering will then be deprecated and later removed in subsequent releases.

OmniSci recommends switching to the Vulkan renderer as soon as possible. Although the Vulkan driver is reliable and stable, it has not yet had wide external usage and may be prone to unforeseen configuration issues; see Troubleshooting below. Finding such issues while a reliable fallback exists ensures a smooth, less risky transition.

To enable Vulkan rendering, set the configuration option renderer-use-vulkan-driver=true.

During the Beta release, you should not notice differences in rendered images unless you are doing numeric pixel comparisons. A few pixels may vary by an imperceptible amount.

As additional incentive, you may benefit from performance improvements with Vulkan in Release 5.7. For example, when rendering a large number of overlapping polygons, you may **notice a 2x speedup.

Troubleshooting

Follow these steps if you receive error messages when using Vulkan.

Bare-Metal Installs

You might see the following error when trying to start a rendering-enabled server for the first time:

error while loading shared libraries: libvulkan.so.1: cannot open shared object file: No such file or directory

If you receive this error, you need to install the Vulkan API loader:

  • CentOS: sudo yum install vulkan

  • Ubuntu: sudo apt install libvulkan1

For a summary of how to install the Vulkan loader on various Linux distributions, see: https://linuxconfig.org/install-and-test-vulkan-on-linux.

Docker Installs

If you run the server in a Docker container and you see an error similar to the following in your logs, even with the proper drivers installed, your NVIDIA Docker runtime may be out of date:

Backend rendering disabled: Error creating Vulkan instance: Vulkan Error: VK_ERROR_INCOMPATIBLE_DRIVER

To resolve, try upgrading the nvidia-docker2 package on your system.