Trouver le bottlneck d'un programme

Demande d'aide : c'est ici.
Répondre
Avatar de l’utilisateur
Dunatotatos
Membre
Membre
Messages : 426
Inscription : 11 mai 2016, 20:56
Status : Hors-ligne

Salut à tous,

Je joue avec keras (un module python basé sur Theano pour jouer avec les réseaux de neurones). J'ai activé le support du GPU, mais la plupart de mes programmes restent très lents. Je cherche donc pourquoi.
La première idée a été de lancer atop et de surveiller l'utilisation des ressources. Rien ne dépasse 10%. J'utilise alors nvidia-smi pour surveiller l'utilisation du GPU, mais elle reste en-dessous de 10%, elle aussi. Pourtant, mon programme est listé dans les processus utilisant le GPU. Sur un exemple plus simple, Keras utilise bien 100% du GPU.

Comment trouver la ressources limitantes ?

Merci d'avance pour votre aide
Duna
Avatar de l’utilisateur
Mimoza
Contributeur
Contributeur
Messages : 655
Inscription : 22 avr. 2016, 12:00
Localisation : Terre
Status : Hors-ligne

Les I/O ? Surveille tu l'activité des disque ou accès mémoire ?
Avatar de l’utilisateur
Dunatotatos
Membre
Membre
Messages : 426
Inscription : 11 mai 2016, 20:56
Status : Hors-ligne

Je vérifie avec iotop, L'utilisation ne dépasse pas 1%.

En fait, j'ai pensé que certaines ressources insoupçonnées pourrait poser problème. Comme l'attente de la génération de bits aléatoires dans /dev/random. Si je lance cat /dev/random, aucune ressource affichée dans atop, nvidia-smi ou iotop n'est sur-utilisée. Pourtant, mon programme est bloqué. Et j'imagine que /dev/random n'est pas la seule ressource de ce type.

Un travail peut-être intéressant serait de répertorier tous les points potentiellement bloquant, et de monitorer ces points dans un utilitaires unique qui permettrait de détecter facilement des bottleneck.
Utile ? Existant ?

EDIT : J'ai relancé mon programme une 2ème fois, et bizarrement, il s'est fini en moins d'une seconde (ce qui correspond au temps de calcul que j'avais estimé sur GPU).
Répondre