Jump to content

# Graphics processing unit

From ArchWiki

Related articles

- NVIDIA
- AMDGPU
- Intel
- Wayland
- Xorg
- OpenGL
- Vulkan
- Hardware video acceleration
- External GPU

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:

- Make sure you do not have `nomodeset` or `vga=` 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

  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

Category:

- Graphics

Graphics processing unit
Add topic