Queue des jobs en gpu

Bonjour,

J'aimerais comprendre le fonctionnement de la queue pour l'utilisation des gpu de l'IFB. J'utilise alternativement les commandes 'sinfo -N -O nodelist,partition:15,Gres:30,GresUsed:50 -p gpu'
et 'squeue -p gpu' pour voir l'utilisation courante des gpu et la queue pour lancer des jobs, cependant je ne comprends pas tout... Il y a des fois ou il n'y a rien d'autre dans la queue et le gpu que je demande est libre, pourtant le job ne se lance pas.

Y a-t-il une restriction sur leur utilisation si j'ai déjà d'autres jobs qui tournent en gpu ? (j'ai pourtant déjà réussi à lancer des jobs gpu en simultané). Si j'ai bien compris, il ne faut pas demander plus de cores cpu que disponibles sur un même noeud gpu (j'ai déjà réussi à lancer deux jobs gpu en simultané sur les deux gpu 40g du noeud 3 en calculant le nombre de cores restant pour lancer mon deuxième job, sinon cela ne fonctionnait pas...), ai-je bien compris ? Y a-t-il un moyen de consulter le nombre de cores actuellement utilisé sur chaque noeud gpu ?

Globalement, comment fonctionne l'attribution des gpu ? Toute aide est la bienvenue !

Merci beaucoup d'avance pour votre temps,
Bonne journée,
Mathieu

Bonjour,

Si les ressources (GPU, CPU, mémoire) sont disponibles, votre job doit être lancé.
Si ce n'est pas le cas, c'est une erreur et n'hésitez pas à nous le signaler.

Les ressources GPU sont assez limité et ont été découpées en plusieurs profils (SLURM GPU - IFB Core Cluster Documentation):

  • gpu-node-01: 14 profils 1g.5gb
  • gpu-node-02: 2 profils 3g.20gb
  • gpu-node-02: 1 profil 7g.40gb
  • gpu-node-03: 2 profils 7g.40gb

Il est donc possible que des cartes/noeuds GPU soit disponibles si des profils ne sont pas utilisés (le petit profil 1g.5gb est souvent disponible).

Je pense également que dans votre cas, ce ne sont pas les ressources GPU qui ont "bloqué" en attente votre job mais les autres ressources: CPU ou mémoire.
En occurrence, je vous rejoins, ce sont sûrement les CPU qui n'étaient pas disponibles.
Sur un noeud GPU de l'IFB on a 62 CPU et 500G de mémoire pour le calcul. Je ne peux donc pas avoir 2 jobs demandant chacun 1 profil 7g.40gb, 128G RAM et 32 CPU. Le deuxième job reste en attente puisqu'il y a seulement 30 CPU disponibles (il attend qu'ils soient libérés).

Pour visualiser les ressources CPU, mémoire et GPU, on peut toujours faire appel à la commande sinfo:

# List of node names.
# Number of CPUs by state in the format "allocated/idle/other/total"
# Size of memory per node in megabytes.
# Amount of allocated memory on a node
# Generic resources (gres) associated with the nodes.
# Generic resources (gres) currently in use on the nodes.

sinfo -N -O nodelist,CPUsState,Memory:10,AllocMem,Gres:30,GresUsed:50 -p gpu

Et comme vous le notez, on peut utiliser la commande squeue pour visualiser la file avec plein d'infos complémentaires:

squeue -p gpu -O "JobID:10,UserName:10,State:10,TimeUsed:10,TimeLimit:15,NumNodes:6,NumCPUs:5,MinMemory:15,tres-per-node,NodeList:15,Reason"

Faites-nous signe si cela bloque.

Bonne soirée

J'oubliais: pensez à bien vérifier que la demande en ressource (GPU, CPU, mémoire) corresponds bien à ce qui est utilisé (pour éviter de gaspiller des ressources), par exempla à l'aide de seff une fois votre job terminé (SLURM user guide - IFB Core Cluster Documentation).