43 votes

Comment fonctionne l'option NVIDIA à la demande dans les paramètres du serveur NVIDIA X ?

J'ai installé le pilote propriétaire Nvidia sur Ubuntu 19.10.
Dans la section Profils Prime, il y a trois options:
* NVIDIA (Mode Performance)
* NVIDIA À la demande
* Intel (Mode Économie d'énergie)

Les première et dernière options sont assez évidentes, mais je ne sais pas comment fonctionne la deuxième option. Comment détecte-t-elle quelles applications ont besoin du pilote Nvidia et lesquelles n'en ont pas besoin?

31voto

Md Narimani Points 815

D'accord, j'ai enfin compris. À ce moment, il semble que NVIDIA puisse effectuer un rendu délégué pour les applications OpenGL et Vulkan.
Pour activer ce rendu délégué, vous devez mettre le profil Prime sur "À la demande", puis pour le rendu délégué Vulkan, vous devez ajouter cette variable dans votre fichier /etc/environment:
__NV_PRIME_RENDER_OFFLOAD=1

Pour les applications OpenGL, vous devez ajouter ces variables:
__NV_PRIME_RENDER_OFFLOAD=1
__GLX_VENDOR_LIBRARY_NAME=nvidia

Après un redémarrage, le rendu délégué commencera.

Pour vérifier quelle carte graphique est utilisée, vous pouvez saisir la commande suivante dans le terminal:
glxinfo | grep vendor

14voto

WinEunuuchs2Unix Points 91128

De: Partie I. Instructions d'installation et de configuration

Chapitre 35. PRIME Render Offload

Le rendu PRIME offload est la capacité d'avoir un écran X rendu par un GPU, mais de choisir certaines applications dans cet écran X pour être rendues sur un autre GPU. Ceci est particulièrement utile en combinaison avec la gestion dynamique de l'alimentation pour laisser un GPU NVIDIA éteint, sauf lorsqu'il est nécessaire pour rendre des applications sensibles à la performance.

Le GPU rendant la majorité de l'écran X est appelé le "sink", et le GPU vers lequel le rendu de certaines applications est "déchargé" est appelé la "source". La source de rendu de délestage produit un contenu qui est présenté sur le sink de délestage de rendu. Le pilote NVIDIA peut fonctionner comme une source de rendu PRIME offload, pour décharger le rendu de GLX+OpenGL ou Vulkan, en présentant à un écran X piloté par le pilote X xf86-video-modesetting.

Exigences du serveur X

Le support de rendu PRIME offload de NVIDIA nécessite les commits git suivants dans le serveur X.Org X:

  • 7f962c70 - xsync : Ajouter des ressources à l'intérieur de SyncCreate, exporter SyncCreate

  • 37a36a6b - GLX : Ajouter un mappage par client de vendeur

  • 8b67ec7c - GLX : Utiliser le client envoyant pour rechercher les XID

  • 56c0a71f - GLX : Ajouter une fonction pour changer la liste des vendeurs d'un client

  • b4231d69 - GLX : Définir GlxServerExports::{major,minor}Version

À l'heure actuelle, ces commits ne sont présents que dans la branche principale du serveur X.Org X, et ne sont pas encore dans une version officielle du serveur X.Org X.

13voto

ke_takahashi Points 66

En tant qu'extension de la réponse de Md Narimani : je peux confirmer que cela fonctionne réellement pour moi sur kubuntu 19.10 avec le pilote nvidia version 440

vous pouvez trouver des informations supplémentaires à Chapitre 34. PRIME Render Offload

vous pouvez également définir l'option 'à la demande' dans l'interface graphique: Paramètres Nvidia X Server - Profils PRIME : NVIDIA À la Demande
entrez la description de l'image ici ensuite redémarrez.

ensuite, vous pouvez démarrer votre application avec les variables d'environnement directement à partir de la ligne de commande - ainsi, vous pouvez basculer entre les GPU selon vos besoins:

stefan@stefan-Zen:~$ glxheads :0
Nom : :0
  Affichage :     0x556081a45d40
  Fenêtre :      0x7000002
  Contexte :     0x556081a64a70
  GL_VERSION :  3.0 Mesa 19.2.8
  GL_VENDOR :   Intel Open Source Technology Center
  GL_RENDERER : Mesa DRI Intel(R) UHD Graphics 630 (Coffeelake 3x8 GT2) 
stefan@stefan-Zen:~$ __NV_PRIME_RENDER_OFFLOAD=1 __GLX_VENDOR_LIBRARY_NAME=nvidia glxheads :0
Nom : :0
  Affichage :     0x55f6dd9097a0
  Fenêtre :      0x7000002
  Contexte :     0x55f6dd944878
  GL_VERSION :  4.6.0 NVIDIA 440.64
  GL_VENDOR :   NVIDIA Corporation
  GL_RENDERER : GeForce RTX 2060/PCIe/SSE2

1voto

WiR3D Points 7220

Selon les réponses de @md-narimani et @dominick-pastore il existe en fait des scripts shell prêts à l'emploi à cet effet dans le cadre du paquet nvidia-prime-applet.

Et vous pouvez simplement les placer avant toute commande que vous utiliseriez normalement.

nvidia-optimus-offload-glx glxheads :0
nvidia-optimus-offload-vulkan vkcube

Mais cela ne fonctionnera que si le pilote de noyau Nvidia est chargé correctement et que Xorg a généré CORRECTEMENT les écrans Nvidia, vous pouvez tester cela en :

cat /var/log/Xorg.0.log | grep -i NVIDIA
# il devrait afficher plusieurs lignes avec "NVIDIA(G0)"

Si les écrans ne sont pas détectés correctement, créez alors /etc/X11/xorg.conf.d/nvidia.conf et remplissez-le avec le contenu des instructions du Chapitre 34. PRIME Render Offload comme mentionné par @stefan-krüger.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X