IMB > cellule > Calcul et Développement

PlaFRIM3 - avancé : partie pratique

... en travaux ...

Informations pour une utilisation avancée de PlaFRIM3.

Jobs sur plusieurs nœuds

Pour exécuter correctement des jobs sur plusieurs nœuds, il est nécessaire de bien comprendre le fonctionnement des commandes slurm.

Plusieurs éléments doivent être pris en considération :

Il faut aussi connaître la terminologie utilisée par slurm pour décrire les noeuds de calcul :

La notion de CPU (processing unit) de slurm correspond à l’unité de traitement la plus petite : (core dans la plus part des cas, ou thread si les core ont plus d’un seul thread). C’est pourquoi on parle souvent de core et non de thread.

Pourquoi est-ce important ?

Pour des raisons de performance.

Pour avoir les meilleurs performances, il faut généralement que les tâches soient bindées sur les cœurs de calcul pour éviter les invalidations de cache provoquées par les migrations et qu’elles manipulent des données présentes sur les bancs mémoire directement raccordés au cœur de calcul concerné.

On peut cependant (en mixant slurm et mpi) se retrouver dans des situations de binding très défavorable où toutes les tâches sont bindées sur un unique core, pendant que tous les autres cores se tournent les pouces...

Le NUMA : Non Uniforme Memory Access. Ce term désigne les architectures où le temps d’accès à la mémoire est variable. C’est le cas des machines multi socket. La mémoire proche (raccordée à un socket) est plus rapidement accessible que les mémoires éloignées (nécessitant de passer par un autre socket.

Les options correspondantes les plus utilisées :

Quelques exemples en "slurm pur" (spawn avec srun)