HEAVY.AI Docs
v7.2.4
v7.2.4
  • Welcome to HEAVY.AI Documentation
  • Overview
    • Overview
    • Release Notes
  • Installation and Configuration
    • System Requirements
      • Hardware Reference
      • Software Requirements
    • Installation
      • Free Version
      • Installing on CentOS
        • HEAVY.AI Installation on CentOS/RHEL
        • Install NVIDIA Drivers and Vulkan on CentOS/RHEL
      • Installing on Ubuntu
        • HEAVY.AI Installation on Ubuntu
        • Install NVIDIA Drivers and Vulkan on Ubuntu
      • Installing on Docker
        • HEAVY.AI Installation using Docker on Ubuntu
      • Getting Started on AWS
      • Getting Started on GCP
      • Getting Started on Azure
      • Getting Started on Kubernetes (BETA)
      • Upgrading
        • Upgrading HEAVY.AI
        • Upgrading from Omnisci to HEAVY.AI 6.0
        • CUDA Compatibility Drivers
      • Uninstalling
      • Ports
    • Services and Utilities
      • Using Services
      • Using Utilities
    • Executor Resource Manager
    • Configuration Parameters
      • Overview
      • Configuration Parameters for HeavyDB
      • Configuration Parameters for HEAVY.AI Web Server
    • Security
      • Roles and Privileges
      • Connecting Using SAML
      • Implementing a Secure Binary Interface
      • Encrypted Credentials in Custom Applications
      • LDAP Integration
    • Distributed Configuration
  • Loading and Exporting Data
    • Supported Data Sources
      • Kafka
      • Using Heavy Immerse Data Manager
      • Importing Geospatial Data
    • Command Line
      • Loading Data with SQL
      • Exporting Data
  • SQL
    • Data Definition (DDL)
      • Datatypes
      • Users and Databases
      • Tables
      • System Tables
      • Views
      • Policies
    • Data Manipulation (DML)
      • SQL Capabilities
        • ALTER SESSION SET
        • ALTER SYSTEM CLEAR
        • DELETE
        • EXPLAIN
        • INSERT
        • KILL QUERY
        • LIKELY/UNLIKELY
        • SELECT
        • SHOW
        • UPDATE
        • Arrays
        • Logical Operators and Conditional and Subquery Expressions
        • Table Expression and Join Support
        • Type Casts
      • Geospatial Capabilities
        • Uber H3 Hexagonal Modeling
      • Functions and Operators
      • System Table Functions
        • generate_random_strings
        • generate_series
        • tf_compute_dwell_times
        • tf_feature_self_similarity
        • tf_feature_similarity
        • tf_geo_rasterize
        • tf_geo_rasterize_slope
        • tf_graph_shortest_path
        • tf_graph_shortest_paths_distances
        • tf_load_point_cloud
        • tf_mandelbrot*
        • tf_point_cloud_metadata
        • tf_raster_contour_lines; tf_raster_contour_polygons
        • tf_raster_graph_shortest_slope_weighted_path
        • tf_rf_prop_max_signal (Directional Antennas)
        • ts_rf_prop_max_signal (Isotropic Antennas)
        • tf_rf_prop
      • Window Functions
      • Reserved Words
      • SQL Extensions
  • Heavy Immerse
    • Introduction to Heavy Immerse
    • Admin Portal
    • Control Panel
    • Working with Dashboards
      • Dashboard List
      • Creating a Dashboard
      • Configuring a Dashboard
      • Duplicating and Sharing Dashboards
    • Measures and Dimensions
    • Using Parameters
    • Using Filters
    • Using Cross-link
    • Chart Animation
    • Multilayer Charts
    • SQL Editor
    • Customization
    • Joins (Beta)
    • Chart Types
      • Overview
      • Bar
      • Bubble
      • Choropleth
      • Combo
      • Cross-Section
      • Contour
      • Gauge
      • Geo Heatmap
      • Heatmap
      • Histogram
      • Line
      • Linemap
      • New Combo
      • Number
      • Pie
      • Pointmap
      • Scatter Plot
      • Skew-T
      • Stacked Bar
      • Table
      • Text Widget
      • Wind Barb
  • HeavyRF
    • Introduction to HeavyRF
    • Getting Started
    • HeavyRF Table Functions
  • HeavyConnect
    • HeavyConnect Release Overview
    • Getting Started
    • Best Practices
    • Examples
    • Command Reference
    • Parquet Data Wrapper Reference
    • ODBC Data Wrapper Reference
  • HeavyML (BETA)
    • HeavyML Overview
    • Clustering Algorithms
    • Regression Algorithms
      • Linear Regression
      • Random Forest Regression
      • Decision Tree Regression
      • Gradient Boosting Tree Regression
    • Principal Components Analysis
  • Python / Data Science
    • Data Science Foundation
    • JupyterLab Installation and Configuration
    • Using HEAVY.AI with JupyterLab
    • Python User-Defined Functions (UDFs) with the Remote Backend Compiler (RBC)
      • Installation
      • Registering and Using a Function
      • User-Defined Table Functions
      • RBC UDF/UDTF Example Notebooks
      • General UDF/UDTF Tutorial Notebooks
      • RBC API Reference
    • Ibis
    • Interactive Data Exploration with Altair
    • Additional Examples
      • Forecasting with HEAVY.AI and Prophet
  • APIs and Interfaces
    • Overview
    • heavysql
    • Thrift
    • JDBC
    • ODBC
    • Vega
      • Vega Tutorials
        • Vega at a Glance
        • Getting Started with Vega
        • Getting More from Your Data
        • Creating More Advanced Charts
        • Using Polys Marks Type
        • Vega Accumulator
        • Using Transform Aggregation
        • Improving Rendering with SQL Extensions
      • Vega Reference Overview
        • data Property
        • projections Property
        • scales Property
        • marks Property
      • Migration
        • Migrating Vega Code to Dynamic Poly Rendering
      • Try Vega
    • RJDBC
    • SQuirreL SQL
    • heavyai-connector
  • Tutorials and Demos
    • Loading Data
    • Using Heavy Immerse
    • Hello World
    • Creating a Kafka Streaming Application
    • Getting Started with Open Source
    • Try Vega
  • Troubleshooting and Special Topics
    • FAQs
    • Troubleshooting
    • Vulkan Renderer
    • Optimizing
    • Known Issues and Limitations
    • Logs and Monitoring
    • Archived Release Notes
      • Release 6.x
      • Release 5.x
      • Release 4.x
      • Release 3.x
Powered by GitBook
On this page
  • Advantages of Using Vulkan
  • Enabling Vulkan
  • Troubleshooting
  • Bare-Metal Installs
  • Docker Installs
Export as PDF
  1. Troubleshooting and Special Topics

Vulkan Renderer

PreviousTry VegaNextOptimizing

Last updated 2 years ago

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 API loader manually.

Release 5.8 officially enables the new Vulkan backend renderer as the default, replacing the OpenGL renderer. Releases before 5.8 use OpenGL.

As of HEAVY.AI Release 6.0, OpenGL is fully removed, leaving Vulkan as the only available driver. As a result, the renderer-use-vulkan-driver program option has been removed. Please remove any references to that program option from your configuration files.

For Release 5.7 and up, a Vulkan API loader library is required to be installed regardless of which renderer you use. See the guide below for details on how to install the Vulkan API loader.

Advantages of Using Vulkan

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

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

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.

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

In Release 5.8, Vulkan is the default. OpenGL rendering is deprecated and removed in Release 6.0. For Release 5.7, the Vulkan renderer is considered a Beta feature, and OpenGL is the default driver.

OmniSci recommends using the Vulkan renderer unless you have hit a blocking issue with Vulkan. Although the Vulkan driver is reliable and stable, it has not yet had wide external usage compared to its OpenGL counterpart and may be prone to unforeseen configuration issues; see below for guidance on known issues. Having Vulkan enabled helps us to find and address additional issues while a reliable fallback exists to ensure a smooth, less risky transition.

To enable Vulkan rendering in releases lower than 6.0, set the configuration option renderer-use-vulkan-driver=true. Note that this is the default in Release 5.8.

To disable Vulkan rendering and use the OpenGL legacy renderer, set the configuration option renderer-use-vulkan-driver=false. Note that this is the default in Release 5.7.

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 --no-install-recommends

You might experience a server crash or get errors on startup like the following:

Oct 21 17:09:33 ip-xxx-xxx-xx-xx.us-east-2.compute.internal omnisci_server[61162]: LLVM ERROR: inconsistency in registered CommandLine option

If this occurs, HEAVY.AI recommends setting the VK_ICD_FILENAMES to the Nvidia Driver Manifest variable before starting the server.

  • Ubuntu/Debian: export VK_ICD_FILENAMES=$(ls /usr/share/vulkan/icd.d/nvidia*)

  • CentOS/Redhat: export VK_ICD_FILENAMES=$(ls /etc/vulkan/icd.d/nvidia*)

Although /usr/share/vulkan/icd.d and /etc/vulkan/icd.d are the most commonly used paths, the Vulkan loader looks in all the following locations: /etc/vulkan/icd.d /usr/local/etc/vulkan/icd.d /usr/local/share/vulkan/icd.d /usr/share/vulkan/icd.d $HOME/.local/share/vulkan/icd.d

If the server has been installed as a service, check the name of the Nvidia icd json file with the following command:

  • Ubuntu/Debian: ls /usr/share/vulkan/icd.d/nvidia*

  • CentOS/Redhat: ls /etc/vulkan/icd.d/nvidia*

Then, add the output as an Environment to the HEAVY.AI server Service section with the following command:

sudo vi /usr/lib/systemd/system/heavydb.service

  • Ubuntu/Debian [Service] Environment="VK_ICD_FILENAMES=/usr/share/vulkan/icd.d/nvidia_icd.json"

  • CentOS/Redhat [Service] Environment="VK_ICD_FILENAMES=/etc/vulkan/icd.d/nvidia_icd.json"

Then, run sudo systemctl daemon-reload.

As a last resort, you can remove the package mesa-vulkan-driver from the OS.

  • CentOS: sudo yum remove mesa-vulkan-drivers

  • Ubuntu: sudo apt remove mesa-vulkan-drivers

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.

For a summary of how to install the Vulkan loader on various Linux distributions, see .

https://linuxconfig.org/install-and-test-vulkan-on-linux
Vulkan
Troubleshooting
Troubleshooting