私は最近、Slackwareがインストールされている現在のノートブックでPrimeを使用することにしました(NVIDIAはアプリケーションをGPUにオフロードし、システムは統合GPU(私の場合はIntel HD630)を使用します)。統合Intel GPUを実行しているこのポートはNvidia GPUカードに接続されているため、要求時にのみ有効になります。私がすぐに見つけた解決策は新しいリバースプライムでしたが、うまくいかないようです。奇妙なことが起こっています。フード。何が起こっているのかを調べようと助けを求めています。
最初はPrimeがノートパソコンの画面で正常に動作しているようです(最初はGPU集約型アプリケーションを実行するためにPrimeを使用していましたが、予想通り最大のパフォーマンスで実行されました)。 NVIDIA GPUで実行したいアプリケーションを実行し、ここにいくつかの環境変数を付けることができます。しかし、テストしようとしたとき、__NV_PRIME_RENDER_OFFLOAD=1 __GLX_VENDOR_LIBRARY_NAME=nvidia glxinfo
glxinfoでは特に動作せず、次のエラーが発生することがわかりました。
name of display: :0 X Error of failed request: BadValue (integer parameter out of range for operation) Major opcode of failed request: 151 (GLX) Minor opcode of failed request: 24 (X_GLXCreateNewContext) Value in failed request: 0x0 Serial number of failed request: 39 Current serial number in output stream: 4
その後、環境変数を使用または使用せずに試しましたが、nvidia-settings --verbose
エラーも受け取りました。
WARNING: NV-CONTROL extension not found on this Display. ERROR: Unable to load info from any available system ERROR: Unable to assign attribute SyncToVBlank specified on line 22 of ........ ERROR: Unable to assign attribute FSAA specified on line 24 of ........ (repeat similar message to several other video settings previously saved on nvidia-settings-rc file) ERROR: Unable to assign attribute SynchronousPaletteUpdates specified on line 38 of configuration file '/[home path, redacted]/.nvidia-settings-rc' (no Display connection).
実行すると、nvidia-smi
通常はnvidia GPUに関する正確な情報が得られます(異常には環境変数を使用して実行する必要はありません)。glxinfo
私のメインGPUが現在実際にIntelであり、実際に統合Intel GPUであることを確認するためにnvidia変数なしで確認しました。その後、実行して以下をxrandr --listproviders
取得します。
Providers: number : 2 Provider 0: id: 0x43 cap: 0xf, Source Output, Sink Output, Source Offload, Sink Offload crtcs: 3 outputs: 1 associated providers: 1 name:modesetting Provider 1: id: 0xca cap: 0x2, Sink Output crtcs: 4 outputs: 1 associated providers: 1 name:modesetting
2つのGPUを検出しますが、2番目のGPUは検出しません(プロバイダー1)の名前はNVIDIA-G0でなければなりませんが、次のように設定されています。モード設定、良いプロバイダ0(Intel IGPU).その後、設定しました。xorg.confクイック一時テストのためにNVIDIA GPUをベースにしてXを実行しますxrandr --listproviders
。プロバイダ0これで、NVIDIAに対応する銀はNVIDIA-G0という名前で正しく認識されます。プロバイダー1そしてモード設定。私は回復したxorg.confPrime / Optimus設定に戻ります(つまり、IntelをアクティブGPUとして使用)。実行中はlsmod | grep -i nvidia
nvidiaドライバがロードされました新しいスタイルドライバが期待どおりにブロックされました。modprobe.d構成:
nvidia_uvm 1155072 0 nvidia_drm 65536 1 nvidia_modeset 1232896 2 nvidia_drm nvidia 34177024 19 nvidia_uvm,nvidia_modeset drm_kms_helper 266240 2 nvidia_drm,i915 drm 610304 15 drm_kms_helper,nvidia_drm,i915 i2c_core 94208 12 i2c_designware_platform,videodev,i2c_hid,i2c_designware_core,drm_kms_helper,i2c_algo_bit,nvidia,i2c_smbus,i2c_i801,i915,psmouse,drm
HDMIケーブル接続が正しく認識され(まだ信号はありません)、xrandr --props
HDMI-1-1ソースリストによるとマスター同期できるようにする:
PRIME Synchronization: 1 supported: 0, 1 link-status: Good supported: Good, Bad CONNECTOR_ID: 74 supported: 74 non-desktop: 0 range: (0, 1)
ここで何が起こっているのか気になってHDMI出力をテストしてみました。Arch wikiのReverse PRIMEチュートリアルラップトップ画面のPrime設定で他のすべてがうまくいったので(理由はわかりませんが失敗しglxinfo
ましnvidia-settings
たが)、プロバイダ名が間違っていたので、その参照番号を使用することにしました。xrandr --setprovideroutputsource 0 1
その結果、次のエラーが発生しました。からglxinfo
:
X Error of failed request: BadValue (integer parameter out of range for operation) Major opcode of failed request: 139 (RANDR) Minor opcode of failed request: 35 (RRSetProviderOutputSource) Value in failed request: 0xca Serial number of failed request: 16 Current serial number in output stream: 17
引き続き手がかりを見つけようとしましたxrandr --output HDMI-1-1 --auto --above eDP-1
(eDP-1はラップトップに組み込まれた画面です)。結果は次のとおりです。
xrandr:crtc 3の設定に失敗しました。
Xorg.0.logには明らかなエラーはありませんが、いくつかのエラーがあります。情報起動中にNVIDIAドライバが動作するのを妨げないようです。
[drm:nv_drm_dumb_map_offset [nvidia_drm]] *ERROR* [nvidia-drm] [GPU ID 0x00000100] Failed to lookup gem object for mapping: 0x00000006 [drm:nv_drm_dumb_map_offset [nvidia_drm]] *ERROR* [nvidia-drm] [GPU ID 0x00000100] Failed to lookup gem object for mapping: 0x00000007
そして汚染されたカーネルに関するNVIDIAの警告:
nvidia: module license 'NVIDIA' taints kernel. Disabling lock debugging due to kernel taint
編集1:Prime変数の削除がグラフィカルインターフェイスなしでコマンドラインプログラムを使用しているノートブックのメイン画面でのみ機能することを疑った後、いくつかのLutrisゲームを実行してみましたが、実際には同じエラーが発生しました。グローバル情報ネットワーク。それでは、これはモニターを接続しようとしているものと関係がありますか?
ここでどこに行くべきかわかりません。どんなアイデアがありますか?
システムメッセージ:
- ノートパソコンAcer Nitro 5、i7第7世代、NVIDIA 1050
- カーネル5.10.19はTKGのfsyncにパッチされており、現在64ビットにはAlienbob multilibがあります。
- NVIDIAドライバ460.56、CUDAバージョン11.2、V11.2.67ビルドcuda_11.2.r11.2/compiler.29373293_0
- Xorgサーバー1.20.10
- /etc/X11/xorg.conf(私はまだ.d彫刻モデルに慣れていません):https://pastebin.com/0d13wDHY
- これがある90-intel.conf存在するxorg.conf.dしかし、Intel DRI3を強制することを目指しています。
Section "OutputClass" Identifier "Force DRI 3" MatchDriver "modesetting" Option "DRI" "3" EndSection
- Xorg.0.log(キーボード、カメラ、Bluetoothに関係のない行が削除されました):https://pastebin.com/s0Ebu2AY
- 情報いくつかの機密データが修正されました。https://pastebin.com/w0qWzxD9
- NVIDIAドライバがモードセットに設定されました(confファイル経由)modprobe.d
options nvidia-drm modeset=1
)