Crea una instancia de VM lista para HPC


Las cargas de trabajo de computación de alto rendimiento (HPC) con acoplamiento alto a menudo usan la interfaz de envío de mensajes (MPI) para comunicarse entre instancias de máquinas virtuales (VM) y procesos. Sin embargo,compilar tu propia imagen de VM que se ajusta para un rendimiento óptimo de la MPI requiere experiencia en sistemas, Google Cloud conocimiento y tiempo adicional de mantenimiento. Para configurar rápidamente un entorno optimizado para tus cargas de trabajo de HPC, usa la imagen de VM de HPC.

La imagen de VM de HPC es una imagen de VM basada en Rocky Linux 8 que está optimizada para cargas de trabajo de HPC con acoplamiento alto. Incluye los parámetros de ajuste de red y kernel preconfigurados para crear instancias de VM que alcancen un rendimiento MPI óptimo en Google Cloud.

Para obtener los mejores resultados, implementa la imagen de VM de HPC en un tipo de máquina de una serie optimizada para HPC, como la serie H4D o H3, o una serie optimizada para procesamiento, como C2 o C2D. Estos tipos de máquinas están diseñados para aplicaciones de HPC con acoplamiento alto. Para usar RDMA con H4D, debes usar la versión 20241125 o posterior de la imagen de VM de HPC.

Puedes crear una instancia de VM lista para HPC con las siguientes opciones:

Beneficios

La imagen de VM de HPC brinda los siguientes beneficios:

  1. Instancias de VM listas para usar cargas de trabajo de HPC de inmediato. No es necesario ajustar el rendimiento de forma manual, administrar los reinicios de instancias de VM ni mantenerse actualizado con las últimas Google Cloud actualizaciones para cargas de trabajo de HPC con acoplamiento alto.
  2. Optimizaciones de red para cargas de trabajo estrechamente vinculadas. Se incluyen optimizaciones que reducen la latencia de mensajes pequeños, lo que beneficia a las aplicaciones que dependen en gran medida de comunicaciones punto a punto y colectivas. Si usas la serie de máquinas H4D, la imagen de VM de HPC contiene los controladores de Cloud RDMA necesarios.
  3. Optimizaciones para procesamiento de las cargas de trabajo de HPC. Se incluyen optimizaciones que reducen el Jitter del sistema, lo que hace que el alto rendimiento de un solo nodo sea más predecible.
  4. Rendimiento coherente y reproducible. La estandarización de imágenes de VM te brinda un rendimiento en el nivel de aplicación coherente y reproducible.
  5. Compatibilidad mejorada con las aplicaciones. La alineación con los requisitos a nivel de nodo de la especificación de la plataforma Intel HPC habilita un alto grado de interoperabilidad entre los sistemas.

Funciones de la imagen de VM de HPC

La imagen de VM de HPC ofrece varias funciones diseñadas para optimizar el rendimiento de las cargas de trabajo de computación de alto rendimiento (HPC):

  • Se inhabilitaron las actualizaciones automáticas
  • Ajustes colectivos de Intel MPI
  • RPM preinstalados

Se inhabilitaron las actualizaciones automáticas

Las actualizaciones automáticas pueden tener un impacto negativo en el rendimiento de las cargas de trabajo de HPC. Cuando se usan las imágenes de VM de HPC, se pueden inhabilitar las actualizaciones automáticas configurando la entrada de metadatos google_disable_automatic_updates en TRUE cuando se crea una instancia de VM. La forma en que se establece esta entrada de metadatos durante la creación de la instancia depende de la herramienta que uses para crearla.

Por ejemplo, cuando uses el comando gcloud compute instances create para crear una instancia de VM, proporciona el argumento --metadata. Para obtener más información, consulta Acerca de los metadatos de VMs.

Biblioteca de Intel MPI

Google recomienda que uses la biblioteca de Intel MPI 2021 para ejecutar trabajos de MPI en Google Cloud. Si deseas obtener más información, consulta las siguientes secciones:

RPM preinstalados

La imagen de VM de HPC incluye los siguientes paquetes de RPM preinstalados:

  • daos-client
  • gcc-gfortran
  • gcc-toolset-12
  • Lmod
  • dkms
  • htop
  • hwloc
  • hwloc-devel
  • infiniband-diags
  • kernel-devel
  • kmod-idpf-irdma
  • libfabric
  • librdmacm-utils
  • libibverbs-utils
  • libXt
  • ltrace
  • nfs-utils
  • numactl
  • numactl-devel
  • papi
  • pciutils
  • pdsh
  • perf
  • perftest
  • rdma-core
  • redhat-lsb-core
  • redhat-lsb-cxx
  • rsh
  • screen
  • strace
  • wget
  • zsh
  • Grupo de paquetes "Herramientas de desarrollo"

Guías de inicio rápido

En estos instructivos, se describen los pasos para configurar una instancia de VM optimizada para HPC. En los procedimientos, se describe cómo hacer lo siguiente:

  • Crea una instancia de VM de HPC (sin configurar Cloud RDMA)
  • Especifica una política de posición de compactación cuando crees instancias de VM de HPC
  • Crea una instancia de VM de HPC que use Cloud RDMA (vista previa)

No puedes agregar Cloud RDMA a una instancia de VM de HPC existente, por lo que debes seguir los pasos correspondientes cuando crees tu instancia.

Antes de comenzar

  1. Si deseas usar Google Cloud CLI para esta guía de inicio rápido, primero debes instalar y, luego, inicializar Google Cloud CLI:
  2. En la Google Cloud consola, en la página del selector de proyectos, selecciona o crea unGoogle Cloud proyecto.

Crea una instancia de VM de HPC

Recomendamos elegir un tipo de máquina de las siguientes series:

Estas VMs tienen una asignación fija de núcleo virtual a físico y exponen la arquitectura de celdas de NUMA al SO invitado. Esto es fundamental para el rendimiento de las aplicaciones de HPC estrechamente vinculadas.

Console

  1. En la consola de Google Cloud , ve a la página de VM de HPC de Cloud Marketplace. Ir a la página de VM de HPC de Cloud Marketplace

  2. Haz clic en Comenzar.

  3. En la página de implementación de VM de HPC, ingresa un Nombre de implementación. Este nombre se convierte en la raíz del nombre de tu VM. Compute Engine agrega -vm al nombre cuando se le asigna un nombre a la instancia.

  4. Elige una Zona y un Tipo de máquina. Para esta guía de inicio rápido, puedes dejar toda la configuración como está o cambiarla.

  5. Deja el Tipo de disco de arranque, el Tamaño de disco de arranque y la Interfaz de red en su configuración predeterminada.

  6. Haz clic en Implementar.

Una vez que se complete la creación de la instancia de VM, se abre Cloud Deployment Manager, en el que puedes administrar la VM de HPC y otras implementaciones.

gcloud

Crea una VM de HPC mediante el comando instances create. Si creas varias instancias de VM de HPC interconectadas, crea VMs de HPC con políticas de posición de compactación para lograr una latencia de red baja.

Para crear una instancia de VM de HPC sin una política de posición, usa un comando similar al siguiente:

gcloud compute instances create INSTANCE_NAME \
        --zone=ZONE \
        --image-family=IMAGE_FAMILY \
        --image-project=cloud-hpc-image-public \
        --maintenance-policy=TERMINATE \
        --machine-type=MACHINE_TYPE

Reemplaza lo siguiente:

  • INSTANCE_NAME: Es el nombre de la instancia de VM de HPC.
  • ZONE: Es la zona en la que se creará la instancia.
  • IMAGE_FAMILY: Es la familia de imágenes de la imagen que se usará cuando se creen las instancias de VM. Usa hpc-rocky-linux-8 para la imagen más reciente basada en Rocky Linux 8.
  • MACHINE_TYPE: Es el tipo de máquina que se usará cuando se cree la instancia de VM.

Después de un tiempo, se completará la creación de la instancia de VM. Para verificar la configuración de la instancia y ver su estado, ejecuta el siguiente comando:

gcloud compute instances describe INSTANCE_NAME

Crea instancias de VM de HPC con políticas de posición compacta

Para reducir la latencia entre las instancias de VM, crea una política de posición compacta. Una política de posición de compactación garantiza que las instancias de la misma zona de disponibilidad se encuentren cerca unas de otras.

Si necesitas más instancias de VM de las que caben en una sola política de posición compacta, divide tus instancias en varias políticas de posición. Usa la cantidad mínima de políticas de posición que se adapte a todas tus instancias.

Para crear instancias de VM de HPC que especifiquen una política de posición de compactación, sigue estos pasos:

  1. Crea una política de posición de compactación

  2. Realiza una de las siguientes acciones:

Crea una instancia de VM de HPC que use Cloud RDMA

Para crear una instancia de VM de HPC que use Cloud RDMA, primero debes crear al menos una red de VPC normal y una red de VPC de Falcon. La red de VPC de Falcon usa un perfil de red de RDMA que habilita el tráfico de RDMA entre las instancias de procesamiento. Esta red es independiente de la red de VPC normal que transporta tráfico que no es de RDMA a otros servicios deGoogle Cloud o a Internet.

Para crear una instancia de VM de HPC que use Cloud RDMA, debes completar las siguientes tareas:

  1. Identifica o crea al menos dos redes de VPC:

    • Una red de VPC normal para el tráfico que pasa por la interfaz de red de gVNIC
    • Una red de VPC de Falcon para el tráfico de RDMA
  2. Crea una instancia de VM de HPC.

    1. Para la imagen de origen, usa la imagen de VM de HPC. Esta imagen incluye los controladores necesarios para Cloud RDMA.
    2. Durante la creación de la instancia, configura al menos dos interfaces de red: una que use el controlador de gVNIC y otra que use el controlador de IRDMA.

      Para obtener una explicación más completa, consulta Crea una instancia que use RDMA de Cloud.

  3. Si planeas ejecutar aplicaciones de MPI en las instancias de VM de HPC que usan Cloud RDMA, sigue los pasos de configuración de MPI que se indican en Configura y escala aplicaciones de MPI en VMs H4D con Cloud RDMA.

Accede a la instancia de VM de HPC

Después de crear la instancia de VM de HPC, esta se inicia de forma automática. Para acceder a la instancia, realiza una de las siguientes acciones:

Console

  1. En la Google Cloud consola, ve a la página Instancias de VM.

    Ir a Instancias de VM

  2. Haz clic en el nombre de la instancia de VM.

  3. En la sección Acceso remoto, haz clic en la primera lista desplegable y elige cómo deseas acceder a la instancia.

Compute Engine propaga tus claves SSH y crea tu usuario. Para obtener más información, consulta Conéctate a VM de Linux.

gcloud

Para acceder a la instancia con SSH, usa el comando gcloud compute ssh:

gcloud compute ssh INSTANCE_NAME

Compute Engine propaga tus claves SSH y crea tu usuario. Para obtener más información, consulta Conéctate a instancias de Windows.

Limpia

Para evitar que se apliquen cargos a tu Google Cloud cuenta por los recursos que usaste en estas guías de inicio rápido, borra las instancias de VM de HPC que creaste.

Console

  1. En la consola de Google Cloud , ve a la página Implementaciones.

    Ir a Implementaciones

  2. Selecciona la casilla de verificación junto a la implementación de VM de HPC.

  3. Haz clic en Borrar.

gcloud

Usa el comando instances delete:

gcloud compute instances delete INSTANCE_NAME

Configura tu instancia de VM de HPC según las prácticas recomendadas

Para obtener un rendimiento mejor y más predecible para tu instancia de VM de HPC, te recomendamos que uses las siguientes prácticas recomendadas.

Inhabilitar el multiprocesamiento simultáneo

La imagen de VM de HPC habilita el multiprocesamiento simultáneo (SMT), también conocido como hipersubproceso en procesadores Intel de forma predeterminada. Inhabilitar SMT puede hacer que tu rendimiento sea más predecible y puede reducir los tiempos de trabajo.

Puedes usar los siguientes métodos para inhabilitar SMT:

  • Para inhabilitar SMT mientras creas una VM de HPC nueva, sigue los pasos en Crea una VM de HPC y, luego, incluye la marca --threads-per-core=1.

  • Para inhabilitar SMT en una VM de HPC existente, conéctate a la VM y ejecuta el siguiente comando desde la VM:

    sudo google_mpi_tuning --nosmt
    

Para obtener más información, consulta Configura una cantidad de subprocesos por núcleo.

Configura gVNIC como el tipo de interfaz de red para las instancias C2 y C2D

La imagen de VM de HPC es compatible con Virtio-net y NIC virtual de Google (gVNIC) como interfaces de red virtuales. Usar gVNIC en lugar de Virtio-net puede mejorar la escalabilidad de las aplicaciones de la MPI, ya que proporciona un mejor rendimiento de la comunicación y una capacidad de procesamiento más alta. Además, gVNIC es un requisito previo para el rendimiento de red Tier_1 por VM, que proporciona un mayor ancho de banda y permite una mayor capacidad de procesamiento.

Si creas una instancia C2 o C2D nueva, de forma predeterminada, se usa Virtio-net para la interfaz de red virtual. Para usar gVNIC, sigue los pasos para crear una VM de HPC y realiza una de las siguientes acciones:

Console

Para configurar gVNIC como la interfaz de red, cuando crees la instancia, haz clic en Herramientas de redes en el menú de navegación. En el panel Networking que aparece, haz lo siguiente:

  1. Ve a la sección Interfaces de red.
  2. En Tarjeta de interfaz de red, selecciona gVNIC.

gcloud

Incluye la marca --network-interface=nic-type=GVNIC en el comando gcloud compute instances create.

La imagen de VM de HPC incluye el controlador de gVNIC como compatibilidad con un módulo de kernel dinámico (DKMS). Para obtener más información, consulta Usa la NIC virtual de Google.

Desactiva las mitigaciones de Meltdown y Spectre

La imagen de VM de HPC habilita las mitigaciones de Meltdown y Spectre de forma predeterminada. En algunos casos, estas mitigaciones pueden provocar una degradación del rendimiento específica de la carga de trabajo. Para inhabilitar estas mitigaciones y, luego, incurrir en riesgos de seguridad asociados, haz lo siguiente:

  1. Ejecuta el siguiente comando en tu instancia de HPC:

    sudo google_mpi_tuning --nomitigation
    
  2. Reinicia la instancia.

Mejorar el rendimiento de la red

Para mejorar el rendimiento de la red de tu instancia, establece uno o más de los siguientes parámetros de configuración:

  • Configura un ancho de banda mayor. Para configurar las redes de nivel 1 para las VMs C2 o C2D, usa el comando gcloud compute instances create para crear la VM y especifica la marca --network-performance-configs. Para obtener más información, consulta Crea una VM con una configuración de ancho de banda alto.

  • Usa marcos jumbo A fin de ayudar a minimizar la sobrecarga de procesamiento para los paquetes de red, recomendamos usar un tamaño de paquete más grande. Debes validar los tamaños de paquetes más grandes para los detalles de tu aplicación. Para obtener información sobre el uso de marcos jumbo y los tamaños de paquetes, consulta la Guía de unidades de transmisión máxima.

  • Aumenta los límites de memoria de TCP. Un mayor ancho de banda requiere una memoria TCP mayor. Sigue los pasos para aumentar la configuración de tcp_*mem.

  • Usa el perfil de latencia de red. Evalúa la latencia de la aplicación y habilita el sondeo de disponibilidad que reduce la latencia en la ruta de recepción de la red. Ajusta la configuración de net.core.busy_poll y net.core.busy_read en /etc/sysctl.conf o usa tuned-adm.

Usa Intel MPI 2021

Google recomienda usar la biblioteca de Intel MPI 2021 para ejecutar trabajos de MPI enGoogle Cloud.

Las implementaciones de MPI tienen muchos parámetros de configuración internos que pueden afectar el rendimiento de la comunicación. Estos parámetros son relevantes en especial para la comunicación colectiva de la MPI, que te permite especificar algoritmos y parámetros de configuración que pueden tener un rendimiento muy diferente en el entorno de Google Cloud .

La imagen de VM de HPC incluye una utilidad, google-hpc-compute, que instala las bibliotecas MPI recomendadas y usa proveedores de libfabric personalizados de Google Cloud a través del transporte TCP.

Limitaciones

Los beneficios del ajuste varían entre las aplicaciones. En algunos casos, un ajuste en particular puede tener un efecto negativo en el rendimiento. Considera comparar tus aplicaciones para encontrar la configuración más eficiente o rentable.

Usa la utilidad google-hpc-compute para la compatibilidad con Intel MPI 2021

La secuencia de comandos google_install_intelmpi es la herramienta relacionada con la MPI en la utilidad Google-hpc-compute. Ayuda a instalar y configurar Intel MPI.

La utilidad google-hpc-compute se incluye en la imagen de VM de HPC.

Instala Intel MPI 2021

Para instalar la biblioteca de Intel MPI mientras creas una VM de HPC nueva, sigue los pasos en Crea una VM de HPC y, luego, incluye lo siguiente cuando crees la instancia de VM:

--metadata=google_install_intelmpi="--impi_2021"

Para instalar la biblioteca en una VM de HPC existente, ejecuta el comando siguiente en esa VM:

sudo google_install_intelmpi --impi_2021 --install_dir=PATH_INSTALL_MPI

La ubicación predeterminada para install_dir se establece en /opt/intel.

Biblioteca Intel MPI 2018 y ajustes colectivos de MPI

La imagen de VM de HPC incluye los ajustes colectivos de Intel MPI que se realizan en instancias c2-standard-60 y c2d-standard-112 con políticas de posición compacta. Estos ajustes están disponibles en el directorio /usr/share/google-hpc-compute/mpitune-configs/intelmpi-2018.

Para aplicar estos parámetros de configuración de ajuste en una biblioteca de MPI instalada, ejecuta el secuencia de comandos de shell mpivars para configurar el entorno adecuado. Luego, puedes instalar los ajustes directamente con el siguiente comando (usa la opción --sudo si necesitas acceso raíz al directorio): google_install_mpitune

Puedes usar mpitune para especificar manualmente los algoritmos y los parámetros de configuración para la comunicación colectiva de MPI y generar archivos de configuración.

Por ejemplo, para ajustar 22 instancias de VM y 30 CPU virtuales por instancia, obtén la secuencia de comandos de shell mpivars para configurar el entorno adecuado y, luego, ejecuta el siguiente comando. Debes tener acceso de write al directorio o ejecutar el comando como usuario raíz.

mpitune -hf hostfile -fl 'shm:tcp' -pr 30:30 -hr 22:22

Este comando genera un archivo de configuración en el directorio de Intel MPI que se puede usar más adelante para ejecutar aplicaciones. Para usar la configuración de ajuste de una aplicación, agrega la opción -tune a la línea de comandos mpirun, por ejemplo:

mpirun -tune -hostfile HOSTFILE -genv I_MPI_FABRICS 'shm:tcp' -np 660 -ppn 30 ./APPLICATION_NAME

Reemplaza lo siguiente:

  • HOSTFILE: Nombre de un archivo en el SO invitado que enumera los nombres de red de las instancias de VM
  • APPLICATION_NAME: Es el nombre del archivo de la aplicación que se ejecutará.

Crea una imagen personalizada con la imagen de VM de HPC

Para implementar las prácticas recomendadas a gran escala, crea una imagen de SO personalizada para usar con tus instancias de VM de HPC. Completa las siguientes tareas para crear una imagen personalizada que se usará cuando crees instancias de VM de HPC:

  1. Crea una VM que use la imagen de VM de HPC.

  2. Personaliza la VM con ajustes de la MPI.

  3. Crea una imagen personalizada con el disco de arranque de la imagen de VM de HPC como el disco de origen. Puedes hacerlo con la consola deGoogle Cloud o Google Cloud CLI.

Console

  1. En la consola de Google Cloud , ve a la página Imágenes.

    Ir a Imágenes

  2. Haga clic en Crear imagen.

  3. Especifica un Nombre para tu imagen.

  4. En Disco de origen, selecciona el nombre del disco de arranque en la VM de HPC.

  5. Elige otras propiedades restantes para tu imagen.

  6. Haz clic en Crear.

gcloud

Crea la imagen personalizada con el comando images create.

gcloud compute images create IMAGE_NAME \
         --source-disk=INSTANCE_NAME \
         --source-disk-zone=VM_ZONE \
         --family=IMAGE_FAMILY \
         --storage-location=LOCATION

Reemplaza lo siguiente:

  • IMAGE_NAME: Es el nombre de la imagen personalizada.
  • INSTANCE_NAME: Es el nombre de tu VM de HPC.
  • INSTANCE_ZONE: Es la zona en la que se encuentra tu VM de HPC.
  • IMAGE_FAMILY: es opcional. Es la familia de imágenes a la que pertenece esta imagen nueva (opcional).
  • LOCATION: es opcional. Región en la que se almacena la imagen personalizada. La ubicación predeterminada es la multirregión más cercana a la ubicación del disco de origen.

Precios

La imagen de VM de HPC está disponible sin costo adicional. Debido a que la imagen de VM de HPC se ejecuta en Compute Engine, es posible que se generen cargos por los recursos de Compute Engine, como las CPU virtuales, los discos y la memoria. Para obtener más información, consulta los precios de Compute Engine.

¿Qué sigue?