Créer une instance de VM compatible avec HPC

Les charges de travail de calcul hautes performances étroitement couplée utilisent souvent l'interface de transmission de messages (MPI, Message Passing Interface) pour communiquer entre les processus et les instances de machines virtuelles (VM). Toutefois,la création de votre propre image de VM adaptée aux performances MPI optimales nécessite une expertise système, une connaissance de Google Cloud et un temps de maintenance supplémentaire. Pour configurer rapidement un environnement optimisé pour vos charges de travail HPC, utilisez l'image de VM HPC.

L'image de VM HPC est une image de VM basée sur Rocky Linux 8 qui est optimisée pour les charges de travail HPC à couplage fort. Elle inclut le noyau préconfiguré et les paramètres de réglages réseau nécessaires pour créer des instances de VM qui atteignent des performances MPI optimales sur Google Cloud.

Pour obtenir les meilleurs résultats, déployez l'image de VM HPC sur un type de machine d'une série optimisée pour le HPC, comme les séries H4D ou H3, ou d'une série optimisée pour le calcul, comme C2 ou C2D. Ces types de machines sont conçus pour les applications HPC à couplage fort. Pour utiliser RDMA avec H4D, vous devez utiliser la version 20241125 ou ultérieure de l'image de VM HPC.

Vous pouvez créer une instance de VM compatible avec le HPC à l'aide des options suivantes :

Avantages

L'image de VM HPC offre les avantages suivants :

  1. Instances de VM prêtes à l'emploi pour les charges de travail HPC Vous n'avez pas besoin de régler manuellement les performances, de gérer les redémarrages des instances de VM ni de vous tenir informé des dernières mises à jour Google Cloud concernant les charges de travail HPC à couplage fort.
  2. Optimisations de la mise en réseau pour les charges de travail à couplage fort. Optimisations permettant de réduire la latence des petits messages, ce qui profite aux applications fortement dépendantes des communications de type point à point et collectives. Si vous utilisez la série de machines H4D, l'image de VM HPC contient les pilotes Cloud RDMA nécessaires.
  3. Optimisations du calcul pour les charges de travail HPC. Optimisations permettant de réduire la gigue du système, ce qui rend les hautes performances plus prévisibles sur un nœud unique.
  4. Performances cohérentes et reproductibles. La standardisation des images de VM offre des performances cohérentes et reproductibles au niveau de l'application.
  5. Compatibilité des applications améliorée L'alignement avec les exigences au niveau du nœud de la spécification de la plate-forme HPC Intel permet un haut degré d'interopérabilité entre les systèmes.

Fonctionnalités de l'image de VM HPC

L'image de VM HPC offre plusieurs fonctionnalités conçues pour optimiser les performances des charges de travail de calcul hautes performances (HPC) :

  • Mises à jour automatiques désactivées
  • Réglages collectifs Intel MPI
  • RPM préinstallés

Mises à jour automatiques désactivées

Les mises à jour automatiques peuvent avoir un impact négatif sur les performances des charges de travail HPC. Vous pouvez désactiver les mises à jour automatiques lorsque vous utilisez les images de VM HPC en définissant l'entrée de métadonnées google_disable_automatic_updates sur TRUE lors de la création d'une instance de VM. La façon dont cette entrée de métadonnées est définie lors de la création de l'instance dépend de l'outil que vous utilisez pour créer l'instance.

Par exemple, lorsque vous utilisez la commande gcloud compute instances create pour créer une instance de VM, fournissez l'argument --metadata. Pour en savoir plus, consultez la page À propos des métadonnées de VM.

Bibliothèque Intel MPI

Google recommande d'utiliser la bibliothèque Intel MPI 2021 pour exécuter des jobs MPI sur Google Cloud. Pour plus d'informations, consultez les sections suivantes :

RPM préinstallés

Les packages RPM suivants sont préinstallés sur l'image de la VM HPC:

  • 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
  • Groupe de packages "Outils pour les développeurs"

Guides de démarrage rapide

Ces tutoriels décrivent les étapes à suivre pour configurer une instance de VM optimisée pour le HPC. Les procédures décrivent comment :

  • Créer une instance de VM HPC (sans configurer Cloud RDMA)
  • Spécifier une stratégie de concentration lors de la création d'instances de VM HPC
  • Créer une instance de VM HPC qui utilise Cloud RDMA (aperçu)

Vous ne pouvez pas ajouter Cloud RDMA à une instance de VM HPC existante. Suivez donc les étapes appropriées lors de la création de votre instance.

Avant de commencer

  1. Pour utiliser Google Cloud CLI dans le cadre de ce guide de démarrage rapide, vous devez d'abord installer et initialiser Google Cloud CLI :
  2. Dans la console Google Cloud , sur la page de sélection du projet, sélectionnez ou créez un projetGoogle Cloud .

Créer une instance de VM HPC

Nous vous recommandons vivement de choisir un type de machine parmi les séries suivantes :

Ces VM ont un mappage virtuel/physique principal fixe et exposent l'architecture de cellule NUMA au système d'exploitation invité. Ces deux éléments sont essentiels à la performance d'applications HPC à couplage fort.

Console

  1. Dans la console Google Cloud , accédez à la page "HPC VM" (VM HPC) de Cloud Marketplace. Accéder à la page "HPC VM" (VM HPC) de Cloud Marketplace

  2. Cliquez sur Commencer.

  3. Sur la page de déploiement de la VM HPC, saisissez le nom du déploiement. Ce nom devient la racine du nom de la VM. Compute Engine ajoute -vm à ce nom lorsque vous nommez votre instance.

  4. Choisissez une zone et un type de machine. Dans ce guide de démarrage rapide, vous pouvez laisser tous les paramètres tels quels ou les modifier.

  5. Laissez les valeurs par défaut dans les champs Boot disk type (Type de disque de démarrage), Boot disk size (Taille du disque de démarrage) et Network interface (Interface réseau).

  6. Cliquez sur Déployer.

Une fois la création de l'instance de VM terminée, Cloud Deployment Manager s'ouvre afin que vous puissiez gérer votre VM HPC et vos autres déploiements.

gcloud

Créez une VM HPC à l'aide de la commande instances create. Si vous créez plusieurs instances de VM HPC interconnectées, créez des VM HPC avec des règles de concentration pour obtenir une faible latence réseau.

Pour créer une instance de VM HPC sans règle de placement, utilisez une commande semblable à la suivante :

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

Remplacez les éléments suivants :

  • INSTANCE_NAME : nom de l'instance de VM HPC.
  • ZONE : zone dans laquelle créer l'instance.
  • IMAGE_FAMILY : famille d'images de l'image à utiliser lors de la création des instances de VM. Utilisez hpc-rocky-linux-8 pour la dernière image basée sur Rocky Linux 8.
  • MACHINE_TYPE : type de machine à utiliser lors de la création de l'instance de VM.

Après un certain temps, la création de l'instance de VM se termine. Pour vérifier la configuration de l'instance et afficher son état, exécutez la commande suivante :

gcloud compute instances describe INSTANCE_NAME

Créer des instances de VM HPC avec des règles de concentration

Vous pouvez réduire la latence entre les instances de VM en créant une stratégie d'emplacement compacte. Une stratégie de concentration garantit que les instances situées dans la même zone de disponibilité sont proches les unes des autres.

Si vous avez besoin de plus d'instances de VM que ne le permet une seule stratégie d'emplacement compact, divisez vos instances en plusieurs stratégies d'emplacement. Utilisez le nombre minimal de règles d'emplacement pouvant s'adapter à toutes vos instances.

Pour créer des instances de VM HPC qui spécifient une règle de concentration, procédez comme suit :

  1. Créer une règle de concentration

  2. Effectuez l'une des opérations suivantes :

Créer une instance de VM HPC qui utilise Cloud RDMA

Pour créer une instance de VM HPC qui utilise Cloud RDMA, vous devez d'abord créer au moins un réseau VPC standard et un réseau VPC Falcon. Le réseau VPC Falcon utilise un profil réseau RDMA qui permet le trafic RDMA entre les instances de calcul. Ce réseau est distinct du réseau VPC habituel qui transporte le trafic non RDMA vers d'autres servicesGoogle Cloud ou vers Internet.

Pour créer une instance de VM HPC qui utilise Cloud RDMA, vous devez effectuer les tâches suivantes :

  1. Identifiez ou créez au moins deux réseaux VPC :

    • Un réseau VPC standard pour le trafic qui transite par l'interface réseau gVNIC
    • Un réseau VPC Falcon pour le trafic RDMA
  2. Créez une instance de VM HPC.

    1. Pour l'image source, utilisez l'image de VM HPC. Cette image inclut les pilotes nécessaires pour Cloud RDMA.
    2. Lors de la création de l'instance, configurez au moins deux interfaces réseau : une qui utilise le pilote gVNIC et une qui utilise le pilote IRDMA.

      Pour obtenir une explication plus complète, consultez Créer une instance qui utilise Cloud RDMA.

  3. Si vous prévoyez d'exécuter des applications MPI sur les instances de VM HPC qui utilisent Cloud RDMA, suivez les étapes de configuration MPI décrites dans Configurer et mettre à l'échelle des applications MPI sur des VM H4D avec Cloud RDMA.

Accéder à l'instance de VM HPC

Une fois que vous avez créé l'instance de VM HPC, elle démarre automatiquement. Pour accéder à l'instance, effectuez l'une des opérations suivantes :

Console

  1. Dans la console Google Cloud , accédez à la page Instances de VM.

    Accéder à la page Instances de VM

  2. Cliquez sur le nom de votre instance de VM.

  3. Dans la section Accès à distance, cliquez sur la première liste déroulante et choisissez le mode d'accès à l'instance souhaité.

Compute Engine propage vos clés SSH et crée votre utilisateur. Pour en savoir plus, consultez la page Se connecter à des VM Linux.

gcloud

Pour accéder à l'instance à l'aide de SSH, utilisez la commande gcloud compute ssh :

gcloud compute ssh INSTANCE_NAME

Compute Engine propage vos clés SSH et crée votre utilisateur. Pour en savoir plus, consultez la page Se connecter à des instances.

Effectuer un nettoyage

Pour éviter que les ressources utilisées dans ces guides de démarrage rapide ne soient facturées sur votre compte Google Cloud , supprimez toutes les instances de VM HPC que vous avez créées.

Console

  1. Dans la console Google Cloud , accédez à la page Déploiements.

    Accéder à la page "Déploiements"

  2. Cochez la case en regard du déploiement de la VM HPC.

  3. Cliquez sur Supprimer.

gcloud

Exécutez la commande instances delete :

gcloud compute instances delete INSTANCE_NAME

Configurer votre instance de VM HPC selon les bonnes pratiques

Pour optimiser les performances de votre instance de VM HPC et les rendre plus prévisibles, nous vous recommandons de suivre les bonnes pratiques suivantes.

Désactiver le multithreading simultané

L'image de VM HPC permet d'utiliser le multithreading simultané (SMT), également appelé Hyper-Threading sur les processeurs Intel, par défaut. La désactivation du SMT peut améliorer les performances de vos tâches et réduire les temps de tâche.

Vous pouvez utiliser les méthodes suivantes pour désactiver SMT :

  • Pour désactiver SMT lors de la création d'une VM HPC, suivez les étapes permettant de créer une VM HPC et ajoutez l'option --threads-per-core=1.

  • Pour désactiver SMT sur une VM HPC existante, connectez-vous à la VM et exécutez la commande suivante à partir de la VM :

    sudo google_mpi_tuning --nosmt
    

Pour en savoir plus, consultez la section Définir le nombre de threads par cœur.

Configurer gVNIC comme type d'interface réseau pour les instances C2 et C2D

L'image de VM HPC est compatible avec Virtio-net et la carte d'interface réseau virtuelle Google (gVNIC) en tant qu'interfaces réseau virtuel. L'utilisation de gVNIC au lieu de Virtio-net peut améliorer l'évolutivité des applications MPI en offrant de meilleures performances de communication et un débit plus élevé. De plus, gVNIC est une condition préalable aux performances réseau Tier_1 par VM, qui offrent une bande passante plus élevée et permettent un débit plus élevé.

Si vous créez une instance C2 ou C2D, Virtio-net est utilisé par défaut pour l'interface de réseau virtuel. Pour utiliser gVNIC, suivez les étapes permettant de créer une VM HPC et effectuez l'une des opérations suivantes :

Console

Pour définir gVNIC comme interface réseau lors de la création de l'instance, cliquez sur Mise en réseau dans le menu de navigation. Dans le volet "Mise en réseau" qui s'affiche, procédez comme suit :

  1. Accédez à la section Interfaces réseau.
  2. Pour Carte d'interface réseau, sélectionnez gVNIC.

gcloud

Incluez l'option --network-interface=nic-type=GVNIC dans la commande gcloud compute instances create.

L'image de VM HPC inclut le pilote gVNIC en tant que DKMS (Dynamic Kernel Module Support). Pour en savoir plus, consultez Utiliser la carte d'interface réseau virtuelle Google.

Désactiver les mesures d'atténuation pour Meltdown et de Spectre

Par défaut, l'image de VM HPC active les mesures d'atténuation des risques liés à Spectre et Meltdown. Dans certains cas, ces mesures d'atténuation peuvent entraîner une dégradation des performances spécifiques à la charge de travail. Pour désactiver ces mesures d'atténuation et limiter les risques de sécurité associés, procédez comme suit :

  1. Exécutez la commande suivante sur votre instance HPC :

    sudo google_mpi_tuning --nomitigation
    
  2. Redémarrez l'instance.

Améliorer les performances réseau

Pour améliorer les performances réseau de votre instance, définissez une ou plusieurs des configurations suivantes :

  • Configurez une bande passante plus élevée. Pour configurer la mise en réseau Tier_1 pour les VM C2 ou C2D, exécutez la commande gcloud compute instances create pour créer la VM et spécifiez l'option --network-performance-configs. Pour en savoir plus, consultez la section Créer une VM avec une configuration de bande passante élevée.

  • Utiliser des trames géantes Pour réduire au minimum les frais de traitement des paquets réseau, nous vous recommandons d'utiliser une taille de paquet plus importante. Vous devez valider les tailles de paquets plus importantes selon les spécificités de votre application. Pour en savoir plus sur l'utilisation des trames géantes et des tailles de paquets, consultez le guide sur les unités de transmission maximales.

  • Augmentez les limites de mémoire TCP. Une bande passante plus élevée nécessite une mémoire TCP plus importante. Suivez la procédure permettant d'augmenter les paramètres tcp_*mem.

  • Utilisez le profil de latence du réseau. Évaluez la latence de votre application et activez l'interrogation intensive afin de réduire la latence dans le chemin de réception du réseau. Ajustez les paramètres net.core.busy_poll et net.core.busy_read dans /etc/sysctl.conf, ou utilisez tuned-adm.

Utiliser Intel MPI 2021

Google recommande d'utiliser la bibliothèque Intel MPI 2021 pour exécuter des jobs MPI surGoogle Cloud.

Les implémentations MPI comportent de nombreux paramètres de configuration internes qui peuvent affecter les performances de communication. Ces paramètres sont particulièrement pertinents pour la communication MPI collective qui vous permet de spécifier des algorithmes et des paramètres de configuration pouvant varier considérablement dans l'environnement Google Cloud .

L'image de VM HPC inclut un utilitaire, google-hpc-compute, qui installe les bibliothèques MPI recommandées et utilise des fournisseurs libfabric adaptés à Google Cloud via le transport TCP.

Limites

Les avantages du réglage varient d'une application à l'autre. Dans certains cas, un réglage particulier peut avoir un impact négatif sur les performances. Pensez à analyser vos applications pour trouver la configuration la plus efficace ou la plus rentable.

Utiliser l'utilitaire google-hpc-compute pour la compatibilité avec Intel MPI 2021

Le script google_install_intelmpi est l'outil associé MPI de l'utilitaire Google-hpc-compute. Il permet d'installer et de configurer IntelMPI.

L'utilitaire google-hpc-compute est inclus dans l'image de VM HPC.

Installer Intel MPI 2021

Pour installer la bibliothèque Intel MPI lors de la création d'une VM HPC, suivez les étapes permettant de créer une VM HPC et incluez les éléments suivants lors de la création de l'instance de VM :

--metadata=google_install_intelmpi="--impi_2021"

Pour installer la bibliothèque sur une VM HPC existante, exécutez la commande suivante sur cette VM:

sudo google_install_intelmpi --impi_2021 --install_dir=PATH_INSTALL_MPI

L'emplacement par défaut de install_dir est défini sur /opt/intel.

Bibliothèque Intel MPI 2018 et réglages collectifs MPI

L'image de VM HPC inclut les réglages collectifs Intel MPI effectués sur les instances c2-standard-60 et c2d-standard-112 à l'aide de stratégies de concentration. Ces réglages sont disponibles dans le répertoire /usr/share/google-hpc-compute/mpitune-configs/intelmpi-2018.

Pour appliquer ces configurations d'optimisation à une bibliothèque MPI installée, exécutez le script shell mpivars afin de configurer l'environnement approprié. Vous pouvez ensuite installer les réglages directement avec la commande suivante (utilisez l'option --sudo si vous avez besoin d'un accès root au répertoire) : google_install_mpitune

Vous pouvez utiliser mpitune pour spécifier manuellement les algorithmes et les paramètres de configuration pour la communication MPI collective, et générer des fichiers de configuration.

Par exemple, pour ajuster 22 instances de VM et 30 processeurs virtuels par instance, générez le script shell mpivars pour configurer l'environnement approprié, puis exécutez la commande suivante. Vous devez disposer d'un accès write au répertoire ou exécuter la commande en tant qu'utilisateur racine.

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

Cette commande génère un fichier de configuration dans le répertoire Intel MPI, qui peut être utilisé ultérieurement pour exécuter des applications. Pour utiliser la configuration des réglages pour une application, ajoutez l'option -tune à la ligne de commande mpirun. Exemple :

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

Remplacez les éléments suivants :

  • HOSTFILE : nom d'un fichier du système d'exploitation invité qui liste les noms de réseau des instances de VM
  • APPLICATION_NAME : nom du fichier d'application à exécuter

Créer une image personnalisée à l'aide de l'image de VM HPC

Pour appliquer les bonnes pratiques à grande échelle, créez une image d'OS personnalisée à utiliser avec vos instances de VM HPC. Pour créer une image personnalisée à utiliser lors de la création d'instances de VM HPC, effectuez les tâches suivantes :

  1. Créez une VM qui utilise l'image de VM HPC.

  2. Personnaliser la VM avec les réglages de MPI.

  3. Créez une image personnalisée en utilisant le disque de démarrage de votre image de VM HPC comme disque source. Pour ce faire, utilisez la consoleGoogle Cloud ou Google Cloud CLI.

Console

  1. Dans la console Google Cloud , accédez à la page Images.

    Accéder à la page "Images"

  2. Cliquez sur Create image (Créer une image).

  3. Indiquez un Nom pour votre image.

  4. Sous Disque source, sélectionnez le nom du disque de démarrage sur votre VM HPC.

  5. Sélectionnez les autres propriétés restantes pour votre image.

  6. Cliquez sur Créer.

gcloud

Créez l'image personnalisée à l'aide de la commande images create.

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

Remplacez l'élément suivant :

  • IMAGE_NAME: nom de l'image personnalisée.
  • INSTANCE_NAME: nom de votre VM HPC.
  • INSTANCE_ZONE: zone où se trouve votre VM HPC.
  • IMAGE_FAMILY : Facultatif. famille d'images à laquelle cette nouvelle image appartient.
  • LOCATION : Facultatif. Région dans laquelle l'image personnalisée est stockée. L'emplacement par défaut est l'emplacement multirégional le plus proche de l'emplacement du disque source.

Tarifs

L'image de VM HPC est disponible sans frais supplémentaires. Étant donné que l'image de VM HPC s'exécute sur Compute Engine, des frais peuvent vous être facturés pour les ressources Compute Engine, telles que les processeurs virtuels, les disques et la mémoire. Pour en savoir plus, consultez la page Tarifs de Compute Engine.

Étapes suivantes