Articulo de referencia

Nvidia Optimus

Nvidia Optimus es una tecnología de conmutación de GPU para ordenadores creada por Nvidia que, dependiendo de la carga de recursos generada por las aplicaciones de software del ...

Nvidia Optimus es una tecnología de conmutación de GPU para ordenadores creada por Nvidia que, dependiendo de la carga de recursos generada por las aplicaciones de software del cliente, cambia automáticamente entre dos adaptadores gráficos dentro de un sistema informático para proporcionar el máximo rendimiento o el mínimo consumo de energía del hardware de renderizado gráfico del sistema.

Una plataforma típica incluye tanto un procesador gráfico integrado de menor rendimiento , generalmente de Intel o AMD , como uno de alto rendimiento, generalmente de Nvidia o AMD. Optimus ahorra batería apagando automáticamente la unidad de procesamiento gráfico (GPU) discreta cuando no se necesita y volviéndola a encender cuando se necesita de nuevo. La tecnología está dirigida principalmente a PC portátiles como los portátiles . [ 1 ] [ a ] ​​Cuando se inicia una aplicación que se determina que se beneficia del rendimiento de la GPU discreta, esta se enciende y la aplicación es atendida por un contexto de renderizado a través de esa GPU. De lo contrario, la aplicación es atendida por un contexto de renderizado que utiliza la GPU integrada. El cambio entre los procesadores gráficos está diseñado para ser completamente imperceptible y ocurrir "en segundo plano".

Los sistemas operativos compatibles oficialmente con Nvidia son Microsoft Windows y Linux . Un proyecto llamado Bumblebee [ 4 ] es una implementación alternativa de código abierto de la compatibilidad con Optimus para Linux. [ 5 ]

Operación

Cuando un usuario ejecuta una aplicación, el controlador gráfico intenta determinar si la aplicación se beneficiaría de la GPU dedicada. De ser así, la GPU se activa desde un estado de inactividad y se le transfieren todas las llamadas de renderizado. Sin embargo, incluso en este caso, se utiliza el procesador gráfico integrado (IGP) para generar la imagen final. Cuando se utilizan aplicaciones menos exigentes, el IGP toma el control total, lo que permite una mayor duración de la batería y un menor ruido del ventilador. En Windows, el controlador de Nvidia también ofrece la opción de seleccionar manualmente la GPU en el menú contextual al ejecutar un archivo.

Dentro de la capa de interfaz de hardware del controlador de GPU de Nvidia, la capa de enrutamiento Optimus proporciona una gestión gráfica inteligente. Esta capa también incluye una biblioteca a nivel de kernel para reconocer y gestionar clases y objetos específicos asociados a diferentes dispositivos gráficos. Esta innovación de Nvidia gestiona el estado y el contexto, asignando los recursos arquitectónicos necesarios para cada cliente del controlador (es decir, cada aplicación). En este esquema de gestión de contexto, cada aplicación desconoce la existencia de otras aplicaciones que utilizan la GPU simultáneamente.

Al reconocer clases específicas, la capa de enrutamiento Optimus puede ayudar a determinar cuándo se puede utilizar la GPU para mejorar el rendimiento de renderizado. Específicamente, envía una señal para encender la GPU cuando encuentra cualquiera de los siguientes tres tipos de llamadas:

  • Llamadas DX: Cualquier motor de juego 3D o aplicación DirectX activará estas llamadas.
  • Llamadas DXVA : La reproducción de vídeo activará estas llamadas (DXVA = Aceleración de vídeo DirectX).
  • Llamadas CUDA : Las aplicaciones CUDA activarán estas llamadas.

Los perfiles predefinidos también ayudan a determinar si se necesita potencia gráfica adicional. Estos se pueden gestionar mediante el panel de control de Nvidia.

Optimus evita el uso de un multiplexor de hardware y previene los fallos asociados al cambio del controlador de pantalla de la GPU integrada (IGP) a la GPU, transfiriendo la superficie de visualización desde el búfer de fotogramas de la GPU a través del bus PCI Express al búfer de fotogramas principal basado en memoria utilizado por la IGP. El motor de copia Optimus es una nueva alternativa a las transferencias DMA tradicionales entre la memoria del búfer de fotogramas de la GPU y la memoria principal utilizada por la IGP.

El uso de la GPU integrada para generar datos desde la GPU dedicada puede convertirse en un cuello de botella a altas velocidades de fotogramas. En portátiles de alto rendimiento o para juegos (donde se prioriza el rendimiento sobre la eficiencia energética), la tecnología Optimus ha sido objeto de fuertes críticas. Algunos fabricantes han ofrecido soluciones de multiplexación por hardware para desactivar completamente la arquitectura Optimus. Esta operación puede gestionarse desde la BIOS y, a menudo, requiere reiniciar el equipo.

Soporte para Linux

En el centro se encuentra la pila de controladores libres y de código abierto, compuesta por Mesa 3D y libDRM en el espacio de usuario, y el controlador DRM / KMS en el kernel de Linux. El blob del kernel propietario de Nvidia no puede utilizar DMA-BUF debido a restricciones de licencia.

Aunque históricamente problemático, el controlador binario de Nvidia, desde la versión beta 435.17, admite oficialmente la descarga de renderizado Optimus para aplicaciones OpenGL y Vulkan bajo el nombre "PRIME". [ 6 ]

El controlador binario de Nvidia añadió soporte parcial para Optimus el 3 de mayo de 2013 en la versión 319.17. [ 7 ] A partir de mayo de 2013, la administración de energía para la tarjeta dedicada no es compatible, lo que significa que no puede ahorrar batería apagando completamente la tarjeta gráfica de Nvidia. [ 8 ]

El proyecto de código abierto Bumblebee intenta brindar soporte para la conmutación del chip gráfico. Al igual que en la implementación de Windows, por defecto todas las aplicaciones se ejecutan a través del procesador gráfico integrado. A partir de 2013Solo se puede ejecutar un programa con rendimiento gráfico mejorado en la GPU dedicada invocándolo explícitamente como tal: por ejemplo, mediante la línea de comandos o a través de un icono de acceso directo configurado especialmente. La detección y el cambio automáticos entre procesadores gráficos aún no están disponibles.

Actualmente se está trabajando en una interfaz gráfica , bumblebee-ui , cuyo objetivo es facilitar el inicio de los programas para mejorar el rendimiento gráfico cuando sea necesario.

Steam para Linux se puede configurar para ejecutar juegos utilizando la GPU dedicada ( Comunidad de Steam: Optimus y Steam para Linux ).

El proyecto Bumblebee continúa evolucionando a medida que se realizan cambios de software necesarios en la arquitectura gráfica de Linux. Para aprovecharlo al máximo, lo mejor es usar una distribución reciente de Linux. A partir de 2013Los repositorios de software de Bumblebee están disponibles para Arch Linux , Debian , Fedora , Gentoo , Mandriva , OpenSuSE y Ubuntu . El paquete fuente se puede utilizar para otras distribuciones.

Un intento de Nvidia de brindar soporte a Optimus a través de DMA-BUF , un mecanismo del kernel de Linux para compartir búferes entre hardware (potencialmente GPU), fue rechazado por los desarrolladores del kernel en enero de 2012 debido a la incompatibilidad de licencias entre el código del kernel con licencia GPL y el blob de Nvidia con licencia propietaria . [ 9 ]

Cuando no existe ningún mecanismo de software para cambiar entre adaptadores gráficos, el sistema no puede usar la GPU de Nvidia en absoluto, incluso si un controlador gráfico instalado lo admitiera. [ 10 ]

Soporte Optimus moderno

Muchas distribuciones de Linux ahora admiten la descarga de procesamiento de Nvidia, donde la tarjeta Nvidia se encarga de todo el renderizado. Por ejemplo, en una computadora portátil con un dispositivo gráfico Intel integrado, conectado físicamente a la pantalla, la tarjeta Nvidia renderiza en la memoria de video del dispositivo integrado. Para evitar el efecto tearing, el servidor Xorg cuenta con un mecanismo llamado Prime Synchronization para sincronizar estas actualizaciones de búfer, similar a vsync; para que esto funcione, el controlador de Nvidia debe cargarse como un módulo del kernel. Normalmente, esta función no está activada por defecto.

A diferencia de Bumblebee, esta solución de descarga de procesamiento permite el uso de gráficos en múltiples monitores. La desventaja es que para activar o desactivar la tarjeta Nvidia es necesario cerrar la sesión.

La principal implementación de este enfoque es el paquete 'prime-select' de Ubuntu, que incluye una herramienta gráfica y de línea de comandos para desactivar la tarjeta Nvidia. A diferencia de Windows, esto no se realiza de forma dinámica, y el usuario debe reiniciar la sesión para que el cambio surta efecto.

El script prime-select de Ubuntu está disponible en sus derivados, que en algunos casos incorporan sus propias herramientas gráficas. El método prime-offload se ha adaptado o reimplementado en Arch y Fedora.

En 2016, Nvidia anunció GL Vendor Neutral Dispatch, lo que significa que se pueden instalar simultáneamente los controladores de Intel y Nvidia. Esto simplificó enormemente el proceso de cambio de modo, aunque no fue hasta 2018 cuando las distribuciones comenzaron a aprovecharlo.

Algunos portátiles antiguos de gama alta incluyen una configuración en la BIOS para seleccionar manualmente el estado del multiplexor de hardware y alternar la salida entre los dos dispositivos de vídeo. En este caso, un usuario de Linux puede configurar el portátil con un solo dispositivo gráfico. Esto evita la complejidad de ejecutar dos controladores gráficos, pero no supone ningún ahorro de energía.

Desde la versión 435 del controlador, el controlador propietario admite la descarga de renderizado de una sola ventana. Crea una pantalla virtual donde la dGPU renderiza, la cual se mostrará en la ventana de la pantalla principal para la aplicación descargada. [ 11 ] A partir de octubre de 2019, esto requiere el uso de la rama de desarrollo de xorg, ya que las modificaciones necesarias aún no se han publicado.

Véase también

Notas

  1. Desktop Optimus estaba programado para ser lanzado en junio de 2011 [ 2 ] bajo el nombre Synergy , [ 3 ] pero nunca llegó a hacerlo.

Referencias

  1. "Optimus Technology" . Nvidia . 22 de octubre de 2012. Consultado el 10 de abril de 2016 .
  2. Lee, Terence (23 de abril de 2011). "NVIDIA lanzará Desktop Optimus / Synergy en COMPUTEX" . Recuperado el 10 de abril de 2016 .
  3. Pop, Sebastian (26 de abril de 2011). "NVIDIA Optimus llega a las computadoras de escritorio" . Recuperado el 10 de abril de 2016 .
  4. "Bumblebee Daemon" . GitHub . 22 de abril de 2013. Consultado el 10 de abril de 2016 .
  5. "Lanzamiento de Bumblebee versión 3.0 "Tumbleweed"" . 20 de enero de 2012. Consultado el 10 de abril de 2016 .
  6. Larabel, Michael (13 de agosto de 2019). "El controlador beta NVIDIA 435.17 para Linux añade la descarga de renderizado Vulkan + OpenGL PRIME" . Phoronix . Consultado el 3 de marzo de 2024 .
  7. Plattner, Aaron (2 de mayo de 2013). "Controlador 319.17 para Linux, Solaris y FreeBSD (versión de rama de larga duración)" . Nvidia . Consultado el 10 de abril de 2016 .
  8. ^ "Релиз проприетарного драйвера NVIDIA 319.17 с поддержкой Optimus и RandR 1.4" (en ruso). 2 de mayo de 2013 . Consultado el 10 de abril de 2016 .
  9. "NVIDIA habla de las posibilidades de Optimus para Linux" . Phoronix. 25 de enero de 2012.
  10. "En portátiles que no tienen ese multiplexor de hardware, actualmente no se puede usar la GPU NVIDIA para la pantalla." , 23 de julio de 2010, consultado el 27 de noviembre de 2010. Archivado el 18 de julio de 2011 en Wayback Machine .
  11. "Capítulo 35. Descarga de renderizado PRIME" . download.nvidia.com . Consultado el 09/10/2019 .