Relion
Article mis en ligne le 18 septembre 2018
dernière modification le 22 octobre 2018
logo imprimer

PAGE EN TRAVAUX

Version 2.1 (intel mpi)

Compilé avec le compilateur intel, cuda 9.1 et intel mpi en double précision

Faut-il utiliser les GPUs avec relion ?

Tout dépend de vos données : si elles sont suffisamment conséquentes le GPU peut apporter une grande efficacité. Par exemple avec les données de benchmark fournies par relion on va 16 fois plus vite en utilisant un nœud GPU qu’en utilisant un nœud CPU. Sur d’autres jeux de données, on n’a noté aucune amélioration en utilisant le GPU.

Que ce soit avec ou sans GPU, il s’avère inutile d’utiliser un trop grand nombre de nœuds : pas plus de deux nœuds GPU ou trois nœuds CPU semblent un nombre correct (avec les données de benchmark).

Les graphiques suivants montrent le temps d’exécution de plusieurs jobs relion, suivant le nombre de nœuds CPU (courbe rouge) ou suivant le nombre de nœuds GPU (courbe bleue, les 4 GPUS sont utilisés sur chaque nœud). Pour ces essais nous avons repris les paramètres préconisés par relion, mais nous nous sommes limités à 5 itérations. Le paramètre —pool est fixé à 4 dans le cas des nœuds CPU, et 10 dans le cas des nœuds GPU.

PNG

Exemples de scripts sbatch

Un script sbatch qui tourne sur 1 nœud GPU :
Le script suivant permet de lancer relion de la manière suivante :

  • 17 processus mpi (un maître et 16 travailleurs)
  • 4 threads par processus
  • Chaque GPU sera partagé entre 4 processus
  • 62 cœurs du nœud seront utilisés (donc l’hyperthreading est utilisé)
  • Utilisation du programme mps, qui permet souvent d’accélérer les calculs lorsque chaque GPU est partagé entre plusieurs processus. Avec les données de benchmark sur un nœud GPU nous avons eu plus 25% d’accélération.

Un script sbatch qui tourne sur 2 nœuds GPU :

Vérifier que le job tourne correctement

Lorsque votre job relion est en état RUNNING, nous vous conseillons de vérifier que tout se passe correctement grâce à la commande :

Pour un appel relion on devrait avoir - par moments la sortie ci-dessous. A d’autres moments de l’exécution les GPUs ne sont pas du tout utilisés.


On voit que :

  1. Les processus se répartissent correctement sur les deux processeurs
  2. Les 4 GPUS sont utilisés (100% de taux d’utilisation)
  3. 85% de la mémoire des GPUs est utilisée
  4. Chaque CPU exécute 4 ou 5 processus.



Site réalisé sous SPIP
avec le squelette ESCAL-V3
Version : 3.87.86
Version Escal-V4 disponible pour SPIP3.2 Hébergeur : INP Toulouse