En respectant ces pratiques, vous contribuerez à un fonctionnement harmonieux du cluster et vous éviterez la plupart des problèmes courants. N’hésitez pas à consulter la FAQ pour les cas particuliers et solutions aux erreurs fréquemment rencontrées.
Voici les règles et astuces préconnisées :
Respecter le nœud de login : N’utilisez le serveur frontal que pour les préparations (édition de code, soumission de jobs, petites compilations/tests courts). Ne lancez pas de calcul prolongé ou intensif sur le nœud de login. Utilisez Slurm (jobs batch ou jobs interactifs) pour tout calcul dépassant quelques minutes ou consommant beaucoup de CPU/Mémoire.
Bien dimensionner les ressources : Lorsque vous soumettez un job, demandez seulement les ressources nécessaires (CPU, mémoire, temps). Évitez de réserver 10h si votre job en dure 1, ou 128 Go de RAM si 4 Go suffisent. Des demandes excessives allongent inutilement la file d’attente et immobilisent des ressources.
Optimiser l’utilisation des cœurs : Si votre programme est mono-thread, ne demandez qu’1 CPU. Si multi-thread, utilisez --cpus-per-task et fixez correctement vos variables (OMP_NUM_THREADS, etc.). Ne pas utiliser plus de cœurs que vous n’en avez demandés (cela pénalise d’autres jobs sur le même nœud).
Groupes de jobs : Si vous avez des centaines de tâches similaires, utilisez les array jobs plutôt que de soumettre manuellement 100 jobs. Cela allège le gestionnaire de queue. De même, regroupez de petites tâches en un seul job si possible.
Gérer les fichiers et l’espace disque : Nettoyez régulièrement vos données temporaires, résultats obsolètes et fichiers intermédiaires. Utilisez l’espace scratch pour les gros volumes et transférez les résultats durables vers un stockage pérenne. Surveillez votre quota (espace utilisé) pour éviter les blocages en cours de job.
Minimiser les I/O intensives : Les systèmes de fichiers partagés (NFS, Lustre) peuvent saturer si un job lit/écrit des milliers de petits fichiers en boucle. Combinez vos lectures/écritures si possible, utilisez des formats regroupés (tar, HDF5, etc.), et envisagez d’écrire sur le disque local du nœud (/tmp) puis de copier en fin de job.
Tester en petit, puis scaler : Déboguez votre application sur un jeu de données réduit ou avec un temps court, pour valider que tout fonctionne (dépendances, écriture de fichier, etc.). Ensuite, lancez le calcul complet. Cela évite d’occuper des ressources pendant des heures pour un job qui plante au bout de 2 minutes.
Ne pas contourner le scheduler : Ne lancez pas de processus en arrière-plan via SSH pour éviter Slurm. C’est contraire aux règles d’utilisation et cela déséquilibre le cluster (vos jobs hors scheduler pourraient être tués sans préavis par les admins).
Communiquer : Si vous avez un doute ou un besoin particulier (ex: besoin de logiciels supplémentaires, question sur les partitions), contactez les administrateurs ou le support du cluster. Mieux vaut demander conseil que de faire une erreur de configuration.
Utiliser les outils du cluster : Le cluster peut fournir des outils comme un portail web (Open OnDemand), des files spécialement configurées pour du debug ou du transfert. Renseignez-vous sur la documentation locale et profitez-en.
Sécurité & confidentialité : Ne partagez pas votre compte. Si vous traitez des données sensibles, assurez-vous de suivre les protocoles (chiffrement, espaces spécifiques). Le cluster est multi-utilisateur, n’accédez pas aux données d’autrui sans permission.