NVIDIA Optimus (Español)

Este artículo o sección necesita ser
traducido
.
Notas:
Partial translation and untranslated wiki pages (Discusión en
Talk:NVIDIA Optimus (Español)#
)
Esta traducción de
NVIDIA Optimus
fue revisada el
2024-02-02
. Si existen
cambios
puede
actualizarla
o avisar al
equipo de traducción
.
Artículos relacionados
PRIME (Español)
Bumblebee (Español)
Nouveau (Español)
NVIDIA (Español)
nvidia-xrun
External GPU (Español)
NVIDIA Optimus
es una tecnología que permite que una GPU integrada y una GPU NVIDIA dedicada trabajen en conjunto en un portátil.
Métodos disponibles
Hay diferentes métodos disponibles:
#Usar solo la grafica integrada
- Ahorra energía, porque la grafica NVIDIA estará completamente apagada.
#Usar solo la grafica NVIDIA
- Ofrece mas rendimiento que la grafica integrada pero consume mas batería (que no es conveniente para dispositivos móviles). Esto utiliza el mismo metodo de
optimus-manager
y
nvidia-xrun
, deberia ser utilizado para para resolución de problemas y verificación de la funcionalidad general, antes de optar por uno de los enfoques más automatizados.
Utilizar ambas (usar la GPU NVIDIA cuando sea necesario y mantenerla apagada para ahorrar energía):
#Usando PRIME render offload
- Método oficial soportado por NVIDIA
(Recomendado)
#Usando optimus-manager
- Cambia graficas con solo un comando (es necesario cerrar sesión e iniciar sesión para que surta efecto). Alcanza el máximo rendimiento de la GPU NVIDIA y la apaga si no está en uso. Desde la versión 1.4 también admite la combinación AMD+NVIDIA.
#Usando nvidia-xrun
- Ejecuta sesiones X separadas en diferentes TTY con gráficos NVIDIA. Alcanza el máximo rendimiento de la GPU NVIDIA y la apaga si no está en uso.
#Usando Bumblebee
- Proporciona una funcionalidad similar a Windows al permitir ejecutar aplicaciones seleccionadas con gráficos NVIDIA y utilizar gráficos Intel para todo lo demás. Presenta importantes problemas de rendimiento. No ha sido actualizado desde el 26 de Abril de 2023
#Usando switcheroo-control
- Similar a Bumblebee, pero específicamente para usuarios de
GNOME
. Permite que las aplicaciones especifiquen si prefieren la GPU dedicada en su archivo de
entrada de escritorio
y permite ejecutar manualmente cualquier aplicación en la GPU NVIDIA desde el menú contextual.
#Usando nouveau
- ofrece un rendimiento inferior (en comparación con el controlador propietario de NVIDIA) y puede causar problemas con la suspensión y la hibernación. No funciona con las últimas GPUs de NVIDIA.
#Usando EnvyControl
- Similar a optimus-manager pero no requiere una extensa configuración o tener un daemon ejecutándose en segundo plano así como tener que instalar una versión parcheada de GDM si eres usuario de GNOME.
#Usando NVidia-eXec
- Similar a Bumblebee, pero sin el impacto en el rendimiento. Funciona tanto en Xorg como en Wayland. Este paquete es experimental, y actualmente está siendo probado sólo bajo GNOME/GDM.
#Usando nvidia-switch
- Similar a nvidia-xrun, pero sin necesidad de cambiar el TTY, los cambios se harán por login y logouts en tu gestor de pantalla. Este paquete está siendo probado en un sistema basado en Debian, pero, al igual que nvidia-xrun, debe funcionar en todos los sistemas Linux.
Nota
Todas estas opciones son mutuamente excluyentes, si pruebas un método y te decides por otro, debes asegurarte de revertir cualquier cambio de configuración realizado por el método que elegiste antes de intentar otro método, de lo contrario pueden surgir conflictos de archivos y comportamientos indefinidos.
Usar solo la grafica integrada
Si sólo te interesa usar una GPU determinada sin tener que cambiar, comprueba las opciones de la BIOS de tu sistema. Debería haber una opción para desactivar una de las tarjetas. Algunos portátiles sólo permiten desactivar la tarjeta discreta, o viceversa, pero merece la pena comprobarlo si sólo piensas usar una de las tarjetas.
Si tu BIOS no permite desactivar los gráficos NVIDIA, puedes desactivarlos desde el propio kernel de Linux. Ve
Hybrid graphics (Español)#GPU discreta totalmente apagada
.
Utilizar CUDA sin cambiar el proveedor de renderizado
Puedes usar CUDA sin cambiar el renderizado a la gráfica NVIDIA. Todo lo que necesitas hacer es asegurarte de que la tarjeta NVIDIA está encendida antes de iniciar una aplicación CUDA, ve
Hybrid graphics (Español)#GPU discreta totalmente apagada
para más detalles.
Ahora, cuando inicies una aplicación CUDA, cargará automáticamente todos los módulos del kernel necesarios. Antes de apagar la tarjeta Nvidia después de usar CUDA, hay que descargar primero los módulos del kernel
nvidia
:
# rmmod nvidia_uvm
# rmmod nvidia
Usar solo la grafica NVIDIA
El driver propietario de NVIDIA puede configurarse para que sea el principal proveedor de renderizado. También tiene notables problemas de screen-tearing a menos que habilites prime sync activando
NVIDIA (Español)#DRM kernel mode setting
, ve
[1]
para más información. Permite el uso de la GPU discreta y tiene (a partir de
Enero 2017
) una marcada ventaja en el rendimiento sobre el controlador Nouveau.
Primero,
instale
el driver
NVIDIA (Español)
y
xorg-xrandr
. A continuación, configura
/etc/X11/xorg.conf.d/10-nvidia-drm-outputclass.conf
cuyas opciones se combinarán con el paquete proporcionado
/usr/share/X11/xorg.conf.d/10-nvidia-drm-outputclass.conf
para proporcionar compatibilidad con esta configuración.
Nota
En algunas configuraciones esta configuración rompe la detección automática de los valores de la pantalla por el controlador nvidia a través del archivo EDID. Como solución consulte
#Resolución, escaneo de pantalla errónea. Errores EDID en Xorg.log
.
/etc/X11/xorg.conf.d/10-nvidia-drm-outputclass.conf
Section "OutputClass"
    Identifier "intel"
    MatchDriver "i915"
    Driver "modesetting"
EndSection

Section "OutputClass"
    Identifier "nvidia"
    MatchDriver "nvidia-drm"
    Driver "nvidia"
    Option "AllowEmptyInitialConfiguration"
    Option "PrimaryGPU" "yes"
    ModulePath "/usr/lib/nvidia/xorg"
    ModulePath "/usr/lib/xorg/modules"
EndSection
A continuación, añade las siguientes dos líneas al principio de
~/.xinitrc
:
~/.xinitrc
xrandr --setprovideroutputsource modesetting NVIDIA-0
xrandr --auto
Ahora reinicia para cargar los drivers, y X debería iniciar.
Si los dpi de su pantalla no son correctos añade la siguiente línea dentro de
~/.xinitrc
:
xrandr --dpi 96
Si obtiene una pantalla negra al iniciar X, asegurate de que no haya ampersands (símbolo &) después de los dos comandos
xrandr
dentro de
~/.xinitrc
. Si hay ampersands, parece que el gestor de ventanas puede ejecutarse antes de que los comandos
xrandr
terminen de ejecutarse, provocando una pantalla negra.
Gestores de pantalla
Si estás utilizando un
Gestor de pantalla
entonces necesitarás crear o editar un script de configuración de pantalla para tu gestor de pantalla en lugar de utilizar
~/.xinitrc
.
LightDM
Para el gestor de pantalla
LightDM (Español)
:
/etc/lightdm/display_setup.sh
#!/bin/sh
xrandr --setprovideroutputsource modesetting NVIDIA-0
xrandr --auto
Hace el script
ejecutable
.
Ahora configura lightdm para ejecutar el script editando la sección
[Seat:*]
en
/etc/lightdm/lightdm.conf
:
/etc/lightdm/lightdm.conf
[Seat:*]
display-setup-script=/etc/lightdm/display_setup.sh
Ahora reinicia y tu gestor de pantalla debería iniciarse.
SDDM
Para el gestor de pantalla
SDDM (Español)
(SDDM es el gestor de pantalla por defecto para
KDE (Español)
):
/usr/share/sddm/scripts/Xsetup
xrandr --setprovideroutputsource modesetting NVIDIA-0
xrandr --auto
GDM
Para el gestor de pantalla
GDM (Español)
cree dos nuevos archivos .desktop:
/usr/share/gdm/greeter/autostart/optimus.desktop
/etc/xdg/autostart/optimus.desktop
[Desktop Entry]
Type=Application
Name=Optimus
Exec=sh -c "xrandr --setprovideroutputsource modesetting NVIDIA-0; xrandr --auto"
NoDisplay=true
X-GNOME-Autostart-Phase=DisplayServer
Asegúrese de que GDM utilize
X como backend predeterminado
.
Comprobar 3D
Puedes comprobar si se están utilizando los gráficos NVIDIA instalando
mesa-utils
y ejecutando
$ glxinfo | grep NVIDIA
Más Información
Para obtener más información, consulta la página oficial de NVIDIA sobre el tema
[2]
.
Utilizar gráficos intercambiables
Este artículo o sección necesita ser
traducido
.
Notas:
Many wiki pages are just available in English (Discusión en
Talk:NVIDIA Optimus (Español)#
)
Usando PRIME render offload
Este es el método recomendado y oficial de NVIDIA para soportar gráficos intercambiables.
Vea
PRIME (Español)#PRIME render offload
para más detalles.
Usando nouveau
Vea
PRIME (Español)
para graficos intercambiables y
Nouveau (Español)
para el driver de codigo abierto de NVIDIA.
Usando Bumblebee
Vea
Bumblebee (Español)
.
Usando switcheroo-control
Vea
PRIME (Español)#Integración con Gnome
.
Usando nvidia-xrun
Vea
nvidia-xrun
.
Usando optimus-manager
Vea la documentación de upstream de
Optimus-manager
. Cubre tanto la instalación como la configuración en sistemas Arch Linux.
Usando EnvyControl
Vea la documentación de upstream de
EnvyControl
. Cubre tanto la instalación como las instrucciones de uso.
Usando NVidia-eXec
Vea la documentación de upstream de
NVidia-eXec
. Cubre tanto la instalación como las instrucciones de uso.
Usando nvidia-switch
Vea la documentación de upstream de
nvidia-switch
. Cubre tanto la instalación como las instrucciones de uso.
Solución de problemas
Tearing o VSync roto
Activa
DRM kernel mode setting
, que a su vez activará la sincronización PRIME y solucionará el tearing.
Puedes leer el hilo oficial
"PRIME and PRIME Synchronization"
para más detalles.
Failed to initialize the NVIDIA GPU at PCI:1:0:0 (GPU fallen off the bus / RmInitAdapter failed!)
Añade
rcutree.rcu_idle_gp_delay=1
a los parámetros del kernel. El articulo original se puede encontrar en
[3]
y
[4]
.
Resolución, escaneo de pantalla errónea. Errores EDID en Xorg.log
Esto se debe a que el controlador NVIDIA no detecta el EDID de la pantalla. Es necesario especificar manualmente la ruta a un archivo EDID o proporcionar la misma información de forma similar.
Para proporcionar la ruta al archivo EDID edita la Sección de "Devices" para la tarjeta NVIDIA en Xorg.conf, añadiendo estas líneas y cambiando partes para reflejar tu propio sistema:
/etc/X11/xorg.conf
Section "Device"
       	Option		"ConnectedMonitor" "CRT-0"
       	Option		"CustomEDID" "CRT-0:/sys/class/drm/card0-LVDS-1/edid"
	Option		"IgnoreEDID" "false"
	Option		"UseEDID" "true"
EndSection
Si Xorg no inicia prueba a cambiar todas las referencias de CRT a DFB.
card0
es el identificador de la tarjeta Intel a la que está conectada la pantalla vía LVDS. El binario EDID está en este directorio. Si la disposición del hardware es diferente, el valor de CustomEDID puede variar, pero todavía hay que confirmarlo. La ruta comenzará en cualquier caso con
/sys/class/drm
.
Alternatively you can generate your EDID with tools like
read-edid
and point the driver to this file. Even modelines can be used, but then be sure to change
UseEDID
and
IgnoreEDID
.
Alternativamente puedes generar tu EDID con herramientas como
read-edid
y apuntar el driver a este fichero. Incluso se pueden utilizar "modelines", pero entonces asegúrese de cambiar
UseEDID
e
IgnoreEDID
.
Resolución incorrecta sin errores EDID
Usando
nvidia-xconfig
, puede generarse información incorrecta en
xorg.conf
y en particular frecuencias de refresco de monitor erróneas que restringen las resoluciones posibles. Intenta comentar las líneas
HorizSync
/
VertRefresh
. Si esto ayuda, probablemente también puedas eliminar todo lo demás que no se menciona en este artículo.
Problema de bloqueo (lspci se atasca)
Síntomas:
lspci
se atasca, falla la suspensión del sistema, se atasca el apagado, se atasca optirun.
Se aplica a: portátiles nuevos con GTX 965M o similar cuando se utiliza bbswitch (por ejemplo, a través de Bumblebee) o Nouveau.
Cuando se enciende el recurso de alimentación de la dGPU, puede fallar y atascarse en el código ACPI (
bug de kernel 156341
).
Cuando se utiliza nouveau, desactivar la gestión de energía en runtime impide que cambie el estado de energía, evitando así este problema.
Para desactivar la gestión de energía en runtime, añada
nouveau.runpm=0
a los parámetros del kernel.
Para conocer las soluciones específicas de cada modelo, consulte
esta incidencia
.
En otros casos, puede intentar arrancar con
acpi_osi="!Windows 2015"
o
acpi_osi=! acpi_osi="Windows 2009"
añadidos a sus
Kernel parameters (Español)
. (Considere la posibilidad de informar de su portátil en esa incidencia).
No se han encontrado pantallas en un portátil/NVIDIA Optimus
Compruebe si la salida es algo similar a
$ lspci | grep VGA
00:02.0 VGA compatible controller: Intel Corporation Core Processor Integrated Graphics Controller (rev 02)
01:00.0 VGA compatible controller: nVidia Corporation Device 0df4 (rev a1)
Los controladores NVIDIA ahora ofrecen soporte Optimus desde 319.12 Beta
[5]
con incluyendo kernels superiores a la versión 3.9.
Otra solución es instalar el controlador
Intel (Español)
para manejar las pantallas, luego si quieres software 3D debes pasarlos por
Bumblebee (Español)
para decirles que usen la tarjeta NVIDIA.
Congelaciones aleatorias "(EE) NVIDIA(GPU-0): WAIT"
Al utilizar los controladores propietarios en una configuración con una tarjeta AMD integrada y con la tarjeta NVIDIA dedicada configurada como la única en uso, los usuarios informan de bloqueos de hasta 10 segundos, con los siguientes errores en los registros de Xorg:
[   219.796] (EE) NVIDIA(GPU-0): WAIT (2, 8, 0x8000, 0x0002e1c4, 0x0002e1cc)
[   226.796] (EE) NVIDIA(GPU-0): WAIT (1, 8, 0x8000, 0x0002e1c4, 0x0002e1cc)
Aunque esto no es causa de raíz todavía, parece estar relacionado con un conflicto en cómo las tarjetas integradas y dedicadas interactúan con Xorg.
La solución es usar gráficos intercambiables, ver
PRIME (Español)#PRIME render offload
para más detalles.
"No Devices detected" con optimus-manager
Hay casos en los que
lspci
mostrará el Dominio PCI como primera columna de salida, haciendo que los archivos generados por
optimus-manager
se rompan al intentar mapear
BusID
en múltiples modelos de portátiles.
Si te enfrentas a una pantalla negra que nunca termina de cargar tu GUI, GUI cargando parcialmente con artefactos de consola o Xorg fallando con
(EE) - No Devices detected
, la solución y los informes de errores están disponibles en el upstream de
github
.