

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Exécution de tâches dans un cluster en mode de files d'attente multiples
<a name="multi-queue-tutorial-v3"></a>

Ce didacticiel explique comment exécuter votre premier « Hello World » job en AWS ParallelCluster [mode file d'attente multiple](configuration-of-multiple-queues-v3.md).

Lorsque vous utilisez l'interface de ligne de AWS ParallelCluster commande (CLI) ou l'API, vous ne payez que pour les AWS ressources créées lorsque vous créez ou mettez à jour AWS ParallelCluster des images et des clusters. Pour de plus amples informations, veuillez consulter [AWS services utilisés par AWS ParallelCluster](aws-services-v3.md).

**Conditions préalables**
+ AWS ParallelCluster [est installé](install-v3-parallelcluster.md).
+ Le AWS CLI [est installé et configuré.](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)
+ Vous possédez une paire de [clés Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html).
+ Vous disposez d'un rôle IAM doté des [autorisations](iam-roles-in-parallelcluster-v3.md#iam-roles-in-parallelcluster-v3-example-user-policies) requises pour exécuter la [`pcluster`](pcluster-v3.md) CLI.

## Configurez votre cluster
<a name="multi-queue-tutorial-v3-configure-cluster"></a>

Tout d'abord, vérifiez qu' AWS ParallelCluster il est correctement installé en exécutant la commande suivante.

```
$ pcluster version
```

Pour plus d’informations sur `pcluster version`, consultez [`pcluster version`](pcluster.version-v3.md).

Cette commande renvoie la version en cours d'exécution de AWS ParallelCluster.

Exécutez ensuite `pcluster configure` pour générer un fichier de configuration de base. Suivez toutes les instructions qui suivent cette commande.

```
$ pcluster configure --config multi-queue-mode.yaml
```

Pour plus d'informations sur la commande `pcluster configure`, consultez [`pcluster configure`](pcluster.configure-v3.md).

Une fois cette étape terminée, un fichier de configuration de base nommé `multi-queue-mode.yaml` apparaît. Ce fichier contient une configuration de base du cluster.

À l'étape suivante, vous modifiez votre nouveau fichier de configuration et lancez un cluster avec plusieurs files d'attente.

**Note**  
Certaines instances utilisées dans ce didacticiel ne sont pas éligibles au niveau gratuit.

Pour ce didacticiel, modifiez votre fichier de configuration pour qu'il corresponde à la configuration suivante. Les éléments surlignés en rouge représentent les valeurs de votre fichier de configuration. Gardez vos propres valeurs.

```
Region: region-id
Image:
 Os: alinux2
HeadNode:
 InstanceType: c5.xlarge
 Networking:
   SubnetId: subnet-abcdef01234567890
 Ssh:
   KeyName: yourkeypair
Scheduling:
 Scheduler: slurm
 SlurmQueues:
 - Name: spot
   ComputeResources:
   - Name: c5xlarge
     InstanceType: c5.xlarge
     MinCount: 1
     MaxCount: 10
   - Name: t2micro
     InstanceType: t2.micro
     MinCount: 1
     MaxCount: 10
   Networking:
     SubnetIds:
     - subnet-abcdef01234567890
 - Name: ondemand
   ComputeResources:
   - Name: c52xlarge
     InstanceType: c5.2xlarge
     MinCount: 0
     MaxCount: 10
   Networking:
     SubnetIds:
     - subnet-021345abcdef6789
```

## Créer votre cluster
<a name="multi-queue-tutorial-v3-create-cluster"></a>

Créez un cluster nommé en `multi-queue-cluster` fonction de votre fichier de configuration.

```
$ pcluster create-cluster --cluster-name multi-queue-cluster --cluster-configuration multi-queue-mode.yaml
{
 "cluster": {
   "clusterName": "multi-queue-cluster",
   "cloudformationStackStatus": "CREATE_IN_PROGRESS",
   "cloudformationStackArn": "arn:aws:cloudformation:eu-west-1:123456789012:stack/multi-queue-cluster/1234567-abcd-0123-def0-abcdef0123456",
   "region": "eu-west-1",
   "version": "3.15.0",
   "clusterStatus": "CREATE_IN_PROGRESS"
 }
}
```

Pour plus d'informations sur la commande `pcluster create-cluster`, consultez [`pcluster create-cluster`](pcluster.create-cluster-v3.md).

Pour vérifier l'état du cluster, exécutez la commande suivante.

```
$ pcluster list-clusters
{
 "cluster": {
   "clusterName": "multi-queue-cluster",
   "cloudformationStackStatus": "CREATE_IN_PROGRESS",
   "cloudformationStackArn": "arn:aws:cloudformation:eu-west-1:123456789012:stack/multi-queue-cluster/1234567-abcd-0123-def0-abcdef0123456",
   "region": "eu-west-1",
   "version": "3.15.0",
   "clusterStatus": "CREATE_IN_PROGRESS"
 }
}
```

Lorsque le cluster est créé, le `clusterStatus` champ s'affiche`CREATE_COMPLETE`.

## Connectez-vous au nœud principal
<a name="multi-queue-tutorial-v3-log-into-head-node"></a>

Utilisez votre fichier de clé SSH privée pour vous connecter au nœud principal.

```
$ pcluster ssh --cluster-name multi-queue-cluster -i ~/path/to/yourkeyfile.pem
```

Pour plus d’informations sur `pcluster ssh`, consultez [`pcluster ssh`](pcluster.ssh-v3.md).

Une fois connecté, exécutez la `sinfo` commande pour vérifier que les files d'attente de votre planificateur sont installées et configurées.

Pour plus d'informations`sinfo`, consultez [sinfo](https://slurm.schedmd.com/sinfo.html) dans la *Slurmdocumentation*.

```
$ sinfo
PARTITION AVAIL  TIMELIMIT  NODES  STATE NODELIST
spot*        up   infinite     18  idle~ spot-dy-c5xlarge-[1-9],spot-dy-t2micro-[1-9]
spot*        up   infinite      2  idle  spot-st-c5xlarge-1,spot-st-t2micro-1
ondemand     up   infinite     10  idle~ ondemand-dy-c52xlarge-[1-10]
```

La sortie indique que vous disposez d'un `t2.micro` et d'un nœud de `c5.xlarge` calcul dans l'`idle`état qui sont disponibles dans votre cluster.

Les autres nœuds sont tous en état d'économie d'énergie, indiqué par le `~` suffixe dans l'état du nœud, et aucune instance Amazon EC2 ne les prend en charge. La file d'attente par défaut est indiquée par un `*` suffixe après son nom. `spot`est votre file d'attente de tâches par défaut.

## Exécuter le job en mode file d'attente multiple
<a name="multi-queue-tutorial-v3-running-job-mqm"></a>

Ensuite, essayez d'exécuter une tâche pour dormir pendant un moment. La tâche génère ensuite son propre nom d'hôte. Assurez-vous que ce script peut être exécuté par l'utilisateur actuel.

```
$ tee <<EOF hellojob.sh
#!/bin/bash
sleep 30
echo "Hello World from \$(hostname)"
EOF

$ chmod +x hellojob.sh
$ ls -l hellojob.sh
-rwxrwxr-x 1 ec2-user ec2-user 57 Sep 23 21:57 hellojob.sh
```

Soumettez le travail à l'aide de la `sbatch` commande. Demandez deux nœuds pour cette tâche avec l'`-N 2`option, et vérifiez que la tâche est correctement soumise. Pour plus d'informations`sbatch`, consultez la [https://slurm.schedmd.com/sbatch.html](https://slurm.schedmd.com/sbatch.html)documentation de *Slurm.*

```
$ sbatch -N 2 --wrap "srun hellojob.sh"
Submitted batch job 1
```

Vous pouvez consulter votre file d'attente et vérifier l'état de la tâche à l'aide de la `squeue` commande. Comme vous n'avez pas spécifié de file d'attente spécifique, la file d'attente par défaut (`spot`) est utilisée. Pour plus d'informations`squeue`, consultez [https://slurm.schedmd.com/squeue.html](https://slurm.schedmd.com/squeue.html)la *Slurmdocumentation*.

```
$ squeue
JOBID PARTITION     NAME     USER  ST      TIME  NODES NODELIST(REASON)
   1      spot     wrap ec2-user  R       0:10      2 spot-st-c5xlarge-1,spot-st-t2micro-1
```

La sortie indique que la tâche est actuellement en cours d'exécution. Attendez que le travail soit terminé. Cela prend environ 30 secondes. Ensuite, courez `squeue` à nouveau.

```
$ squeue
JOBID PARTITION     NAME     USER          ST       TIME  NODES NODELIST(REASON)
```

Maintenant que les tâches de la file d'attente sont toutes terminées, recherchez le fichier de sortie nommé `slurm-1.out` dans votre répertoire actuel.

```
$ cat slurm-1.out
Hello World from spot-st-t2micro-1
Hello World from spot-st-c5xlarge-1
```

Le résultat indique que la tâche s'est exécutée avec succès sur les `spot-st-c5xlarge-1` nœuds `spot-st-t2micro-1` et.

Soumettez maintenant le même travail en spécifiant des contraintes pour des instances spécifiques à l'aide des commandes suivantes.

```
$ sbatch -N 3 -p spot -C "[c5.xlarge*1&t2.micro*2]" --wrap "srun hellojob.sh"
Submitted batch job 2
```

Vous avez utilisé ces paramètres pour `sbatch` :
+ `-N 3`— demande trois nœuds.
+ `-p spot`— soumet la tâche à la `spot` file d'attente. Vous pouvez également soumettre une tâche à la `ondemand` file d'attente en spécifiant`-p ondemand`.
+ `-C "[c5.xlarge*1&t2.micro*2]"`— spécifie les contraintes de nœud spécifiques pour cette tâche. Cela demande qu'un `c5.xlarge` nœud et deux `t2.micro` nœuds soient utilisés pour cette tâche.

Exécutez la `sinfo` commande pour afficher les nœuds et les files d'attente. Les files d'attente AWS ParallelCluster entrantes sont appelées partitions entrantes. Slurm

```
$ sinfo
PARTITION AVAIL  TIMELIMIT  NODES  STATE NODELIST
spot*        up   infinite      1  alloc# spot-dy-t2micro-1
spot*        up   infinite     17  idle~ spot-dy-c5xlarge-[2-10],spot-dy-t2micro-[2-9]
spot*        up   infinite      1  mix   spot-st-c5xlarge-1
spot*        up   infinite      1  alloc spot-st-t2micro-1
ondemand     up   infinite     10  idle~ ondemand-dy-c52xlarge-[1-10]
```

Les nœuds s'allument. Cela est indiqué par le `#` suffixe sur l'état du nœud. Exécutez la squeue commande pour afficher les informations relatives aux tâches du cluster.

```
$ squeue
JOBID PARTITION     NAME     USER ST       TIME  NODES NODELIST(REASON)
   2      spot     wrap ec2-user CF       0:04      3 spot-dy-c5xlarge-1,spot-dy-t2micro-1,spot-st-t2micro-1
```

Votre tâche est à l'état `CF` (CONFIGURING) et attend que les instances s'agrandissent et rejoignent le cluster.

Au bout de trois minutes environ, les nœuds sont disponibles et la tâche passe à l'état `R` (RUNNING).

```
$ squeue
JOBID PARTITION     NAME     USER ST       TIME  NODES NODELIST(REASON)
   2      spot     wrap ec2-user  R       0:07      3 spot-dy-t2micro-1,spot-st-c5xlarge-1,spot-st-t2micro-1
```

La tâche est terminée et les trois nœuds sont dans l'`idle`état.

```
$ squeue
JOBID PARTITION     NAME     USER ST       TIME  NODES NODELIST(REASON)
$ sinfo
PARTITION AVAIL  TIMELIMIT  NODES  STATE NODELIST
spot*        up   infinite     17  idle~ spot-dy-c5xlarge-[1-9],spot-dy-t2micro-[2-9]
spot*        up   infinite      3  idle  spot-dy-t2micro-1,spot-st-c5xlarge-1,spot-st-t2micro-1
ondemand     up   infinite     10  idle~ ondemand-dy-c52xlarge-[1-10]
```

Ensuite, une fois qu'aucune tâche ne reste dans la file d'attente, `slurm-2.out` recherchez-la dans votre répertoire local.

```
$ cat slurm-2.out 
Hello World from spot-st-t2micro-1
Hello World from spot-dy-t2micro-1
Hello World from spot-st-c5xlarge-1
```

Il s'agit de l'état final du cluster.

```
$ sinfo
PARTITION AVAIL  TIMELIMIT  NODES  STATE NODELIST
spot*        up   infinite     17  idle~ spot-dy-c5xlarge-[1-9],spot-dy-t2micro-[2-9]
spot*        up   infinite      3  idle  spot-dy-t2micro-1,spot-st-c5xlarge-1,spot-st-t2micro-1
ondemand     up   infinite     10  idle~ ondemand-dy-c52xlarge-[1-10]
```

Après vous être déconnecté du cluster, vous pouvez le nettoyer en exécutant`pcluster delete-cluster`. Pour plus d'informations, consultez [`pcluster list-clusters`](pcluster.list-clusters-v3.md) et [`pcluster delete-cluster`](pcluster.delete-cluster-v3.md).

```
$ pcluster list-clusters
{
 "clusters": [
   {
     "clusterName": "multi-queue-cluster",
     "cloudformationStackStatus": "CREATE_COMPLETE",
     "cloudformationStackArn": "arn:aws:cloudformation:eu-west-1:123456789012:stack/multi-queue-cluster/1234567-abcd-0123-def0-abcdef0123456",
     "region": "eu-west-1",
     "version": "3.1.4",
     "clusterStatus": "CREATE_COMPLETE"
   }
 ]
}
$ pcluster delete-cluster -n multi-queue-cluster
{
 "cluster": {
   "clusterName": "multi-queue-cluster",
   "cloudformationStackStatus": "DELETE_IN_PROGRESS",
   "cloudformationStackArn": "arn:aws:cloudformation:eu-west-1:123456789012:stack/multi-queue-cluster/1234567-abcd-0123-def0-abcdef0123456",
   "region": "eu-west-1",
   "version": "3.1.4",
   "clusterStatus": "DELETE_IN_PROGRESS"
 }
}
```