GVM User Suite
User tools for the GVM open source project.
GPU Virtual Machine user suite (GVM-user)

This page makes use of terminology from the Open-IOV Glossary. If you're unsure what a specific term means you can read this for more context.

Introduction

GVM is a GPU Virtual Machine for IOMMU-capable computers such as x86 and ARM.

GVM-user is the latest release made public under the GVM Project developed by the Open-IOV Open-Source software community.

GVM-user tools are designed to create and manage mediated Virtual GPUs as well as provide control of the mediated device to a VM running under a GVM-compatible platform hypervisor such as KVM or Xen*.

This software is based on the C programming language and is released with Long Term Support under the GPLv2 License.

Contributing

Ongoing development occurs through collaboration by members of the Open-IOV Community.

If you would like to contribute to GPU Virtual Machine development you can participate by submitting pull requests on GitHub to help us reach our GVM Development Targets and participate in related Communities & Mailing Lists such as the Open-IOV Community Discord.

If you would like to help suggest GVM Development Targets you can join the #Community-Call Room to stay informed about when community meetings will occur.

Open Sources

Open source code for GVM-user can be found on GitHub.

Coding Standards

GVM's coding standards are the same as those in the Linux Kernel.

You can read relevant documentation about how software contributions to GVM should be structured from this page on kernel.org.

Documentation Standards

All functions of the program must be documented using the Doxygen tool.

Appropriate descriptions, import graphs, parameters, returns, restrictions, lists of side effects, and lists of possible failures are required for each function of the program (example).

Microarchitecture Support

To see a full list of supported microarchitectures you can read the GPU Support Feature Matrix on Open-IOV.

Onboarding Device Support

Expanding device support through additional vendors and architectures should be accomplished in several steps.

These steps are as follows:

Planned Support Improvements

Planned support improvements include:
  • Support for Intel GPUs.

  • Support for TensTorrent TPUs.

  • Support for AMD GPUs.

Side Effects

As this suite deals with low level components, we have taken to providing a detailed list of major side effects that occur in the functions we are dealing with to provide us a better understanding of where bugs can occur. This list can be found here: Possible Side Effects.

Restrictions

Several functions have a reduced domain, that cannot be properly modeled in C/C++. As a result we have the following additional restrictions on several of the functions: Restrictions.

Failures

Virtualization of the GPU incorporates many functions which may experience software failures. As a result we have taken to documenting all known possible failures: Failures.

Tests

To design a more professional codebase, we have started to use unit tests for different regions of our codebase. Currently we only have 2 major components, the user interaction system, and the GVM control system.
  1. GVM Control System Tests
    1. GPU Specific Tests.
      1. Device Creation Test
      2. NVIDIA API Test
      3. NVIDIA Manager Test