2 votes

Sous-performance sévère de CUDA par rapport à Windows, faire d'Intel le premier GPU ?

J'ai procédé à l'installation de GPU tensorflow sur un système dualboot ( Windows 10 y Ubuntu 16.04.x )

les deux OS ont à peu près les mêmes versions de pilotes

Lenovo P50 laptop with Nvidia Quadro M1000M    

Windows 376.51 nvidia driver version
Ubuntu  375.66 nvidia driver version

J'entraîne un modèle d'apprentissage profond, chaque ensemble d'entraînement prend un temps très différent.

Windows 10   + Tensorflow 1.3 GPU + CUDA =  8 min. per epoch
Ubuntu 16.04 + Tensorflow 1.3 GPU + CUDA = 45 min. per epoch

L'installation d'Ubuntu s'est faite via tous les paramètres par défaut de apt-get (pas d'installation de sources), et pip

Ma seule pensée jusqu'à présent... est que je dois utiliser le GPU NVIDIA pour peindre les graphiques... et ne pas utiliser TOUT le GPU pour le calcul... y a-t-il un moyen de vérifier cela ? J'ai tout installé sur les deux mêmes... y compris les correctifs pour CUDA 8.x

Je ne sais pas exactement quel est le problème, mais il semble que les pilotes soient configurés pour utiliser Optimus. Peut-être dois-je le changer de profil ?

enter image description here

Idée 1 : Je pourrais essayer demain de recompiler tensorflow à partir des sources ... avec toutes les optimisations CPU dans Ubuntu 16.x ... peut-être que l'installation pip est plus douloureuse que l'installation binaire sous Windows ...

Idée 2 : Si ce qui précède ne donne rien, je vais entrer dans le BIOS et forcer les graphiques intégrés d'Intel faire une réinstallation et essayer d'installer les graphiques d'Intel un peu comme ça.. :

Il semble que ce soit un ordinateur portable "Optimus" Je ne peux pas désactiver complètement le gpu nvidia pour le rendu, seulement activer le mode hybride. Je vais peut-être faire une nouvelle installation, supprimer tous les pilotes nvidia et voir si je peux faire fonctionner X de cette façon ?

http://guanghan.info/blog/en/my-works/building-our-personal-deep-learning-rig-gtx-1080-ubuntu-16-04-cuda-8-0rc-cudnn-7-tensorflowmxnetcaffedarknet/

"So I went to BIOS and set the integrated graphics as default and 
restart. Remember to switch the HDMI from the port on GTX1080 to that 
on the motherboard. Now the display works well. I successfully 
installed Ubuntu following its prompt guides."

https://devtalk.nvidia.com/default/topic/991849/-solved-run-cuda-on-dedicated-nvidia-gpu-while-connecting-monitors-to-intel-hd-graphics-is-this-possible-/

When installing the NVIDIA display driver, be sure to:

1. not install the openGL libs (there are command line options with 
driver runfile installers or CUDA runfile installers to allow this)
2. make sure not to make any changes to the xorg.conf configuration.

3voto

Erik Points 242

Après de nombreuses recherches, j'ai réussi à trouver le problème et à le résoudre ! Oui, le GPU Intel sous Windows était utilisé alors que sous Linux il était inutilisé... forçant le GPU NVIDIA à dessiner l'écran et à perdre des ressources.

J'ai réinstallé une nouvelle clé USB Ubuntu 16.04 par-dessus mon système précédent

During reinstallation choose updates, but don't use 3rd party libraries

Une fois installé, vous devriez vérifier que vous êtes dans le mode de pilote Intel nouveau au lieu du pilote propriétaire de Nvidia.

Maintenant, la partie la plus étrange

Un utilisateur ici a signalé le même problème, mais pour les déploiements de postes de travail.

https://devtalk.nvidia.com/default/topic/991849/cuda-setup-and-installation/-solved-run-cuda-on-dedicated-nvidia-gpu-while-connecting-monitors-to-intel-hd-graphics-is-this-possible-/

en fait...

En résumé, pour que cela fonctionne, vous devez

1. make sure you have enabled onboard graphics in the BIOS settings (or set it as primary)

J'ai choisi le mode hybride puisqu'il n'y a pas d'option "intel only".

2. install both xorg intel driver and nvidia/cuda drivers

ici, vous devez passer les drapeaux

--no-opengl-files //for the driver install I choose latest (384)

--no-openfl-libs // cuda 8.0 + patch here ..

assurez-vous de désactiver nouveau et toutes les étapes décrites dans les instructions

principal moyen de savoir que vous êtes bon installez glmark2 et toujours s'assurer qu'il sort de l'information.

3. start nvidia-settings, and go to the PRIME settings page, set Intel (Power Saving Mode) as default
4. modify your .bashrc and set LD_LIBRARY_PATH to at least contain /usr/local/cuda/lib64:/usr/lib/nvidia-XXX where XXX in my case is 375.

ce dossier n'existait pas du tout pour moi. J'ai quand même ajouté le fichier par défaut LD_LIBRARY_PATH y PATH décrit dans les instructions post installation de cuda

4. logout to restart X or reboot
5. run glmark2 to confirm GL status

puisque vous devriez avoir installé sans installer les fichiers opengl c'est peut-être inutile

<strike>6. (update) if the libGL printed from step 5 points to nvidia's driver folder, you need to remove/rename the libGL.so*/libGLX.so*/libGLdispatch.so* under nvidia driver folder so that your OS can pick up the mesa libGL library.</strike>

7. run nvidia-smi to list your dedicated NVIDIA GPU, and run your CUDA program, you should not see any errors.

ça ne marchait pas pour moi jusqu'à ce que j'exécute nvidia-modprobe une fois puis soudain tout a fonctionné.

mise à jour : malheureusement, un redémarrage a cassé la configuration. je ne sais pas encore comment réparer...

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