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.
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.