GPU integrada + GPU dedicada en PC de escritorio

Buenos días,

Andaba leyendo el foro en inglés y hablaban del switch entre tarjeta gráfica integrada y dedicada en portátiles pero a mí me interesa en un PC de sobremesa

Yo tengo un Ryzen con integrada y una Nvidia de la serie 3000, y los monitores en la nvidia conectados. Lo intenté hace un tiempo y no lo conseguí frustrada.

Mi idea es que el sistema arranque con la integrada y la gpu pueda decidir qué aplicación la utiliza. Además hay un reto adicional que es que los monitores están conectados en la GPU y hay que redirigir de la integrada a la GPU la señal entiendo…

¿Alguno lo habéis hecho, alguna guía fiable?

Hola:
¿Guía fiable?
Cada Hardware es un mundo.
Cada Software de su desarrollador
Y los que tratamos de ayudar también tenemos nuestras fobias y filias.

Pero paso a pasito se pueden hacer cosas.
Primero mira si el hardware es reconocido:
lspci | grep -E "VGA|3D"

Después mira si tienes los drivers instalados:
lsmod | grep -E "amdgpu|nvidia"

Una vez que tengamos todo bien y todo instalado , (Mesa , Vulkan etc)

Viene la Gran pregunta.

¿Cuál quieres usar por defecto? y por ende ¿Cuál quieres que se dedique a programas específicos?

A partir de ahí , podremos ver si con prime-run o DRI_PRIME dirigimos nuestras necesidades/gustos a nuestro hardware.

No suele ser complicado , pero si es laborioso , eso si, una vez hecho es “coser y cantar” como decía aquel slogan publicitario.

Saludos.

Jajaja, totalmente cada uno tenemos nuestras necesidades y gustos

Actualmente todo me va perfecto usando únicamente la GPU de NVIDIA, pero… quiero probar de usar AMD Integrada por defecto para todo, menos lo que yo decida, por ejemplo Steam… y en particular me interesa LMStudio.

Cuando utilizas modelos de IA en LMStudio en 12GB te cabe uno de 8-9 Gigas y vas muy muy al límite, porque el sistema (3 pantallas + Virtualbox) te consume unos 2-3GB de VRAM

Por ese motivo tener todo conectado los monitores a la NVIDIA pero que haga de puente y sea AMD integrada que renderice todo

Hola:

Para eso de entrada tendrías que conectar un monitor a la salida de la iGPU , que es la de la placa base.
Arrancar y ver si te da señal , si no tendrás que crear un archivo como por ejemplo , /etc/X11/xorg.conf.d/10-amdgpu.conf y dentro ponerle:

Section "Device"
    Identifier "AMD"
    Driver "amdgpu"
    BusID "PCI:22:0:0"
EndSection

Una vez hecho esto , deberías poder ver las dos gráficas:

xrandr --listproviders

Te pondrá provider 1…amd y provider 2 nvidia , bueno podrá también numerarlas como 0y1 en lugar de 1y2.

Seguirás con las pruebas y harás un:

xrandr --setprovideroutputsource 1 0
xrandr --output <salida_Nvidia> --mode 1920x1080 --rate 60

La salida Nvidia será lo que te dé en ese caso xrandr , por ejemplo hdmi-2

Y sigues con las pruebas:

DRI_PRIME=1 nombre_de_aplicacion

prime-run nombre_de_aplicacion

Nunca lo he hecho con openSUSE , alguna vez con Arch y Debian , así que no sé si te va funcionar con DRI o prime-run.

Ahora bien esto tiene que aceptarlo Nvidia es decir acepte ser un “sink” para la iGPU, lo cual no siempre funciona bien en sobremesas (es más común en portátiles con Optimus).

Si todo va sobre ruedas , habría que crear un archivo , vamos a pensar que te funciona con prime , creas ~/.config/autostart/prime_redirect.sh

Dentro pones:

#!/bin/bash
xrandr --setprovideroutputsource 1 0
xrandr --output HDMI-0 --mode 1920x1080 --rate 60  # Sustituye HDMI-0 por tu salida real

Le das permisos de ejecución y listo.

Bueno listo no , mejor en KDE , en aplicaciones al inicio se lo pones.

Yo haría más menos esto…pero espera a ver si alguien tiene una idea mejor.

Saludos.

La opción que usas es la más fácil y no sé hasta que punto te merece la pena meterte en este berenjenal…

Si lo haces , suerte y ya contarás.

Vamos a la modernidá

Ahora, en lugar de Prime y cosas de esas, lo que se propone es usar switcherooctl. El primer anuncio para openSUSE fue en la web de noticas el 9 de diciembre de 2014.

Básicamente, quitas los demás sistemas si los estabas usando, te asuguras de tener instalado switcheroo-control y activas su servicio. Un ejemplo para Nvidia: SDB:NVIDIA Switcheroo Control.

Luego lo que se hace es que a cada aplicación individual se le indica si tiene que usar o no la tarjeta dedicada. En Gnome puedes seleccionar si lanzar una aplicación con o sin tarjeta dedicada desde el propio lanzador de aplicaciones. En Plasma por lo visto tienes que editar la entrada .desktop correspondiente (la señalas con el ratón, botón secundario → Propiedades, Avanzadas → usar tarjeta dedicada).

[edito]
Aquí cómo se supone que debería funcionar para Plasma: Plasma/Tips - KDE UserBase Wiki y yo juraría que en Plasma 6 se podía hacer eso pero por lo que sea en lugar de “propiedades”, el menú “editar” me lleva a la aplicación Editar menú de aplicaciones, y ese editor en Avanzadas no me muestra esa opción. Así que tengo que editar los ficheros .desktop directamente -pero puedo hacerlo con los lanzadores que coloque en el escritorio.

2 Likes

Gracias a los dos !! lo miraré con calma, y haré antes un buen snapper create … porque lo voy a romper fijo :smiley:

Hola:

¿es aplicable a Nvidea & Intel ?

Gracias

Saludos

Hola:
Muchas Gracias por devolverme a la “modernidá”
Desconocía switchroo como servicio de systemd.
Ante esto mi post carece de sentido.

Si switcherooctl list muestra las gráficas y después con switcheroorctl launch puede iniciar un programa específico.

Pues eso…nada que objetar.

Muchas Gracias nuevamente.

Saludos.

Por supuesto.

switcherooctl lo que hace es distinguir las tarjetas gráficas de forma que puedes ejecutar un comando con una selección concreta.

En cuanto a los lanzadores de Gnome o Plasma, lo que se hace es permitir seleccionar entre usar la tarjeta dedicada o la integrada.

[[Para listar las tarjetas gráficas y saber su orden]]

tux@miportatil:~> switcherooctl list
Device: 0
  Name:        Advanced Micro Devices, Inc. [AMD®/ATI] Cezanne [Radeon Vega Series / Radeon Vega Mobile Series]
  Default:     yes
  Environment: DRI_PRIME=pci-0000_05_00_0

Device: 1
  Name:        NVIDIA Corporation GA107M [GeForce RTX 3050 Ti Mobile]
  Default:     no
  Environment: __GLX_VENDOR_LIBRARY_NAME=nvidia __NV_PRIME_RENDER_OFFLOAD=1 __VK_LAYER_NV_optimus=NVIDIA_only

[[ para usar la dedicada para ejecutar un programa]]
[[r:~> switcherooctl launch -g Device_num programa]]

tux@miportatil:~> switcherooctl launch -g 1 kate

He estado peleando un rato con predeterminar la IGPU con AMD y mandar el renderizado a la NVIDIA para que saque por los monitores que tiene conectado la señal y no lo he conseguido en Wayland :crying_cat_face:

En X11 aparte de lo que ha comentado el compañero aquí hay por ahi bastante info… pero para Wayland y Kwin parece que no está implementado o muy básico…

No uso X11 porque no me gusta la gestión del brillo, tengo 3 monitores y todo el día estoy ajustando el brillo y con Wayland (a pesar que es por software realmente en dos monitores) lo hace mejor que con X11 y dccutil según he estado probando…

Ains que pena, volveré a probar con más tiempo pasarme a X11 y probar nuevamente lo del brillo

Y si eso funciona bien, me planteo montar lo de tener IGPU para todo y GPU dedicada para cosas que necesito

Estaba pensando otra prueba que de momento no he conseguido, en Wayland renderizando nvidia y con los monitores conectados a ella, decir que algunas aplicaciones se vayan por la IGPU… mi objetivo es liberar VRAM

Lo he probado y nada tampoco le gusta :crying_cat_face:

Hola a tod@s, tengo un ryzen 5 4600G que tiene la gpu integrada en el micro amd como ariadnxy , en el principio me da un mensaje que pasaba por pantalla muy rápidamente, le he hecho un dmesg -k al kernel y me da el siguiente error

puede ser, que por eso en x11 me va a 20 Hz en la pantalla de tv ,ya que no tengo monitor
los mensajes del kernel :
amdgpu: Secure display: Generic Failure.
amdgpu: SECUREDISPLAY: query securedisplay TA failed. ret 0x0
como veis en la captura de pantalla, que puedo hacer para quitar el fallo de gpu ,ya sabéis que soy un usuario no experto, gracias por sus respuestas.

Saludos

Qué pasa cuando usas switcherooctl?

me sale vacia la respuesta :\ (en wayland)

Hola de nuevo, no se si abrir un hilo nuevo para mi problema ,ya que este habla de dos gráficas
:zipper_mouth_face: perdon .

Saludos

Veamos desde el principio. Esto es un Lenovo con Ryzen + integrada AMD y dedicada Nvidia.
Probamos:

tux@portatil:~> sudo witcherooctl list
Device: 0
  Name:        Advanced Micro Devices, Inc. [AMD®/ATI] Cezanne [Radeon Vega Series / Radeon Vega Mobile Series]
  Default:     yes
  Environment: DRI_PRIME=pci-0000_05_00_0

Device: 1
  Name:        NVIDIA Corporation GA107M [GeForce RTX 3050 Ti Mobile]
  Default:     no
  Environment: __GLX_VENDOR_LIBRARY_NAME=nvidia __NV_PRIME_RENDER_OFFLOAD=1 __VK_LAYER_NV_optimus=NVIDIA_only
tux@portatil:~> switcherooctl launch -g 1 kate
tux@portatil:~> switcherooctl launch -g 0 kate

En ese momento tengo las dos ventanas de kate en ejecución. Sigamos.

tux@portatil:~> switcherooctl launch -g 1 systemsettings
qt.qml.typeregistration: Invalid QML element name "Hint"; value type names should begin with a lowercase letter
Failed to load vulkan: Non foi posíbel cargar a biblioteca vulkan: vulkan: non se pode abrir un ficheiro de obxecto compartido: Non hai tal ficheiro ou directorio
initInstance: No Vulkan library available
Failed to create platform Vulkan instance
Failed to create vulkan instance
GPU count mismatch (from vulkan). Are you maybe missing vulkan drivers? 0 2
Looking at QList("/usr/bin", "/usr/libexec/qt6", "/usr/libexec/qt6/kf6", "/usr/libexec", "/usr/libexec") "/usr/libexec/kinfocenter-opengl-helper"
libEGL warning: egl: failed to create dri2 screen
libEGL warning: egl: failed to create dri2 screen

tux@portatil:~> 

Hay que instalar Vulkan y alguna cosa, pero por ahora tengo esto:

Si lo ejecuto con la integrada:

tux@portatil:~> switcherooctl launch -g 0 systemsettings
qt.qml.typeregistration: Invalid QML element name "Hint"; value type names should begin with a lowercase letter
Failed to load vulkan: Non foi posíbel cargar a biblioteca vulkan: vulkan: non se pode abrir un ficheiro de obxecto compartido: Non hai tal ficheiro ou directorio
initInstance: No Vulkan library available
Failed to create platform Vulkan instance
Failed to create vulkan instance
GPU count mismatch (from vulkan). Are you maybe missing vulkan drivers? 0 2
Looking at QList("/usr/bin", "/usr/libexec/qt6", "/usr/libexec/qt6/kf6", "/usr/libexec", "/usr/libexec") "/usr/libexec/kinfocenter-opengl-helper"
^C
tux@portatil:~> ^C


Por lo que sea FreeCAD me da un fallo de segmento si lo intento ejecutar con la Nvidia, así que probemos Blender:

tux@portatil:~> switcherooctl launch -g 0 blender
Writing userprefs: "/home/tux/.config/blender/4.4/config/userpref.blend" ok
Info: Preferencias guardadas
which: no nvcc in (/home/tux/.local/bin:/home/tux/bin:/usr/local/bin:/usr/bin:/bin:/snap/bin)
Saved session recovery to "/tmp/quit.blend"

Blender quit

Omito el detalle de las extensiones y otras cosas, solo la info sobre la gráfica.

GPU:
====================================
renderer: ‘AMD Radeon Graphics (radeonsi, renoir, ACO, DRM 3.61, 6.13.8-1-default)’
vendor: ‘AMD’
version: ‘4.6 (Core Profile) Mesa 25.0.2’
device type: ‘AMD’
backend type: ‘OPENGL’
extensions:

tux@portatil:~> switcherooctl launch -g 1 blender
which: no nvcc in (/home/tux/.local/bin:/home/tux/bin:/usr/local/bin:/usr/bin:/bin:/snap/bin)
Saved session recovery to "/tmp/quit.blend"

Blender quit
tux@portatil:~> exit

Y con Nvidia:

GPU:
====================================
renderer: ‘NVIDIA GeForce RTX 3050 Ti Laptop GPU/PCIe/SSE2’
vendor: ‘NVIDIA Corporation’
version: ‘4.6.0 NVIDIA 570.133.07’
device type: ‘NVIDIA’
backend type: ‘OPENGL’
extensions:

Hacía mucho que no usaba script para estas cosas, pero guarda mucho detalle el condenado :grinning: Espero que no haya erratas.

OK!

Muchas gracias… pero creo que al no estar en un portatil… no funciona :crying_cat_face:

Simplemente me devuelve vacio :frowning:

Leyendo info en este artículo veo que debería funcionar en escritorio

La pregunta es, ¿lo tienes activo?

Comprueba

sudo systemctl status switcheroo-control.service

Por ejemplo, en este miniportátil con una sóla gráfica:

tux@localhost:~> switcherooctl list
tux@localhost:~> sudo systemctl status switcheroo-control.service 
[sudo] password for root: 
○ switcheroo-control.service - Switcheroo Control Proxy service
     Loaded: loaded (/usr/lib/systemd/system/switcheroo-control.service; disabled; preset: d>
     Active: inactive (dead)
tux@localhost:~> sudo systemctl start switcheroo-control.service 
tux@localhost:~> switcherooctl list
Device: 0
  Name:        Intel® HD Graphics 4000
  Default:     yes
  Environment: DRI_PRIME=pci-0000_00_02_0

En este caso bastaría con activarlo para que se reinicie siempre:

sudo systemctl enable switcheroo-control.service

O podría haber ejecutado en lugar de start el comando:

sudo systemctl enable --now switcheroo-control.service

que lo que hace es activarlo para que se ejecute al arranque y se inicie al mismo tiempo.

[añado]
En el foro tenemos la manía de usar las herramientas de texto para estas cosas porque es más fácil, visual etc. Pero por ejemplo puedes usar YaST → Servicios para consultar su estado, arrancarlos, reiniciarlos, configurar que se inicien al arranque, etc.

Que tonta, claro había que levantar el servicio, ya lo he hecho…

Entonces si lanzo:
switcherooctl launch -g 0 systemsettingscon 0 y 1 me levanta las prefrencias del sistema pero en ambos casos me funciona con la Nvidia (lo se porque no veo movimiento en el uso de la GPU de amd ni aumento de memoria consultando Mission Center )

Si lanzo por AMD falla con el mensaje “dispatching to wayland display” y si lanzo por nvidia da casques la aplicación pero funciona…

¿No es necesario redirigir la salida de AMD > NVIDIA que es la que tiene los monitores conectados? o no tiene que ver el error ese?, ahora buscaré info

¿Cómo lanzas el Mission Center?