Jump to content

Graphics processing unit

From ArchWiki

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
Tip ::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]

Tip For a translation of model names (e.g. Radeon RX 6600) to GPU family (e.g. RDNA 2), see Wikipedia:List of AMD graphics processing units#Features overview.

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]
  1. Enabled by default since linux≥6.19, can be manually chosen otherwise
  2. 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.

Tip Intel's Gen N hardware does not refer to the generation of the CPU, it refers to the generation of the GPU, which is different from the generation of the CPU.

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
  1. Gen 7 and 7.5 have incomplete support, Gen 8 is limited to Vulkan 1.3.
  2. 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.

Tip For a translation of model names (e.g. RTX 4060) to GPU family (e.g. NV190), see nouveau wiki's code names page.

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
  1. For NVIDIA Optimus enabled laptop which uses an integrated video card combined with a dedicated GPU, see NVIDIA Optimus.
  2. 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:

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
https://github.com/Umio-Yasuno/amdgpu_top || amdgpu_top
  • nvtop — GPUs process monitoring for AMD, Intel and NVIDIA
https://github.com/Syllo/nvtop || nvtop
  • 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
https://github.com/clbr/radeontop || radeontop
  • nvidia-smi — CLI monitoring tool for Fermi and newer NVIDIA GPUs bundled in with NVIDIA's proprietary drivers
https://docs.nvidia.com/deploy/nvidia-smi/index.html || nvidia-utils

GUI

  • amdgpu_top — Tool to display AMDGPU usage
https://github.com/Umio-Yasuno/amdgpu_top || amdgpu_top
  • AmdGuid — A basic fan control GUI fully written in Rust.
https://github.com/Eraden/amdgpud || amdguid-wayland-binAUR, amdguid-glow-binAUR
  • Radeon Profile — A Qt5 tool to read and change current clocks of AMD Radeon cards.
https://github.com/emerge-e-world/radeon-profile || radeon-profile-gitAUR
  • TuxClocker — A Qt5 monitoring and overclocking tool.
https://github.com/Lurkki14/tuxclocker || tuxclockerAUR
  • Plasma System Monitor — An interface for monitoring system sensors, process information and other system resources. Bundled in with KDE Plasma.
https://apps.kde.org/plasma-systemmonitor/ || plasma-systemmonitor
  • LACT — Control your AMD, Nvidia or Intel GPU on a Linux system.
https://github.com/ilya-zlobintsev/LACT || lact