web-dev-qa-db-fra.com

Comment configurer igpu pour xserver et nvidia gpu pour cuda?

Ubuntu 16.04

Sortie de uname -a:

Linux Host 4.4.0-22-generic #40-Ubuntu SMP Thu May 12 22:03:46 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux

Grade de bureau:

  • CPU: Intel
  • GPU: Nvidia avec 361.42

Ce que je veux:

  • le GPU intel doit exécuter le xserver et mon moniteur, qui est connecté au DP intégré
  • le GPU nvidia ne doit être utilisé que pour le calcul spécifique à CUDA, etc.
  • contrôle total sur le gpu de nvidia (temps réel, statistiques, vitesse des ventilateurs temporaires ...)

Mon problème:

  • ni nvidia-smi ni nvidia-settings ne fonctionnent et je ne peux pas contrôler mon GPU nvidia (les erreurs sont citées plus bas)

Mon histoire:

Après le bref résumé de mon problème, je veux plonger dans le sujet; Depuis la sortie de Ubuntu 16.04, je bricole et n'atteins pas les objectifs suivants:

  • Je souhaite que mon processeur graphique Intel (i7 6700K) pilote mon serveur X et tout ce qui lui est associé.
  • Je souhaite que mon GPU dédié nvidia ne soit utilisé que pour le calcul basé sur Cuda, etc.
  • J'ajouterai plus d'un GPU nvidia au système une fois mes problèmes résolus.

Un bref résumé de mon état initial:

J'ai installé les pilotes propriétaires pour nvidia et intel (intel-microcode et nvidia-361.42) via apt-get et un démarrage sécurisé désactivé via mokutul --disable-validation.
Ensuite, j'ai configuré nvidia-prime pour utiliser la carte intel.
Ensuite, j'ai modifié mon fichier xorg.conf pour qu'il ne contienne qu'un seul écran avec Intel GPU et le pilote Intel. (demander des détails si nécessaire)
Lors du test du rendu du processeur graphique avec Blender, tout semblait aller pour le mieux, sauf que je ne pouvais obtenir aucune statistique sur mon gpu et que les paramètres nvidia semblaient vides.

Les erreurs:

Sudo nvidia-smi
NVIDIA-SMI couldn't find libnvidia-ml.so library in your system. Please make sure that the NVIDIA Display Driver is properly installed and present in your system:
Please also try adding directory that contains libnvidia-ml.so to your system PATH.

Ce que j’ai appris jusqu’à présent à travers tous mes essais et recherches depuis la publication (version courte, demandez des détails à tout moment):

Mes deux problèmes sont liés mais pas les mêmes:

Nvidia-settings Vide:

  • en effet, ces paramètres ne s'affichent que lorsqu'un serveur X est connecté au GPU nvidia.
  • la solution à cela serait d'ajouter un nouvel écran dans xorg.conf qui force le serveur x utilisé à s'exécuter sur le GPU nvidia
  • mais ceci n'est actuellement pas possible (voir autre problème) et n'est pas souhaité, car je souhaite uniquement que le GPU nvidia se concentre sur Cuda

Nvidia-smi ne fonctionne pas:

  • bbswitch n'est pas un problème car mon GPU (550ti) ne le supporte pas (erreurs dans dmesg)
  • nvidia prime modifie l'entrée de x86_64-linux-gnu_gl_conf en /usr/lib/nvidia-361/ld.so.conf (GPU nvidia sélectionné) ou /usr/lib/nvidia-361-prime/ld.so.conf (intel GPU sélectionné)
  • la configuration pour la sélection intel manque des chemins essentiels vers les modules nvidia essentiels qui sont tous présents dans la conf pour la sélection nvidia
  • lors du passage à nvidia via prime-select, je n'ai pas de serveur X car l'écran est connecté au GPU intégré, mais je me connecte à une console virtuelle nvidia-smi fonctionne

Mon assomption:

  • Nvidia prime est mauvais et ne veut pas ce que je veux.
  • Je dois en quelque sorte surmonter l'amorçage et configurer le système (même en écrivant manuellement de nouvelles configurations?)

Mes Essais:

  • J'ai essayé de désinstaller nvidia-prime mais je n'ai reconnu que par la suite que cela ne fonctionnait pas. Lorsque le fichier de configuration pour x86_64-linux-gnu_gl_conf est supprimé, le résultat est un pur désordre ...
  • J'ai même essayé d'ajouter manuellement les chemins d'accès manquants aux fichiers x86_64-linux-gnu_gl_conf, mais je ne savais pas vraiment ce que je faisais et je n'ai pas réussi.

Mes questions:

1) Comment puis-je résoudre le problème nvidia-smi? Suis-je sur la bonne voie? Quelqu'un at-il des instructions pour que je puisse procéder?

2) Est-il possible d'activer le contrôle des ventilateurs et d'autres contrôles pour le gpu nvidia (coolbits dans xorg.conf) sans serveur X sur le gpu (sans écran pour le gpu dans xorg.conf)?

Un grand merci d'avance pour vos réponses. J'ai littéralement peigné le web, le peigne étant mon problème.
Si quelque chose d’important me manquait, dites-le-moi et n'hésitez pas à demander les fichiers de log, etc.

MERCI

Images

Image de l'onglet Pilote supplémentaire: enter image description here

9
winnetou

La réponse acceptée utilise le serveur X pour activer les périphériques Nvidia. Ce n'est pas nécessaire et cela signifie que le serveur X utilisera une partie de la mémoire de la carte.

À la place, nvidia-modprobe doit être installé comme décrit dans le pilote FAQ (vous pouvez le trouver à l’adresse suivante).

Donc, ma solution recommandée est de:

1) Installez le dernier pilote Nvidia via le fichier d’exécution à partir de ftp://download.nvidia.com/XFree86/Linux-x86_64/ avec l’indicateur --no-opengl-files et --dkms.
2) Installez la version nvidia-modprobe correspondante via make all et Sudo make install à partir de ftp://download.nvidia.com/XFree86/nvidia-modprobe/

L’indicateur --dkms permet de s’assurer que le module du noyau est recompilé lorsque vous mettez à niveau votre noyau.

2
leezu

J'ai (créateur de ce post) trouvé la solution dont j'ai besoin par moi-même!

Je vais maintenant expliquer la solution à quiconque se trouve dans une situation similaire et a besoin de cette aide!

SOLUTION:
INSTALLER LE PILOTE NVIDIA VIA LE RUNFILE FOURNI AT http://www.nvidia.com/object/unix.html AVEC FLAG "--no-opengl-files" !!

Cela empêche non seulement les fichiers opengl de nvidia de remplacer les fichiers mesa existants, mais installe également le pilote sans nvidia prime!

Ainsi, tous mes problèmes sont résolus, simplement en installant le pilote manuellement, au lieu de l'installer à partir des référentiels. Le paquet des référentiels est "Optimus-Friendly" et regroupe donc tous les fauteurs de troubles inutiles.

DEUXIÈMEMENT

le xorg.conf doit être étendu avec un autre écran pour le ou les GPU dédiés afin qu'il/ils aient/aient des entrées dans nvidia-settings.

le mien ressemble à ça

Section "ServerLayout"
    Identifier     "Layout0"
    Screen 0       "intel" 0 0
    Screen 1       "nvidia550ti" 3000 0
EndSection

Section "Device"
    Identifier     "intel"
    Driver         "intel"
    BusID          "PCI:0@0:2:0"
EndSection

Section "Device"
    Identifier     "nvidia550ti"
    Driver         "nvidia"
    BoardName      "GeForce GTX 550ti"
    BusID          "PCI:2@0:0:0"
EndSection

Section "Screen"
    Identifier     "intel"
    Device         "intel"
EndSection

Section "Screen"
    Identifier     "nvidia550ti"
    Device         "nvidia550ti"
    Option         "AllowEmptyInitialConfiguration" "on"
    Option         "Coolbits" "4"
    Option         "ConstrainCursor" "on"
EndSection
2
winnetou

J'ai réinstallé les pilotes nvidia sans OpenGL comme mentionné dans les solutions ci-dessus, mais cela n'a pas fonctionné pour moi. De plus, ces solutions sont assez peu satisfaisantes, car elles impliquent de supprimer certaines capacités des pilotes (opengl).

J'ai trouvé une solution beaucoup plus simple, pour laquelle vous n'avez pas besoin de réinstaller le pilote:

  • J'ai installé les pilotes nvidia normalement
  • Dans le gui de nvidia-settings, sous les profils PRIME, j'ai choisi la carte graphique d'Intel comme GPU principal
  • Après le redémarrage, nvidia-smi ne fonctionne plus, mais j’ai résolu le problème en ajoutant / usr/lib/nvidia-387 au chemin des bibliothèques:
    export LD_LIBRARY_PATH=/usr/lib/nvidia-387:$LD_LIBRARY_PATH

Notez que, selon le pilote installé, vous devrez peut-être ajouter un autre dossier dans le chemin de votre bibliothèque, par exemple / usr/lib/nvidia-384.
Vous pouvez ajouter cette commande au fichier ~/.bashrc pour exporter automatiquement le chemin lors du chargement d'un nouveau bash.

1
revers

J'ai obtenu la configuration que vous voulez (je le voulais aussi;)):

  • le GPU intel doit exécuter le xserver et mon moniteur, qui est connecté au DP intégré
  • le GPU nvidia ne doit être utilisé que pour le calcul spécifique à CUDA, etc.
  • contrôle total sur le gpu de nvidia (temps réel, statistiques, vitesse des ventilateurs temporaires ...)

en utilisant bumblebeename__.

Mais avant d'entrer dans certains détails, je dois vous avertir que lorsque vous modifiez la configuration de nvidia-settings ou de xorg.conf ou de nvidia prime, vous devez redémarrer votre système (vous le savez peut-être déjà). Ne pas redémarrer pourrait laisser le système dans un état incohérent.


Dans ma configuration, je n'ai pas touché xorg.conf. Cela a toujours été source de douleur pour moi. S'il vous plaît laissez à l'état d'origine. Si vous ne souhaitez pas effectuer une nouvelle installation, vous pouvez trouver des sauvegardes dans /etc/X11/ (ls /etc/X11/xorg.conf*).

La première étape consiste à essayer de faire fonctionner nvidia-settings. Si vous y parvenez, vous pouvez utiliser nvidia PRIME pour basculer vers le processeur graphique intel, comme vous le dites déjà. Avoir le point principal nvidia sur le processeur graphique intel est nécessaire si vous souhaitez utiliser le processeur graphique NVIDIA uniquement pour les calculs CUDA (cela est particulièrement nécessaire si vous souhaitez utiliser le débogueur cuda cuda-gdb).

Après cela, vous pouvez essayer d’installer bumblebee :

Sudo apt install bumblebee

Redémarrer. Vous pouvez surveiller l’état du bourdon en utilisant

Sudo service bumblebeed status

ou

bumblebeed -vv

Ce que bumblebee fait, c’est d’activer le GPU NVIDIA et d’essayer d’insérer le pilote nvidia dans le noyau uniquement lorsque cela est nécessaire. Vous pouvez utiliser bumblebee en utilisant optirunen attente de la commande à exécuter.

Pour que bumblebee fonctionne, j'ai dû modifier manuellement /etc/bumblebee/bumblebee.conf afin de définir correctement le nom et le chemin du pilote nvidia.

[...]
Driver=nvidia
[...]
KernelDriver=nvidia_361
[...]
LibraryPath=/usr/lib/nvidia-361:/usr/lib32/nvidia-361

Ensuite, après un Sudo service bumblebeed restart, j'ai réussi à activer le système bumblebee.

En fait, nvidia-smi renvoie

$ nvidia-smi
NVIDIA-SMI couldn't find libnvidia-ml.so library in your system. Please make sure that the NVIDIA Display Driver is properly installed and present in your system:
Please also try adding directory that contains libnvidia-ml.so to your system PATH.

mais optirun nvidia-smi:

$ optirun nvidia-smi
Fri Jun 17 11:47:48 2016       
+------------------------------------------------------+                       
| NVIDIA-SMI 361.42     Driver Version: 361.42         |                       
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  GeForce GTX 970M    Off  | 0000:01:00.0     Off |                  N/A |
| N/A   53C    P1    18W /  N/A |     18MiB /  3071MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID  Type  Process name                               Usage      |
|=============================================================================|
|    0     20678    G   /usr/lib/xorg/Xorg                               4MiB |
+-----------------------------------------------------------------------------+

J'espère que cela t'aides.

1
Michele

principalement pour me rappeler: dans Ubuntu 18.04, utiliser igpu pour le rendu et nvidia gpu pour cuda, installer les pilotes nvidia par défaut, ouvrir nvidia-settings et configurer Intel gpu. Après cela, liste noire les pilotes nouveau et une partie des pilotes nvidia:

ouvrez /etc/modprobe.d/blacklist-nvidia.conf et commentez les lignes de la manière suivante:

#blacklist nvidia
blacklist nvidia-drm
#blacklist nvidia-modeset
#alias nvidia off
alias nvidia-drm off
#alias nvidia-modeset off

après cela, ouvrez /etc/modprobe.d/blacklist-nvidia-nouveau.conf et ajoutez ces lignes:

blacklist nouveau
options nouveau modeset=0

pour être vraiment sûr que les nouveaux sont désactivés, vous pouvez également les ajouter à la liste noire dans /etc/modprobe.d/blacklist.conf: à la fin, ajoutez:

#Blacklist nouveau drivers
blacklist nouveau
blacklist lbm-nouveau
alias nouveau off
alias lbm-nouveau off

puis redémarrez.

tapez nvidia-smi pour vérifier que nvidia est chargé et saisissez lspci -nnk | grep -iA2 3D pour vérifier que le pilote utilisé est nvidia et non nouveau.

0
user840583