图形处理器
图形处理器 (graphics processing unit, GPU) 是计算机中负责生成显示器所显示画面的硬件,也经常(不严谨地)称为显卡 (graphics card)。存在两种类型的设备:集成显卡 (integrated GPU, iGPU) 和独立显卡 (discrete GPU, dGPU)。在中文语境下,有时集成显卡也会不严谨地称为“核显”。
由于 GPU 擅长并行计算,因此催生了通用图形处理器 (GPGPU)。
安装
Linux 内核中已经包含了用于硬件加速帧缓冲的显卡驱动。然而,OpenGL、Vulkan、硬件视频加速和 Xorg 的 2D 加速仍然需要用户空间驱动支持。
首先,识别设备型号(输出中的第一行以及 Subsystem 一项显示了具体型号):
$ lspci -v -nn -d ::03xx
::03 表示“显示控制器 PCI 设备类”,并且 xx 表示“该类的任何子类”。您可以在安装 hwdata包 后,在 /usr/share/hwdata/pci.ids 文件中搜索 Display controller 查看。然后,安装所需的显卡驱动。参阅下方三个品牌的表格。
对于 32 位软件,需要启用 multilib 仓库并安装以 lib32- 为前缀的用户空间驱动,例如 lib32-mesa包、lib32-vulkan-radeon包、lib32-nvidia-utils包 等等。
对于 X11,其它 Device Dependent X (DDX) 驱动可以在 xorg-drivers包组 中找到,或者可以搜索 xf86-video。大部分情况下,您不需要安装任何 DDX 驱动;详情参阅 Xorg#驱动安装。
AMD
AMD 支持开源驱动。曾经提供过一个专有驱动,但已经不再打包了。[1][2]
有关各个 GPU 家族对 VA-API 的支持情况,参阅硬件视频加速#对照表了解详情。
| 文档 | GPU 家族 | DRM 驱动 | OpenGL | Vulkan | VA-API |
|---|---|---|---|---|---|
| AMDGPU | GCN 3 及更新(如 RDNA 1-4) | 包含在 Linux 中 | mesa包 | vulkan-radeon包 | mesa包 |
| AMDGPU1 / ATI | GCN 1&2 | 取决于选择的驱动 | |||
| ATI | TeraScale 1-3 | 无 | |||
| R300 到 R500 | 无 | ||||
| R100 & R200 | mesa-amber包 | ||||
| Rage 4 及更旧 | 无可用驱动 [3][4] | ||||
- 自从 linux包≥6.19 以来默认启用,但其余版本也可以手动选择驱动
Intel
Intel 提供并支持开源驱动,除了旧的基于 PowerVR 的显卡(GMA 3600 系列)不支持以外。
有关各个 GPU 家族对 VA-API 的支持情况,参阅硬件视频加速#对照表了解详情,下面只列出了软件包。
| 文档 | GPU 家族 | DRM 驱动 | OpenGL | Vulkan | VA-API |
|---|---|---|---|---|---|
| Intel 图形处理器 | Gen 12.1 及更新 | 包含在 Linux 中 | mesa包 | vulkan-intel包1 | intel-media-driver包 |
| Gen 8 到 11 |
intel-media-driver包 或旧版 libva-intel-driver包 |
||||
| Gen 7 & 7.5 | libva-intel-driver包 | ||||
| Gen 5 & 6 | 无 | ||||
| Gen 3 到 4.5 | 无 | ||||
| Gen 2 | mesa-amber包 | ||||
| Gen 1 | 无可用驱动 [5] | ||||
- Gen 7 和 7.5 只有不完整的支持,Gen 8 被限制在 Vulkan 1.3。
NVIDIA
NVIDIA 不支持完全开源的驱动。他们从 2022 年起改为使用一种混合方案(开源内核 DRM 驱动和闭源用户空间驱动)。
参阅硬件视频加速#NVIDIA以了解支持哪些 API,并参阅硬件视频加速#VDPAU 驱动了解各个 GPU 家族的支持详情。
| 许可 | 文档 | GPU 家族 | DRM 驱动 | OpenGL | Vulkan |
|---|---|---|---|---|---|
| 开源 | Nouveau1 | Kepler (NVE0/GKXXX) 及更新 | 包含在 Linux 中 | mesa包 | vulkan-nouveau包 |
| Rankine (NV30) 到 Fermi (NVC0/GF1XX) | 无 | ||||
| Fahrenheit (NV04/05) 到 Kelvin (NV20) | mesa-amber包 | ||||
| 开源 DRM 驱动、专有用户空间驱动 | NVIDIA1 | Turing (NV160/TUXXX) 及更新 | nvidia-open包 | nvidia-utils包 | |
| 专有 |
Maxwell (NV110/GMXXX) 到 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 | 无 | ||
| Tesla (NV50/G80-90-GT2XX) | nvidia-340xx-dkmsAUR | nvidia-340xx-utilsAUR | |||
| Curie (NV40/G70) 及更旧 | 不再打包 | ||||
- 对于同时使用集成显卡和独立显卡、且启用了 NVIDIA Optimus 的笔记本电脑,参阅 NVIDIA Optimus。
加载
大部分驱动的内核模块会在系统启动时自动加载。
如果没有自动加载,那么:
监控
监控 GPU 的工具经常用于查看 GPU 的温度、核心和显存 (VRAM) 使用率、以及 P-state。
CLI
- amdgpu_top — 显示 AMDGPU 使用率的工具
- nvtop — 支持 AMD、Intel 和 NVIDIA 的 GPU 进程监视器
- radeontop — GPU 使用率查看器,支持显示总体的活动百分比和各个部分的使用情况。支持 ATI R600 或更新的显卡,以及使用 AMDGPU 驱动的显卡。
- nvidia-smi — NVIDIA 专有驱动捆绑的命令行监控工具,支持 Fermi 或更新的 NVIDIA GPU
GUI
- amdgpu_top — 显示 AMDGPU 使用率的工具
- AmdGuid — 一个基础的风扇控制 GUI,完全使用 Rust 编写
- Radeon Profile — 用于读取和更改 AMD Radeon 显卡当前时钟频率的 Qt5 工具
- TuxClocker — 基于 Qt5 的监控和超频工具
- Plasma System Monitor — 一个显示系统传感器、进程信息和其它系统资源的界面。捆绑在 KDE Plasma 中。
- LACT — 在 Linux 系统上控制您的 AMD、Nvidia 或 Intel GPU