Graphics processing unit
A graphics processing unit (GPU) is the hardware in your computer that generates the video feed that appears on your display. They are present in two device types: Integrated Graphics Processors (IGP) and dedicated (or discrete) graphics, also known as graphics cards. The acronym is often abused to refer to the graphics card as a whole.
Their ease to perform parallel calculation has given birth to general-purpose computing on graphics processing units (GPGPU).
Installation
The Linux kernel includes open-source video drivers and support for hardware accelerated framebuffers. However, userland support is required for OpenGL, Vulkan, 2D acceleration in Xorg and hardware video acceleration.
First, identify the graphics card (the Subsystem output shows the specific model):
$ lspci -vnnd ::03xx
::03 here means "Display controller PCI device class", and xx stands for "any subclass of the class".Then, installing its video driver is required. See the tables below for the three major vendors.
For 32-bit software, enable the multilib repository and install lib32- prefixed userspace drivers, such as lib32-mesa, lib32-vulkan-radeon, lib32-nvidia-utils, etc.
For X11, other Device Dependent X (DDX) drivers can be found in the xorg-drivers group or searching for xf86-video. In most cases, you do not need to install any DDX drivers; see Xorg#Drivers for details.
AMD
AMD supports the open source driver. A proprietary driver was provided before but it is no longer packaged. [1][2]
See Hardware video acceleration#Comparison tables for details on VA-API support per GPU family.
| Documentation | GPU family | DRM driver | OpenGL | Vulkan | DDX driver |
|---|---|---|---|---|---|
| AMDGPU | GCN 3 and later (e.g. RDNA 1-4) | included in Linux | mesa | vulkan-radeon | xf86-video-amdgpu2 |
| AMDGPU1 / ATI | GCN 1&2 | Depends on the chosen driver | |||
| ATI | R300 through TeraScale | None | xf86-video-ati2 | ||
| R100 & R200 | mesa-amber | ||||
| Rage 4 and older | not available [3][4] | ||||
- Enabled by default since linux≥6.19, can be manually chosen otherwise
- Using the modesetting driver is reported to work without issues
Intel
Intel provides and supports open source drivers, except for PowerVR-based graphics (GMA 3600 series) which are not supported.
See Hardware video acceleration#Comparison tables for more details on VA-API support per GPU family, only the packages are listed below.
| Documentation | GPU family | DRM driver | OpenGL | Vulkan | DDX driver | VA-API |
|---|---|---|---|---|---|---|
| Intel graphics | Gen 12.1 and later | included in Linux | mesa | vulkan-intel1 | xf86-video-intel2 | intel-media-driver |
| Gen 8 through 11 |
intel-media-driver or legacy libva-intel-driver |
|||||
| Gen 7 & 7.5 | libva-intel-driver | |||||
| Gen 5 & 6 | None | |||||
| Gen 3 through 4.5 | None | |||||
| Gen 2 | mesa-amber |
- Gen 7 and 7.5 have incomplete support, Gen 8 is limited to Vulkan 1.3.
- The modesetting DDX driver is recommended for Gen 3 hardware and later. See Intel graphics#Installation for details.
NVIDIA
NVIDIA does not support the fully open driver. They switched to a hybrid approach (with an open DRM driver and closed userland) in 2022.
See Hardware video acceleration#NVIDIA for details on which APIs are supported, and Hardware video acceleration#VDPAU drivers for details per GPU family.
| License | Documentation | GPU family | DRM driver | OpenGL | Vulkan | DDX driver |
|---|---|---|---|---|---|---|
| Open | Nouveau1 | Kepler (NVE0/GKXXX) and newer | included in Linux | mesa | vulkan-nouveau | xf86-video-nouveau2 |
| Fahrenheit (NV04/05) through Fermi (NVC0/GF1XX) | None | |||||
| Open DRM driver, proprietary userland | NVIDIA1 | Turing (NV160/TUXXX) and newer | nvidia-open | nvidia-utils | ||
| Proprietary |
Maxwell (NV110/GMXXX) through Ada Lovelace (NV190/ADXXX) |
nvidia-580xx-dkmsAUR | nvidia-580xx-utilsAUR | |||
| Kepler (NVE0/GKXXX) | nvidia-470xx-dkmsAUR | nvidia-470xx-utilsAUR | ||||
| Fermi (NVC0/GF1XX) | nvidia-390xx-dkmsAUR | nvidia-390xx-utilsAUR | None | nvidia-390xx-utilsAUR | ||
| Tesla (NV50/G80-90-GT2XX) | nvidia-340xx-dkmsAUR | nvidia-340xx-utilsAUR | nvidia-340xx-utilsAUR | |||
| Curie (NV40/G70) and older | No longer packaged | |||||
- For NVIDIA Optimus enabled laptop which uses an integrated video card combined with a dedicated GPU, see NVIDIA Optimus.
- The modesetting DDX driver is recommended for for NV50 (G80) and later. See Nouveau#Installation for details.
Loading
Most driver kernel modules should load automatically on system boot.
If it does not happen, then:
- Make sure you do not have
nomodesetorvga=as a kernel parameter, since they require KMS. - Also, check that you have not disabled the driver by using any kernel module blacklisting.
Monitoring
Monitoring your GPU is often used to check the temperature, core and VRAM utilization, and the P-states of your GPU.
CLI
- amdgpu_top — Tool to display AMDGPU usage
- nvtop — GPUs process monitoring for AMD, Intel and NVIDIA
- radeontop — A GPU utilization viewer, both for the total activity percent and individual blocks. Works with ATI's R600 and newer GPUs as well as cards using the AMDGPU driver
- nvidia-smi — CLI monitoring tool for Fermi and newer NVIDIA GPUs bundled in with NVIDIA's proprietary drivers
GUI
- amdgpu_top — Tool to display AMDGPU usage
- AmdGuid — A basic fan control GUI fully written in Rust.
- Radeon Profile — A Qt5 tool to read and change current clocks of AMD Radeon cards.
- TuxClocker — A Qt5 monitoring and overclocking tool.
- Plasma System Monitor — An interface for monitoring system sensors, process information and other system resources. Bundled in with KDE Plasma.
- LACT — Control your AMD, Nvidia or Intel GPU on a Linux system.