

# Introducción a EFA y MPI para cargas de trabajo de HPC en Amazon EC2
<a name="efa-start"></a>

Este tutorial lo ayuda a iniciar un clúster de instancias habilitado para MPI y EFA para cargas de trabajo de HPC.

**nota**  
Las instancias `u7i-12tb.224xlarge`, `u7in-16tb.224xlarge`, `u7in-24tb.224xlarge` y `u7in-32tb.224xlarge` pueden ejecutar hasta 128 procesos MPI paralelos con Open MPI o hasta 256 procesos MPI paralelos con Intel MPI.

**Topics**
+ [Paso 1: preparar un grupo de seguridad habilitado para EFA](#efa-start-security)
+ [Paso 2: iniciar una instancia temporal](#efa-start-tempinstance)
+ [Paso 3: instalar el software EFA](#efa-start-enable)
+ [Paso 4: (*opcional*) habilitar Open MPI 5](#efa-start-ompi5)
+ [Paso 5: (*opcional*) instalar Intel MPI](#efa-start-impi)
+ [Paso 6: deshabilitar la protección ptrace](#efa-start-ptrace)
+ [Paso 7. Confirmar instalación](#efa-start-test)
+ [Paso 8: instalar la aplicación de HPC](#efa-start-hpc-app)
+ [Paso 9: crear una AMI habilitada para EFA](#efa-start-ami)
+ [Paso 10: iniciar instancias habilitadas para EFA en un grupo con ubicación en clúster](#efa-start-instances)
+ [Paso 11: finalizar la instancia temporal](#efa-start-terminate)
+ [Paso 12: habilitar SSH sin contraseña](#efa-start-passwordless)

## Paso 1: preparar un grupo de seguridad habilitado para EFA
<a name="efa-start-security"></a>

Un EFA requiere un grupo de seguridad que permita todo el tráfico entrante y saliente hacia y desde el propio grupo de seguridad. En el siguiente procedimiento, se crea un grupo de seguridad que permite todo el tráfico entrante y saliente de sí mismo, y que permite el tráfico SSH entrante desde cualquier dirección IPv4 para la conectividad SSH.

**importante**  
Este grupo de seguridad está pensado solo con fines de prueba. Para sus entornos de producción, le recomendamos que cree una regla SSH entrante que permita el tráfico únicamente desde la dirección IP desde la que se conecta, como la dirección IP de su equipo o un rango de direcciones IP en la red local.

Para ver otros escenarios, consulte [Reglas de grupo de seguridad para diferentes casos de uso](security-group-rules-reference.md).

**Para crear un grupo de seguridad habilitado para EFA**

1. Abra la consola de Amazon EC2 en [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. En el panel de navegación, elija **Grupos de seguridad** y, a continuación, elija **Crear grupo de seguridad**.

1. En la ventana **Crear grupo de seguridad**, haga lo siguiente:

   1. En **Nombre del grupo de seguridad**, ingrese un nombre descriptivo para el grupo de seguridad, como, por ejemplo, `EFA-enabled security group`.

   1. (Opcional) En **Descripción**, ingrese una breve descripción del grupo de seguridad.

   1. En **VPC**, seleccione la VPC en la que desea iniciar sus instancias habilitadas para EFA.

   1. Elija **Creación de grupo de seguridad**.

1. Seleccione el grupo de seguridad que creó y, en la pestaña **Detalles**, copie el **ID del grupo de seguridad**.

1. Con el grupo de seguridad todavía seleccionado, elija **Acciones**, **Editar reglas de entrada** y, luego, haga lo siguiente:

   1. Seleccione **Agregar regla**.

   1. En **Tipo**, seleccione **Todo el tráfico**.

   1. En **Tipo de origen**, elija **Personalizar** y pegue el ID del grupo de seguridad que copió en el campo.

   1. Seleccione **Agregar regla**.

   1. En **Tipo**, seleccione **SSH**.

   1. En **Tipo de origen**, elija **Cualquiera de IPv4**.

   1. Seleccione **Guardar reglas**.

1. Con el grupo de seguridad todavía seleccionado, elija **Acciones**, **Editar reglas de salida** y, luego, haga lo siguiente:

   1. Seleccione **Agregar regla**.

   1. En **Tipo**, seleccione **Todo el tráfico**.

   1. En **Tipo de destino**, elija **Personalizar** y pegue el ID del grupo de seguridad que copió en el campo.

   1. Seleccione **Guardar reglas**.

## Paso 2: iniciar una instancia temporal
<a name="efa-start-tempinstance"></a>

Lance una instancia temporal que puede utilizar para instalar y configurar los componentes de software de EFA. Puede utilizar esta instancia para crear una AMI habilitada para EFA desde la que puede iniciar sus instancias habilitadas para EFA. 

**Para iniciar una instancia temporal**

1. Abra la consola de Amazon EC2 en [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. En el panel de navegación, elija **Instancias** y, a continuación, **Iniciar instancias** para abrir el nuevo asistente de inicialización de instancias.

1. (*Opcional*) En la sección **Nombre y etiquetas**, proporcione un nombre para la instancia, como `EFA-instance`. El nombre se asigna a la instancia como etiqueta de recurso (`Name=EFA-instance`).

1. En la sección **Application and OS Images** (Imágenes de aplicaciones y sistema operativo), seleccione una AMI para uno de los [sistemas operativos compatibles](efa.md#efa-os).

1. En la sección **Tipo de instancia**, seleccione el [tipo de instancia admitida](efa.md#efa-instance-types).

1. En la sección **Par de claves**, seleccione el par de claves que desea utilizar en la instancia.

1. En la sección **Configuración de red**, elija **Editar** y realice lo siguiente:

   1. En **Subred**, elija la subred en la que desea iniciar la instancia. Si no selecciona una subred, no puede habilitar la instancia para EFA.

   1. En **Firewall (grupos de seguridad)**, elija **Seleccionar grupo de seguridad existente** y, a continuación, seleccione el grupo de seguridad que creó en el paso anterior.

   1. Amplíe la sección **Configuración de red avanzada**.

      Para **la interfaz de red 1**, seleccione **Índice de tarjeta de red = 0**, **Índice de dispositivo = 0** y **Tipo de interfaz = EFA con ENA**.

      (Opcional) Si utiliza un tipo de instancia con varias tarjetas, por ejemplo, `p4d.24xlarge` o `p5.48xlarge`, para cada interfaz de red adicional necesaria, elija **Agregar interfaz de red**; en **Índice de tarjetas de red**, seleccione el siguiente índice no utilizado y, a continuación, seleccione **Índice de dispositivo = 1** y **Tipo de interfaz = EFA con ENA** o **solo EFA**.

1. En la sección **Almacenamiento**, configure los volúmenes según sea necesario.

1. En el panel **Resumen** que se encuentra a la derecha, elija **Iniciar instancia**.

**nota**  
Considere la posibilidad de solicitar el uso de IMDSv2 para la instancia temporal, así como la AMI que creará en el [paso 9](#efa-start-ami), a menos que ya haya [configurado IMDSv2 como predeterminado para la cuenta](configuring-IMDS-new-instances.md#set-imdsv2-account-defaults). Para obtener más información acerca de la configuración de IMDSv2, consulte [Configurar las opciones de metadatos para instancias nuevas](configuring-IMDS-new-instances.md). 

## Paso 3: instalar el software EFA
<a name="efa-start-enable"></a>

Instale el kernel habilitado para EFA, los controladores de EFA, Libfabric y la pila Open MPI necesarios para admitir EFA en su instancia temporal.

Los pasos varían en función de si pretende utilizar EFA con Open MPI, con Intel MPI o con Open MPI e Intel MPI.

**nota**  
Es posible que algunos sistemas operativos no sean compatibles con Intel MPI. Si utiliza Intel MPI, consulte la [documentación de Intel MPI](https://www.intel.com/content/www/us/en/developer/articles/system-requirements/mpi-library-system-requirements.html) para verificar la compatibilidad con su sistema operativo.

**Para instalar el software EFA**

1. Conéctese a la instancia que lanzó. Para obtener más información, consulte [Conexión a la instancia de Linux con SSH](connect-to-linux-instance.md).

1. Para asegurarse de que todos los paquetes de software están actualizados, realice una actualización rápida del software en la instancia. Este proceso puede demorar unos minutos.
   + Amazon Linux 2023, Amazon Linux 2, RHEL 8/9, Rocky Linux 8/9

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

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

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

1. Reinicie la instancia y vuelva a conectarse a ella.

1. Descargue los archivos de instalación de software de EFA. Los archivos de instalación de software están empaquetados en un archivo tarball comprimido (`.tar.gz`). Para descargar la última versión *estable*, utilice el comando siguiente.

   También puede obtener la última versión reemplazando el número de versión por `latest` en el comando anterior.

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

1. (*Opcional*) Verifique la autenticidad y la integridad del archivo tarball (`.tar.gz`) de EFA.

   Le recomendamos que lo haga para verificar la identidad del editor de software y para verificar que el archivo no se haya modificado ni dañado desde que se publicó. Si no desea verificar el archivo tarball, omita este paso.
**nota**  
De forma alternativa, si prefiere verificar el archivo tarball con una suma de comprobación MD5 o SHA256, consulte [Verificar el instalador de EFA mediante una suma de comprobación](efa-verify.md).

   1. Descargue la clave pública de GPG e impórtela a su conjunto de claves.

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

      El comando debe devolver un valor de clave. Anote el valor de clave, ya que lo necesitará en el siguiente paso.

   1. Verifique la huella digital de la clave de GPG. Ejecute el siguiente comando y especifique el valor de clave del paso anterior.

      ```
      $ gpg --fingerprint key_value
      ```

      El comando debe devolver una huella digital idéntica a `4E90 91BC BB97 A96B 26B1 5E59 A054 80B1 DD2D 3CCC`. Si la huella digital no coincide, no ejecute el script de instalación de EFA y contáctese con Soporte.

   1. Descargue el archivo de firma y verifique la firma del archivo tarball de EFA.

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

      A continuación se muestra un ejemplo de salida.

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

      Si el resultado incluye `Good signature` y la huella digital coincide con la huella digital del paso anterior, avance al siguiente paso. Si no es así, no ejecute el script de instalación de EFA y contáctese con Soporte.

1. Extraiga los archivos desde el archivo `.tar.gz` comprimido y acceda al directorio extraído.

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

1. Instale el software EFA. Realice una de las siguientes acciones en función de su caso de uso.
**nota**  
**EFA no admite NVIDIA GPUDirect con SUSE Linux**. Si usa SUSE Linux, debe especificar adicionalmente la opción `--skip-kmod` para evitar la instalación de kmod. De forma predeterminada, SUSE Linux no permite módulos de kernel fuera del árbol.

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

   Si tiene la intención de usar EFA con Open MPI e Intel MPI, debe instalar el software de EFA con Libfabric y Open MPI, y **debe completar el paso 5: Instalar Intel MPI**.

   Para instalar el software EFA con Libfabric y Open MPI, ejecute el siguiente comando.

**nota**  
A partir de la versión 1.30.0 de EFA, tanto Open MPI 4.1 como Open MPI 5 se instalan de forma predeterminada. Si lo desea, puede especificar la versión de Open MPI que desea instalar. Para instalar únicamente Open MPI 4.1, incluya `--mpi=openmpi4`. Para instalar únicamente Open MPI 5, incluya `--mpi=openmpi5`. Para instalar ambos, omita la opción `--mpi`.

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

   Libfabric se instala en `/opt/amazon/efa`. Open MPI 4.1 se instala en `/opt/amazon/openmpi`. Open MPI 5 se instala en `/opt/amazon/openmpi5`.

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

   Si tiene la intención de usar EFA solo con Open MPI, debe instalar el software de EFA con Libfabric y Open MPI, y debe **omitir el paso 5: Instalar Intel MPI**. Para instalar el software EFA con Libfabric y Open MPI, ejecute el siguiente comando.

**nota**  
A partir de la versión 1.30.0 de EFA, tanto Open MPI 4.1 como Open MPI 5 se instalan de forma predeterminada. Si lo desea, puede especificar la versión de Open MPI que desea instalar. Para instalar únicamente Open MPI 4.1, incluya `--mpi=openmpi4`. Para instalar únicamente Open MPI 5, incluya `--mpi=openmpi5`. Para instalar ambos, omita la opción `--mpi`.

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

   Libfabric se instala en `/opt/amazon/efa`. Open MPI 4.1 se instala en `/opt/amazon/openmpi`. Open MPI 5 se instala en `/opt/amazon/openmpi5`.

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

   Si tiene la intención de utilizar solo EFA con Intel MPI, puede instalar el software EFA sin Libfabric y Open MPI. En este caso, Intel MPI utiliza su Libfabric integrado. Si decide hacerlo, **debe completar el paso 5: Instalar Intel MPI**. 

   Para instalar el software EFA sin Libfabric y Open MPI, ejecute el siguiente comando.

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

------

1. Si el instalador de EFA le pide que reinicie la instancia, hágalo y vuelva a conectarse a la instancia. De lo contrario, cierre la sesión de la instancia y vuelva a iniciar sesión para completar la instalación.

1. Elimine el archivo tarball sin comprimir y el propio tarball. De lo contrario, se incluirán en la AMI habilitada para EFA que cree, lo que aumentará su tamaño.

## Paso 4: (*opcional*) habilitar Open MPI 5
<a name="efa-start-ompi5"></a>

**nota**  
Realice este paso solo si pretende usar Open MPI 5.

A partir de la versión 1.30.0 de EFA, tanto Open MPI 4.1 como Open MPI 5 se instalan de forma predeterminada. Como alternativa, puede elegir instalar solo Open MPI 4.1 o Open MPI 5.

Si optó por instalar Open MPI 5 en el **paso 3: Instalar el software de EFA** y tiene intención de usarlo, debe realizar los siguientes pasos para habilitarlo.

**Habilitar Open MPI 5**

1. Agregue Open MPI 5 a la variable de entorno PATH.

   ```
   $ module load openmpi5
   ```

1. Compruebe que Open MPI 5 esté habilitado para su uso.

   ```
   $ which mpicc
   ```

   El comando debería devolver el directorio de instalación de Open MPI 5: `/opt/amazon/openmpi5`.

1. (*Opcional*) Para asegurarse de que Open MPI 5 se agregue a la variable de entorno PATH cada vez que se inicie la instancia, haga lo siguiente:

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

   Agregue `module load openmpi5` a `/home/username/.bashrc` y `/home/username/.bash_profile`.

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

   Agregue `module load openmpi5` a `/home/username/.cshrc`.

------

Si necesita eliminar Open MPI 5 de la variable de entorno PATH, ejecute el siguiente comando y elimine el comando de los scripts de inicio del intérprete de comandos.

```
$ module unload openmpi5
```

## Paso 5: (*opcional*) instalar Intel MPI
<a name="efa-start-impi"></a>

**importante**  
Ejecute este paso solo si pretende utilizar Intel MPI. Si tiene la intención de utilizar solo Open MPI, omita este paso. 

La instalación de Intel MPI requiere una instalación adicional y la configuración de una variable de entorno.

**Requisito previo**  
Asegúrese de que el usuario que lleva a cabo los pasos siguientes tenga permisos sudo.

**Para instalar Intel MPI**

1. Para descargar el script de instalación de Intel MPI, haga lo siguiente:

   1. Visite el [sitio web de Intel](https://www.intel.com/content/www/us/en/developer/articles/tool/oneapi-standalone-components.html#mpi).

   1. En la sección **Biblioteca de Intel MPI** de la página web, elija el enlace para el instalador de la **Biblioteca de Intel MPI para Linux** **sin conexión**.

1. Ejecute el script de instalación que descargó en el paso anterior.

   ```
   $ sudo bash installation_script_name.sh
   ```

1. En el instalador, elija **Aceptar e instalar**.

1. Lea el programa de mejora de Intel, elija la opción correspondiente y, a continuación, **Comenzar la instalación**.

1. Cuando finalice la instalación, elija **Cerrar**.

1. De forma predeterminada, Intel MPI utiliza su Libfabric integrada (interna). En cambio, puede configurar Intel MPI para que use la Libfabric que se incluye con el instalador de EFA. Por lo general, el instalador de EFA incluye una versión de Libfabric posterior a la de Intel MPI. En algunos casos, la Libfabric que se incluye con el instalador de EFA es más eficaz que la de Intel MPI. Para configurar Intel MPI de modo que use la Libfabric que se incluye con el instalador de EFA, realice alguna de las siguientes acciones en función de su shell.

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

   Agregue la siguiente instrucción a `/home/username/.bashrc` y `/home/username/.bash_profile`.

   ```
   export I_MPI_OFI_LIBRARY_INTERNAL=0
   ```

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

   Agregue la siguiente instrucción a `/home/username/.cshrc`.

   ```
   setenv I_MPI_OFI_LIBRARY_INTERNAL 0
   ```

------

1. Agregue el siguiente comando de **origen** al script de intérprete de comandos para obtener el script `vars.sh` desde el directorio de instalación para configurar el entorno del compilador cada vez que se inicie la instancia. Haga lo siguiente en función del shell.

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

   Agregue la siguiente instrucción a `/home/username/.bashrc` y `/home/username/.bash_profile`.

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

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

   Agregue la siguiente instrucción a `/home/username/.cshrc`.

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

------

1. De forma predeterminada, si el EFA no está disponible debido a una configuración incorrecta, Intel MPI utilizará la pila de red TCP/IP, lo que puede provocar un rendimiento más lento de la aplicación. Puede evitar que esto suceda configurando `I_MPI_OFI_PROVIDER` en `efa`. Esto hace que Intel MPI falle con el siguiente error si el EFA no está disponible:

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

   Haga lo siguiente en función del shell.

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

   Agregue la siguiente instrucción a `/home/username/.bashrc` y `/home/username/.bash_profile`.

   ```
   export I_MPI_OFI_PROVIDER=efa
   ```

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

   Agregue la siguiente instrucción a `/home/username/.cshrc`.

   ```
   setenv I_MPI_OFI_PROVIDER efa
   ```

------

1. De forma predeterminada, Intel MPI no imprime la información de depuración. Puede especificar diferentes niveles de detalle para controlar la información de depuración. Los valores posibles (ordenados en función de la cantidad de información que proporcionan) son los siguientes: `0` (predeterminado), `1`, `2`, `3`, `4`, `5`. El nivel `1` y los niveles superiores imprimen la `libfabric version` y el `libfabric provider`. Use la `libfabric version` para comprobar si Intel MPI utiliza la Libfabric interna o la Libfabric que se incluye con el instalador de EFA. Si utiliza la Libfabric interna, la versión llevará el sufijo `impi`. Use el `libfabric provider` para comprobar si Intel MPI utiliza el EFA o la red TCP/IP. Si utiliza el EFA, el valor será `efa`. Si utiliza la red TCP/IP, el valor será `tcp;ofi_rxm`.

   Para habilitar la información de depuración, realice alguna de las siguientes acciones en función del shell.

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

   Agregue la siguiente instrucción a `/home/username/.bashrc` y `/home/username/.bash_profile`.

   ```
   export I_MPI_DEBUG=value
   ```

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

   Agregue la siguiente instrucción a `/home/username/.cshrc`.

   ```
   setenv I_MPI_DEBUG value
   ```

------

1. De forma predeterminada, Intel MPI utiliza la memoria compartida del sistema operativo (`shm`) para la comunicación dentro del nodo y, por otro lado, usa la Libfabric (`ofi`) solo para la comunicación entre nodos. Por lo general, esta configuración proporciona el mejor rendimiento. Sin embargo, en algunos casos, la estructura shm de Intel MPI puede provocar el bloqueo de ciertas aplicaciones de forma indefinida.

   Para resolver este problema, puede forzar que Intel MPI use Libfabric para la comunicación tanto dentro del nodo como entre nodos. Para ello, realice alguna de las siguientes acciones en función del shell.

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

   Agregue la siguiente instrucción a `/home/username/.bashrc` y `/home/username/.bash_profile`.

   ```
   export I_MPI_FABRICS=ofi
   ```

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

   Agregue la siguiente instrucción a `/home/username/.cshrc`.

   ```
   setenv I_MPI_FABRICS ofi
   ```

------
**nota**  
El proveedor de la Libfabric del EFA utiliza la memoria compartida del sistema operativo para la comunicación dentro del nodo. Esto significa que la configuración de `I_MPI_FABRICS` en `ofi` produce un rendimiento similar a la configuración predeterminada de `shm:ofi`.

1. Cierre la sesión de la instancia y, a continuación, vuelva a iniciar sesión.

Si ya no desea utilizar Intel MPI, quite las variables de entorno de los scripts de inicio del shell.

## Paso 6: deshabilitar la protección ptrace
<a name="efa-start-ptrace"></a>

Para mejorar el rendimiento de la aplicación HPC, Libfabric utiliza la memoria local de la instancia para las comunicaciones entre procesos cuando los procesos se ejecutan en la misma instancia. 

La característica de memoria compartida utiliza Cross Memory Attach (CMA), que no es compatible con la *protección ptrace*. Si utiliza una distribución Linux que tiene la protección ptrace habilitada de forma predeterminada, como Ubuntu, debe deshabilitarla. Si su distribución Linux no tiene la protección ptrace habilitada de forma predeterminada, omita este paso.

**Para deshabilitar la protección ptrace**  
Aplique alguna de las siguientes acciones:
+ Para deshabilitar temporalmente la protección ptrace con fines de prueba, ejecute el siguiente comando.

  ```
  $ sudo sysctl -w kernel.yama.ptrace_scope=0
  ```
+ Para deshabilitar permanentemente la protección ptrace, agregue `kernel.yama.ptrace_scope = 0` `/etc/sysctl.d/10-ptrace.conf` y reinicie la instancia.

## Paso 7. Confirmar instalación
<a name="efa-start-test"></a>

**Para confirmar que la instalación se ha realizado correctamente**

1. Para confirmar que MPI se instaló correctamente, ejecute el comando siguiente:

   ```
   $ which mpicc
   ```
   + En el caso de Open MPI, la ruta devuelta debe incluir `/opt/amazon/`
   + En el caso de Intel MPI, la ruta devuelta debe incluir `/opt/intel/`. Si no obtiene el resultado esperado, asegúrese de haber obtenido el script `vars.sh` de Intel MPI.

1. Para confirmar que los componentes de software de EFA y Libfabric se instalaron correctamente, ejecute el siguiente comando.

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

   El comando debe devolver información acerca de las interfaces de EFA de Libfabric. En el siguiente ejemplo, se muestra el comando de salida.

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

## Paso 8: instalar la aplicación de HPC
<a name="efa-start-hpc-app"></a>

Instale la aplicación de HPC en la instancia temporal. El procedimiento de instalación varía en función de la aplicación de HPC específica. Para obtener más información, consulte [Manage software on your AL2 instance](https://docs.aws.amazon.com/linux/al2/ug/managing-software.html) en la *Guía del usuario de Amazon Linux 2*.

**nota**  
Consulte la documentación de su aplicación de HPC para ver las instrucciones de instalación.

## Paso 9: crear una AMI habilitada para EFA
<a name="efa-start-ami"></a>

Después de haber instalado los componentes de software requeridos, crea una AMI que puede reutilizar para iniciar las instancias habilitadas para EFA.

**Para crear una AMI desde la instancia temporal**

1. Abra la consola de Amazon EC2 en [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. En el panel de navegación, seleccione **Instances (Instancias)**.

1. Seleccione la instancia temporal que creó y elija **Acciones**, **Imagen**, **Crear imagen**.

1. En **Crear imagen**, realice lo siguiente:

   1. En **Nombre de imagen**, ingrese un nombre descriptivo para la AMI.

   1. (Opcional) En **Descripción de imagen**, ingrese una breve descripción del propósito la AMI.

   1. Elija **Crear imagen**.

1. En el panel de navegación, elija **AMI**.

1. Localice la AMI que creó en la lista. Espere a que el estado pase de `pending` a `available` antes de continuar con el paso siguiente.

## Paso 10: iniciar instancias habilitadas para EFA en un grupo con ubicación en clúster
<a name="efa-start-instances"></a>

Lance las instancias habilitadas para EFA en un grupo de ubicación en clúster utilizando la AMI habilitada para EFA que creó en el **Paso 7** y el grupo de seguridad habilitado para EFA que creó en el **Paso 1**.

**nota**  
No es un requisito absoluto lanzar las instancias habilitadas con un EFA a un grupo de colocación de clústeres. Sin embargo, le recomendamos ejecutar sus instancias habilitadas para EFA en un grupo con ubicación en clúster a medida que inicia las instancias en un grupo de baja latencia en una única zona de disponibilidad.
Para garantizar que la capacidad esté disponible a medida que escala las instancias del clúster, puede crear una reserva de capacidad para su grupo con ubicación en clúster. Para obtener más información, consulte [Utilización de reservas de capacidad con grupos con ubicación en clúster](cr-cpg.md).

**Cómo lanzar una instancia**

1. Abra la consola de Amazon EC2 en [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. En el panel de navegación, elija **Instancias** y, a continuación, **Iniciar instancias** para abrir el nuevo asistente de inicialización de instancias.

1. (*Opcional*) En la sección **Nombre y etiquetas**, proporcione un nombre para la instancia, como `EFA-instance`. El nombre se asigna a la instancia como etiqueta de recurso (`Name=EFA-instance`).

1. En la sección **Imágenes de aplicaciones y sistema operativo**, elija **Mis AMI** y, a continuación, seleccione la AMI que creó en el paso anterior.

1. En la sección **Tipo de instancia**, seleccione el [tipo de instancia admitida](efa.md#efa-instance-types).

1. En la sección **Par de claves**, seleccione el par de claves que desea utilizar en la instancia.

1. En la sección **Configuración de red**, elija **Editar** y realice lo siguiente:

   1. En **Subred**, elija la subred en la que desea iniciar la instancia. Si no selecciona una subred, no puede habilitar la instancia para EFA.

   1. En **Firewall (grupos de seguridad)**, elija **Seleccionar grupo de seguridad existente** y, a continuación, seleccione el grupo de seguridad que creó en el paso anterior.

   1. Amplíe la sección **Configuración de red avanzada**.

      Para **la interfaz de red 1**, seleccione **Índice de tarjeta de red = 0**, **Índice de dispositivo = 0** y **Tipo de interfaz = EFA con ENA**.

      (*Opcional*) Si utiliza un tipo de instancia con varias tarjetas, por ejemplo, `p4d.24xlarge` o `p5.48xlarge`, para cada interfaz de red adicional necesaria, elija **Agregar interfaz de red**; en **Índice de tarjetas de red**, seleccione el siguiente índice no utilizado y, a continuación, seleccione **Índice de dispositivo = 1** y **Tipo de interfaz = EFA con ENA** o **solo EFA**.

1. (*Opcional*) En la sección **Almacenamiento**, configure los volúmenes según sea necesario.

1. En la sección **Detalles avanzados**, para **Nombre del grupo de ubicación**, seleccione el grupo con ubicación en clúster en el que se iniciarán las instancias. Si necesita crear un nuevo grupo con ubicación en clúster, elija **Crear nuevo grupo de ubicación**.

1. En el panel **Resumen**que se encuentra a la derecha, en **Cantidad de instancias**, ingrese la cantidad de instancias habilitadas para EFA que desea iniciar y, a continuación, elija **Iniciar instancias**.

## Paso 11: finalizar la instancia temporal
<a name="efa-start-terminate"></a>

En este punto, ya no necesita la instancia que inició en el [paso 2](#efa-start-tempinstance). Puede finalizar la instancia para dejar de incurrir en cargos debido a esta.

**Para finalizar la instancia temporal**

1. Abra la consola de Amazon EC2 en [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. En el panel de navegación, seleccione **Instances (Instancias)**.

1. Seleccione la instancia temporal que creó y, a continuación, elija **Acciones**, **Estado de la instancia**, **Finalizar (eliminar) instancia**.

1. Cuando se le pida confirmación, elija **Finalizar (eliminar)**.

## Paso 12: habilitar SSH sin contraseña
<a name="efa-start-passwordless"></a>

Para permitir que las aplicaciones se ejecuten en todas las instancias del clúster, debe habilitar el acceso mediante SSH sin contraseña desde el nodo principal hasta los nodos miembro. El nodo principal es la instancia desde la que se ejecutan las aplicaciones. Las instancias restantes del clúster son los nodos miembros.

**Para habilitar SSH sin contraseña entre las instancias del clúster**

1. Seleccione una instancia del clúster como nodo principal y conéctese a ella.

1. Desactive `strictHostKeyChecking` y habilite `ForwardAgent` en el nodo principal. Abra `~/.ssh/config` con su editor de texto preferido y agregue lo siguiente.

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

1. Genere un par de claves de RSA.

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

   El par de claves se crea en el directorio `$HOME/.ssh/`.

1. Cambie los permisos de la clave privada en el nodo principal.

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

1. Abra `~/.ssh/id_rsa.pub` con su editor de texto preferido y copie la clave.

1. Para cada nodo miembro del clúster, realice lo siguiente:

   1. Conéctese a la instancia.

   1. Abra `~/.ssh/authorized_keys` con su editor de texto preferido y agregue la clave pública que copió anteriormente.

1. Para probar que SSH sin contraseña funciona como se esperaba, conecte al nodo principal y ejecute el siguiente comando.

   ```
   $ ssh member_node_private_ip
   ```

   Debe conectarse al nodo miembro sin que se le pida una clave o una contraseña.