domingo, 4 de febrero de 2018

dGPU AMD (8xxxM / R7 M2xx / R7 M3xx / R7 M4xx) no se usa correctamente

Esta es la forma de identificar el problema con drivers funcionando correctamente.
El problema que pareció fácil de solucionar, pero que contiene una gran complejidad es el "Rendimiento deficiente con dGPUs AMD GCN en laptop". Durante el transcurso de los años, se descubrieron similitudes en síntomas por parte de los usuarios en portátiles de diversos fabricantes, pero no se encontró una solución universal para tratar el problema. Aunque algo es seguro, los fabricantes no se preocupan ni pronuncian al respecto después de varios años.
Si estás interesado en conocer más sobre este problema, te invito a continuar la lectura. Mostraré los hallazgos anteriores y una sugerencia para tratar el problema.

NOTA: Esta guía es informativa, la "posible solución" y la "Alternativa", como su nombre lo dice, pueden no funcionar. La estoy publicando porque no tengo forma de probarla en mi laptop ya que no presento el problema y actualmente uso Nvidia. Espero entiendan que al ser un usuario, estoy limitado a trabajar con el portatil que tengo.
NOTA: Para probar la "posible solución", recomiendo utilizar una instalación limpia de Windows 10 e instalar MSI Afterburner.

I. ¿En qué consiste el problema?
El problema general es "Rendimiento deficiente con dGPUs AMD GCN en laptops" y el problema específico es "dGPU AMD (8xxxM / R7 M2xx / R7 M3xx / R7 M4xx) no se usa correctamente"; como habrán visto en la primera captura, el dGPU efectivamente no se usa como se debe.
Como bien se sabe, el usuario desea utilizar el dGPU para mejorar el rendimiento de alguna aplicación, pero con laptops afectadas con el problema se obtiene un pésimo rendimiento.
Ahora, si se examinan los drivers instalados, no se encontrará problema alguno, en el "Administrador de dispositivos" todo estará correcto, el Software de gestión gráfica "Catalyst Control Center" o "Radeon Software" funcionará con normalidad y la función conmutable también.

II. ¿Existe algún driver que empeore este problema?
Claro y como siempre Win10 debe ser el culpable xD.
Si recuerdan la publicación "GPUs renombrados por fabricantes en AMD Enduro ¿Es un problema?", les comenté que WinUpdate en Win10 distribuye un driver que renombra el dGPU de R7 a R8
NOTA: No todos los drivers de Win10 disminuyen el rendimiento, pero es mejor desactivarlos ya que el driver R8 empeora el problema expuesto.
Aparentemente, el driver R8 de WinUpdate (en portátiles que no presentan ningún problema a la hora de jugar) no presenta problemas, pero cuando el usuario quiere hacer uso de su dGPU no le es posible.
Driver R8 instalado. Se debe instalar otro driver si o si.
En otras palabras, el driver R8 introduce el problema a portátiles que no deberían estar afectados y de esta manera se empeora la situación.
Y es aquí donde surge la divergencia:
Los usuarios se dieron cuenta que el driver R8 no permitía que el dGPU se ejecute, por tal motivo utilizaron el Catalyst 15.7.1 WHQL (uno de los actuales en ese momento). Y como es natural, si se utiliza un driver distinto al R8, el problema se soluciona (para ese grupo selecto de usuarios no afectados por el problema real).
Pero otros usuarios afectados (por el problema real) quisieron instalar el Catalyst 15.7.1 WHQL y se llevaron con la sorpresa que seguían con el mismo problema.

III. ¿Cuáles son los síntomas para reconocer el problema?
Los principales síntomas, considerando que la aplicación esté en "Alto rendimiento" son:
  1. Caidas extremas de FPS en pleno juego.
  2. Bajos FPS sin importar como esté configurado el juego (AA, V-SYNC, Modo ventana, Pantalla completa, etc).
  3. Comportamiento errático en el gráfico de "Carga de la GPU" utilizando "MSI Afterburner". Debería ser un gráfico más continuo y no uno con varios picos y valles consecutivos.
  4. Con el dGPU desactivado en el "Administrador de dispositivos", el juego utiliza el iGPU a FPS estables.
Jugando L4D en un portatil DELL que presenta el problema. Parte 1.
Jugando L4D en un portatil DELL que presenta el problema. Parte 2.
IV. ¿Cuales son los factores que influyen en este problema?
Existen 02 factores principales:
  1. Frecuencia del Procesador
  2. Bus Width del dGPU
  3. Cargador de baja potencia (W)
La frecuencia del procesador suele ser el principal limitante, porque si el dGPU es muy rápido, entonces un procesador de baja categoría puede generar "cuello de botella" y reducir drásticamente el rendimiento (Esto puede variar dependiendo si la aplicación es CPU o GPU dependiente).
Algunos portátiles afectados con el problema, vienen con procesadores AMD con frecuencia base de 1.8 GHz y con Tubo Bost de 2.8 GHz, así que, simplemente cambiando el plan de energía de Windows a "Alto rendimiento" podrán eliminar dicha limitación (Pero el problema persistirá).

El Bus width viene a ser algo así como carriles físicos por el cual se transfiere la información. Por ejemplo si tenemos una aplicación/juego que necesita 128 bits pero el dGPU es de 64, entonces la información se parte a la mitad para poder transferirse, esto genera una pérdida de rendimiento.
Este es el motivo por el cual otro tipo de dGPUs son mejores (128 bit).
dGPU AMD Radeon R7 M440 con Bus Width de 64 Bit.
Generalmente, los notebooks afectados por el problema expuesto poseen un Bus Width de 64 bit.
En los "HP Pavilion 15-P002la" y similares, traerán un Bus width (Algunos modelos):
R5: 128 bit
R7: 64 bit
En cuanto al cargador de baja potencia, muchos equipos afectados vienen con un cargador de 65 W, esto es insuficiente (tanto así que las aplicaciones funcionan mejor utilizando únicamente la batería), en cambio mi portátil HP G4-2082la viene de fábrica con un cargador de 90W (para un procesador y dGPU muy inferiores). Algunos fabricantes proporcionaron un BIOS que "soluciona" el problema, pero no lo arregla del todo. Al final, si el suministro eléctrico es insuficiente, entonces se reducirán las frecuencias de trabajo del CPU, dGPU y demás componentes, trayendo como consecuencia la reducción de FPS. Antes de continuar, si poseen un cargador de 65 W, desconéctenlo (dejando únicamente la batería) y abran una aplicación de renderizado en el dGPU, si el problema no se presenta, entonces deberán adquirir un cargador de 90 W (o superior, dependiendo del portátil. Por ejemplo, mi DELL 7567 posee un cargador de 130 W) y tendrán todo solucionado, caso contrario deberán continuar con la lectura.

Entonces, se infiere que parte de la culpa la tienen los fabricantes.

V. Posible solución
Y esta es la parte interesante, les comento que no es seguro que funcione.
La última teoría que se me ocurrió es que el firmware del dGPU no trabaja correctamente en modo UEFI. Si el problema es el firmware, entonces una actualización de BIOS por parte del fabricante sería la solución o simplemente utilizar "Legacy Mode" (Compatibilidad heredada).
El problema es que hasta el momento no se publicó un BIOS con estas características para los equipos afectados (o tal vez exista, pero los fabricantes no quieren especificar el problema en sus notas de lanzamiento para no quedar mal xD). Es más, con drivers superiores al Radeon Software 17.4.3 el firmware del dGPU ni siquiera se inicia, haciendo uso obligatoriamente del "Legacy Mode" para habilitarlo.
NOTA: Recomiendo utilizar una instalación limpia de Win10 para este procedimiento.
1. Descargar el driver:
    Este último Catalyst más estable.

    Este driver permite utilizar la frecuencia máxima del procesador y mejoras en AMD Enduro. Puede utilizar como mínimo esta versión o una superior.
2. Ingresar al BIOS y "Activar la Compatibilidad heredada o Legacy mode" de la siguiente manera:
Ingresando a las "Opciones de arranque" del BIOS.
Activando la "Compatibilidad heredada" y guardando los cambios.
NOTA: Existen muchos tipos de BIOS por lo que la opción "Compatibilidad heredada" puede encontrarse en otra parte. Las capturas son una referencia.

3. Realizar los preparativos y limpieza según la guía:
4. Instalar el driver según la guía:
5. Configurar la aplicación según la guía:
6. Probar la configuración.
dGPU funcionando correctamente.
VI. ¿Existe alguna alternativa si este procedimiento no funciona?
Claro, se trata de la tecnología "AMD Dual Graphics", específicamente del "AFR friendly".
NOTA: Los usuarios con iGPU Intel no tienen acceso a esta tecnología.
Anteriormente mencioné que "Dual Graphics" introduce bugs gráficos, por tal motivo no lo recomendaba, pero en este caso, existe una funcionalidad incluída en esta tecnología llamada "AFR friendly" que fuerza a trabajar al dGPU.

NOTA: No poseo capturas de este método porque no tengo un APU, es por eso que no puedo hacer una guía completa.
NOTA: Se utilizará "Radeon Settings" y no "Catalyst Control Center".
Para activar dicha característica realicen:
1. Configurar la aplicación como "Alto rendimiento" según la guía:
2. Activar "AMD Dual Graphics" en "Radeon Settings".
Con similitudes a "Crossfire", "Dual Graphics" puede forzar de alguna manera el uso del dGPU.
3. Activar "AFR friendly" para una aplicación específica según la guía proporcionada por AMD (sólo en inglés):
4. Probar la configuración.

REFERENCIAS:

Palabras finales
Hola a todos, aquí quantum-phy en otra publicación.
Este es uno de los temas más compicados y con más dificultades para encontrar explicaciones y posibles soluciones.
Seguro que por toda la red encontraran frases como "Aquí está la solución", pero la verdad es que esas son "soluciones" que no funcionan para todos los usuarios, la mayoría de veces es la "Solución al driver R8 que introduce el mismo problema". Esto puede confundir a los usuarios, pero aquí les presenté con argumentos que el problema del driver R8 es distinto al expuesto.
Anteriormente tuve la teoría que el problema estuvo originado en el driver "PCI bus", pero actualmente está descartado por la contribución de los usuarios del Foro HP que me ayudaron a probar una "posible solución" que plateé con anterioridad.
Bien, sobre la "Posible solución" (valga la redundancia) publicada aquí, la clave es activar la "Compatibilidad heredada", anteriormente esta opción se utilizó para instalar "Radeon Software" superiores al 17.4.3 y evitar el "Código 43", pero parece estar relacionado al problema del rendimiento.
Quisiera agradecer a los siguientes usuarios del Foro HP por sus contribuciones: @kvnejoz, @1noobcualquiera, @Jbrios, @Abel_PH.
Bien, esta publicación se actualizará más adelante. Si realizan esta guía y funciona, por favor publicar sus resultados, caso contrario, también quiero que publiquen para seguir buscando alguna solución. Ustedes son libres de contribuir para mejorar este post. Comprendan que no poseeo un portatil con el problema para poder experimentar.
Y es todo, nos vemos en la siguiente publicación.

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