跳至內容
出自 Arch Linux 中文维基

本文包含安裝和配置 NVIDIA 官方顯卡驅動的信息。想要了解社區開源驅動的信息,參見 Nouveau。如果你使用具有混合顯卡的筆記本(如Intel核顯+Nvidia顯卡), 請參閱 NVIDIA Optimus 頁面。

安裝

警告:請避免從 NVIDIA 官網下載驅動包進行安裝。通過使用 Arch Linux 的 pacman 來安裝,NVIDIA 驅動能夠在更新系統時與其他組件一同更新。
注意:在具有混合圖形技術的機型上雙重啟動時,啟用Windows或第三方應用中的 集顯模式/節能模式 可能會完全禁用NVIDIA獨立顯卡(例如ASUS節能模式),導致其無法被檢測到。

首先,從nouveau 英偉達代號查詢頁中查找您的顯卡系列代號(例如:NV110, NVC0)。您也可以運行以下命令獲知顯卡型號/名稱:

$ lspci -k -d ::03xx

隨後為您的顯卡安裝合適的驅動:

注意:
  • 使用 dkms 安裝時, 請參閱 DKMS#安裝 部分
  • 使用DKMS方式安裝的驅動並不與特定內核綁定,其會為安裝了頭文件的每個內核重新編譯NVIDIA內核模塊。
GPU 家族 驅動 支持狀態
Turing (NV160/TUXXX)系列或更新版本 nvidia-open (適用於linux)
nvidia-open-lts(適用於linux-lts)
nvidia-open-zenCNRepo(適用於linux-zen)
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) 以及更老的系列 Arch Linux沒有相應的驅動包
  1. 如果以上驅動安裝後都不能正常工作,您也許需要使用 nvidia-open-betaAUR 以獲得更新版本的驅動。
  2. 在安裝了 Intel CPU 11 代或更新版本的處理器以及Linux 5.18 (或更高版本)的系統上可能無法正常工作,原因是與其與 Indirect Branch Tracking 這個安全功能不兼容。您可以在 Arch_的啟動流程中設置 ibt=off 內核參數來禁用它。請注意,這項安全功能負責緩解一些攻擊技術的影響
  3. Nvidia不再積極為這些顯卡提供驅動。這意味著這些驅動不正式支持現在的Xorg版本。因此使用 Nouveau 驅動可能會更方便,因為它依然為這些老顯卡提供對當前Xorg的支持。但是,Nvidia 提供的 legacy 驅動依舊可用,並且或許擁有更好的 3D 性能(穩定性)。

對於 32 位應用程式支持,請安裝 multilib 倉庫中對應的 lib32 nvidia 軟體包(例如 lib32-nvidia-utils)。

kms/etc/mkinitcpio.conf 裡的HOOKS 數組中移除,並重新生成 initramfs。 這能防止 initramfs 包含 nouveau 模塊,以確保內核在早啟動階段不會加載它。nvidia-utils 軟體包包含一個文件,其將會在重啟後屏蔽 nouveau 內核模塊。

注意:如果您正在使用 Wayland ,您需要首先配置 #DRM 內核級顯示模式設置 後重啟,否則您可能會遇到黑屏。

一旦驅動安裝完畢,就可以進入下一步了:#Xorg配置#Wayland 配置

定製內核

安裝 nvidia-dkms 軟體包以及你內核對應的頭文件。

確保您的內核設置了 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 晚加載, 要正常運行Wayland 合成器或沒有 root 權限的 Xorg,您必須啟用 DRM (直接渲染管理器)內核級顯示模式設置

nvidia-utils 560.35.03-5 版本後默認啟用 DRM (Direct Rendering Manager) 內核級顯示模式設置。對於更舊的版本,請為nvidia_drm模塊設置內核模塊參數 modeset=1

使用以下命令驗證DRM是否自動啟用:

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

其應當返回 Y

警告:官方支持的內核 默認啟用 simpledrm, 如您使用545或更舊版本的NVIDIA驅動,您需要設置內核模塊參數 nvidia_drm.fbdev。因為當其不被啟用時,NVIDIA 驅動程序嘗試使用 efifbvesafb 進行幀緩衝(其無法在simpledrm下工作)。
注意:版本 470 之前的 NVIDIA 驅動程序 ( 例如 nvidia-390xx-dkmsAUR) 不支持對 XWayland 進行硬體加速,導致非 Wayland 原生應用程式在 Wayland 會話中性能不佳。

早啟動

對於基本功能,只需添加內核參數就足夠了。如果您希望確保驅動能被最早加載,或者遇到了啟動問題(例如 nvidia 內核模塊在顯示管理器啟動後才被加載),可以將 nvidianvidia_modesetnvidia_uvmnvidia_drm 添加到 initramfs 中。請參閱內核模塊#早期模塊加載以了解如何配置您的 initramfs 生成器。mkinitcpio用戶可能還需要在每次nvidia驅動程序更新時重新生成 initramfs映像。請參閱#Pacman 鉤子以自動化這些步驟

mkinitcpio

如果使用 mkinitcpio initramfs,請按照 mkinitcpio#MODULES 添加模塊。

如果你將驅動添加到了 initramfs 中,記得每次更新 nvidia 驅動程序後都要運行 mkinitcpio。請參見 #pacman hook 來自動執行這些步驟。

Booster

如果您使用的是 Booster,請參閱 Booster#早期加載內核模塊

dracut

如果您使用的是 dracut,請參閱 dracut#早期內核模塊加載

Pacman 鉤子

為了避免更新 NVIDIA 驅動之後忘了更新 initramfs,你可以使用 Pacman Hooks

/etc/pacman.d/hooks/nvidia.hook
[Trigger]
Operation=Install
Operation=Upgrade
Operation=Remove
Type=Package
Target=nvidia
Target=linux
# Change the linux part above and in the Exec line if a different kernel is used
# 如果使用不同的內核,請更改上面的 linux 部分和 Exec 行中的內容,例如更改為Target=nvidia-open

[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'

務必保證 Target 項所設置的軟體包與你在前面的安裝過程中所使用的相符(例如nvidianvidia-dkmsnvidia-ltsnvidia-ck-something等)。

注意:Exec 那一行看起來非常複雜,是為了避免在 nvidialinux 軟體包都發生更新的時候重複運行 mkinitcpio。如果你覺得無所謂,可以刪掉 Target=linux 以及 NeedsTargets,然後 Exec 就可以簡化為 Exec=/usr/bin/mkinitcpio -P.

硬體加速視頻解碼

GeForce 8 系列及更新的顯卡通過 VDPAU 進行視頻硬體解碼。費米架構(400、500系列)及更新的顯卡支持通過 NVDEC 進行硬體加速解碼。參見硬體視頻加速

基於 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"

Xorg 配置

NVIDIA專有驅動不需要任何 Xorg 伺服器配置文件。您可以啟動 X 來檢驗沒有配置文件的 Xorg 能否正確運行。但是,您可能需要創建配置文件(優先創建/etc/X11/xorg.conf.d/20-nvidia.conf而不是/etc/X11/xorg.conf)來調整 Xorg 運行時的一些設置。您可以用NVIDIA Xorg 配置工具來生成配置,也可以手動創建它。假如是手動創建的話,它可以是一個最小配置文件(也就是意味著它僅僅把一些基礎的選項傳給 Xorg 伺服器),也可以是包含大量的繞開Xorg 自動發現與預配置選項的設置的文件。

提示:更多配置項相關內容參見 NVIDIA/故障排除

自動配置

英偉達的軟體包已經包含一個自動配置的工具來幫助您創建Xorg伺服器配置文件(xorg.conf)。您可以通過運行下面的命令來實現自動配置:

# nvidia-xconfig

該命令會自動檢測並根據現有硬體的情況創建(或修改)/etc/X11/xorg.conf。如果配置文件中存在DRI的話,請把它們注釋掉:

#    Load        "dri"

再一次檢查您的配置文件/etc/X11/xorg.conf中的默認色深、水平同步、垂直刷新和解析度是否正確。

nvidia-settings

nvidia-settings工具可以讓你通過 CLI 或者圖形界面配置很多選項。無參數運行nvidia-settings會啟動圖形界面版本的配置工具,而 CLI 選項參見nvidia-settings(1)

你可以以非 root 用戶身份使用 CLI/圖形界面配置工具,並把設置保存到~/.nvidia-settings-rc或使用Save to X configuration File按鈕來保存到xorg.conf(用於多用戶環境)。

通過以下命令來為當前用戶加載 ~/.nvidia-settings-rc

$ nvidia-settings --load-config-only

參見 Autostarting 來在每次開機的時候自動執行此命令。

注意:

手動配置

有些調整項無法通過#自動配置#nvidia-settings自動啟用,但可以通過修改你的配置文件來進行配置。Xorg伺服器需要重新啟動以應用這些配置。

參見NVIDIA Accelerated Linux Graphics Driver README and Installation Guide來了解更多細節及選項。

最簡配置

用 root 用戶創建一個配置文件20-nvidia.conf(或 /etc/X11/xorg.conf):

/etc/X11/xorg.conf.d/20-nvidia.conf
Section "Device"
   Identifier     "Device0"
   Driver         "nvidia"
   VendorName     "NVIDIA Corporation"
EndSection

如果您使用的是舊版驅動(nvidia-340xx-dkmsAUR),您可能希望禁用在 X 啟動時顯示的 NVIDIA 徽標啟動畫面。添加"NoLogo"選項到Device節裡:

Option "NoLogo" "1"

覆蓋顯示器偵測

Device節下面的"ConnectedMonitor"選項允許您覆蓋X伺服器在啟動時的顯示器偵測過程,這可能有助於在啟動時節約大量時間。可用的選項包括:"CRT"用於模擬信號連接,"DFP"用於數字顯示器,"TV"用於電視。

下面的例子是強制英偉達的驅動繞開啟動檢測並且強制把顯示器識別為DFP:

Option "ConnectedMonitor" "DFP"
注意: "CRT"適用於所有傳輸模擬信號的15 pin VGA連接器,包括平板顯示器上的VGA接口。"DFP"僅適用於DVI、HDMI和DisplayPort等數位訊號連接器。

啟用亮度控制

本文或本節內容已經過時。

原因: 可能已過時[1], 上游軟體包看起來也很久沒更新了 (在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/。 解決方案之一是監視文件變化,例如為 acpi_video0/brightness 添加 inotifywait 並將變化翻譯並寫入 nvidia_backlight/brightness。 參見 Backlight#sysfs modified but no brightness change.

啟用 SLI

警告:自 GTX 10xx系列(1080、1070、1060等等)開始,僅 2 路 SLI 是受支持的。3 路或 4 路 SLI 或許能夠在 CUDA/OpenCL 應用上使用,但是會讓幾乎所有 OpenGL 應用崩潰。

根據英偉達驅動的 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"的格式。

根據需要的 SLI 渲染模式來添加值到Screen節下面:

Option "SLI" "AA"

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

Value Behavior
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 alias。

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 選項的重複設備配置,能讓 X 在一張顯卡上使用兩台顯示器而不需要 TwinView。注意,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 的顯卡,則可以把多個顯示器接到不同的顯卡上。「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

對於同時擁有amd核顯和nvidia獨立顯卡的用戶

由於NVIDIA自動生成的xorg.conf配置默認不包含AMDGPU這會導致雙屏用戶其中一個屏幕不能顯示 需要先進行自動配置,然後在/etc/X11/xorg.conf.d/下新建20-amdgpu.conf

Section "Device"
     Identifier "AMD"
     Driver "amdgpu"
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接口). 您可以從 "X Server XVideoSettings" 部分的 nvidia-settings 中找到顯示器的標識符。

用 TwinView 玩遊戲

如果你想在使用 TwinView 時玩全屏遊戲,你會注意到遊戲將兩個屏幕識別為一個大屏幕。雖然這理論上沒問題(因為虛擬 X 屏幕實際上是屏幕大小的總和),但您可能不希望同時在兩個屏幕上顯示。

要糾正 SDL 的這種行為,請嘗試 :

export SDL_VIDEO_FULLSCREEN_HEAD=1

對於 OpenGL,向 xorg.conf 中添加適當的 Metamode 並重新啟動 X:

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

另一種可以單獨使用或與上述方法結合使用的方法是在單獨的 X 伺服器中啟動遊戲

馬賽克拼接模式

馬賽克模式是使用多個顯示器進行跨顯卡合成的唯一方式。您的窗口管理器不一定能區分不同的顯示器。馬賽克模式需要一個有效的 SLI 配置。即使使用基本模式而不使用 SLI,GPU 仍然必須支持 / 兼容 SLI。

基本馬賽克拼接模式

Base Mosaic 模式適用於任何 Geforce 8000 系列或更高版本的 GPU。無法從 nvidia-setting GUI 中啟用它。您必須使用 nvidia-xconfig 命令行程序或手動編輯 xorg.conf。必須指定元模式。以下是 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 顯卡被人為限制了只能使用3個顯示器。Quadro 卡支持 3 個以上的顯示器。截至 2014 年 9 月,Windows 驅動程序已取消了這一人為限制,但仍保留在 Linux 驅動程序中。
SLI 馬賽克拼接模式

如果您有 SLI 配置,並且每個 GPU 都是 Quadro FX 5800、Quadro Fermi 或更新型號,那麼您可以使用 SLI 馬賽克模式。可以從 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"

Wayland配置

關於 XWayland,請參閱 XWayland

有關進一步的配置選項,請查看相應混成器的 wiki 頁面或文檔。

注意:在驅動程序版本 555.xx 之前,或者在使用不支持通過linux-drm-syncobj-v1協議進行顯式同步的混成器時,NVIDIA 驅動程序可能會出現嚴重問題,表現為閃爍、幀順序錯亂等,這在原生 Wayland 或 Xwayland 應用程式中均會發生。

配置

nvidia_drm 模塊有如下兩個可選的內核參數。在使用nvidia-utils包時,這兩個參數默認都是啟用的。NVIDIA 還計劃在未來的版本中默認啟用它們

modeset

使用Wayland時,modeset必須被啟用。

對於不支持的驅動程序,需手動啟用 modeset,請參見 #DRM 內核級顯示模式設置Wayland系統需求

fbdev

啟用fbdev對於某些 Wayland 配置是必要的。

在Linux6.11以及更高版本上這是一個硬性需求,但目前尚不清楚這是預期行為還是一個錯誤[2]

您可以參考 #DRM 內核級顯示模式設置中的方法進行設置。其區別在於驗證其是否打開時,您需要執行:

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

如果沒有成功設置,其將返回缺少文件錯誤,而不是N

休眠支持

Wayland 的休眠可能比 X 更容易受到默認設置的影響,詳細信息請參見 Tips and tricks#Preserve video memory after suspend

如您使用 GDM,請參考 GDM#Wayland 與 NVIDIA 專有驅動

NVswitch

本文或本章節的語言、語法或風格需要改進。參考:幫助:風格

原因:需要多個語法改進,以及關於 fabric manager 的部分應當製作為一個 AUR 包。(在Talk:NVIDIA討論)

對於具有 NVswitch 的系統,例如 AWS 上的 H100x8:

  • 安裝 nvidia-fabricmanager
  • 安裝所有fabric manager所需要的內核模塊

使用 fabricmanager 時,pytorch 會報告未找到 GPU。

安裝 fabric manager:

  1. 此處下載tarball。
  1. 版本 555.42.02 運作良好
  1. 修改 sbin/fm_run_package_installer.sh 中的安裝腳本以修復安裝文件路徑

要獲取匹配的內核驅動程序:

  1. 克隆 nvidia-beta-dkms 和 nvidia-utils-beta 的 AUR
  1. 將 PKGBUILD 更改為使用版本 555.42.02
  1. 構建安裝並重啟

隨後運行systemctl enable nvidia-fabricmanager 以及 systemctl start nvidia-fabricmanager,現在 pytorch 應當能正確識別到GPU。

提示和技巧

參考 NVIDIA/提示和技巧.

故障排除

參考 NVIDIA/故障排除.

另請參見