Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
fr:install:clafoutis:ubuntu_cluster_install [2025/08/14 10:28] – [Protocole d'installation] foisysfr:install:clafoutis:ubuntu_cluster_install [2025/09/07 16:40] (Version actuelle) – [Protocole d'installation] foisys
Ligne 22: Ligne 22:
       * Un système physique d'installation des RPi, ou bien en rack ou en bloc.       * Un système physique d'installation des RPi, ou bien en rack ou en bloc.
         * Exemple [[https://www.uctronics.com/raspberry-pi/uctronics-19-1u-raspberry-pi-rack-mount-with-ssd-mounting-brackets.html|ici]] et [[https://www.uctronics.com/raspberry-pi/uctronics-desktop-cluster-enclosure-4-raspberry-pis-2-5-ssd-front-removable-trays.html|ici]] (à titre de démonstration)         * Exemple [[https://www.uctronics.com/raspberry-pi/uctronics-19-1u-raspberry-pi-rack-mount-with-ssd-mounting-brackets.html|ici]] et [[https://www.uctronics.com/raspberry-pi/uctronics-desktop-cluster-enclosure-4-raspberry-pis-2-5-ssd-front-removable-trays.html|ici]] (à titre de démonstration)
 +
 +  * Qu'en est-il de l'utilisation du processeur graphique (//GPU//) dans un contexte de calcul distribué? Il est très utile de déléguer au GPU certaines/plusieurs tâches de calcul et la bio-informatique ne fait pas exception :-) Cependant, faire ça avec les Raspberry Pi n'est pas une très bonne idée... Pourquoi?
 +    * Les meilleurs GPU demandent beaucoup, beaucoup de puissance et dégagent beaucoup, beaucoup de chaleur :-( 
 +    * Le GPU installé sur les RPI 4/5 sont bien pour gérer une interface graphique à la Xfce mais ne sont pas très puissants pour faire autre chose.
 +    * Mais le plus gros problème reste un problème logiciel. La pile logicielle la plus souvent utilisée en HPC est CUDA de Nvidia qui n'existe tout simplement pas pour les RPi. Il existe une alternative, OpenCL, mais l'utiliser sur RPi demande une interface logicielle de compatibilité, ce qui vient bouffer une partie de la puissance du GPU pour faire la conversion entre les deux éléments. De plus, il existe très peu de logiciels en bio-informatique qui utiliser OpenCL...
  
 ===== Configuration logicielle en pré-requis ===== ===== Configuration logicielle en pré-requis =====
Ligne 53: Ligne 58:
 192.168.a.xy4 minion04  192.168.a.xy4 minion04 
 </sxh> </sxh>
 +
 +  * Ubuntu a la fâcheuse manie d'effacer tout ce qui se trouve dans le fichier ''/etc/hosts'' pour y mettre ses propres entrées à chaque mise à jour :-( Il faut lui dire de ne pas faire ça! Ouvrer le fichier ''cloud.cfg'' qui se trouve sous ''/etc/cloud'':
 +<sxh bash>
 +% sudo nano /etc/cloud/cloud.cfg
 +</sxh> 
 +
 +  * Éditer le fichier en mettant un dièse (''#'') devant cette ligne et sauvegarder le fichier:
 +<sxh bash>
 +# Cette ligne...
 +update_etc_hosts: true
 +# ...devient:
 +#update_etc_hosts: true
 +</sxh> 
  
   * Pour faciliter l'accès inter-machines, utilisons l'accès SSH sans mot de passe via la création et l'installation d'une clé d'authentification:   * Pour faciliter l'accès inter-machines, utilisons l'accès SSH sans mot de passe via la création et l'installation d'une clé d'authentification:
Ligne 164: Ligne 182:
 mysql> create database slurm_acct_db;  mysql> create database slurm_acct_db; 
 Query OK, 1 row affected (0.04 sec) Query OK, 1 row affected (0.04 sec)
- 
-mysql> create database slurm_job_db;  
-Query OK, 1 row affected (0.04 sec)  
 </sxh> </sxh>
  
Ligne 174: Ligne 189:
 mysql> grant all privileges on slurm_acct_db.* to 'slurm'@'localhost';  mysql> grant all privileges on slurm_acct_db.* to 'slurm'@'localhost'; 
 Query OK, 0 rows affected (0.02 sec)  Query OK, 0 rows affected (0.02 sec) 
-# 
-mysql> grant all privileges on slurm_job_db.* to 'slurm'@'localhost';  
-Query OK, 0 rows affected (0.03 sec)  
 </sxh> </sxh>
  
Ligne 263: Ligne 275:
 % sudo chown slurm:slurm /var/spool/slurmctld % sudo chown slurm:slurm /var/spool/slurmctld
 % sudo chmod 755 /var/spool/slurmctld % sudo chmod 755 /var/spool/slurmctld
 +% sudo touch /var/log/slurm/slurmctld.log
 +% sudo touch /var/log/slurm/slurm_jobacct.log 
 +% sudo touch /var/log/slurm/slurm_jobcomp.log
 +% sudo chown -R slurm:slurm /var/log/slurm
 </sxh> </sxh>
   * Assurez vous maintenant de copier le fichier ''slurm.conf'' sur tous les RPi faisant partie de la liste des noeuds de travail au même endroit sous ''/etc/slurm''.   * Assurez vous maintenant de copier le fichier ''slurm.conf'' sur tous les RPi faisant partie de la liste des noeuds de travail au même endroit sous ''/etc/slurm''.
Ligne 290: Ligne 306:
 </sxh> </sxh>
  
-  * Encore une fois, vous ne devriez pas voir d'erreur ;-)+  * Encore une fois, vous ne devriez pas voir d'erreur ;-) Sur chacun des noeuds de calcul, il faut ajuster les paramètres pour le stockage des journaux: 
 +<sxh> 
 +% sudo chown -R slurm:slurm /var/spool/slurmd 
 +% sudo chmod 755 /var/spool/slurmd 
 +% sudo touch /var/log/slurm/slurmd.log 
 +% sudo chown -R slurm:slurm /var/log/slurm/slurmd.log 
 +</sxh> 
  
   * Vérifier que le serveur ''gru'' voit les machines:   * Vérifier que le serveur ''gru'' voit les machines:
Ligne 321: Ligne 343:
  
  
 +===== Comment utiliser SLURM pour exécuter des tâches sur une grappe de calcul  =====
 +==== En utilisant la commande srun ====
 +
 +Page man pour ''srun'': [[https://manpages.ubuntu.com/manpages/noble/man1/srun.1.html|Manuel]]
 +
 +  * La commande ''srun'' exécutée sur le noeud contrôleur (dans notre cas, ''gru'') délèguera l'exécution d'une //commande// à un des noeuds de calcul. À moins que le noeud soit spécifié, l'exécution se fera via SLURM en choisissant un noeud selon la configuration utilisée par ''slurmctld''.
 +  *  Un exemple banal:
 +<sxh bash>
 +% srun hostname
 +minion01
 +% srun --nodelist=minion02 hostname
 +minion02
 +% srun --nodelist=minion0[1,2] hostname
 +minion02
 +minion01
 +</sxh>
 +
 +==== En utilisant la commande sbatch ====
 +
 +Page man pour ''sbatch'': [[https://manpages.ubuntu.com/manpages/noble/man1/sbatch.1.html|Manuel]]
 +
 +  * La commande ''sbatch'' exécutée sur le noeud contrôleur (dans notre cas, ''gru'') délèguera l'exécution d'un //script//; c'est un nuance importante car le script est capable de permettre l'exécution d'une série complexe de commandes. À moins que le noeud soit spécifié, l'exécution se fera via SLURM en choisissant un noeud selon la configuration utilisée par ''slurmctld''.
 +  *  Un exemple simple de script:
 +<sxh bash>
 +À venir...
 +</sxh>
 +
 +===== Comment suivre les opérations d'une grappe SLURM  =====
 +
 +  * Dans une grappe de calcul, on a le plus souvent besoin de suivre les paramètres suivants:
 +    * Suivre les ressources disponibles;
 +    * Comment s'exécute les tâches.
 +  * SLURM dispose d'outils de gestion permettant de voir ces paramètres: 
 +    * Avec ''sinfo'', on peut voir la santé des noeuds de calcul de la grappe et avoir une vue d'ensemble des ressources;
 +    * Avec ''scontrol'', on peut voir plus spécifiquement les tâches en action et les ressources disponibles pour un noeud spécifique;
 +    * Avec ''sstat'', on peut voir en temps réel les détails sur une tâche en particulier;
 +    * Avec ''squeue'', on voit les tâches en cours et les tâches en attente de manière globale.
 +  * Ces outils sont pratiques (évidemment!) mais une vue d'ensemble regroupant des informations de toutes ses applications est très utile :-) Il existe quelques solutions libres pour faire le suivi via une page web mais ce sont souvent des outils complexes en installation et qui en vaillent la peine pour de grosse grappes... Deux solutions plus rudimentaires mais tout à fait fonctionnelles sont disponibles:
 +    * Avec [[https://gitlab.com/lkeb/slurm_viewer|Slurm Viewer]], on utilise le terminal pour suivre les opération de la grappe, soir en regardant les nous, soit en suivante les tâches;
 +    * Avec [[https://github.com/hunoutl/slurmtop|slurmtop]], on fait pas mal la mème chose mais la présentation est différente.
 +    * C'est votre choix :-)
 ===== Références ===== ===== Références =====
 +
 +[[https://medium.com/@hghcomphys/building-slurm-hpc-cluster-with-raspberry-pis-step-by-step-guide-ae84a58692d5|Building a Slurm HPC Cluster with Raspberry Pi’s: Step-by-Step Guide]]
  
 [[https://glmdev.medium.com/building-a-raspberry-pi-cluster-784f0df9afbd|Building a Raspberry Pi cluster: Part I - The basics]] [[https://glmdev.medium.com/building-a-raspberry-pi-cluster-784f0df9afbd|Building a Raspberry Pi cluster: Part I - The basics]]