Chicos, he estado investigando durante días sobre cómo hacer que esto funcione. Acabo de comenzar de nuevo con una instalación nueva para solucionar cualquier tontería que pueda haberse estropeado mientras tanto. Ahora, hasta donde yo sé, se 'supone' que DRI_PRIME=1 haga que la DGPU sea la principal si la usas. línea de código antes de ejecutar un programa.
lspci -k | grep -EA2 'VGA|3D' muestra
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
entonces el sistema "ve" mi gpu, simplemente no la usa.
: $DRI_PRIME=1 glxinfo | grep "renderizador OpenGL"
OpenGL renderer string: Mesa Intel(R) HD Graphics 520 (SKL GT2)
Estoy en Kernel Linux 6.2.0-20-generic Ubuntu 23.04 Wayland
Chicos, bajé a LTS e inmediatamente ejecuté DRI_PRIME=1 antes de ejecutar cualquier actualización y reconoce la tarjeta... No estoy muy seguro de por qué algunos sistemas operativos hacen esto y otros no, ya que he probado muchas distribuciones. pero no me quejaré.
Respuesta1
Solía establecer la opción de energía en "rendimiento" para configurar la DGPU como principal, pero un día, mis muestras de CUDA dejaron de funcionar porque las demostraciones intentaban ejecutarse en la GPU Intel. Una computadora portátil generalmente está en modo híbrido, la DGPU hace el trabajo duro y deja la pantalla en manos de la GPU Intel. Vea el resultado de xrandr cuando ejecuta X (la configuración de modo es 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
o tal vez se parezca a:
$ 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
El primero parece que la fuente y el receptor están invertidos y necesitan las variables de entorno __NV_PRIME_RENDER_OFFLOAD=1 __GLX_VENDOR_LIBRARY_NAME=nvidia que pueden usarse frente a un programa que desea forzar a usar nvidia.
__NV_PRIME_RENDER_OFFLOAD=1 __GLX_VENDOR_LIBRARY_NAME=nvidia <prog>