

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Esecuzione di processi in un cluster in modalità coda multipla
<a name="multi-queue-tutorial-v3"></a>

Questo tutorial spiega come eseguire il primo lavoro "Hello World" in AWS ParallelCluster modalità [coda multipla](configuration-of-multiple-queues-v3.md).

Quando si utilizza l'interfaccia a riga di AWS ParallelCluster comando (CLI) o l'API, si pagano solo le AWS risorse create quando si creano o si aggiornano AWS ParallelCluster immagini e cluster. Per ulteriori informazioni, consulta [AWS servizi usati da AWS ParallelCluster](aws-services-v3.md).

**Prerequisiti**
+ AWS ParallelCluster [è](install-v3-parallelcluster.md) installato.
+  AWS CLI [è installato e configurato.](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)
+ Hai una coppia di [chiavi Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html).
+ Hai un ruolo IAM con le [autorizzazioni](iam-roles-in-parallelcluster-v3.md#iam-roles-in-parallelcluster-v3-example-user-policies) necessarie per eseguire la [`pcluster`](pcluster-v3.md) CLI.

## Configura il tuo cluster
<a name="multi-queue-tutorial-v3-configure-cluster"></a>

Innanzitutto, verifica che AWS ParallelCluster sia installato correttamente eseguendo il comando seguente.

```
$ pcluster version
```

Per ulteriori informazioni su `pcluster version`, consultare [`pcluster version`](pcluster.version-v3.md).

Questo comando restituisce la versione in esecuzione di AWS ParallelCluster.

Quindi, `pcluster configure` esegui per generare un file di configurazione di base. Segui tutte le istruzioni che seguono questo comando.

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

Per ulteriori informazioni sul comando `pcluster configure`, consulta [`pcluster configure`](pcluster.configure-v3.md).

Dopo aver completato questo passaggio, viene visualizzato un file di configurazione di base denominato`multi-queue-mode.yaml`. Questo file contiene una configurazione di base del cluster.

Nel passaggio successivo, si modifica il nuovo file di configurazione e si avvia un cluster con più code.

**Nota**  
Alcune istanze utilizzate in questo tutorial non sono idonee al livello gratuito.

Per questo tutorial, modifica il file di configurazione in modo che corrisponda alla configurazione seguente. Gli elementi evidenziati in rosso rappresentano i valori del file di configurazione. Mantieni i tuoi valori.

```
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
```

## Creazione di un cluster
<a name="multi-queue-tutorial-v3-create-cluster"></a>

Crea un cluster denominato in `multi-queue-cluster` base al tuo file di configurazione.

```
$ 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"
 }
}
```

Per ulteriori informazioni sul comando `pcluster create-cluster`, consulta [`pcluster create-cluster`](pcluster.create-cluster-v3.md).

Per verificare lo stato del cluster, esegui il comando seguente.

```
$ 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"
 }
}
```

Quando il cluster viene creato, il `clusterStatus` campo viene visualizzato`CREATE_COMPLETE`.

## Accedere al nodo principale
<a name="multi-queue-tutorial-v3-log-into-head-node"></a>

Usa il tuo file di chiave SSH privato per accedere al nodo principale.

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

Per ulteriori informazioni su `pcluster ssh`, consultare [`pcluster ssh`](pcluster.ssh-v3.md).

Dopo aver effettuato l'accesso, esegui il `sinfo` comando per verificare che le code dello scheduler siano impostate e configurate.

*Per maggiori informazioni in merito`sinfo`, consulta [sinfo](https://slurm.schedmd.com/sinfo.html) nella documentazione. Slurm*

```
$ 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]
```

L'output mostra che hai uno `t2.micro` e un nodo di `c5.xlarge` calcolo nello `idle` stato disponibile nel tuo cluster.

Gli altri nodi sono tutti nello stato di risparmio energetico, indicato dal `~` suffisso nello stato del nodo, senza istanze Amazon EC2 che li supportano. La coda predefinita è indicata da un `*` suffisso dopo il nome della coda. `spot`è la tua coda di lavoro predefinita.

## Esegue il lavoro in modalità coda multipla
<a name="multi-queue-tutorial-v3-running-job-mqm"></a>

Quindi, prova a eseguire un lavoro per dormire per qualche istante. Successivamente, il job restituisce il proprio nome host. Assicuratevi che questo script possa essere eseguito dall'utente corrente.

```
$ 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
```

Inviate il lavoro utilizzando il `sbatch` comando. Richiedi due nodi per questo lavoro con l'`-N 2`opzione e verifica che il lavoro sia stato inviato correttamente. Per ulteriori informazioni [https://slurm.schedmd.com/sbatch.html](https://slurm.schedmd.com/sbatch.html)in merito`sbatch`, consulta la documentazione di *Slurm*.

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

È possibile visualizzare la coda e controllare lo stato del lavoro con il comando. `squeue` Poiché non è stata specificata una coda specifica, viene utilizzata la coda predefinita (`spot`). *Per ulteriori informazioni in merito`squeue`, consulta la [https://slurm.schedmd.com/squeue.html](https://slurm.schedmd.com/squeue.html)Slurmdocumentazione.*

```
$ 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
```

L'output indica che il processo è attualmente in un stato di esecuzione. Attendi che il lavoro finisca. Questa operazione richiede circa 30 secondi. Quindi, corri `squeue` di nuovo.

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

Ora che tutti i lavori in coda sono terminati, cercate il file di output denominato `slurm-1.out` nella directory corrente.

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

L'output mostra che il processo è stato eseguito correttamente sui `spot-st-c5xlarge-1` nodi `spot-st-t2micro-1` and.

Ora inviate lo stesso lavoro specificando i vincoli per istanze specifiche con i seguenti comandi.

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

Hai usato questi parametri per: `sbatch`
+ `-N 3`— richiede tre nodi.
+ `-p spot`— invia il lavoro alla `spot` coda. È inoltre possibile inviare un lavoro alla `ondemand` coda specificando. `-p ondemand`
+ `-C "[c5.xlarge*1&t2.micro*2]"`— specifica i vincoli di nodo specifici per questo lavoro. Ciò richiede l'utilizzo di un `c5.xlarge` nodo e due `t2.micro` nodi per questo lavoro.

Esegui il `sinfo` comando per visualizzare i nodi e le code. Le code in entrata AWS ParallelCluster sono chiamate partizioni in. 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]
```

I nodi si stanno accendendo. Ciò è indicato dal `#` suffisso sullo stato del nodo. Esegui il squeue comando per visualizzare le informazioni sui lavori nel 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
```

Il processo è nello stato `CF` (CONFIGURING), in attesa che le istanze aumentino di dimensioni e si uniscano al cluster.

Dopo circa tre minuti, i nodi sono disponibili e il processo entra nello stato `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
```

Il processo termina e tutti e tre i nodi sono nello `idle` stato.

```
$ 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]
```

Quindi, dopo che nessun lavoro rimane in coda, cercate `slurm-2.out` nella vostra rubrica locale.

```
$ 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
```

Questo è lo stato finale del 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]
```

Dopo esserti disconnesso dal cluster, puoi ripulirlo `pcluster delete-cluster` eseguendo. Per ulteriori informazioni, consultare [`pcluster list-clusters`](pcluster.list-clusters-v3.md) e [`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"
 }
}
```