Type: gpu
Description: GPU devices make the specified GPU device or devices appear in the instance. The following types of GPUs can be added using the gputype device option: physical(container and VM): Passes an entire G...

Hide navigation sidebar
Hide table of contents sidebar
Skip to content
Back to top
View this page
Toggle table of contents sidebar

# Type: `gpu`

▶ Watch on YouTube

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.