Skip to content

Commit 9cb08cf

Browse files
authored
Merge pull request #1386 from eero-t/gpu-drivers
Update GPU plugin README driver information
2 parents 943e34f + 92b8fe9 commit 9cb08cf

File tree

1 file changed

+30
-18
lines changed

1 file changed

+30
-18
lines changed

cmd/gpu_plugin/README.md

Lines changed: 30 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ Table of Contents
1010
* [Kernel driver](#kernel-driver)
1111
* [Intel DKMS packages](#intel-dkms-packages)
1212
* [Upstream kernel](#upstream-kernel)
13+
* [GPU Version](#gpu-version)
14+
* [GPU Firmware](#gpu-firmware)
1315
* [User-space drivers](#user-space-drivers)
1416
* [Drivers for older (integrated) GPUs](#drivers-for-older-integrated-gpus)
1517
* [Pre-built Images](#pre-built-images)
@@ -74,24 +76,31 @@ $ grep i915 /sys/class/drm/card?/device/uevent
7476

7577
#### Drivers for discrete GPUs
7678

79+
> **Note**: Kernel (on host) and user-space drivers (in containers)
80+
> should be installed from the same repository as there are some
81+
> differences between DKMS and upstream GPU driver uAPI.
82+
7783
##### Kernel driver
7884

7985
###### Intel DKMS packages
8086

81-
`i915` GPU driver DKMS[^dkms] package is recommended until Intel
82-
discrete GPU support in upstream is complete. It can be installed
83-
from Intel package repositories for a subset of older kernel versions
84-
used in enterprise / LTS distributions:
87+
`i915` GPU driver DKMS[^dkms] package is recommended for Intel
88+
discrete GPUs, until their support in upstream is complete. DKMS
89+
package(s) can be installed from Intel package repositories for a
90+
subset of older kernel versions used in enterprise / LTS
91+
distributions:
8592
https://dgpu-docs.intel.com/installation-guides/index.html
8693

8794
[^dkms]: [intel-gpu-i915-backports](https://github.com/intel-gpu/intel-gpu-i915-backports).
8895

8996
###### Upstream kernel
9097

91-
With upstream 6.x kernels, discrete GPU support needs to be enabled using
92-
kernel `i915.force_probe=<PCI_ID>` command line option until relevant kernel
93-
driver features have been completed also in upstream:
94-
https://www.kernel.org/doc/html/latest/gpu/rfc/index.html
98+
Upstream Linux kernel 6.2 or newer is needed for Intel discrete GPU
99+
support. For now, upstream kernel is still missing support for a few
100+
of the features available in DKMS kernels (e.g. Level-Zero Sysman API
101+
GPU error counters).
102+
103+
##### GPU Version
95104

96105
PCI IDs for the Intel GPUs on given host can be listed with:
97106
```
@@ -106,6 +115,8 @@ and server GPUs without display support, as "Display controller".)
106115
Mesa "Iris" 3D driver header provides a mapping between GPU PCI IDs and their Intel brand names:
107116
https://gitlab.freedesktop.org/mesa/mesa/-/blob/main/include/pci_ids/iris_pci_ids.h
108117

118+
###### GPU Firmware
119+
109120
If your kernel build does not find the correct firmware version for
110121
a given GPU from the host (see `dmesg | grep i915` output), latest
111122
firmware versions are available in upstream:
@@ -316,21 +327,22 @@ The GPU plugin functionality can be verified by deploying an [OpenCL image](../.
316327

317328
## Issues with media workloads on multi-GPU setups
318329

319-
Unlike with 3D & compute, and OneVPL media API, QSV (MediaSDK) & VA-API
320-
media APIs do not offer device discovery functionality for applications.
321-
There is nothing (e.g. environment variable) with which the default
322-
device could be overridden either.
330+
OneVPL media API, 3D and compute APIs provide device discovery
331+
functionality for applications and work fine in multi-GPU setups.
332+
VA-API and legacy QSV (MediaSDK) media APIs do not, and do not
333+
provide (e.g. environment variable) override for their _default_
334+
device file.
323335

324-
As result, most (all?) media applications using VA-API or QSV, fail to
325-
locate the correct GPU device file unless it is the first ("renderD128")
326-
one, or device file name is explictly specified with an application option.
336+
As result, media applications using VA-API or QSV, fail to locate the
337+
correct GPU device file unless it is the first ("renderD128") one, or
338+
device file name is explictly specified with an application option.
327339

328340
Kubernetes device plugins expose only requested number of device
329341
files, and their naming matches host device file names (for several
330342
reasons unrelated to media). Therefore, on multi-GPU hosts, the only
331-
GPU device file mapped to the media container can be some other one
332-
than "renderD128", and media applications using VA-API or QSV need to
333-
be explicitly told which one to use.
343+
GPU device file mapped to the media container can differ from
344+
"renderD128", and media applications using VA-API or QSV need to be
345+
explicitly told which one to use.
334346

335347
These options differ from application to application. Relevant FFmpeg
336348
options are documented here:

0 commit comments

Comments
 (0)