Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
| fr:install:clafoutis:ubuntu_cluster_install [2025/08/19 11:11] – [Comment suivre les opérations d'une grappe SLURM] foisys | fr:install:clafoutis:ubuntu_cluster_install [2025/10/25 17:27] (Version actuelle) – [Protocole d'installation] foisys | ||
|---|---|---|---|
| Ligne 23: | Ligne 23: | ||
| * Exemple [[https:// | * Exemple [[https:// | ||
| - | * Qu'en est-il de l' | + | * Qu'en est-il de l' |
| - | * Les meilleurs GPU demandent beaucoup, beaucoup de puissance et dégagent beaucoup, beaucoup de chaleur :-( | + | * 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. | + | * 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' | + | * 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' |
| ===== Configuration logicielle en pré-requis ===== | ===== Configuration logicielle en pré-requis ===== | ||
| - | * Ces instructions assument que vous êtes l' | + | * Ces instructions assument que vous êtes l' |
| - | * Tous les RPi ont accès aux volumes partagés par le NAS (via NFS) sous ''/ | + | * Tous les RPi ont accès aux volumes partagés par le NAS (via NFS) sous ''/ |
| * Si nécessaire. installer les librairies nécessaires sur les noeuds de calcul. | * Si nécessaire. installer les librairies nécessaires sur les noeuds de calcul. | ||
| * Nous installerons le système de gestion des tâches [[https:// | * Nous installerons le système de gestion des tâches [[https:// | ||
| + | |||
| ===== Protocole d' | ===== Protocole d' | ||
| - | < | + | < |
| + | < | ||
| * Si ça n'a pas été encore fait, il faut changer le nom de chaque machine pour que ça corresponde au fichier ''/ | * Si ça n'a pas été encore fait, il faut changer le nom de chaque machine pour que ça corresponde au fichier ''/ | ||
| - | |||
| <sxh bash> | <sxh bash> | ||
| # Sur gru | # Sur gru | ||
| % sudo hostnamectl set-hostname gru | % sudo hostnamectl set-hostname gru | ||
| # Sinon, sur chaque noeud de calcul: | # Sinon, sur chaque noeud de calcul: | ||
| - | % sudo hostnamectl set-hostname minion0x | + | % sudo hostnamectl set-hostname minion0x </ |
| - | </ | + | |
| * Modifiez le fichier ''/ | * Modifiez le fichier ''/ | ||
| - | |||
| <sxh bash> | <sxh bash> | ||
| # Super Clafoutis | # Super Clafoutis | ||
| Ligne 56: | Ligne 55: | ||
| 192.168.a.xy2 minion02 | 192.168.a.xy2 minion02 | ||
| 192.168.a.xy3 minion03 | 192.168.a.xy3 minion03 | ||
| - | 192.168.a.xy4 minion04 | + | 192.168.a.xy4 minion04 |
| </ | </ | ||
| - | * Pour faciliter l'accès inter-machines, | + | * Ubuntu a la fâcheuse manie d'effacer tout ce qui se trouve dans le fichier |
| + | <sxh bash> | ||
| + | % sudo nano / | ||
| + | </ | ||
| + | |||
| + | * Éditer le fichier en mettant un dièse (''#'' | ||
| + | <sxh bash> | ||
| + | # Cette ligne… | ||
| + | manage_etc_hosts: | ||
| + | # …devient: | ||
| + | # | ||
| + | </ | ||
| + | |||
| + | * Pour faciliter l' | ||
| <sxh bash> | <sxh bash> | ||
| # Sur gru | Pas besoin d' | # Sur gru | Pas besoin d' | ||
| Ligne 68: | Ligne 80: | ||
| </ | </ | ||
| - | * Pour le bon fonctionnement de '' | + | * Pour le bon fonctionnement de '' |
| - | </ | + | |
| + | </ | ||
| < | < | ||
| Ligne 76: | Ligne 88: | ||
| <sxh bash> | <sxh bash> | ||
| - | % sudo apt install -y munge libmunge-dev | + | % sudo apt install -y munge libmunge-dev |
| </ | </ | ||
| Ligne 82: | Ligne 94: | ||
| * Dans le fichier ''/ | * Dans le fichier ''/ | ||
| - | <sxh bash> | ||
| - | OPTIONS=" | ||
| - | </ | ||
| - | * Créer une clé d' | + | <sxh bash> OPTIONS=" |
| - | <sxh bash> % sudo -u munge mungekey | + | * Créer une clé d' |
| + | |||
| + | <sxh bash> % sudo -u munge mungekey | ||
| * Par défaut, '' | * Par défaut, '' | ||
| * Démarrer/ | * Démarrer/ | ||
| - | <sxh bash> | ||
| - | % sudo -u munge systemctl start munge && systemctl status munge | ||
| - | </ | ||
| - | | + | <sxh bash> % sudo -u munge systemctl start munge && systemctl status munge </ |
| + | |||
| + | | ||
| <sxh bash> | <sxh bash> | ||
| % for i in `seq 1 4`; do sudo scp / | % for i in `seq 1 4`; do sudo scp / | ||
| - | # Sur chaque minion: | + | # Sur chaque minion: |
| - | % sudo chown munge:munge / | + | % sudo chown munge:munge / |
| - | % sudo chmod 400 / | + | % sudo chmod 400 / |
| - | % sudo systemctl restart munge | + | % sudo systemctl restart munge |
| - | # Vous ne devriez pas voir de message d' | + | # Vous ne devriez pas voir de message d' |
| - | % systemctl status munge | + | % systemctl status munge |
| </ | </ | ||
| * Il reste à vérifier que les RPi se reconnaissent: | * Il reste à vérifier que les RPi se reconnaissent: | ||
| + | |||
| <sxh bash> | <sxh bash> | ||
| # Sur chaque minion | # Sur chaque minion | ||
| Ligne 125: | Ligne 136: | ||
| UID: bioubuntu (1030) | UID: bioubuntu (1030) | ||
| GID: users (100) | GID: users (100) | ||
| - | LENGTH: 0 </ | + | LENGTH: 0 |
| + | </ | ||
| * Pour s' | * Pour s' | ||
| <sxh bash> | <sxh bash> | ||
| - | # Sur chaque RPi de la grappe | + | # Sur chaque RPi de la grappe |
| - | % sudo systemctl enable munge </ | + | % sudo systemctl enable munge |
| + | </ | ||
| </ | </ | ||
| Ligne 147: | Ligne 160: | ||
| * Il faut ajouter quelques paramètres dans le fichier de config ''/ | * Il faut ajouter quelques paramètres dans le fichier de config ''/ | ||
| - | <sxh bash> | + | |
| - | # Sur un RPi 5 16Gb; la moitié si 8Gb | + | <sxh bash> |
| - | innodb_buffer_pool_size=8192M | + | # Sur un RPi 5 16Gb; la moitié si 8Gb |
| - | innodb_log_file_size=256M | + | innodb_buffer_pool_size=8192M |
| - | innodb_lock_wait_timeout=900 | + | innodb_log_file_size=256M |
| + | innodb_lock_wait_timeout=900 | ||
| </ | </ | ||
| * Les premières étapes se font dans MariaDB ;-) Commençons par créer l' | * Les premières étapes se font dans MariaDB ;-) Commençons par créer l' | ||
| + | |||
| <sxh bash> | <sxh bash> | ||
| # On opère MariaDB comme si c' | # On opère MariaDB comme si c' | ||
| Ligne 165: | Ligne 180: | ||
| * Ensuite on crée les bases de données nécessaires: | * Ensuite on crée les bases de données nécessaires: | ||
| + | |||
| <sxh bash> | <sxh bash> | ||
| - | # | + | # |
| - | mysql> create database slurm_acct_db; | + | |
| - | Query OK, 1 row affected (0.04 sec) | + | Query OK, 1 row affected (0.04 sec) </ |
| - | </ | + | |
| * On termine la mise en place sur MySQL en donnant les permissions nécessaires à l' | * On termine la mise en place sur MySQL en donnant les permissions nécessaires à l' | ||
| + | |||
| <sxh bash> | <sxh bash> | ||
| - | # | + | # |
| mysql> grant all privileges on slurm_acct_db.* to ' | mysql> grant all privileges on slurm_acct_db.* to ' | ||
| - | Query OK, 0 rows affected (0.02 sec) | + | Query OK, 0 rows affected (0.02 sec) </ |
| - | </ | + | |
| + | * On installe le package '' | ||
| - | * On installe le package '' | ||
| < | < | ||
| % sudo apt install slurmdbd | % sudo apt install slurmdbd | ||
| Ligne 184: | Ligne 200: | ||
| * Il faut créer un fichier de configuration pour '' | * Il faut créer un fichier de configuration pour '' | ||
| + | |||
| <sxh bash> | <sxh bash> | ||
| AuthType=auth/ | AuthType=auth/ | ||
| Ligne 192: | Ligne 209: | ||
| StorageUser=slurm | StorageUser=slurm | ||
| # Evidemment, mettre celui que vous aurez choisi ci-dessus | # Evidemment, mettre celui que vous aurez choisi ci-dessus | ||
| - | # Ici, c'est pour l' | + | # Ici, c'est pour l' |
| StoragePass=bioubuntu | StoragePass=bioubuntu | ||
| StorageType=accounting_storage/ | StorageType=accounting_storage/ | ||
| LogFile=/ | LogFile=/ | ||
| PidFile=/ | PidFile=/ | ||
| - | SlurmUser=slurm | + | SlurmUser=slurm </ |
| - | </ | + | |
| * Assurez-vous d' | * Assurez-vous d' | ||
| + | |||
| <sxh bash> | <sxh bash> | ||
| - | % sudo touch / | + | % sudo touch / |
| - | % sudo echo ' | + | % sudo echo ' |
| - | % sudo chown slurm:slurm / | + | % sudo chown slurm:slurm / |
| - | % sudo chown slurm:slurm / | + | % sudo chown slurm:slurm / |
| % sudo chmod 600 / | % sudo chmod 600 / | ||
| - | % sudo systemctl enable | + | % sudo systemctl enable |
| - | % sudo systemctl status slurmdbd | + | % sudo systemctl status slurmdbd </ |
| - | </ | + | |
| * Vous ne devriez pas voir de message d' | * Vous ne devriez pas voir de message d' | ||
| + | |||
| </ | </ | ||
| Ligne 217: | Ligne 234: | ||
| * On commence par l' | * On commence par l' | ||
| - | <sxh bash> % sudo apt install -y slurmctld </ | + | |
| + | <sxh bash> | ||
| + | % sudo apt install -y slurmctld | ||
| + | </ | ||
| * À la suite de cette opération, tous les RPi auront les bons répertoires avec les bonnes permissions ;-) | * À la suite de cette opération, tous les RPi auront les bons répertoires avec les bonnes permissions ;-) | ||
| Ligne 223: | Ligne 243: | ||
| <sxh bash> | <sxh bash> | ||
| - | # | + | # sudo nano / |
| - | sudo nano / | + | </ |
| * Il vous suffit de l' | * Il vous suffit de l' | ||
| <sxh bash> | <sxh bash> | ||
| - | # Le nom de la grappe | + | # Le nom de la grappe |
| - | ClusterName=superclafoutis | + | ClusterName=superclafoutis |
| - | # Le nom du serveur sur lequel fonctionne le processus slurmctld | + | # Le nom du serveur sur lequel fonctionne le processus slurmctld |
| - | SlurmctldHost=gru | + | SlurmctldHost=gru |
| - | AuthType=auth/ | + | AuthType=auth/ |
| - | ProctrackType=proctrack/ | + | ProctrackType=proctrack/ |
| - | SchedulerType=sched/ | + | SchedulerType=sched/ |
| - | SelectType=select/ | + | SelectType=select/ |
| - | # Le nom de l' | + | # Le nom de l' |
| - | SlurmUser=slurm | + | SlurmUser=slurm |
| - | StateSaveLocation=/ | + | StateSaveLocation=/ |
| - | SlurmdSpoolDir=/ | + | SlurmdSpoolDir=/ |
| - | SlurmctldPidFile=/ | + | SlurmctldPidFile=/ |
| - | SlurmdPidFile=/ | + | SlurmdPidFile=/ |
| - | # L' | + | # L' |
| - | AccountingStorageType=accounting_storage/ | + | AccountingStorageType=accounting_storage/ |
| - | AccountingStorageHost=gru | + | AccountingStorageHost=gru |
| - | AccountingStorageUser=slurm | + | AccountingStorageUser=slurm |
| - | # Les infos sur les noeuds qui feront les tâches | + | # Les infos sur les noeuds qui feront les tâches |
| - | NodeName=minion01 Sockets=1 CoresPerSocket=4 ThreadsPerCore=1 State=UNKNOWN | + | NodeName=minion01 Sockets=1 CoresPerSocket=4 ThreadsPerCore=1 State=UNKNOWN |
| - | NodeName=minion02 Sockets=1 CoresPerSocket=4 ThreadsPerCore=1 State=UNKNOWN | + | NodeName=minion02 Sockets=1 CoresPerSocket=4 ThreadsPerCore=1 State=UNKNOWN |
| - | NodeName=minion03 Sockets=1 CoresPerSocket=4 ThreadsPerCore=1 State=UNKNOWN | + | NodeName=minion03 Sockets=1 CoresPerSocket=4 ThreadsPerCore=1 State=UNKNOWN |
| - | NodeName=minion04 Sockets=1 CoresPerSocket=4 ThreadsPerCore=1 State=UNKNOWN | + | NodeName=minion04 Sockets=1 CoresPerSocket=4 ThreadsPerCore=1 State=UNKNOWN |
| - | # On regroupe tous les noeuds dans une même partition | + | # On regroupe tous les noeuds dans une même partition |
| - | PartitionName=biobunch Nodes=ALL Default=YES MaxTime=120 State=UP | + | PartitionName=biobunch |
| - | </ | + | Nodes=ALL |
| + | Default=YES | ||
| + | MaxTime=120 | ||
| + | State=UP </ | ||
| - | * Remarquez que '' | + | * Remarquez que '' |
| * Il faut terminer la configuration avec les commandes suivantes: | * Il faut terminer la configuration avec les commandes suivantes: | ||
| - | <sxh bash> | + | |
| - | % sudo mkdir -p / | + | <sxh bash> |
| - | % sudo chown slurm:slurm / | + | % sudo mkdir -p / |
| - | % sudo chmod 755 / | + | % sudo chown slurm:slurm / |
| - | % sudo touch / | + | % sudo chmod 755 / |
| + | % sudo touch / | ||
| % sudo touch / | % sudo touch / | ||
| - | % sudo touch / | + | % sudo touch / |
| - | % sudo chown -R slurm:slurm / | + | % sudo chown -R slurm:slurm / |
| - | </ | + | |
| - | * Assurez vous maintenant de copier le fichier '' | + | * Assurez vous maintenant de copier le fichier '' |
| * Sur '' | * Sur '' | ||
| Ligne 273: | Ligne 297: | ||
| % sudo systemctl enable slurmctld | % sudo systemctl enable slurmctld | ||
| % sudo systemctl restart slurmctld | % sudo systemctl restart slurmctld | ||
| - | % sudo systemctl status slurmctld | + | % sudo systemctl status slurmctld </ |
| - | </ | + | |
| - | * Vous ne devriez pas voir de messages d' | + | * Vous ne devriez pas voir de messages d' |
| - | </ | + | |
| - | < | + | |
| - | | + | </ |
| - | < | + | |
| - | # Sur chaque RPi de calcul | + | |
| - | % sudo clown root:root / | + | |
| + | <sxh> | ||
| + | # Sur chaque RPi de calcul | ||
| + | % sudo chown root:root / | ||
| </ | </ | ||
| + | |||
| * Sur chaque noeud de travail, on installe '' | * Sur chaque noeud de travail, on installe '' | ||
| + | |||
| <sxh bash> | <sxh bash> | ||
| - | % sudo apt install -y slurmd libpmix-dev | + | % sudo apt install -y slurmd libpmix-dev |
| % sudo systemctl enable slurmd | % sudo systemctl enable slurmd | ||
| - | % sudo systemctl restart slurmd | + | % sudo systemctl restart slurmd |
| - | % systemctl status slurmd | + | % systemctl status slurmd </ |
| - | </ | + | |
| * Encore une fois, vous ne devriez pas voir d' | * Encore une fois, vous ne devriez pas voir d' | ||
| - | <sxh> | ||
| - | % sudo chown -R slurm:slurm / | ||
| - | % sudo chmod 755 / | ||
| - | % sudo touch / | ||
| - | % sudo chown -R slurm:slurm / | ||
| - | </ | ||
| - | | + | <sxh> |
| + | % sudo chown -R slurm:slurm / | ||
| + | % sudo chmod 755 / | ||
| + | % sudo touch / | ||
| + | % sudo chown -R slurm:slurm / | ||
| + | |||
| + | | ||
| <sxh bash> | <sxh bash> | ||
| % sinfo | % sinfo | ||
| - | PARTITION AVAIL TIMELIMIT | + | PARTITION AVAIL TIMELIMIT NODES STATE NODELIST |
| - | biobunch* | + | biobunch* up 2:00:00 4 idle minion[01-04] </ |
| - | </ | + | |
| - | * Si l' | + | * Si l' |
| <sxh bash> | <sxh bash> | ||
| - | % Sur minion01 par ex.: | + | # Pour minion01 par ex.: |
| % sudo scontrol update nodename=minion01 state=idle </ | % sudo scontrol update nodename=minion01 state=idle </ | ||
| Ligne 320: | Ligne 344: | ||
| <sxh bash> | <sxh bash> | ||
| - | % srun --nodelist=minion[01-04] hostname | + | % srun –nodelist=minion[01-04] hostname |
| minion01 | minion01 | ||
| minion02 | minion02 | ||
| minion03 | minion03 | ||
| minion04 | minion04 | ||
| - | </ | + | </ |
| - | </ | + | |
| - | </ | + | |