

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à.

# Nozioni di base su EFA e MPI per i carichi di lavoro HPC su Amazon EC2
<a name="efa-start"></a>

Questo tutorial ti aiuta a lanciare un EFA e un cluster di MPI-enabled istanze per carichi di lavoro HPC.

**Nota**  
Le istanze `u7i-12tb.224xlarge`, `u7in-16tb.224xlarge`, `u7in-24tb.224xlarge` e `u7in-32tb.224xlarge` possono eseguire fino a 128 processi MPI paralleli con Open MPI o fino a 256 processi MPI paralleli con Intel MPI.

**Topics**
+ [Fase 1: Preparare un gruppo di sicurezza EFA-enabled](#efa-start-security)
+ [Fase 2: avviare un'istanza temporanea](#efa-start-tempinstance)
+ [Fase 3: installare il software EFA](#efa-start-enable)
+ [Fase 4: (*facoltativa*) abilitare Open MPI 5](#efa-start-ompi5)
+ [Fase 5 (*facoltativa*): installare Intel MPI](#efa-start-impi)
+ [Fase 6: disabilitare la protezione Ptrace](#efa-start-ptrace)
+ [Fase 7. Conferma dell'installazione](#efa-start-test)
+ [Fase 8: installazione dell'applicazione HPC](#efa-start-hpc-app)
+ [Fase 9: Creare un EFA-enabled AMI](#efa-start-ami)
+ [Fase 10: Avvio EFA-enabled delle istanze in un gruppo di posizionamento del cluster](#efa-start-instances)
+ [Fase 11: terminare l'istanza temporanea](#efa-start-terminate)
+ [Fase 12: abilitazione di SSH senza password](#efa-start-passwordless)

## Fase 1: Preparare un gruppo di sicurezza EFA-enabled
<a name="efa-start-security"></a>

Un EFA richiede un gruppo di sicurezza in cui sia consentito tutto il traffico in entrata e in uscita dal gruppo stesso. La procedura seguente crea un gruppo di sicurezza che consente tutto il traffico in entrata e in uscita da e verso se stesso e che consente il traffico SSH in entrata da qualsiasi indirizzo IPv4 per la connettività SSH.

**Importante**  
Questo gruppo di sicurezza è destinato esclusivamente a scopi di test. Per i tuoi ambienti di produzione, consigliamo di creare una regola SSH in entrata che consenta il traffico solo dall'indirizzo IP da cui ti connetti, ad esempio l'indirizzo IP del tuo computer o un intervallo di indirizzi IP nella tua rete locale.

Per altri scenari, consulta [Regole del gruppo di sicurezza per diversi casi d'uso](security-group-rules-reference.md).

**Per creare un gruppo EFA-enabled di sicurezza**

1. Apri la console Amazon EC2 all'indirizzo [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. Nel riquadro di navigazione, scegliere **Security Groups (Gruppi di sicurezza)** e quindi **Create Security Group (Crea gruppo di sicurezza)**.

1. Nella finestra **Create Security Group (Crea gruppo di sicurezza)** effettuare le operazioni seguenti:

   1. In **Nome gruppo di sicurezza**, immettere un nome descrittivo per il gruppo di sicurezza, ad esempio `EFA-enabled security group`.

   1. (Facoltativo) In **Description (Descrizione)**, inserire una breve descrizione del gruppo di sicurezza.

   1. Per **VPC**, seleziona il VPC in cui intendi avviare le istanze. EFA-enabled 

   1. Scegliere **Create Security Group** (Crea gruppo di sicurezza).

1. Seleziona il gruppo di sicurezza creato e nella scheda **Details** (Dettagli) copia il valore **Security group ID** (ID gruppo di sicurezza).

1. Dopo aver selezionato il gruppo di sicurezza, scegli **Actions** (Operazioni), **Edit inbound rules** (Modifica le regole in entrata) ed esegui le operazioni di seguito:

   1. Scegliere **Add rule** (Aggiungi regola).

   1. In **Type (Tipo)**, selezionare **All traffic (Tutto il traffico)**.

   1. Per **Source type** (Tipo di origine), scegli **Custom** (Personalizzata) e incolla nel campo l'ID del gruppo di sicurezza copiato in precedenza.

   1. Scegli **Aggiungi regola**.

   1. Per **Type** (Tipo) scegli **SSH**.

   1. Per **Source** (origine), scegli **Anywhere-IPv4**.

   1. Scegliere **Salva regole**.

1. Dopo aver selezionato il gruppo di sicurezza, scegli **Actions** (Operazioni), **Edit outbound rules** (Modifica le regole in uscita) ed esegui le operazioni di seguito:

   1. Scegliere **Add rule** (Aggiungi regola).

   1. In **Type (Tipo)**, selezionare **All traffic (Tutto il traffico)**.

   1. Per **Destination type** (Tipo di destinazione), scegli **Custom** (Personalizzata) e incolla nel campo l'ID del gruppo di sicurezza copiato in precedenza.

   1. Scegliere **Salva regole**.

## Fase 2: avviare un'istanza temporanea
<a name="efa-start-tempinstance"></a>

Avvia un'istanza temporanea da utilizzare per installare e configurare i componenti software EFA. Questa istanza viene utilizzata per creare un' EFA-enabled AMI da cui avviare le EFA-enabled istanze. 

**Per avviare un'istanza temporanea**

1. Apri la console Amazon EC2 all'indirizzo [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. Nel pannello di navigazione, scegli **Instances** (Istanze) e quindi scegli **Launch instances** (Avvia istanze) per aprire la nuova procedura guidata di avvio dell'istanza.

1. (*Opzionale*) Nella sezione **Name and tags** (Nome e tag), fornisci un nome per l'istanza, ad esempio `EFA-instance`. Il nome viene assegnato all'istanza come tag di risorsa (`Name={{EFA-instance}}`).

1. Nella sezione **Application and OS Images** (Immagini di applicazioni e sistema operativo), seleziona un'AMI per uno dei [sistemi operativi supportati](efa.md#efa-os).

1. Nella sezione **Instance type** (Tipo di istanza), seleziona un [tipo di istanza supportato](efa.md#efa-instance-types).

1. Nella sezione **Key pair** (Coppia di chiavi), seleziona la coppia di chiavi da utilizzare per l'istanza.

1. Nella sezione **Network settings** (Impostazioni di rete), scegli **Edit** (Modifica) e quindi esegui le operazioni qui descritte:

   1. Per **Subnet** (Sottorete) seleziona la subnet in cui avviare l'istanza.
**Importante**  
È necessario selezionare una sottorete. Se non selezioni una sottorete, non puoi abilitare l'istanza per l'EFA.

   1. Per **Firewall (security groups)** (Firewall [gruppi di sicurezza]), scegli **Select existing security group** (Seleziona gruppo di sicurezza esistente) e quindi seleziona il gruppo di sicurezza creato nella fase precedente.

   1. Espandi la sezione **Configurazione avanzata**.

      Come **Interfaccia di rete 1**, seleziona **Indice della scheda di rete = 0**, **Indice dispositivo = 0** e **Tipo di interfaccia = EFA con ENA**.

      (Facoltativo) Se utilizzi un tipo di istanza multischeda, ad esempio `p4d.24xlarge` o`p5.48xlarge`, per ogni interfaccia di rete aggiuntiva richiesta, scegli **Aggiungi interfaccia di rete**, per Indice della **scheda di rete seleziona l'indice** successivo non utilizzato, quindi seleziona **Indice dispositivo = 1 e Tipo di interfaccia =** **EFA** con ENA o. **EFA-only**

1. Nella sezione **Storage** (Archiviazione), configura i volumi secondo necessità.

1. Nel pannello **Summary** (Riepilogo) a destra, scegli **Launch instance** (Avvia istanza).

**Nota**  
Valuta la possibilità di richiedere l'uso di IMDSv2 per l'istanza temporanea, nonché per l'AMI che creerai alla [Fase 9](#efa-start-ami), a meno che tu non abbia già [impostato IMDSv2 come predefinito per l'account](configuring-IMDS-new-instances.md#set-imdsv2-account-defaults). Per ulteriori informazioni sulla procedura di configurazione di IMDSv2, consulta [Configurazione delle opzioni dei metadati dell'istanza per le nuove istanze](configuring-IMDS-new-instances.md). 

## Fase 3: installare il software EFA
<a name="efa-start-enable"></a>

Installa il EFA-enabled kernel, i driver EFA, Libfabric e lo stack Open MPI necessari per supportare EFA sulla tua istanza temporanea.

Le fasi variano a seconda che si intenda utilizzare EFA con Open MPI, con Intel MPI o con Open MPI e Intel MPI..

**Nota**  
Alcuni sistemi operativi potrebbero non essere supportati con Intel MPI. Se utilizzi Intel MPI, fai riferimento alla [ documentazione Intel MPI](https://www.intel.com/content/www/us/en/developer/articles/system-requirements/mpi-library-system-requirements.html) per verificare il supporto per il sistema operativo in uso.

**Per installare il software EFA**

1. Connettersi all'istanza avviata. Per ulteriori informazioni, consulta [Connessione a un’istanza Linux tramite SSH](connect-to-linux-instance.md).

1. Per verificare che tutti i pacchetti software siano aggiornati, eseguire un aggiornamento rapido del software sull'istanza. Questo processo può richiedere alcuni minuti.
   + Amazon Linux 2023, Amazon Linux 2, RHEL 8/9, Rocky Linux 8/9

     ```
     $ sudo yum update -y
     ```
   + Ubuntu e Debian

     ```
     $ sudo apt-get update && sudo apt-get upgrade -y
     ```
   + SUSE Linux Enterprise

     ```
     $ sudo zypper update -y
     ```

1. Riavviare l'istanza e riconnettersi a essa.

1. Scarica i file di installazione del software. I file di installazione del software sono riuniti in un file (`.tar.gz`) tarball compresso. Per scaricare l'ultima versione *stabile*, utilizzare il comando seguente.

   È inoltre possibile ottenere l'ultima versione sostituendo il numero della versione con `latest` nel comando qui sopra.

   ```
   $ curl -O https://efa-installer.amazonaws.com/aws-efa-installer-1.48.0.tar.gz
   ```

1. (*Opzionale*) Verifica l'autenticità e l'integrità del file tarball EFA (`.tar.gz`).

   È consigliabile eseguire questa operazione per verificare l'identità dell'autore del software e che il file non sia stato alterato o danneggiato dopo la pubblicazione. Se non desideri verificare il file tarball, ignora questo passaggio.
**Nota**  
In alternativa, se preferisci verificare il file tarball utilizzando un checksum MD5 o SHA256, consulta [Verifica del programma di installazione EFA utilizzando un checksum](efa-verify.md).

   1. Scarica la chiave pubblica GPG e importala nel tuo keyring.

      ```
      $ wget https://efa-installer.amazonaws.com/aws-efa-installer.key && gpg --import aws-efa-installer.key
      ```

      Il comando dovrebbe restituire un valore di chiave. Prendere nota del valore della chiave poiché sarà necessario nella fase successiva.

   1. Verifica l'impronta digitale della chiave GPG. Esegui questo comando e specifica la chiave valore creata nella fase precedente.

      ```
      $ gpg --fingerprint {{key_value}}
      ```

      Il comando dovrebbe restituire un'impronta digitale identica a `4E90 91BC BB97 A96B 26B1 5E59 A054 80B1 DD2D 3CCC`. Se l'impronta digitale non corrisponde, non eseguire lo script di installazione EFA e contatta Supporto.

   1. Scarica il file di firma e verifica la firma del file tarball EFA.

      ```
      $ wget https://efa-installer.amazonaws.com/aws-efa-installer-1.48.0.tar.gz.sig && gpg --verify ./aws-efa-installer-1.48.0.tar.gz.sig
      ```

      Di seguito viene mostrato l'output di esempio.

      ```
      gpg: Signature made Wed 29 Jul 2020 12:50:13 AM UTC using RSA key ID DD2D3CCC
      gpg: Good signature from "Amazon EC2 EFA <ec2-efa-maintainers@amazon.com>"
      gpg: WARNING: This key is not certified with a trusted signature!
      gpg:          There is no indication that the signature belongs to the owner.
      Primary key fingerprint: 4E90 91BC BB97 A96B 26B1  5E59 A054 80B1 DD2D 3CCC
      ```

      Se il risultato include `Good signature` e se l'impronta digitale corrisponde a quella restituita nel passaggio precedente, procedi alla fase successiva. In caso contrario, non eseguire lo script di installazione EFA e contatta Supporto.

1. Estrarre i file dal file `.tar.gz` compresso e andare alla directory estratta.

   ```
   $ tar -xf aws-efa-installer-1.48.0.tar.gz && cd aws-efa-installer
   ```

1. (*Facoltativo*) Verifica le firme dei singoli pacchetti durante l'installazione.

   A partire dal programma di installazione EFA 1.48.0, il programma di installazione include GPG-signed singoli pacchetti RPM e DEB. Per verificare l'autenticità e l'integrità di ogni singolo pacchetto durante l'installazione, utilizzate il flag. `--check-signatures` Quando abiliti questo flag, il programma di installazione verifica innanzitutto tutte le firme dei pacchetti e procede con l'installazione solo se ogni pacchetto supera la verifica. Se un pacchetto non supera la verifica, il programma di installazione esce immediatamente senza installare nulla.

   1. Scarica la chiave pubblica GPG.

      ```
      $ wget https://efa-installer.amazonaws.com/aws-efa-installer.key
      ```

   1. Esporta il percorso chiave. Quindi, nel passaggio successivo, aggiungilo `--check-signatures` al comando di installazione e usa `sudo -E` invece di `sudo` conservare la variabile di ambiente.

      ```
      $ export EFA_INSTALLER_KEY=$(pwd)/aws-efa-installer.key
      ```

    RPM-based Sui sistemi (Amazon Linux, RHEL, Rocky Linux e SUSE), il programma di installazione verifica ogni RPM utilizzato. `rpm --checksig` DEB-based Sui sistemi (Ubuntu, Debian), l'installatore verifica ogni DEB utilizzando la verifica della firma GPG.

   Se la verifica di un pacchetto fallisce, l'installazione si interrompe immediatamente, proteggendo il sistema da pacchetti danneggiati o dannosi.
**Nota**  
La `--check-signatures` bandiera è facoltativa. Senza di esso, il programma di installazione non esegue la verifica della firma individuale.

1. Installare il software EFA. Eseguire una delle seguenti operazioni, a seconda del caso d'uso:
**Nota**  
Se avete completato il precedente passaggio facoltativo per configurare la verifica della firma dei pacchetti, aggiungetelo `--check-signatures` al comando di installazione e utilizzate `sudo -E` invece di. `sudo` Ad esempio: `sudo -E ./efa_installer.sh -y --check-signatures`.
**Nota**  
**EFA non supporta NVIDIA GPUDirect con SUSE Linux**. Se utilizzi SUSE Linux, devi specificare anche l'opzione `--skip-kmod` per impedire l'installazione di kmod. Per impostazione predefinita, SUSE Linux non consente moduli kernel out-of-tree.

------
#### [ Open MPI and Intel MPI ]

   Se intendi utilizzare EFA con Open MPI e Intel MPI, devi installare il software EFA con Libfabric e Open MPI e **completare la Fase 5: installare Intel MPI**.

   Per installare il software EFA con Libfabric e Open MPI, eseguire il seguente comando.

**Nota**  
A partire da EFA 1.30.0, per impostazione predefinita vengono installati sia Open MPI 4.1 che Open MPI 5. Facoltativamente, è possibile specificare la versione di Open MPI che si desidera installare. Per installare solo Open MPI 4.1, includi. `--mpi=openmpi4` Per installare solo Open MPI 5, includere `--mpi=openmpi5`. Per installare entrambi, omettere l'opzione `--mpi`.

   ```
   $ sudo ./efa_installer.sh -y
   ```

   Libfabric è installato su `/opt/amazon/efa`. Open MPI 4.1 è installato su. `/opt/amazon/openmpi` Open MPI 5 è installato su `/opt/amazon/openmpi5`.

------
#### [ Open MPI only ]

   Se intendi utilizzare EFA solo con Open MPI, devi installare il software EFA con Libfabric e Open MPI e puoi **ignorare la Fase 5: installare Intel MPI**. Per installare il software EFA con Libfabric e Open MPI, eseguire il seguente comando.

**Nota**  
A partire da EFA 1.30.0, per impostazione predefinita vengono installati sia Open MPI 4.1 che Open MPI 5. Facoltativamente, è possibile specificare la versione di Open MPI che si desidera installare. Per installare solo Open MPI 4.1, includi. `--mpi=openmpi4` Per installare solo Open MPI 5, includere `--mpi=openmpi5`. Per installare entrambi, omettere l'opzione `--mpi`.

   ```
   $ sudo ./efa_installer.sh -y
   ```

   Libfabric è installato su `/opt/amazon/efa`. Open MPI 4.1 è installato su. `/opt/amazon/openmpi` Open MPI 5 è installato su `/opt/amazon/openmpi5`.

------
#### [ Intel MPI only ]

   Se si intende utilizzare solo EFA con Intel MPI, è possibile installare il software EFA senza Libfabric e Open MPI. In tal caso, Intel MPI utilizza Libfabric incorporato. Se si sceglie di eseguire questa operazione, è **necessario completare la Fase 5: installare Intel MPI**. 

   Per installare il software EFA senza Libfabric e Open MPI, eseguire il seguente comando.

   ```
   $ sudo ./efa_installer.sh -y --minimal
   ```

------

1. Se il programma di installazione di EFA richiede il riavvio dell'istanza, eseguire questa operazione e riconnettersi all'istanza. In caso contrario, disconnettersi dall'istanza e quindi accedere di nuovo per completare l'installazione.

1. Elimina il tarball non compresso e il tarball stesso. In caso contrario, questi verranno inclusi nell' EFA-enabled AMI creata, aumentandone le dimensioni.

## Fase 4: (*facoltativa*) abilitare Open MPI 5
<a name="efa-start-ompi5"></a>

**Nota**  
Esegui questa fase solo se intendi utilizzare Open MPI 5.

A partire da EFA 1.30.0, per impostazione predefinita vengono installati sia Open MPI 4.1 che Open MPI 5. In alternativa, è possibile scegliere di installare solo Open MPI 4.1 o Open MPI 5.

Se scegli di installare Open MPI 5 nella **Fase 3: installare il software EFA** e desideri utilizzarlo, devi eseguire questa procedura per abilitarlo.

**Abilitazione di Open MPI 5**

1. Aggiungi Open MPI 5 alla variabile di ambiente PATH.

   ```
   $ module load openmpi5
   ```

1. Verifica che Open MPI 5 sia abilitato per l'uso.

   ```
   $ which mpicc
   ```

   Il comando dovrebbe restituire la directory di installazione di Open MPI 5: `/opt/amazon/openmpi5`.

1. (*Facoltativo*) Per garantire che Open MPI 5 venga aggiunto alla variabile di ambiente PATH a ogni avvio dell'istanza, esegui le seguenti operazioni:

------
#### [ bash shell ]

   Aggiungi `module load openmpi5` a `/home/{{username}}/.bashrc` e `/home/{{username}}/.bash_profile`.

------
#### [ csh and tcsh shells ]

   Aggiungere `module load openmpi5` a `/home/{{username}}/.cshrc`.

------

Se è necessario rimuovere Open MPI 5 dalla variabile di ambiente PATH, esegui il seguente comando e rimuovilo dagli script shell di avvio.

```
$ module unload openmpi5
```

## Fase 5 (*facoltativa*): installare Intel MPI
<a name="efa-start-impi"></a>

**Importante**  
Esegui questa fase solo se intendi utilizzare Intel MPI. Se intendi utilizzare Open MPI, salta questa fase. 

Intel MPI richiede un'installazione aggiuntiva e la configurazione di una variabile d'ambiente.

**Prerequisito**  
Verificare che l'utente che esegue le fasi seguenti disponga delle autorizzazioni sudo.

**Per installare Intel MPI**

1. Per scaricare lo script di installazione Intel MPI, procedi come indicato di seguito

   1. Visita il [sito Web Intel](https://www.intel.com/content/www/us/en/developer/articles/tool/oneapi-standalone-components.html#mpi).

   1. Nella sezione **Intel MPI Library** (Libreria Intel MPI) della pagina Web, scegli il collegamento per il programma di installazione **offline** della **Libreria Intel MPI per Linux**.

1. Esegui lo script di installazione scaricato nel passaggio precedente.

   ```
   $ sudo bash {{installation_script_name}}.sh
   ```

1. Nel programma di installazione, scegli **Accetta e installa**.

1. Leggi il programma Intel Improvement, scegli l'opzione appropriata, quindi scegli **Begin Installation** (Inizia l'installazione).

1. Al termine dell'installazione, scegliere **Chiudi**.

1. Per impostazione predefinita, Intel MPI utilizza il proprio Libfabric incorporato (interno). Puoi tuttavia configurare Intel MPI per utilizzare il componente Libfabric fornito con il programma di installazione EFA. In genere, il programma di installazione EFA viene fornito con una versione successiva di Libfabric rispetto a Intel MPI. In alcuni casi, il componente Libfabric fornito con il programma di installazione EFA è anche più performante di quello di Intel MPI. Per configurare Intel MPI per l'utilizzo del componente Libfabric fornito con il programma di installazione EFA, esegui una delle operazioni seguenti, in base alla shell in uso.

------
#### [ bash shells ]

   Aggiungi l'istruzione seguente a `/home/{{username}}/.bashrc` e `/home/{{username}}/.bash_profile`.

   ```
   export I_MPI_OFI_LIBRARY_INTERNAL=0
   ```

------
#### [ csh and tcsh shells ]

   Aggiungi l'istruzione seguente a `/home/{{username}}/.cshrc`.

   ```
   setenv I_MPI_OFI_LIBRARY_INTERNAL 0
   ```

------

1. Aggiungi il comando **di origine** seguente allo script della shell per generare lo script `vars.sh` dalla directory di installazione e impostare l'ambiente del compilatore ad ogni avvio dell'istanza. Eseguire uno dei seguenti, a seconda della shell in uso.

------
#### [ bash shells ]

   Aggiungi l'istruzione seguente a `/home/{{username}}/.bashrc` e `/home/{{username}}/.bash_profile`.

   ```
   source /opt/intel/oneapi/mpi/latest/env/vars.sh
   ```

------
#### [ csh and tcsh shells ]

   Aggiungi l'istruzione seguente a `/home/{{username}}/.cshrc`.

   ```
   source /opt/intel/oneapi/mpi/latest/env/vars.csh
   ```

------

1. Per impostazione predefinita, se EFA non è disponibile a causa di una configurazione errata, Intel MPI utilizza per impostazione predefinita lo stack di TCP/IP rete, il che potrebbe comportare un rallentamento delle prestazioni delle applicazioni. Per evitare questo comportamento, imposta `I_MPI_OFI_PROVIDER` su `efa`. Se EFA non è disponibile, Intel MPI mostra l'errore seguente:

   ```
   Abort (XXXXXX) on node 0 (rank 0 in comm 0): Fatal error in PMPI_Init: OtherMPI error,
   MPIR_Init_thread (XXX)........:	
   MPID_Init (XXXX)..............:
   MPIDI_OFI_mpi_init_hook (XXXX):
   open_fabric (XXXX)............:
   find_provider (XXXX)..........:
   OFI fi_getinfo() failed (ofi_init.c:2684:find_provider:
   ```

   Eseguire uno dei seguenti, a seconda della shell in uso.

------
#### [ bash shells ]

   Aggiungi l'istruzione seguente a `/home/{{username}}/.bashrc` e `/home/{{username}}/.bash_profile`.

   ```
   export I_MPI_OFI_PROVIDER=efa
   ```

------
#### [ csh and tcsh shells ]

   Aggiungi l'istruzione seguente a `/home/{{username}}/.cshrc`.

   ```
   setenv I_MPI_OFI_PROVIDER efa
   ```

------

1. Per impostazione predefinita, Intel MPI non stampa le informazioni di debug. Per controllare tali informazioni, puoi specificare livelli di verbosità diversi. I valori possibili (secondo la quantità di dettagli che forniscono) sono: `0` (impostazione predefinita), `1`, `2`, `3`, `4`, `5`. Il livello `1` e i livelli superiori stampano `libfabric version` e `libfabric provider`. Utilizza `libfabric version` per verificare se Intel MPI sta usando il componente Libfabric interno o quello fornito con il programma di installazione EFA. Se sta usando il componente Libfabric interno, la versione presenta il suffisso `impi`. Utilizzato `libfabric provider` per verificare con Intel MPI utilizza EFA o la rete. TCP/IP Se utilizza EFA, il valore è `efa`. Se è in uso TCP/IP, il valore è. `tcp;ofi_rxm`

   Per abilitare le informazioni di debug, esegui una delle operazioni seguenti, in base alla shell in uso.

------
#### [ bash shells ]

   Aggiungi l'istruzione seguente a `/home/{{username}}/.bashrc` e `/home/{{username}}/.bash_profile`.

   ```
   export I_MPI_DEBUG={{value}}
   ```

------
#### [ csh and tcsh shells ]

   Aggiungi l'istruzione seguente a `/home/{{username}}/.cshrc`.

   ```
   setenv I_MPI_DEBUG {{value}}
   ```

------

1. Per impostazione predefinita, Intel MPI utilizza la memoria condivisa del sistema operativo (`shm`) per le comunicazioni intranodo e Libfabric (`ofi`) per le comunicazioni internodo. In generale, questa configurazione offre le prestazioni migliori. In alcuni casi, tuttavia, il fabric shm Intel MPI può causare il blocco di alcune applicazioni a tempo indeterminato.

   Per risolvere questo problema, puoi forzare Intel MPI a utilizzare Libfabric sia per le comunicazioni intranodo che per quelle internodo. A tal scopo, esegui una delle operazioni seguenti, in base alla shell in uso.

------
#### [ bash shells ]

   Aggiungi l'istruzione seguente a `/home/{{username}}/.bashrc` e `/home/{{username}}/.bash_profile`.

   ```
   export I_MPI_FABRICS=ofi
   ```

------
#### [ csh and tcsh shells ]

   Aggiungi l'istruzione seguente a `/home/{{username}}/.cshrc`.

   ```
   setenv I_MPI_FABRICS ofi
   ```

------
**Nota**  
Il provider Libfabric di EFA utilizza la memoria condivisa del sistema operativo per le comunicazioni intranodo. Ciò significa che impostando `I_MPI_FABRICS` su `ofi` si ottengono prestazioni simili a quelle della configurazione `shm:ofi` predefinita.

1. Disconnettersi e quindi riconnettersi all'istanza.

Se non si desidera più utilizzare Intel MPI, rimuovere le variabili di ambiente dagli script shell di startup.

## Fase 6: disabilitare la protezione Ptrace
<a name="efa-start-ptrace"></a>

Per migliorare le prestazioni dell'applicazione HPC, Libfabric utilizza la memoria locale dell'istanza per le comunicazioni tra processi quando i processi sono in esecuzione sulla stessa istanza. 

La funzione di memoria condivisa utilizza Cross Memory Attach (CMA), che non è supportato con la *protezione ptrace*. Se si utilizza una distribuzione Linux con protezione ptrace abilitata per impostazione predefinita, come Ubuntu, è necessario disabilitarla. Se la tua distribuzione Linux non ha la protezione ptrace abilitata per impostazione predefinita, ignorare questo passaggio.

**Per disabilitare la protezione ptrace**  
Scegliere una delle seguenti operazioni:
+ Per disabilitare temporaneamente la protezione ptrace a scopo di test, esegui il comando seguente.

  ```
  $ sudo sysctl -w kernel.yama.ptrace_scope=0
  ```
+ Per disabilitare in modo permanente la protezione ptrace, aggiungere `kernel.yama.ptrace_scope = 0` a `/etc/sysctl.d/10-ptrace.conf` e riavviare l'istanza.

## Fase 7. Conferma dell'installazione
<a name="efa-start-test"></a>

**Verifica della corretta installazione**

1. Per verificare che MPI sia stato correttamente installato, esegui il comando seguente:

   ```
   $ which mpicc
   ```
   + Per Open MPI, il percorso restituito deve includere `/opt/amazon/`.
   + Per Intel MPI, il percorso restituito deve includere `/opt/intel/`. Se non ottieni l'output previsto, assicurati di aver fornito lo script `vars.sh` di Intel MPI.

1. Per confermare che i componenti software EFA e Libfabric siano stati installati correttamente, emetti il comando seguente.

   ```
   $ fi_info -p efa -t FI_EP_RDM
   ```

   Il comando deve restituire informazioni sulle interfacce EFA Libfabric. L'esempio seguente mostra l'output del comando.

   ```
   provider: efa
       fabric: EFA-fe80::94:3dff:fe89:1b70
       domain: efa_0-rdm
       version: 2.0
       type: FI_EP_RDM
       protocol: FI_PROTO_EFA
   ```

## Fase 8: installazione dell'applicazione HPC
<a name="efa-start-hpc-app"></a>

Installa l'applicazione HPC sull'istanza temporanea. La procedura di installazione varia in base alla specifica applicazione HPC. Per ulteriori informazioni, consulta [Gestione del software sull'istanza AL2](https://docs.aws.amazon.com/linux/al2/ug/managing-software.html) nella *Guida per l'utente di Amazon Linux 2*.

**Nota**  
Per le istruzioni di installazione, consulta la documentazione dell'applicazione HPC.

## Fase 9: Creare un EFA-enabled AMI
<a name="efa-start-ami"></a>

Dopo aver installato i componenti software richiesti, crei un'AMI che puoi riutilizzare per avviare le tue EFA-enabled istanze.

**Per creare un'AMI dall'istanza temporanea**

1. Apri la console Amazon EC2 all'indirizzo [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. Nel riquadro di navigazione, scegliere **Instances (Istanze)**.

1. Seleziona l'istanza temporanea creata e seleziona **Actions** (Operazioni), **Image** (Immagine), **Create Image** (Crea immagine).

1. Per **Create image (Crea immagine)**, effettua le seguenti operazioni:

   1. In **Image name (Nome immagine)**, immettere un nome descrittivo per l'AMI.

   1. (Facoltativo) In **Image description (Descrizione immagine**), inserire una breve descrizione dell'AMI.

   1. Scegliere **Create Image (Crea immagine)**.

1. Nel riquadro di navigazione scegliere **AMIs (AMI)**.

1. Individuare nell'elenco l'AMI creata. Prima di procedere con la fase seguente, attendi che lo stato passi da `pending` a `available`.

## Fase 10: Avvio EFA-enabled delle istanze in un gruppo di posizionamento del cluster
<a name="efa-start-instances"></a>

Avvia le tue EFA-enabled istanze in un gruppo di posizionamento del cluster utilizzando l' EFA-enabledAMI che hai creato nel **passaggio 7** e il gruppo di EFA-enabled sicurezza creato nel **passaggio 1**.

**Nota**  
Non è un requisito assoluto avviare le EFA-enabled istanze in un gruppo di posizionamento del cluster. Tuttavia, consigliamo di eseguire le EFA-enabled istanze in un gruppo di collocamento di cluster in quanto avvia le istanze in un gruppo a bassa latenza in un'unica zona di disponibilità.
Per garantire che la capacità sia disponibile durante il dimensionamento delle istanze del cluster, è possibile creare una prenotazione della capacità per il gruppo di collocazione cluster. Per ulteriori informazioni, consulta [Utilizza la prenotazione della capacità con i gruppi di posizionamento cluster](cr-cpg.md).

**Per avviare un'istanza**

1. Apri la console Amazon EC2 all'indirizzo [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. Nel pannello di navigazione, scegli **Instances** (Istanze) e quindi scegli **Launch instances** (Avvia istanze) per aprire la nuova procedura guidata di avvio dell'istanza.

1. (*Opzionale*) Nella sezione **Name and tags** (Nome e tag), fornisci un nome per l'istanza, ad esempio `EFA-instance`. Il nome viene assegnato all'istanza come tag di risorsa (`Name={{EFA-instance}}`).

1. Nella sezione **Application and OS Images** (Immagini di applicazioni e sistema operativo), scegli **My AMIs** (Le mie AMI), quindi seleziona l'AMI creata nella fase precedente.

1. Nella sezione **Instance type** (Tipo di istanza), seleziona un [tipo di istanza supportato](efa.md#efa-instance-types).

1. Nella sezione **Key pair** (Coppia di chiavi), seleziona la coppia di chiavi da utilizzare per l'istanza.

1. Nella sezione **Network settings** (Impostazioni di rete), scegli **Edit** (Modifica) e quindi esegui le operazioni qui descritte:

   1. Per **Subnet** (Sottorete) seleziona la subnet in cui avviare l'istanza.
**Importante**  
È necessario selezionare una sottorete. Se non selezioni una sottorete, non puoi abilitare l'istanza per l'EFA.

   1. Per **Firewall (security groups)** (Firewall [gruppi di sicurezza]), scegli **Select existing security group** (Seleziona gruppo di sicurezza esistente) e quindi seleziona il gruppo di sicurezza creato nella fase precedente.

   1. Espandi la sezione **Configurazione avanzata**.

      Come **Interfaccia di rete 1**, seleziona **Indice della scheda di rete = 0**, **Indice dispositivo = 0** e **Tipo di interfaccia = EFA con ENA**.

      (*Facoltativo*) Se utilizzi un tipo di istanza multischeda, ad esempio `p4d.24xlarge` o`p5.48xlarge`, per ogni interfaccia di rete aggiuntiva richiesta, scegli **Aggiungi interfaccia di rete**, per Indice della **scheda di rete seleziona l'indice** successivo non utilizzato, quindi seleziona **Indice dispositivo = 1 e Tipo di interfaccia =** **EFA** con ENA o. **EFA-only**

1. (*Opzionale*) Nella sezione **Storage** (Archiviazione), configura i volumi secondo necessità.

1. Nella sezione **Advanced details** (Dettagli avanzati), per **Placement group name** (Nome del gruppo di collocazione), seleziona il gruppo di collocazione cluster in cui avviare le istanze. Se occorre creare un nuovo gruppo di collocazione cluster, scegli **Create new placement group** (Crea nuovo gruppo di collocazione).

1. **Nel pannello **Riepilogo** a destra, per **Numero di istanze**, inserisci il numero di EFA-enabled istanze che desideri avviare, quindi scegli Avvia istanza.**

## Fase 11: terminare l'istanza temporanea
<a name="efa-start-terminate"></a>

A questo punto l'istanza avviata alla [Fase 2](#efa-start-tempinstance) non è più necessaria. È possibile terminare l'istanza per evitare di incorrere in costi aggiuntivi.

**Per terminare l'istanza temporanea**

1. Apri la console Amazon EC2 all'indirizzo [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. Nel riquadro di navigazione, scegliere **Instances (Istanze)**.

1. Seleziona l'istanza temporanea creata, quindi seleziona **Operazioni**, **Stato istanza**, **Termina (elimina) istanza**.

1. Quando viene richiesta la conferma, seleziona **Termina (elimina)**.

## Fase 12: abilitazione di SSH senza password
<a name="efa-start-passwordless"></a>

Per consentire l'esecuzione delle applicazioni in tutte le istanze del cluster, è necessario abilitare l'accesso SSH senza password dal nodo leader ai nodi membro. Il nodo principale è l'istanza da cui vengono eseguite le applicazioni. Le restanti istanze del cluster sono i nodi membro.

**Per abilitare SSH senza password tra le istanze del cluster**

1. Selezionare un'istanza nel cluster come nodo principale e connettersi a essa.

1. Disabilita `strictHostKeyChecking` e abilita `ForwardAgent` sul nodo principale. Aprire il file `~/.ssh/config` utilizzando qualsiasi editor di testo e aggiungere il seguente script.

   ```
   Host *
       ForwardAgent yes
   Host *
       StrictHostKeyChecking no
   ```

1. Generare una coppia di chiavi RSA.

   ```
   $ ssh-keygen -t rsa -N "" -f ~/.ssh/id_rsa
   ```

   La coppia di chiavi viene creata nella directory `$HOME/.ssh/`.

1. Modifica le autorizzazioni della chiave privata sul nodo principale.

   ```
   $ chmod 600 ~/.ssh/id_rsa
   chmod 600 ~/.ssh/config
   ```

1. Aprire `~/.ssh/id_rsa.pub` utilizzando l'editor di testo preferito e copiare la chiave.

1. Per ogni nodo membro nel cluster, procedere nel modo seguente:

   1. Collegarsi all'istanza.

   1. Aprire `~/.ssh/authorized_keys` utilizzando qualsiasi editor di testo e aggiungere la chiave pubblica copiata in precedenza.

1. Per verificare che SSH senza password funzioni come previsto, connettersi al nodo leader ed eseguire il seguente comando.

   ```
   $ ssh {{member_node_private_ip}}
   ```

   La connessione al nodo membro non dovrebbe richiedere una chiave o una password.