夥計們,我已經研究了好幾天如何讓它發揮作用。我剛剛重新開始重新安裝,以修復同時可能弄亂的任何廢話,現在據我所知,如果您使用 DRI_PRIME=1,“應該”使 DGPU 成為主要的運行程序之前的代碼行。
lspci-k| grep -EA2 'VGA|3D' 顯示
00:02.0 VGA compatible controller: Intel Corporation Skylake GT2 [HD Graphics 520] (rev 07)
DeviceName: Onboard IGD
Subsystem: Dell Latitude E7470
01:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Baffin [Radeon RX 460/560D / Pro 450/455/460/555/555X/560/560X] (rev e5)
Subsystem: Dell Baffin [Radeon RX 460/560D / Pro 450/455/460/555/555X/560/560X]
Kernel driver in use: amdgpu
所以系統「看到」我的GPU,只是不會使用它。
: $DRI_PRIME=1 glxinfo | grep“OpenGL渲染器”
OpenGL renderer string: Mesa Intel(R) HD Graphics 520 (SKL GT2)
我使用的是 Kernel Linux 6.2.0-20-generic Ubuntu 23.04 Wayland
夥計們,我降級到LTS 並在運行任何更新之前立即運行DRI_PRIME=1 並且它識別該卡...我非常不確定為什麼某些作業系統會這樣做而其他作業系統不會這樣做,因為我已經嘗試了很多發行版。但我不會抱怨。
答案1
過去將電源選項設為「效能」會將 DGPU 設定為主,但有一天,我的 CUDA 範例停止工作,因為演示試圖在 Intel GPU 上運行。筆記型電腦通常處於混合模式,DGPU 完成繁重的工作,然後將顯示任務交給 Intel GPU。運行 X 時查看 xrandr 的輸出(模式設定為 Intel):
$ xrandr --listproviders
Providers: number : 2
Provider 0: id: 0x45 cap: 0x9, Source Output, Sink Offload crtcs: 4 outputs: 3 associated providers: 1 name:modesetting
Provider 1: id: 0x26e cap: 0x2, Sink Output crtcs: 4 outputs: 6 associated providers: 1 name:NVIDIA-G0
或者它看起來像:
$ xrandr --listproviders
Providers: number : 2
Provider 0: id: 0x1b7 cap: 0x1, Source Output crtcs: 4 outputs: 6 associated providers: 1 name:NVIDIA-0
Provider 1: id: 0x1e7 cap: 0x6, Sink Output, Source Offload crtcs: 4 outputs: 3 associated providers: 1 name:modesetting
第一個似乎來源和接收器是相反的,並且需要 __NV_PRIME_RENDER_OFFLOAD=1 __GLX_VENDOR_LIBRARY_NAME=nvidia 環境變量,該變數可以在您想要強制使用 nvidia 的程式前面使用。
__NV_PRIME_RENDER_OFFLOAD=1 __GLX_VENDOR_LIBRARY_NAME=nvidia <prog>