domingo, 14 de octubre de 2018

Verificar el estado y configurar gráficos híbridos en Linux Ubuntu 18.04 LTS con PRIME (Método gráfico)

"Monitor PRIME App Indicator" y "PRIME GPU Chooser" son dos aplicaciones gráficas para gestionar y verificar el estado de los GPUs (respectivamente) en gráficos híbridos.
Anteriormente hablamos sobre la configuración de los gráficos híbridos y la posterior verificación del estado de los GPUs utilizando unos comandos en el terminal y monitorizando con GALLIUM_HUD, todo esto con PRIME de Ubuntu 18.04 y Mesa 18.1 o superior. Pero nunca obtuvimos una interfaz gráfica para nuestro propósito. En esta publicación les mostraré el App Indicator que programé y una utilidad creada por otra persona que sería el reemplazo del "Software de gestión gráfica para perfiles".
Si están interesados, continúen la lectura.
NOTA: Esta publicación es válida para portátiles con gráficos híbridos equipados con un dGPU AMD o Nvidia, comúnmente llamados "AMD Enduro" o "Nvidia Optimus".
NOTA: No confundir "PRIME" con "Nvidia PRIME", este último funciona únicamente con dGPUs Nvidia y bajo "Drivers Propietarios".
ADVERTENCIA: El rendimiento del dGPU Nvidia con PRIME es inferior al iGPU Intel. Si no desean utilizar PRIME, entonces pueden usar en su lugar Bumblebee o Nvidia Prime, pero tengan en cuenta que la guía expuesta no se aplicará a dichas alternativas.
ADVERTENCIA: Esta publicación es exclusiva para portátiles que carecen de un MUX de Hardware para conmutar GPUs.
ADVERTENCIA: Esta publicación requiere exclusivamente los "Drivers Open-Source" (drivers incluidos en el kernel de Linux). Si desean seguir esta guía, entonces instalar un "Driver Open-Source" como: "nouveau", "amdgpu", "radeon", "intel", etc.

Antes de empezar, trataré que esta publicación sea de fácil comprensión, pero también se necesitan ciertos requisitos para aplicarla y entenderla:

Requisitos de lectura
  1. Notebooks con Modo Fijo y Dinámico AMD
  2. Limitaciones de AMD Enduro
  3. Configurar Aplicaciones en AMD Enduro
  4. Configurar gráficos híbridos en Linux Ubuntu 18.04 LTS con PRIME
  5. Monitorizar gráficos híbridos en Linux Ubuntu 18.04 con GALLIUM HUD
Requisitos de software (Dependencias):
  1. mesa-utils (para "Monitor PRIME App Indicator" y "PRIME GPU Chooser")
  2. Mesa 18.1 o superior (Sólo para el modo simple de GALLIUM_HUD)
  3. gir1.2-appindicator3-0.1 (para "Monitor PRIME App Indicator")
  4. python-dbus (para "Monitor PRIME App Indicator")
  5. python3 (Para "PRIME GPU Chooser")
  6. pyqt5 (Para "PRIME GPU Chooser")
  7. driconf (Para "PRIME GPU Chooser")
  8. kate (Para "Monitor PRIME App Indicator")

Comandos para instalar las dependencias:
  1. mesa-utils ("sudo apt-get install mesa-utils")
  2. Mesa 18.1 o superior ("sudo add-apt-repository ppa:ubuntu-x-swat/updates", "sudo apt-get update && sudo apt-get dist-upgrade")
  3. gir1.2-appindicator3-0.1 ("sudo apt-get install gir1.2-appindicator3-0.1")
  4. python-dbus ("sudo apt-get install python-dbus")
  5. python3 ("sudo apt-get install python3")
  6. pyqt5 ("sudo apt-get install pyqt" o "sudo apt-get install python3-pyqt5")
  7. driconf ("sudo apt-get install driconf")
  8. kate ("sudo apt-get install kate")
NOTA: A partir de Ubuntu 18.04.2 LTS se incluye una versión de Mesa superior a 18.1.
Con todo aclarado, empecemos.
La mayoría de portátiles actuales cuentan con gráficos híbridos, es decir, una combinación de un iGPU (generalmente Intel o AMD) mas un dGPU (generalmente AMD o Nvidia). El problema surge cuando deseamos utilizar nuestro dGPU con cierta aplicación de renderizado 3D y nos damos cuenta que no poseemos un "Software de gestión gráfica" como en Windows para realizar el trabajo.
Aquí es donde surge "PRIME GPU Chooser", una aplicación creada por ChristophHaag y "Monitor PRIME App Indicator" un App indicator creado por mi.

Equipo de prueba:
  • HP Pavilion G4-2082la
  • Dual Boot: Windows 10 Build 1803 + Kubuntu 18.04 LTS
  • Intel HD 3000 + AMD Radeon HD 7670M
  • Lenovo IdeaPad Z400
  • Kubuntu 18.04 LTS (Live)
  • Intel HD 4000 + Nvidia GT 630M
I. ¿Por qué realizar esta otra guía para Ubuntu 18.04 LTS?
En pocas palabras, porque se utilizaban muchos comandos en el terminal. En esta guía también se usará el terminal, pero sólo para abrir las 02 aplicaciones mencionadas (como ejemplo) y 01 aplicación de renderizado, el resto del tiempo se utilizarán los entornos gráficos programados.
En cuanto a Ubuntu 18.04, simplemente (la misma respuesta de la otra guía) porque es la última versión (al momento de redactar este artículo) y como PRIME existió con Ubuntu 14.04, nada impide el uso de estas aplicaciones con una versión superior a la del año 2014. También porque existen usuarios que desean utilizar una interfaz gráfica para estos temas específicos.

II. ¿Qué es "Monitor PRIME APP Indicator"?
Es un APP indicator para usuarios de computadoras portátiles equipados con GPUs híbridos (Intel+AMD, AMD+AMD, Intel+Nvidia). Su función principal es mostrar el GPU renderizador cuando se le indique. Está programado en Python, fue probado en Kubuntu 18.04/20.04 LTS, Linux Mint 20 y KDE Neon, pero nada impide su aplicación para otros entornos y versiones superiores a Ubuntu 14.04 LTS. Y lo mejor: ¡Es Open-Source!.
Además, esta App utiliza GTK, Python y está pensada para utilizar tanto PRIME (Intel+AMD, AMD+AMD, Intel+Nvidia) como NVIDIA Prime (Intel+Nvidia). En este caso, nos interesa PRIME (los menús de Nvidia Prime se encontrarán deshabilitados).
Menú principal de "Monitor PRIME App Indicator" (v.0.3.3). Izquierda: Menú para PRIME. Derecha: Menú para NVIDIA Prime.
Detección del GPU renderizador (en PRIME) de "Monitor PRIME App Indicator" (v.0.3.3). Izquierda: iGPU. Derecha: dPU.
Las funciones que realiza MONITOR PRIME APP INDICATOR (v.0.3.3) son las siguientes:
  • Muestra el "Estado de GPU" (GPU renderizador)
  • Muestra las "Aplicaciones en dGPU" (PID y Nombre del proceso)
  • Muestra la "Información de GPUs" (Vendor, Device, VRAM, etc.)
  • Permite la selección del iGPU Intel o dGPU NVIDIA (Driver privativo Nvidia Prime)
  • Permite la selección de NVIDIA Optimus (On-Demand) si está disponible (Driver privativo Nvidia Prime 435.17 o superior y una versión de X.Org X server compatible)
Autor: quantum-phy (Néstor)
Más información y enlace de descarga: GitHub

A continuación les muestro algunos ejemplos de su uso en dGPUs AMD y Nvidia:
"Monitor PRIME App Indicator" (v.0.2.3) en acción con Firefox en el dGPU AMD y GALLIUM_HUD monitorizando (Equipo de prueba: HP Pavilion G4-2082la).
"Monitor PRIME App Indicator" (v.0.2.3) en acción. Renderizando en el iGPU Intel (Equipo de prueba: Lenovo Z400).
"Monitor PRIME App Indicator" (v.0.2.3) en acción. Renderizando en el dGPU Nvidia (Equipo de prueba: Lenovo Z400).
PID y Nombre de procesos (se utiliza Age of Empires 2 HD mediante wine) renderizados en el dGPU Radeon.

PID y Nombre de procesos (se utiliza Portal 2 mediante wine) renderizados en el dGPU Nvidia.
Como pueden observar, funciona muy bien y es capaz de mostrar los procesos asociados al GPU dedicado renderizador.

III. ¿Cómo verificar el estado de GPU y aplicaciones renderizadas con "Monitor PRIME App Indicator"?
Realizar lo siguiente:

[1]. Renderizar contenido en el iGPU (de por sí el entorno Unity, Gnome, Plasma, etc; se renderizan en el iGPU) o dGPU (utilizando el prefijo DRI_PRIME=1).
[2]. Abrir un terminal en la ubicación del archivo "monitor-prime_app-indicator.py".
[3]. Ejecutar el siguiente comando:
  1. ./monitor-prime_app-indicator.py
Ingresando a "Monitor PRIME App Indicator" (Aquí estoy ingresando un nombre distinto del archivo py porque es una versión interna).
[4]. Clic derecho (o izquierdo) en el App Indicator y seleccionar la opción de interés "Estado de GPU", "Aplicaciones en dGPU", "Información de GPUs".
Ícono y menú principal de "Monitor PRIME App Indicator v.0.3.3".
[5]. Ingresar la contraseña de usuario (si es solicitada).
Renderizando contenido en glxgears con DRI_PRIME=1. Se utiliza el dGPU AMD.
Se muestran las "Aplicaciones renderizadas en el dGPU" (PID y Nombre del proceso).
NOTA: Añadir permisos de ejecución a "monitor-prime_app-indicator.py" (chmod +x monitor-prime_app-indicator.py) y ejecutarlo desde su ubicación, de lo contrario no se abrirá.
NOTA: En algunos equipos no se requerirá contraseña, como en el caso de un CD/USB Live con Ubuntu.
Como pueden observar de las 02 capturas anteriores, se usa el dGPU AMD con ciertas aplicaciones, pero deben notar que "SimpleScreenRecorder" se encuentra trabajando y no se está ejecutando en el dGPU porque no se utilizó la sentencia DRI_PRIME=1 al momento de su apertura.

A continuación les comparto un vídeo de Monitor PRIME App Indicator v0.2.3 ejecutándose (La versión 0.2.6 y 0.3.3 contienen más funciones. Este vídeo es solo referencial):

El vídeo anterior mostró una versión anterior del APP, ahora les invito a revisar el siguiente contenido para ver el APP Indicator en su versión 0.2.6 bajo KDE neon 5.16:


IV. ¿Qué es "PRIME GPU Chooser"?
Esta es una utilidad que facilita el proceso de seleccionar aplicaciones en el GPU de nuestra preferencia, para usuarios de computadoras portátiles equipados con GPUs híbridos (Intel/AMD, AMD/AMD, Intel/Nvidia).
CreadorChristophHaagy

En otras palabras, es el reemplazo del "Software de gestión gráfica" ("Catalyst Control Center", "Radeon Settings" o "Panel de control de Nvidia") para la asignación de perfiles en un GPU.

V. ¿Por qué no escribo primero sobre "PRIME GPU Chooser" y luego sobre "Monitor PRIME App Indicator"?
La respuesta es simple. Porque PRIME GPU Chooser no me funcionó para "firefox" y "wine", así que primero quiero presentar algo que esté funcionando casi sin problemas y luego lo otro. Además, esta aplicación trabaja con un enfoque diferente al seleccionar procesos en el dGPU, por lo que "Monitor PRIME App Indicator" no detectará los procesos que fueron configurados en el dGPU mediante "PRIME GPU Chooser" (pero si detectará uso del dGPU).

De todas maneras, si deciden utilizarlo, les explicaré el proceso de configuración.

VI. ¿Cómo configurar los gráficos híbridos con "PRIME GPU Chooser"?

Para configurar sus aplicaciones deberán conocer la interfaz gráfica:
NOTA: Antes de utilizar esta aplicación, es necesario ejecutar el comando "driconf" en el terminal (se requiere la dependencia instalada) al menos una vez.
Posee lo siguiente:
-Cuadro llamado "Description": donde ingresarán el nombre de la aplicación que desean.
-Cuadro llamado "Executable name": donde ingresará el nombre exacto del ejecutable.
-Cuadro de selección de "GPU": donde seleccionará el GPU renderizador de la aplicación.
-Cuadro llamado "Add New Entry": donde al hacer clic se añadirá una nueva entrada para configurar una nueva aplicación.
-Cuadro llamado "Remove Selected Entries": donde al hacer clic se eliminará la entrada de la aplicación seleccionada.
-Cuadro llamado "Save": donde al hacer clic se guardarán los cambios.
-Cuadro llamado "Exit (don't forget to save)": donde al hacer clic la aplicación se cerrará.
Ahora, deberán realizar lo siguiente:
[1]. Abrir un terminal en la ubicación del archivo "gpuchooser".
[2]. Ejecutar el siguiente comando:
  1. ./gpuchooser
Ingresando a "PRIME GPU Chooser".
[3]. Ingresar la descripción y nombre del ejecutable:
      En este caso el ejecutable es glxgears
[4]. Seleccionar el GPU renderizador.
Seleccionando el dGPU para glxgears.
[5]. Guardar los cambios.
[6]. Salir (opcional).
[7]. Renderizar contenido sin "DRI_PRIME=1".
Renderizando contenido en el dGPU sin "DRI_PRIME=1" y verificando con "Monitor PRIME App Indicator".
NOTA: Añadir permisos de ejecución a "gpuchooser" (chmod +x gpuchooser) y ejecutarlo desde su ubicación.
A continuación les comparto un vídeo de la aplicación ejecutándose:

VII. ¿Cómo descargar las aplicaciones "Monitor PRIME App Indicator" & "PRIME GPU Chooser"?
Fácil.
  • Para "Monitor PRIME App Indicator" ir al menú "Descargas".
  • Para "PRIME GPU Chooser" ir al menú "Descargas".

REFERENCIAS:
1. "PRIME - ArchLinux.org".
2. "Nvidia Optimus - freedesktop.org".
3. "Como Manejar Gráficos Intercambiables en GNU/Linux".
4. "GALLIUM_HUD: FRAPS-LIKE FPS OVERLAY FOR LINUX".
5. "GitHub - Monitor-PRIME_APP-Indicator".
6. "GitHub - gpuchooser".
7. "Create an Ubuntu Application Indicator in Python: step-by-step guide".

Palabras finales
Hola a todos, aquí quantum-phy en otra publicación.
Y esta es la tercera respecto a Linux y los gráficos híbridos; con el poco tiempo que poseo por fin lo terminé :D
Si que me estoy concentrando mucho en Linux y dejé de lado Windows, pero es porque en este sistema operativo se pueden realizar muchas personalizaciones y creaciones (de hecho, poseo varios programas en standby, pero que funcionan para su propósito). Para los que siguen usando Windows, anímense a instalar Linux en Dual Boot, siempre es bueno tener un sistema operativo adicional por si falla el otro (esa es la excusa jajaja).

Ahora, si hablamos del App Indicator que creé, no es nada del otro mundo, cualquiera lo puede programar. La historia es que estuve buscando esa App, pero como no encontré resultado alguno, decidí darme dicha tarea. Como pueden observar por la versión, sigue siendo una beta, falta realizar optimizaciones y demás tareas, así que, si falla, informen sobre el problema (aquí o un GitHub).
Posteriormente, lo probé en el portatil de un compañero de trabajo, pero como no tenía Linux (y por falta de tiempo) usé un USB Live de Kubuntu y el App funcionó sin problemas.
Más adelante me encontré con "PRIME GPU Chooser", funcionó muy bien con "glxgears", pero con firefox y aplicaciones de wine nada que ver. Espero no estar haciendo algo mal, si alguien logra hacerlo funcionar como se debe, agradecería que lo comparta para mejorar este post.

Y en cuanto a los vídeos, como no poseo una pantalla 1080p (en mi equipo de prueba), usé (otra vez) mi SmartTV y para grabar utilicé "SimpleScreenRecoder" (muy fácil de utilizar). Al inicio grabé a 768p (sin darme cuenta xD), pero es ahí donde me dije (después de una semana), "mejor grabo a 1080p". De hecho, los vídeos ya estaban grabados y editados desde hace mucho, pero por el trabajo ya saben ...
Agregando una nota adicional (editado el 06/10/19): acabo de subir un vídeo del APP Indicator v0.2.6, pero esta vez utilicé una resolución personalizada para así grabar a 1080p y lo edité en Kdenlive 19.08.1.

Finalmente los agradecimientos:
Gracias a mi compañero de trabajo Alex por traer su laptop (Lenovo IdeaPad Z400) y probar "Monitor PRIME App Indicator" para descartar problemas (si no fuera por su colaboración, no habría cambiado un código que debería haber estado en mayúscula).
Gracias a candidtim por escribir una guía muy comprensible (referencia 7) para crear un App Indicator, por suerte fue super fácil gracias a lo que sé de python.
Gracias a ChristophHaag por crear "PRIME GPU Chooser" (referencia 6), una gran utilidad para simplificar la gestión gráfica.
Espero que esta información sea de ayuda.
Un saludo.

Estado

=======================================
Recomiendo este post donde se recopila mucho contenido útil y en español para jugar en Linux.
-¿Jugar en Linux?, están locos estos pingüinos

[Linux] ¿Fidelity FX Super Resolution (FSR) en cualquier juego?
- Pruebas en el canal de YouTube

[Linux] GalliumToggle publicado en GitHub.
=======================================

quantum-phy (NestorBase11)

Videos Destacados

Entradas recientes