Type: gpu

GPU devices make the specified GPU device or devices appear in the instance.

Note

For containers, a gpu device may match multiple GPUs at once. For VMs, each device can match only a single GPU.

The following types of GPUs can be added using the gputype device option:

  • physical (container and VM): Passes an entire GPU through into the instance. This value is the default if gputype is unspecified.

  • mdev (VM only): Creates and passes a virtual GPU through into the instance.

  • mig (container only): Creates and passes a MIG (Multi-Instance GPU) through into the instance.

  • sriov (VM only): Passes a virtual function of an SR-IOV-enabled GPU into the instance.

The available device options depend on the GPU type and are listed in the tables in the following sections.

gputype: physical

Note

The physical GPU type is supported for both containers and VMs. It supports hotplugging only for containers, not for VMs.

A physical GPU device passes an entire GPU through into the instance.

Device options

GPU devices of type physical have the following device options:

gid

GID of the device owner in the container

Key: gid
Type:

integer

Default:

0

Condition:

container

id

ID of the GPU device

Key: id
Type:

string

The ID can either be the DRM card ID of the GPU device (container or VM) or a fully-qualified Container Device Interface (CDI) name (container only). Here are some examples of fully-qualified CDI names:

  • nvidia.com/gpu=0: Instructs LXD to operate a discrete GPU (dGPU) pass-through of brand NVIDIA with the first discovered GPU on your system. You can use the nvidia-smi tool on your host to find out which identifier to use.

  • nvidia.com/gpu=1833c8b5-9aa0-5382-b784-68b7e77eb185: Instructs LXD to operate a discrete GPU (dGPU) pass-through of brand NVIDIA with a given GPU unique identifier. This identifier should also appear with nvidia-smi -L.

  • nvidia.com/igpu=all: Instructs LXD to pass all the host integrated GPUs (iGPU) of brand NVIDIA. The concept of an index does not currently map to iGPUs. It is possible to list them with the nvidia-smi -L command. A special nvgpu mention should appear in the generated list to indicate a device to be an iGPU.

  • nvidia.com/gpu=all: Instructs LXD to pass all the host GPUs of brand NVIDIA through to the container.

mode

Mode of the device in the container

Key: mode
Type:

integer

Default:

0660

Condition:

container

pci

PCI address of the GPU device

Key: pci
Type:

string

productid

Product ID of the GPU device

Key: productid
Type:

string

uid

UID of the device owner in the container

Key: uid
Type:

integer

Default:

0

Condition:

container

vendorid

Vendor ID of the GPU device

Key: vendorid
Type:

string

Configuration examples

Add all GPUs from the host system as a physical GPU device to an instance:

lxc config device add <instance_name> <device_name> gpu gputype=physical

Add a specific GPU from the host system as a physical GPU device to an instance by specifying its PCI address:

lxc config device add <instance_name> <device_name> gpu gputype=physical pci=<pci_address>

See Configure devices for more information.

CDI mode

Note

The CDI mode is currently not supported on armhf architectures.

Add a specific GPU from the host system as a physical GPU device to an instance using the Container Device Interface (CDI) notation through a fully-qualified CDI name:

lxc config device add <instance_name> <device_name> gpu gputype=physical id=<fully_qualified_CDI_name>

For example, add the first available NVIDIA discrete GPU on your system:

lxc config device add <instance_name> <device_name> gpu gputype=physical id=nvidia.com/gpu=0

If your machine has an NVIDIA iGPU (integrated GPU) located at index 0, you can add it like this:

lxc config device add <instance_name> <device_name> gpu gputype=physical id=nvidia.com/igpu=0

For a complete example on how to use a GPU CDI pass-through, see How to pass an NVIDIA GPU to a container.

gputype: mdev

Note

The mdev GPU type is supported only for VMs. It does not support hotplugging.

An mdev GPU device creates and passes a virtual GPU through into the instance. You can check the list of available mdev profiles by running lxc info --resources.

Device options

GPU devices of type mdev have the following device options:

id

DRM card ID of the GPU device

Key: id
Type:

string

mdev

The mdev profile to use

Key: mdev
Type:

string

Default:

0

Required:

yes

For example: i915-GVTg_V5_4

pci

PCI address of the GPU device

Key: pci
Type:

string

productid

Product ID of the GPU device

Key: productid
Type:

string

vendorid

Vendor ID of the GPU device

Key: vendorid
Type:

string

Configuration examples

Add an mdev GPU device to an instance by specifying its mdev profile and the PCI address of the GPU:

lxc config device add <instance_name> <device_name> gpu gputype=mdev mdev=<mdev_profile> pci=<pci_address>

See Configure devices for more information.

gputype: mig

Note

The mig GPU type is supported only for containers. It does not support hotplugging.

A mig GPU device creates and passes a MIG compute instance through into the instance. Currently, this requires NVIDIA MIG instances to be pre-created.

Device options

GPU devices of type mig have the following device options:

id

DRM card ID of the GPU device

Key: id
Type:

string

mig.ci

Existing MIG compute instance ID

Key: mig.ci
Type:

integer

mig.gi

Existing MIG GPU instance ID

Key: mig.gi
Type:

integer

mig.uuid

Existing MIG device UUID

Key: mig.uuid
Type:

string

You can omit the MIG- prefix when specifying this option.

pci

PCI address of the GPU device

Key: pci
Type:

string

productid

Product ID of the GPU device

Key: productid
Type:

string

vendorid

Vendor ID of the GPU device

Key: vendorid
Type:

string

You must set either mig.uuid (NVIDIA drivers 470+) or both mig.ci and mig.gi (old NVIDIA drivers).

Configuration examples

Add a mig GPU device to an instance by specifying its UUID and the PCI address of the GPU:

lxc config device add <instance_name> <device_name> gpu gputype=mig mig.uuid=<mig_uuid> pci=<pci_address>

See Configure devices for more information.

gputype: sriov

Note

The sriov GPU type is supported only for VMs. It does not support hotplugging.

An sriov GPU device passes a virtual function of an SR-IOV-enabled GPU into the instance.

Device options

GPU devices of type sriov have the following device options:

id

DRM card ID of the parent GPU device

Key: id
Type:

string

pci

PCI address of the parent GPU device

Key: pci
Type:

string

productid

Product ID of the parent GPU device

Key: productid
Type:

string

vendorid

Vendor ID of the parent GPU device

Key: vendorid
Type:

string

Configuration examples

Add a sriov GPU device to an instance by specifying the PCI address of the parent GPU:

lxc config device add <instance_name> <device_name> gpu gputype=sriov pci=<pci_address>

See Configure devices for more information.