NVIDIA

来自 ArchWiki

本文介绍官方 NVIDIA 显卡驱动程序。有关社区开源驱动程序,请参阅 Nouveau。如果您有配备混合显卡的笔记本电脑,另请参阅 NVIDIA Optimus

安装

警告: 避免通过 NVIDIA 网站提供的软件包安装 NVIDIA 驱动程序。通过 pacman 安装允许将驱动程序与系统的其余部分一起升级。
注意: 在具有混合显卡的系统上双启动时,启用 Windows 或第三方应用程序的Eco 模式(如 ASUS Eco 模式)可能会完全禁用 NVIDIA 独立 GPU,使其无法被检测到。

首先,在 nouveau wiki 的代码名称页面上找到您的显卡系列(例如 NV110、NVC0 等),对应于使用以下命令获得的型号/官方名称

$ lspci -k -d ::03xx

然后,为您的显卡安装适当的驱动程序

GPU 系列 驱动程序 状态
Turing (NV160/TUXXX) 及更新型号 nvidia-open 用于 linux
nvidia-open-lts 用于 linux-lts
nvidia-open-dkms 用于任何内核
上游推荐
当前,受支持1
Maxwell (NV110/GMXXX)
Ada Lovelace (NV190/ADXXX)
nvidia 用于 linux
nvidia-lts 用于 linux-lts
nvidia-dkms 用于任何内核
当前,受支持1
Kepler (NVE0/GKXXX) nvidia-470xx-dkmsAUR 旧版,不受支持2,3
Fermi (NVC0/GF1XX) nvidia-390xx-dkmsAUR
Tesla (NV50/G80-90-GT2XX) nvidia-340xx-dkmsAUR
Curie (NV40/G70) 及更旧型号 不再打包
  1. 如果这些软件包不起作用,通常是由于新的硬件版本发布,nvidia-open-betaAUR 可能有更新的驱动程序版本提供支持。
  2. 在具有 Intel CPU 第 11 代及更新型号 的系统上,Linux 5.18(或更高版本)可能无法正常运行,这是由于与 间接分支跟踪不兼容。您可以通过从 引导加载程序 设置 ibt=off 内核参数 来禁用它。请注意,此安全功能负责缓解一类利用技术
  3. NVIDIA 不再积极支持这些显卡及其驱动程序,并且它们的驱动程序 可能不正式支持当前的 Xorg 版本。使用 nouveau 驱动程序可能更容易;但是,NVIDIA 的旧版驱动程序仍然可用,并且可能提供更好的 3D 性能/稳定性。
注意

为了获得 32 位应用程序支持,还要从 multilib 仓库安装相应的 lib32 软件包(例如 lib32-nvidia-utils)。

/etc/mkinitcpio.conf 中的 HOOKS 数组中删除 kms,并重新生成 initramfs。这将防止 initramfs 包含 nouveau 模块,确保内核在早期启动期间无法加载它。nvidia-utils 软件包包含一个文件,该文件会在您重新启动后将 nouveau 模块列入黑名单。

注意: 如果您正在使用 Wayland,则在遵循 #DRM 内核模式设置 之前,您不应重新启动,否则您可能会遇到黑屏。

驱动程序安装完成后,继续进行 #Xorg 配置#Wayland 配置

自定义内核

确保您的内核具有 CONFIG_DRM_SIMPLEDRM=y,并且如果使用 CONFIG_DEBUG_INFO_BTF,则 PKGBUILD 中需要此选项(自内核 5.16 起)

install -Dt "$builddir/tools/bpf/resolve_btfids" tools/bpf/resolve_btfids/resolve_btfids

DRM 内核模式设置

由于 NVIDIA 不支持 自动 KMS 延迟加载,因此需要启用 DRM (Direct Rendering Manager) 内核模式设置 才能使 Wayland 合成器正常运行,或者允许 Xorg#Rootless Xorg

nvidia-utils 560.35.03-5 开始,DRM 默认启用。[1] 对于旧版驱动程序,请为 nvidia_drm 模块设置 modeset=1 内核模块参数

要验证 DRM 是否实际启用,请执行以下操作

# cat /sys/module/nvidia_drm/parameters/modeset

现在应返回 Y,而不是 N

注意: Arch 官方支持的内核 启用 simpledrm,而当 nvidia_drm.fbdev 被禁用/不可用时(版本 < 545),NVIDIA 驱动程序需要 efifbvesafb

提前加载

对于基本功能,只需添加内核参数就足够了。如果您想确保它尽早加载,或者您注意到启动问题(例如 nvidia 内核模块在 显示管理器 之后加载),您可以将 nvidianvidia_modesetnvidia_uvmnvidia_drm 添加到 initramfs。请参阅 Kernel module#Early module loading 以了解如何配置您的 initramfs 生成器。mkinitcpio 用户可能还需要在每次 nvidia 驱动程序更新时重新生成 initramfs 镜像。请参阅 #pacman 钩子 以自动化这些步骤。

pacman 钩子
注意: 自定义 pacman 钩子仅适用于发布内置内核模块的软件包。*-dkms 软件包不需要它,因为它们的升级将自动触发 mkinitcpio 运行。

为了避免在 NVIDIA 驱动程序升级后忘记更新 initramfs 的可能性,您可能需要使用 pacman 钩子

/etc/pacman.d/hooks/nvidia.hook
[Trigger]
Operation=Install
Operation=Upgrade
Operation=Remove
Type=Package
# You can remove package(s) that don't apply to your config, e.g. if you only use nvidia-open you can remove nvidia-lts as a Target
Target=nvidia
Target=nvidia-open
Target=nvidia-lts
# If running a different kernel, modify below to match
Target=linux

[Action]
Description=Updating NVIDIA module in initcpio
Depends=mkinitcpio
When=PostTransaction
NeedsTargets
Exec=/bin/sh -c 'while read -r trg; do case $trg in linux*) exit 0; esac; done; /usr/bin/mkinitcpio -P'
注意: 上面 Exec 行中的复杂性是为了避免在 nvidialinux 都更新时多次运行 mkinitcpio。如果这种情况不会困扰您,则可以删除 Target=linuxNeedsTargets 行,并且可以将 Exec 行简化为 Exec=/usr/bin/mkinitcpio -P

硬件加速视频解码

GeForce 8 系列显卡及更新型号支持使用 VDPAU 进行加速视频解码。Fermi (~400 系列) 显卡及更新型号支持使用 NVDEC 进行加速视频解码。有关详细信息,请参阅 Hardware video acceleration

使用 NVENC 的硬件加速视频编码

NVENC 需要 nvidia_uvm 模块和在 /dev 下创建相关的设备节点。

最新的驱动程序软件包提供了一个 udev 规则,该规则会自动创建设备节点,因此无需进一步操作。

如果您使用的是旧版驱动程序(例如 nvidia-340xx-dkmsAUR),则需要创建设备节点。调用 nvidia-modprobe 实用程序会自动创建它们。您可以创建 /etc/udev/rules.d/70-nvidia.rules 以自动运行它

/etc/udev/rules.d/70-nvidia.rules
ACTION=="add", DEVPATH=="/bus/pci/drivers/nvidia", RUN+="/usr/bin/nvidia-modprobe -c 0 -u"

Wayland 配置

关于 Xwayland,请查看 Wayland#Xwayland

有关更多配置选项,请查看相应 合成器的 wiki 页面或文档。

注意: 在驱动程序版本 555.xx 之前,或者当使用不支持通过 linux-drm-syncobj-v1 协议进行显式同步的 Wayland 合成器时,NVIDIA 驱动程序可能会出现主要问题,表现为闪烁、帧序混乱等,无论是在原生 Wayland 应用程序还是 Xwayland 应用程序中。

基本支持

nvidia_drm 模块有两个内核参数需要考虑:modesetfbdev。当使用 nvidia-utils 软件包时,两者都默认启用。NVIDIA 也计划在未来的版本中默认启用它们

modeset

启用 modeset 对于所有 Wayland 配置都是必要的。

对于不支持的驱动程序,其中需要手动启用 modeset,请参阅 #DRM 内核模式设置Wayland#Requirements 以获取更多信息。

fbdev

启用 fbdev 对于某些 Wayland 配置是必要的。

它特别是在 Linux 6.11 及更高版本上的硬性要求,但目前尚不清楚这是否是预期行为还是错误,请参阅 [2] 了解更多详细信息。

它可以像 modesetting 参数 一样设置,区别在于执行

# cat /sys/module/nvidia_drm/parameters/fbdev

如果根本未设置,则会返回文件丢失错误,而不是 N

挂起支持

Wayland 挂起可能比 X 更容易受到默认值的影响,请参阅 /Tips and tricks#Preserve video memory after suspend 了解详细信息。

如果您使用 GDM,另请参阅 GDM#Wayland and the proprietary NVIDIA driver

Xorg 配置

专有的 NVIDIA 显卡驱动程序不需要任何 Xorg 服务器配置文件。您可以启动 X 以查看 Xorg 服务器是否在没有配置文件的情况下正常运行。但是,可能需要创建一个配置文件(首选 /etc/X11/xorg.conf.d/20-nvidia.conf 而不是 /etc/X11/xorg.conf)以调整各种设置。此配置可以由 NVIDIA Xorg 配置工具生成,也可以手动创建。如果手动创建,它可以是最小配置(从某种意义上说,它只会将基本选项传递给 Xorg 服务器),或者它可以包含许多可以绕过 Xorg 的自动发现或预配置选项的设置。

提示: 有关更多配置选项,请参阅 NVIDIA/故障排除

自动配置

NVIDIA 软件包包含一个自动配置工具,用于创建 Xorg 服务器配置文件 (xorg.conf),可以通过以下方式运行

# nvidia-xconfig

此命令将根据当前硬件自动检测并创建(或编辑,如果已存在)/etc/X11/xorg.conf 配置。

如果存在 DRI 实例,请确保将其注释掉

#    Load        "dri"

仔细检查您的 /etc/X11/xorg.conf 以确保您的默认深度、水平同步、垂直刷新率和分辨率是可以接受的。

nvidia-settings

nvidia-settings 工具允许您使用 CLI 或 GUI 配置许多选项。运行 nvidia-settings 不带任何选项将启动 GUI,有关 CLI 选项,请参阅 nvidia-settings(1)

您可以以非 root 用户身份运行 CLI/GUI,并通过使用nvidia-settings Configuration 选项卡下的Save Current Configuration 选项将设置保存到 ~/.nvidia-settings-rc

要为当前用户加载 ~/.nvidia-settings-rc

$ nvidia-settings --load-config-only

请参阅 Autostarting 以在每次启动时启动此命令。

注意

手动配置

可以通过编辑配置文件来执行一些调整(无法自动或使用 nvidia-settings 启用)。Xorg 服务器需要重新启动后才能应用任何更改。

有关其他详细信息和选项,请参阅 NVIDIA Accelerated Linux Graphics Driver README and Installation Guide

最小化配置

20-nvidia.conf(或已弃用的 xorg.conf)中的基本配置块如下所示

/etc/X11/xorg.conf.d/20-nvidia.conf
Section "Device"
        Identifier "NVIDIA Card"
        Driver "nvidia"
        VendorName "NVIDIA Corporation"
        BoardName "GeForce GTX 1050 Ti"
EndSection

启动时禁用徽标

如果您使用的是旧版驱动程序 (nvidia-340xx-dkmsAUR),您可能希望禁用在 X 启动时显示的 NVIDIA 徽标启动画面。在 Device 部分下添加 "NoLogo" 选项

Option "NoLogo" "1"

覆盖显示器检测

Device 部分下的 "ConnectedMonitor" 选项允许在 X 服务器启动时覆盖显示器检测,这可以节省大量启动时间。可用选项包括:模拟连接的 "CRT",数字显示器的 "DFP" 和电视的 "TV"

以下语句强制 NVIDIA 驱动程序绕过启动检查并将显示器识别为 DFP

Option "ConnectedMonitor" "DFP"
注意: 对于所有模拟 15 针 VGA 连接,即使显示器是平板显示器,也请使用 "CRT"。"DFP" 仅适用于 DVI、HDMI 或 DisplayPort 数字连接。

启用亮度控制

本文或章节已过时。

原因: 可能已过时[3],上游软件包似乎也很旧。(在 Talk:NVIDIA 中讨论)

添加到内核参数

nvidia.NVreg_RegistryDwords=EnableBrightnessControl=1

或者,在 Device 部分下添加以下内容

Option "RegistryDwords" "EnableBrightnessControl=1"

如果亮度控制仍然无法使用此选项,请尝试安装 nvidia-bl-dkmsAUR

注意: 安装 nvidia-bl-dkmsAUR 将提供一个 /sys/class/backlight/nvidia_backlight/ 接口来控制背光亮度,但您的系统可能会继续在 /sys/class/backlight/acpi_video0/ 上发出背光控制更改。在这种情况下,一种解决方案是使用 inotifywait 监视 acpi_video0/brightness 上的更改,并将更改转换为 nvidia_backlight/brightness 并写入。请参阅 Backlight#sysfs modified but no brightness change

启用 SLI

警告: 由于 GTX 10xx 系列 (1080, 1070, 1060 等) 仅支持 2-way SLI。3-way 和 4-way SLI 可能适用于 CUDA/OpenCL 应用程序,但很可能会破坏所有 OpenGL 应用程序。

摘自 NVIDIA 驱动程序的 README 附录 B:此选项控制受支持配置中 SLI 渲染的配置。 “受支持的配置”是指配备了 SLI 认证主板和 2 个或 3 个 SLI 认证 GeForce GPU 的计算机。

使用 lspci 找到第一个 GPU 的 PCI 总线 ID

# lspci -d ::03xx
00:02.0 VGA compatible controller: Intel Corporation Xeon E3-1200 v2/3rd Gen Core processor Graphics Controller (rev 09)
03:00.0 VGA compatible controller: NVIDIA Corporation GK107 [GeForce GTX 650] (rev a1)
04:00.0 VGA compatible controller: NVIDIA Corporation GK107 [GeForce GTX 650] (rev a1)
08:00.0 3D controller: NVIDIA Corporation GM108GLM [Quadro K620M / Quadro M500M] (rev a2)

Device 部分下添加 BusID(上例中为 3)

BusID "PCI:3:0:0"
注意: 格式很重要。BusID 值必须指定为 "PCI:<BusID>:0:0"

Screen 部分下添加所需的 SLI 渲染模式值

Option "SLI" "AA"

下表列出了可用的渲染模式。

行为
0, no, off, false, Single 渲染时仅使用单个 GPU。
1, yes, on, true, Auto 启用 SLI 并允许驱动程序自动选择适当的渲染模式。
AFR 启用 SLI 并使用交替帧渲染模式。
SFR 启用 SLI 并使用分割帧渲染模式。
AA 启用 SLI 并使用 SLI 抗锯齿。将此选项与全场景抗锯齿结合使用以提高视觉质量。

或者,您可以使用 nvidia-xconfig 实用程序通过单个命令将这些更改插入到 xorg.conf

# nvidia-xconfig --busid=PCI:3:0:0 --sli=AA

要从 shell 验证 SLI 模式是否已启用

$ nvidia-settings -q all | grep SLIMode
  Attribute 'SLIMode' (arch:0.0): AA
    'SLIMode' is a string attribute.
    'SLIMode' is a read-only attribute.
    'SLIMode' can use the following target types: X Screen.
警告: 启用 SLI 后,您的系统在启动 xorg 时可能会变得冻结/无响应。建议您在重新启动之前禁用显示管理器。

如果此配置不起作用,您可能需要使用 nvidia-settings 提供的 PCI 总线 ID,

$ nvidia-settings -q all | grep -i pcibus
Attribute 'PCIBus' (host:0[gpu:0]): 101.
  'PCIBus' is an integer attribute.
  'PCIBus' is a read-only attribute.
  'PCIBus' can use the following target types: GPU, SDI Input Device.
Attribute 'PCIBus' (host:0[gpu:1]): 23.
  'PCIBus' is an integer attribute.
  'PCIBus' is a read-only attribute.
  'PCIBus' can use the following target types: GPU, SDI Input Device.

并注释掉 xorg.d 配置中的 PrimaryGPU 选项,

/usr/share/X11/xorg.conf.d/10-nvidia-drm-outputclass.conf
...

Section "OutputClass"
...
    # Option "PrimaryGPU" "yes"
...

使用此配置也可能解决任何图形启动问题。

多显示器

有关更多常规信息,请参阅 Multihead

使用 nvidia-settings

nvidia-settings 工具可以配置多个显示器。

对于 CLI 配置,首先运行以下命令获取 CurrentMetaMode

$ nvidia-settings -q CurrentMetaMode
Attribute 'CurrentMetaMode' (hostnmae:0.0): id=50, switchable=no, source=nv-control :: DPY-1: 2880x1620 @2880x1620 +0+0 {ViewPortIn=2880x1620, ViewPortOut=2880x1620+0+0}

:: 之后的所有内容保存到属性的末尾(在本例中为:DPY-1: 2880x1620 @2880x1620 +0+0 {ViewPortIn=2880x1620, ViewPortOut=2880x1620+0+0}),并使用 nvidia-settings --assign "CurrentMetaMode=your_meta_mode" 重新配置您的显示器。

提示: 您可以为您使用的不同显示器和分辨率配置创建 shell 别名。

ConnectedMonitor

如果驱动程序未正确检测到第二个显示器,您可以使用 ConnectedMonitor 强制其检测。

/etc/X11/xorg.conf
Section "Monitor"
    Identifier     "Monitor1"
    VendorName     "Panasonic"
    ModelName      "Panasonic MICRON 2100Ex"
    HorizSync       30.0 - 121.0 # this monitor has incorrect EDID, hence Option "UseEDIDFreqs" "false"
    VertRefresh     50.0 - 160.0
    Option         "DPMS"
EndSection

Section "Monitor"
    Identifier     "Monitor2"
    VendorName     "Gateway"
    ModelName      "GatewayVX1120"
    HorizSync       30.0 - 121.0
    VertRefresh     50.0 - 160.0
    Option         "DPMS"
EndSection

Section "Device"
    Identifier     "Device1"
    Driver         "nvidia"
    Option         "NoLogo"
    Option         "UseEDIDFreqs" "false"
    Option         "ConnectedMonitor" "CRT,CRT"
    VendorName     "NVIDIA Corporation"
    BoardName      "GeForce 6200 LE"
    BusID          "PCI:3:0:0"
    Screen          0
EndSection

Section "Device"
    Identifier     "Device2"
    Driver         "nvidia"
    Option         "NoLogo"
    Option         "UseEDIDFreqs" "false"
    Option         "ConnectedMonitor" "CRT,CRT"
    VendorName     "NVIDIA Corporation"
    BoardName      "GeForce 6200 LE"
    BusID          "PCI:3:0:0"
    Screen          1
EndSection

重复的带有 Screen 的设备是您如何在不使用 TwinView 的情况下让 X 在一张显卡上使用两个显示器。请注意,nvidia-settings 将剥离您添加的任何 ConnectedMonitor 选项。

TwinView

您只需要一个大屏幕而不是两个。将 TwinView 参数设置为 1。如果您希望进行合成,则应使用此选项。TwinView 仅在每个显卡的基础上工作,当所有参与的显示器都连接到同一张显卡时。

Option "TwinView" "1"

示例配置

/etc/X11/xorg.conf.d/10-monitor.conf
Section "ServerLayout"
    Identifier     "TwinLayout"
    Screen         0 "metaScreen" 0 0
EndSection

Section "Monitor"
    Identifier     "Monitor0"
    Option         "Enable" "true"
EndSection

Section "Monitor"
    Identifier     "Monitor1"
    Option         "Enable" "true"
EndSection

Section "Device"
    Identifier     "Card0"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"

    #refer to the link below for more information on each of the following options.
    Option         "HorizSync"          "DFP-0: 28-33; DFP-1: 28-33"
    Option         "VertRefresh"        "DFP-0: 43-73; DFP-1: 43-73"
    Option         "MetaModes"          "1920x1080, 1920x1080"
    Option         "ConnectedMonitor"   "DFP-0, DFP-1"
    Option         "MetaModeOrientation" "DFP-1 LeftOf DFP-0"
EndSection

Section "Screen"
    Identifier     "metaScreen"
    Device         "Card0"
    Monitor        "Monitor0"
    DefaultDepth    24
    Option         "TwinView" "True"
    SubSection "Display"
        Modes          "1920x1080"
    EndSubSection
EndSection

设备选项信息.

如果您有多张支持 SLI 的显卡,则可以将多个显示器连接到不同的显卡(例如:两张 SLI 显卡,每张显卡连接一个显示器)。“MetaModes”选项与 SLI Mosaic 模式结合使用可以实现此目的。以下是适用于上述示例并完美运行 GNOME 的配置。

/etc/X11/xorg.conf.d/10-monitor.conf
Section "Device"
        Identifier      "Card A"
        Driver          "nvidia"
        BusID           "PCI:1:00:0"
EndSection

Section "Device"
        Identifier      "Card B"
        Driver          "nvidia"
        BusID           "PCI:2:00:0"
EndSection

Section "Monitor"
        Identifier      "Right Monitor"
EndSection

Section "Monitor"
        Identifier      "Left Monitor"
EndSection

Section "Screen"
        Identifier      "Right Screen"
        Device          "Card A"
        Monitor         "Right Monitor"
        DefaultDepth    24
        Option          "SLI" "Mosaic"
        Option          "Stereo" "0"
        Option          "BaseMosaic" "True"
        Option          "MetaModes" "GPU-0.DFP-0: 1920x1200+4480+0, GPU-1.DFP-0:1920x1200+0+0"
        SubSection      "Display"
                        Depth           24
        EndSubSection
EndSection

Section "Screen"
        Identifier      "Left Screen"
        Device          "Card B"
        Monitor         "Left Monitor"
        DefaultDepth    24
        Option          "SLI" "Mosaic"
        Option          "Stereo" "0"
        Option          "BaseMosaic" "True"
        Option          "MetaModes" "GPU-0.DFP-0: 1920x1200+4480+0, GPU-1.DFP-0:1920x1200+0+0"
        SubSection      "Display"
                        Depth           24
        EndSubSection
EndSection

Section "ServerLayout"
        Identifier      "Default"
        Screen 0        "Right Screen" 0 0
        Option          "Xinerama" "0"
EndSection
使用 TwinView 的垂直同步

如果您正在使用 TwinView 和垂直同步(nvidia-settings 中的“Sync to VBlank”选项),您会注意到只有一块屏幕被正确同步,除非您有两个相同的显示器。尽管 nvidia-settings 确实提供了一个选项来更改要同步的屏幕(“Sync to this display device”选项),但这并不总是有效。一种解决方案是在启动时添加以下环境变量,例如在 /etc/profile 中附加

export __GL_SYNC_TO_VBLANK=1
export __GL_SYNC_DISPLAY_DEVICE=DFP-0
export VDPAU_NVIDIA_SYNC_DISPLAY_DEVICE=DFP-0

您可以将 DFP-0 更改为您首选的屏幕(DFP-0 是 DVI 端口,CRT-0 是 VGA 端口)。您可以从 nvidia-settings 的“X Server XVideoSettings”部分找到显示器的标识符。

使用 TwinView 游戏

如果您想在使用 TwinView 时玩全屏游戏,您会注意到游戏将两个屏幕识别为一个大屏幕。虽然这在技术上是正确的(虚拟 X 屏幕确实是您的屏幕组合的大小),但您可能不想同时在两个屏幕上玩游戏。

要纠正 SDL 的此行为,请尝试

export SDL_VIDEO_FULLSCREEN_HEAD=1

对于 OpenGL,请在 Device 部分中将适当的 Metamodes 添加到您的 xorg.conf 并重新启动 X

Option "Metamodes" "1680x1050,1680x1050; 1280x1024,1280x1024; 1680x1050,NULL; 1280x1024,NULL;"

另一种可能单独工作或与上述方法结合使用的方法是在单独的 X 服务器中启动游戏

Mosaic 模式

Mosaic 模式是在多个显卡上使用超过 2 个显示器进行合成的唯一方法。您的窗口管理器可能无法识别每个显示器之间的区别。Mosaic 模式需要有效的 SLI 配置。即使在使用没有 SLI 的 Base 模式时,GPU 也必须是 SLI 兼容/兼容的。

Base Mosaic

Base Mosaic 模式适用于任何一组 Geforce 8000 系列或更高版本的 GPU。无法从 nvidia-setting GUI 中启用它。您必须使用 nvidia-xconfig 命令行程序或手动编辑 xorg.conf。必须指定 Metamodes。以下是 2x2 配置中四个 DFP 的示例,每个 DFP 以 1920x1024 运行,两个 DFP 连接到两张显卡

$ nvidia-xconfig --base-mosaic --metamodes="GPU-0.DFP-0: 1920x1024+0+0, GPU-0.DFP-1: 1920x1024+1920+0, GPU-1.DFP-0: 1920x1024+0+1024, GPU-1.DFP-1: 1920x1024+1920+1024"
注意: 虽然文档列出了 2x2 显示器配置,但 GeForce 显卡在 Base Mosaic 模式下人为地限制为 3 个显示器。Quadro 显卡支持超过 3 个显示器。截至 2014 年 9 月,Windows 驱动程序已取消此人为限制,但它仍然存在于 Linux 驱动程序中。
SLI Mosaic

如果您有 SLI 配置,并且每个 GPU 都是 Quadro FX 5800、Quadro Fermi 或更新型号,则可以使用 SLI Mosaic 模式。可以从 nvidia-settings GUI 中启用它,也可以从命令行中使用以下命令启用它

$ nvidia-xconfig --sli=Mosaic --metamodes="GPU-0.DFP-0: 1920x1024+0+0, GPU-0.DFP-1: 1920x1024+1920+0, GPU-1.DFP-0: 1920x1024+0+1024, GPU-1.DFP-1: 1920x1024+1920+1024"

NVswitch

本文或章节需要语言、wiki 语法或样式改进。请参阅 Help:Style 以获取参考。

原因: 需要进行多处小修补,关于 fabric manager 的说明应制作成 AUR 软件包。(在 Talk:NVIDIA 中讨论)

对于具有 NVswitch 的系统,如 AWS 上的 H100x8,需要以下操作。

  • 安装 nvidia-fabricmanager
  • 安装 fabric manager 所需的匹配内核模块

使用 fabricmanager,pytorch 会报告找不到 GPU。

要安装 fabric manager

  1. 从 nvidia 下载 tarball。此处
  2. 版本 555.42.02 效果良好
  3. 修改 sbin/fm_run_package_installer.sh 中的安装脚本以修复已安装的文件路径

要获取匹配的内核驱动程序

  1. git 克隆 nvidia-beta-dkms 和 nvidia-utils-beta 的 AUR
  2. 更改 PKGBUILD 以使用版本 555.42.02
  3. 构建并安装它们
  4. 重启

最后,systemctl enable nvidia-fabricmanagersystemctl start nvidia-fabricmanager,然后 pytorch 应该可以工作了。

技巧和窍门

请参阅 NVIDIA/技巧和窍门

故障排除

请参阅 NVIDIA/故障排除

参见