premierspas
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édenteProchaine révisionLes deux révisions suivantes | ||
premierspas [2017/06/16 08:40] – toussain | premierspas [2018/03/28 14:17] – hetoussa | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | ======Utilisation du gestionnaire de ressources SLURM====== | ||
- | =====Qu' | ||
- | SLURM (Simple Linux Utility for Resource Management) est un gestionnaire de ressources et ordonnanceur de tâches pour des clusters LINUX. Il permet de répartir au mieux les ressources de calcul (CPU, GPU, RAM) entre utilisateurs en gérant des files d' | ||
- | Une documentation complète est disponible sur le site de SLURM : http:// | ||
- | ====Le vocabulaire==== | + | ====== Utilisation du cluster et de SLURM ====== |
+ | |||
+ | Un **cluster** est un regroupement de machines dédiées au calcul. Il est composé d'une machine frontale (" | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | =====Accès au cluster===== | ||
+ | On accède au cluster en se connectant (en ssh) sur le serveur **frontalhpc** (frontalhpc.rcisima.isima.fr) et en utilisant le login / mot de passe de son compte habituel. Pour exécuter un programme sur un nœud de calcul, l' | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ===== Qu' | ||
+ | |||
+ | SLURM (Simple Linux Utility for Resource Management) est un gestionnaire de ressources et ordonnanceur de tâches pour des clusters LINUX. Il permet de répartir au mieux les ressources de calcul (CPU, GPU, RAM) entre utilisateurs en gérant des files d' | ||
+ | |||
+ | Les processus d'un utilisateur sont confinés aux ressources (CPU notamment) qu'il a réservées : il ne peut pas accéder aux CPU réservés par d' | ||
+ | |||
+ | |||
+ | Une documentation complète est disponible sur le site de SLURM : [[http:// | ||
+ | |||
+ | ==== Le vocabulaire ==== | ||
=== Les nœuds et CPUs === | === Les nœuds et CPUs === | ||
Ligne 11: | Ligne 29: | ||
* un nœud contient des processeurs physiques (**sockets**) contenant eux-mêmes des cœurs physiques (**cores**), | * un nœud contient des processeurs physiques (**sockets**) contenant eux-mêmes des cœurs physiques (**cores**), | ||
* dans le cas où l' | * dans le cas où l' | ||
- | Lorsqu' | ||
- | * sans l' | ||
- | * avec l' | ||
+ | Lorsqu' | ||
+ | * sans l' | ||
+ | * avec l' | ||
- | <box 220px round rgb(255, | + | [{{ : |
- | + | ||
=== Les jobs et les tasks === | === Les jobs et les tasks === | ||
- | Dans SLURM un **job** correspond à une requête d' | + | |
+ | Dans SLURM un **job** | ||
=== Les partitions === | === Les partitions === | ||
+ | |||
Une partition dans SLURM correspond à un groupement logique de nœuds de calcul. Chaque partition est associée à des contraintes en termes de ressources (en particulier le temps de calcul maximum d'un job). Une partition peut être vue comme une file d' | Une partition dans SLURM correspond à un groupement logique de nœuds de calcul. Chaque partition est associée à des contraintes en termes de ressources (en particulier le temps de calcul maximum d'un job). Une partition peut être vue comme une file d' | ||
=== Les features === | === Les features === | ||
+ | |||
L' | L' | ||
===== Soumettre un job ===== | ===== Soumettre un job ===== | ||
+ | |||
Pour soumettre un job (demande d' | Pour soumettre un job (demande d' | ||
- | | + | |
- | * soit lancer directement son job en ligne de commande à l'aide de la commande srun (voir section 2.2.2). | + | |
+ | * soit lancer directement son job en ligne de commande à l'aide de la commande srun. | ||
==== Soumettre un job en utilisant un script ==== | ==== Soumettre un job en utilisant un script ==== | ||
- | L' | + | L' |
- | Ce script est ensuite soumis à SLURM via la commande sbatch qui affecte un numéro au job. | + | |
+ | **Etape 1 : Description du job dans un fichier bash (.sh)** | ||
- | === 1. Description du job dans un fichier bash (.sh) === | ||
Un script de soumission SLURM est composé de deux parties : | Un script de soumission SLURM est composé de deux parties : | ||
+ | |||
* un ensemble d' | * un ensemble d' | ||
- | * la ligne de commande du programme à exécuter. On peut aussi définir plusieurs étapes dans un job (et donc lancer plusieurs programmes en parallèle ou en séquentiel) via la commande srun. | + | * la ligne de commande du programme à exécuter. On peut aussi définir plusieurs étapes dans un job (et donc lancer plusieurs programmes en parallèle ou en séquentiel) via la commande srun. |
- | Les options dans le script doivent être précédées de la directive #SBATCH. Un exemple de script permettant d' | + | |
+ | Les options dans le script doivent être précédées de la directive #SBATCH. Un exemple de script permettant d' | ||
<code bash> | <code bash> | ||
Ligne 52: | Ligne 74: | ||
# | # | ||
- | # exemples d' | + | # exemples d' |
#SBATCH --partition=normal | #SBATCH --partition=normal | ||
#SBATCH --time=10: | #SBATCH --time=10: | ||
#SBATCH --ntasks=1 | #SBATCH --ntasks=1 | ||
- | #SBATCH --cpus-per-task=1 | + | #SBATCH --cpus-per-task=1 |
#SBATCH --mem=1000 | #SBATCH --mem=1000 | ||
# | # | ||
- | #exécution du programme (remplacer exe par le nom du programme | + | #exécution du programme (remplacer exe par le nom du programme |
# ou la ligne de commande à exécuter) | # ou la ligne de commande à exécuter) | ||
./exe | ./exe | ||
Ligne 68: | Ligne 90: | ||
**Remarques** | **Remarques** | ||
+ | |||
* Les ressources demandées par un job lui sont allouées pour toute la durée de son exécution. Un job ne peut pas avoir accès à plus de ressources que celles demandées, en particulier s'il dépasse le temps précisé en option (ou à défaut le temps max autorisé par la partition) il est automatiquement tué. | * Les ressources demandées par un job lui sont allouées pour toute la durée de son exécution. Un job ne peut pas avoir accès à plus de ressources que celles demandées, en particulier s'il dépasse le temps précisé en option (ou à défaut le temps max autorisé par la partition) il est automatiquement tué. | ||
- | * si l' | + | * si l' |
- | * 1 CPU | + | * 1 CPU |
- | * 2Go de RAM par CPU | + | * 2Go de RAM par CPU |
- | * soumission dans la partition " normal" | + | * soumission dans la partition " normal" |
- | * la priorité d'un job dépend, entre autre, de la quantité de ressources demandées : plus un utilisateur demande de ressources, plus la priorité de son job tend à être faible. | + | * la priorité d'un job dépend, entre autre, de la quantité de ressources demandées : plus un utilisateur demande de ressources, plus la priorité de son job tend à être faible. |
- | === 2. Soumission du job via la commande sbatch | + | **Etape |
- | Le job décrit dans un script est soumis via la commande sbatch suivie du nom du script. SLURM affecte alors un numéro au job et le place dans la file d' | + | Le job décrit dans un script est soumis via la commande sbatch suivie du nom du script. SLURM affecte alors un numéro au job et le place dans la file d' |
<code powershell> | <code powershell> | ||
- | [toussain@frontalhpc ~]$ sbatch submit.sh | + | [toussain@frontalhpc ~]$ sbatch submit.sh |
Submitted batch job 2906757 | Submitted batch job 2906757 | ||
</ | </ | ||
+ | ==== Soumettre directement avec srun ==== | ||
+ | La commande srun permet de définir une étape dans un script mais on peut aussi l' | ||
+ | Exemple de soumission d'un exécutable (exe) dans la partition court pour 10 minutes : | ||
+ | <code powershell> | ||
+ | [toussain@frontalhpc ~]$ srun --partition=court --time=10:0 ./exe | ||
+ | </ | ||
premierspas.txt · Dernière modification : 2024/01/11 08:00 de admin