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/14 08:57] – [Protocole d'installation] foisys | fr: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' | * Un système physique d' | ||
* Exemple [[https:// | * Exemple [[https:// | ||
+ | |||
+ | * Qu'en est-il de l' | ||
+ | * 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' | ||
===== Configuration logicielle en pré-requis ===== | ===== Configuration logicielle en pré-requis ===== | ||
Ligne 53: | Ligne 58: | ||
192.168.a.xy4 minion04 | 192.168.a.xy4 minion04 | ||
</ | </ | ||
+ | |||
+ | * Ubuntu a la fâcheuse manie d' | ||
+ | <sxh bash> | ||
+ | % sudo nano / | ||
+ | </ | ||
+ | |||
+ | * Éditer le fichier en mettant un dièse (''#'' | ||
+ | <sxh bash> | ||
+ | # Cette ligne... | ||
+ | update_etc_hosts: | ||
+ | # ...devient: | ||
+ | # | ||
+ | </ | ||
* Pour faciliter l' | * Pour faciliter l' | ||
Ligne 129: | Ligne 147: | ||
</ | </ | ||
- | < | + | < |
* Une grappe de calcul est la plupart du temps une ressource partagée par un ensemble. Pour assurer le suivi des opérations et de l' | * Une grappe de calcul est la plupart du temps une ressource partagée par un ensemble. Pour assurer le suivi des opérations et de l' | ||
Ligne 141: | Ligne 159: | ||
- Effacer la base de données de démonstration appelée '' | - Effacer la base de données de démonstration appelée '' | ||
- | * Il faut ajouter quelques paramètres dans le fichier de config ''/ | + | * Il faut ajouter quelques paramètres dans le fichier de config ''/ |
- | < | + | < |
- | w | + | # Sur un RPi 5 16Gb; la moitié si 8Gb |
+ | innodb_buffer_pool_size=8192M | ||
+ | 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 159: | Ligne 178: | ||
* 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; | 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) | ||
</ | </ | ||
* 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) | ||
- | # | ||
- | mysql> grant all privileges on slurm_job_db.* to ' | ||
- | Query OK, 0 rows affected (0.03 sec) | ||
</ | </ | ||
- | * On installe le package '' | + | * On installe le package '' |
- | + | < | |
- | <sxh> % sudo apt install slurmdbd </ | + | % sudo apt install slurmdbd |
+ | </ | ||
* 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 194: | Ligne 205: | ||
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' | ||
StoragePass=bioubuntu | StoragePass=bioubuntu | ||
StorageType=accounting_storage/ | StorageType=accounting_storage/ | ||
Ligne 204: | Ligne 216: | ||
<sxh bash> | <sxh bash> | ||
% sudo touch / | % sudo touch / | ||
- | % echo 'your_secure_password' > / | + | % sudo echo 'votre_mot_de_passe_mariadb_pour_usager_slurm' > / |
% sudo chown slurm:slurm / | % sudo chown slurm:slurm / | ||
- | % sudo chown slurm:slurm / | + | % sudo chown slurm: |
+ | % sudo chmod 600 / | ||
% sudo systemctl enable --now slurmdbd | % sudo systemctl enable --now slurmdbd | ||
% sudo systemctl status slurmdbd | % sudo systemctl status slurmdbd | ||
</ | </ | ||
- | * Vérifiez que ça baigne en initialisant la base de données avec '' | + | * Vous ne devriez pas voir de message d'erreur :-) |
- | <sxh bash> | + | |
- | % sudo slurmdbd -D -vvv | + | |
- | # Vous allez voir plein de texte défilé pour la création des tables et l'initialisation | + | |
- | # de MariaDB pour slurmdbd… | + | |
- | </ | + | |
- | + | ||
- | * Plus à venir…. | + | |
</ | </ | ||
- | < | + | < |
* On commence par l' | * On commence par l' | ||
- | |||
<sxh bash> % sudo apt install -y slurmctld </ | <sxh bash> % sudo apt install -y slurmctld </ | ||
Ligne 231: | Ligne 235: | ||
* Il faut maintenant créer un fichier de configuration '' | * Il faut maintenant créer un fichier de configuration '' | ||
- | <sxh bash> # % sudo cp / | + | <sxh bash> |
+ | # | ||
+ | sudo nano / | ||
* Il vous suffit de l' | * Il vous suffit de l' | ||
- | <sxh bash> ClusterName=clafoutis | + | <sxh bash> |
+ | # Le nom de la grappe | ||
+ | ClusterName=superclafoutis | ||
+ | # Le nom du serveur sur lequel fonctionne le processus slurmctld | ||
+ | SlurmctldHost=gru | ||
+ | AuthType=auth/munge | ||
+ | ProctrackType=proctrack/ | ||
+ | SchedulerType=sched/ | ||
+ | SelectType=select/ | ||
+ | # Le nom de l' | ||
+ | SlurmUser=slurm | ||
+ | StateSaveLocation=/ | ||
+ | SlurmdSpoolDir=/var/spool/slurmd | ||
+ | SlurmctldPidFile=/var/run/ | ||
+ | SlurmdPidFile=/var/run/ | ||
+ | # L' | ||
+ | AccountingStorageType=accounting_storage/ | ||
+ | AccountingStorageHost=gru | ||
+ | AccountingStorageUser=slurm | ||
+ | # Les infos sur les noeuds qui feront les tâches | ||
+ | NodeName=minion01 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=minion04 Sockets=1 CoresPerSocket=4 ThreadsPerCore=1 State=UNKNOWN | ||
+ | # On regroupe tous les noeuds dans une même partition | ||
+ | PartitionName=biobunch | ||
+ | </ | ||
- | * Remarquez que '' | + | * Remarquez que '' |
+ | * Il faut terminer la configuration avec les commandes suivantes: | ||
+ | <sxh bash> | ||
+ | % sudo mkdir -p / | ||
+ | % sudo chown slurm:slurm / | ||
+ | % sudo chmod 755 / | ||
+ | % sudo touch / | ||
+ | % sudo touch / | ||
+ | % sudo touch / | ||
+ | % sudo chown -R slurm:slurm / | ||
+ | </ | ||
+ | * Assurez vous maintenant de copier | ||
* Sur '' | * Sur '' | ||
- | <sxh bash> % sudo systemctl enable slurmctld % sudo systemctl restart slurmctld </ | + | <sxh bash> |
+ | % sudo systemctl enable slurmctld | ||
+ | % sudo systemctl restart slurmctld | ||
+ | % sudo systemctl status slurmctld | ||
+ | </ | ||
- | * Vous ne devriez pas voir de messages d' | + | * Vous ne devriez pas voir de messages d' |
+ | </ | ||
+ | < | ||
- | <sxh bash> % sudo systemctl enable slurmd % sudo systemctl restart slurmd </ | + | * N' |
+ | < | ||
+ | # Sur chaque RPi de calcul | ||
+ | % sudo clown root:root / | ||
+ | </ | ||
+ | * Sur chaque noeud de travail, on installe '' | ||
+ | <sxh bash> | ||
+ | % sudo apt install -y slurmd libpmix-dev | ||
+ | % sudo systemctl enable slurmd | ||
+ | % sudo systemctl restart slurmd | ||
+ | % systemctl status slurmd | ||
+ | </ | ||
- | * Vérifier que le contrôleur voit les machines: | + | * Encore une fois, vous ne devriez pas voir d' |
+ | < | ||
+ | % sudo chown -R slurm:slurm / | ||
+ | % sudo chmod 755 / | ||
+ | % sudo touch / | ||
+ | % sudo chown -R slurm:slurm / | ||
+ | </ | ||
- | <sxh bash> % sinfo PARTITION AVAIL TIMELIMIT NODES STATE NODELIST all* up infinite 1 idle minion01 </ | + | |
- | * Si l' | + | <sxh bash> |
+ | % sinfo | ||
+ | PARTITION AVAIL TIMELIMIT | ||
+ | biobunch* | ||
+ | </ | ||
- | <sxh bash> % Sur minion01 par ex.: % sudo scontrol update nodename=minion01 state=idle </ | + | * Si l' |
+ | |||
+ | <sxh bash> | ||
+ | % Sur minion01 par ex.: | ||
+ | % sudo scontrol update nodename=minion01 state=idle </ | ||
* Note: si à tout moment, un noeud " | * Note: si à tout moment, un noeud " | ||
Ligne 269: | Ligne 343: | ||
+ | ===== Comment utiliser SLURM pour exécuter des tâches sur une grappe de calcul | ||
+ | ==== En utilisant la commande srun ==== | ||
+ | |||
+ | Page man pour '' | ||
+ | |||
+ | * La commande '' | ||
+ | * Un exemple banal: | ||
+ | <sxh bash> | ||
+ | % srun hostname | ||
+ | minion01 | ||
+ | % srun --nodelist=minion02 hostname | ||
+ | minion02 | ||
+ | % srun --nodelist=minion0[1, | ||
+ | minion02 | ||
+ | minion01 | ||
+ | </ | ||
+ | |||
+ | ==== En utilisant la commande sbatch ==== | ||
+ | |||
+ | Page man pour '' | ||
+ | |||
+ | * La commande '' | ||
+ | * Un exemple simple de script: | ||
+ | <sxh bash> | ||
+ | À venir... | ||
+ | </ | ||
+ | |||
+ | ===== 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' | ||
+ | * SLURM dispose d' | ||
+ | * Avec '' | ||
+ | * Avec '' | ||
+ | * Avec '' | ||
+ | * Avec '' | ||
+ | * Ces outils sont pratiques (évidemment!) mais une vue d' | ||
+ | * Avec [[https:// | ||
+ | * Avec [[https:// | ||
+ | * C'est votre choix :-) | ||
===== Références ===== | ===== Références ===== | ||
+ | |||
+ | [[https:// | ||
[[https:// | [[https:// |