Crea un'istanza VM pronta per l'HPC

I workload di computing ad alte prestazioni (HPC) e ad alto accoppiamento utilizzano spesso la Message Passing Interface (MPI) per comunicare tra i processi e le istanze di macchine virtuali (VM). Tuttavia, la creazione di un'immagine VM ottimizzata per le prestazioni ottimali di MPI richiede competenze di sistema, conoscenza di Google Cloud e tempo extra per la manutenzione. Per configurare rapidamente un ambiente ottimizzato per i tuoi carichi di lavoro HPC, utilizza l'immagine VM HPC.

L'immagine VM HPC è un'immagine VM basata su Rocky Linux 8 ottimizzata per i workload HPC ad alto accoppiamento. Include i parametri di ottimizzazione del kernel e della rete preconfigurati necessari per creare istanze VM che raggiungono prestazioni MPI ottimali su Google Cloud.

Per risultati ottimali, esegui il deployment dell'immagine VM HPC su un tipo di macchina di una serie di macchine ottimizzate per l'HPC, come la serie H4D o H3, oppure su una serie di macchine ottimizzate per il calcolo, come C2 o C2D. Questi tipi di macchine sono progettati per applicazioni HPC strettamente accoppiate. Per utilizzare RDMA con H4D, devi utilizzare la versione 20241125 o successive dell'immagine VM HPC.

Puoi creare un'istanza VM pronta per l'HPC utilizzando le seguenti opzioni:

Vantaggi

L'immagine VM HPC offre i seguenti vantaggi:

  1. Istanze VM pronte all'uso per i carichi di lavoro HPC. Non è necessario ottimizzare manualmente le prestazioni, gestire i riavvii delle istanze VM o rimanere al passo con gli ultimi aggiornamenti di Google Cloud per i workload HPC ad alto accoppiamento.
  2. Ottimizzazioni di rete per workload ad alto accoppiamento. Sono incluse ottimizzazioni che riducono la latenza per i messaggi di piccole dimensioni, a vantaggio delle applicazioni che dipendono fortemente dalle comunicazioni collettive e point-to-point. Se utilizzi la serie di macchine H4D, l'immagine VM HPC contiene i driver Cloud RDMA necessari.
  3. Ottimizzazioni per il calcolo per workload HPC. Sono incluse ottimizzazioni che riducono il tremolio del sistema, il che rende più prevedibili le prestazioni elevate del singolo nodo.
  4. Prestazioni coerenti e riproducibili. La standardizzazione delle immagini VM ti offre prestazioni a livello di applicazione coerenti e riproducibili.
  5. Maggiore compatibilità delle applicazioni. L'allineamento ai requisiti a livello di nodo della specifica della piattaforma HPC di Intel consente un elevato grado di interoperabilità tra i sistemi.

Funzionalità dell'immagine VM HPC

L'immagine VM HPC offre diverse funzionalità progettate per ottimizzare le prestazioni per i carichi di lavoro HPC (computing ad alte prestazioni):

  • Aggiornamenti automatici disattivati
  • Ottimizzazioni collettive di Intel MPI
  • RPM preinstallati

Aggiornamenti automatici disattivati

Gli aggiornamenti automatici possono avere un impatto negativo sulle prestazioni dei carichi di lavoro HPC. Durante la creazione di un'istanza VM, gli aggiornamenti automatici possono essere disattivati quando si utilizzano le immagini VM HPC impostando la voce dei metadati google_disable_automatic_updates su TRUE. La modalità di impostazione di questa voce di metadati durante la creazione dell'istanza dipende dallo strumento utilizzato per creare l'istanza.

Ad esempio, quando utilizzi il comando gcloud compute instances create per creare un'istanza VM, fornisci l'argomento --metadata. Per ulteriori informazioni, vedi le informazioni sui metadati delle VM.

Libreria Intel MPI

Google consiglia di utilizzare la libreria Intel MPI 2021 per l'esecuzione di job MPI su Google Cloud. Per maggiori informazioni, consulta le sezioni seguenti:

RPM preinstallati

L'immagine VM HPC è dotata dei seguenti pacchetti RPM preinstallati:

  • 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
  • Gruppo di pacchetti "Strumenti di sviluppo"

Guide rapide

Questi tutorial descrivono i passaggi per configurare un'istanza VM ottimizzata per l'HPC. Le procedure descrivono come:

  • Crea un'istanza VM HPC (senza configurare Cloud RDMA)
  • Specifica una policy di posizionamento compatto durante la creazione di istanze VM HPC
  • Crea un'istanza VM HPC che utilizza Cloud RDMA (anteprima)

Non puoi aggiungere Cloud RDMA a un'istanza VM HPC esistente, quindi segui i passaggi appropriati durante la creazione dell'istanza.

Prima di iniziare

  1. Per utilizzare Google Cloud CLI per questa guida rapida, devi prima installare e inizializzare questo strumento di interfaccia:
  2. Nella console Google Cloud , nella pagina di selezione del progetto, seleziona o crea un progettoGoogle Cloud .

Crea un'istanza VM HPC

Ti consigliamo vivamente di scegliere un tipo di macchina tra le seguenti serie:

Queste VM hanno una mappatura dei core da virtuali a fisici fissa ed espongono l'architettura delle celle NUMA al sistema operativo guest, entrambi elementi fondamentali per le prestazioni delle applicazioni HPC ad alto accoppiamento.

Console

  1. Nella console Google Cloud , vai alla pagina Cloud Marketplace delle VM HCP. Vai alla pagina Cloud Marketplace delle VM HPC

  2. Fai clic su Inizia.

  3. Nella pagina di deployment della VM HPC, inserisci il nome del deployment. Questo nome diventerà la radice del nome della VM. Quando assegni il nome all'istanza, Compute Engine aggiunge -vm a questo nome.

  4. Seleziona una zona e un tipo di macchina. Per questa guida rapida, puoi lasciare tutte le impostazioni invariate o modificarle.

  5. Non modificare le impostazioni predefinite per il tipo di disco di avvio, la dimensione del disco di avvio e l'interfaccia di rete.

  6. Fai clic su Esegui il deployment.

Al termine della creazione dell'istanza VM, si apre Cloud Deployment Manager, dove puoi gestire la VM HPC e altri deployment.

gcloud

Crea una VM HPC utilizzando il comando instances create. Se crei più istanze VM HPC interconnesse, allora crea VM HPC con policy di posizionamento compatto per ottenere una bassa latenza di rete.

Per creare un'istanza VM HPC senza una policy di posizionamento, utilizza un comando simile al seguente:

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

Sostituisci quanto segue:

  • INSTANCE_NAME: un nome per l'istanza VM HPC.
  • ZONE: la zona in cui creare l'istanza.
  • IMAGE_FAMILY: la famiglia di immagini da utilizzare per la creazione delle istanze VM. Utilizza hpc-rocky-linux-8 per l'immagine più recente basata su Rocky Linux 8.
  • MACHINE_TYPE: il tipo di macchina da utilizzare per la creazione dell'istanza VM.

Dopo un po' di tempo, la creazione dell'istanza VM viene completata. Per verificare la configurazione dell'istanza e per visualizzarne lo stato, esegui il seguente comando:

gcloud compute instances describe INSTANCE_NAME

Crea istanze VM HPC con policy di posizionamento compatto

Puoi ridurre la latenza tra le istanze VM creando una policy di posizionamento compatto. Una policy di posizionamento compatto garantisce che le istanze nella stessa zona di disponibilità siano poste vicine tra loro.

Se hai bisogno di più istanze VM di quante possano essere inserite in una singola policy di posizionamento compatto, suddividile in più policy di posizionamento. Utilizza il numero minimo di policy di posizionamento che possono adattarsi a tutte le tue istanze.

Per creare istanze di VM HPC che specificano una policy di posizionamento compatto, segui questi passaggi:

  1. Crea una policy di posizionamento compatto.

  2. Esegui una di queste operazioni:

Crea un'istanza VM HPC che utilizza Cloud RDMA

Per creare un'istanza VM HPC che utilizza Cloud RDMA, devi prima creare almeno una rete VPC normale e una rete VPC Falcon. La rete VPC Falcon utilizza un profilo di rete RDMA che consente il traffico RDMA tra le istanze di computing. Questa rete è separata dalla rete VPC normale che trasporta il traffico non RDMA ad altri serviziGoogle Cloud o a internet.

Per creare un'istanza VM HPC che utilizza Cloud RDMA, le attività da completare sono le seguenti:

  1. Identifica o crea almeno due reti VPC:

    • Una rete VPC normale per il traffico che passa attraverso l'interfaccia di rete gVNIC
    • Una rete VPC Falcon per il traffico RDMA
  2. Crea un'istanza VM HPC.

    1. Per l'immagine di origine, utilizza l'immagine VM HPC. Questa immagine include i driver necessari per Cloud RDMA.
    2. Durante la creazione dell'istanza, configura almeno due interfacce di rete: una che utilizza il driver gVNIC e una che utilizza il driver IRDMA.

      Per una spiegazione più completa, consulta Crea un'istanza che utilizza Cloud RDMA.

  3. Se prevedi di eseguire applicazioni MPI sulle istanze VM HPC che utilizzano Cloud RDMA, segui i passaggi di configurazione MPI descritti in Configurare e scalare le applicazioni MPI sulle VM H4D con Cloud RDMA.

Accedi all'istanza VM HPC

Dopo aver creato l'istanza VM HPC, questa si avvia automaticamente. Per accedere all'istanza, procedi in uno dei seguenti modi:

Console

  1. Nella console Google Cloud , vai alla pagina Istanze VM.

    Vai a Istanze VM

  2. Fai clic sul nome dell'istanza.

  3. Nella sezione Accesso remoto, fai clic sul primo elenco a discesa e scegli come accedere all'istanza.

Compute Engine propaga le tue chiavi SSH e crea il tuo utente. Per saperne di più, vedi Connessione alle VM Linux.

gcloud

Per accedere all'istanza tramite SSH, utilizza il comando gcloud compute ssh:

gcloud compute ssh INSTANCE_NAME

Compute Engine propaga le tue chiavi SSH e crea il tuo utente. Per saperne di più, vedi Connessione alle istanze.

Esegui la pulizia

Per evitare che al tuo account Google Cloud vengano addebitati costi relativi alle risorse utilizzate in queste guide rapide, elimina le istanze VM HPC che hai creato.

Console

  1. Nella console Google Cloud vai alla pagina Deployment.

    Vai a Deployment

  2. Seleziona la casella di controllo accanto al deployment della VM HPC.

  3. Fai clic su Elimina.

gcloud

Utilizza il comando instances delete:

gcloud compute instances delete INSTANCE_NAME

Configura l'istanza VM HPC in base alle best practice

Per ottenere prestazioni migliori e più prevedibili per la tua istanza VM HPC, ti consigliamo di utilizzare le seguenti best practice.

Disabilita il multi-threading simultaneo

Per impostazione predefinita, l'immagine VM HPC abilita il multi-threading simultaneo (SMT), noto anche come Hyper-Threading sui processori Intel. La disattivazione dell'SMT può rendere le performance più prevedibili e ridurre i tempi di esecuzione dei job.

Per disattivare SMT, puoi utilizzare i seguenti metodi:

  • Per disattivare SMT durante la creazione di una nuova VM HPC, segui i passaggi per creare una VM HPC e includi il flag --threads-per-core=1.

  • Per disattivare SMT su una VM HPC esistente, connettiti alla VM ed esegui da lì questo comando:

    sudo google_mpi_tuning --nosmt
    

Per ulteriori informazioni, vedi Imposta il numero di thread per core.

Configurare gVNIC come tipo di interfaccia di rete per le istanze C2 e C2D

L'immagine VM HPC supporta sia Virtio-net sia Google Virtual NIC (gVNIC) come interfacce di rete virtuali. L'utilizzo di gVNIC anziché Virtio-net può migliorare la scalabilità delle applicazioni MPI offrendo prestazioni di comunicazione migliori e un throughput più elevato. Inoltre, gVNIC è un prerequisito per le prestazioni di rete Tier_1 per VM, che offrono una maggiore larghezza di banda e consentono un throughput più elevato.

Se crei una nuova istanza C2 o C2D, per impostazione predefinita viene utilizzato Virtio-net per l'interfaccia di rete virtuale. Per utilizzare gVNIC, segui i passaggi per creare una VM HPC ed esegui una delle seguenti operazioni:

Console

Per impostare gVNIC come interfaccia di rete, durante la creazione dell'istanza, fai clic su Networking nel menu di navigazione. Nel riquadro Networking visualizzato, segui questi passaggi:

  1. Vai alla sezione Interfacce di rete.
  2. In Scheda di interfaccia di rete, seleziona gVNIC.

gcloud

Includi il flag --network-interface=nic-type=GVNIC nel comando gcloud compute instances create.

L'immagine VM HPC include il driver gVNIC come Dynamic Kernel Module Support (DKMS). Per ulteriori informazioni, vedi Utilizzo di Google Virtual NIC.

Disattiva le mitigazioni di Meltdown e Spectre

L'immagine VM HPC attiva le mitigazioni di Meltdown e Spectre per impostazione predefinita. In alcuni casi, queste mitigazioni potrebbero comportare un peggioramento delle prestazioni specifiche per il workload. Per disattivare queste mitigazioni ed evitare di incorrere in rischi per la sicurezza a queste associati, segui questi passaggi:

  1. Esegui questo comando nell'istanza HPC:

    sudo google_mpi_tuning --nomitigation
    
  2. Riavvia l'istanza.

Migliora le prestazioni di rete

Per migliorare le prestazioni di rete dell'istanza, configura una o più delle seguenti configurazioni:

  • Configura una larghezza di banda più elevata. Per configurare il networking Tier_1 per le VM C2 o C2D, utilizza il comando gcloud compute instances create per creare la VM e specifica il flag --network-performance-configs. Per ulteriori informazioni, consulta Creazione di una VM con una configurazione a elevata larghezza di banda.

  • Utilizza i frame jumbo. Per ridurre al minimo l'overhead di elaborazione per i pacchetti di rete, consigliamo di utilizzare una dimensione del pacchetto più grande. Per le specifiche della tua applicazione, devi configurare dimensioni di pacchetti più grandi. Per informazioni sull' utilizzo dei frame jumbo e delle dimensioni dei pacchetti, consulta la guida all'unità massima di trasmissione.

  • Aumenta i limiti di memoria TCP. Una larghezza di banda più elevata richiede una memoria TCP più grande. Segui i passaggi per aumentare le impostazioni di tcp_*mem.

  • Utilizza il profilo di latenza di rete. Valuta la latenza della tua applicazione e attiva il polling occupato che riduce la latenza nel percorso di ricezione della rete. Modifica le impostazioni net.core.busy_poll e net.core.busy_read in /etc/sysctl.conf oppure utilizza tuned-adm.

Utilizza Intel MPI 2021

Google consiglia di utilizzare la libreria Intel MPI 2021 per l'esecuzione di job MPI su Google Cloud.

Le implementazioni MPI hanno molti parametri di configurazione interni che possono influire sulle prestazioni di comunicazione. Questi parametri sono particolarmente importanti per la comunicazione collettiva MPI, che consente di specificare algoritmi e parametri di configurazione in grado di avere prestazioni molto diverse nell'ambiente Google Cloud .

L'immagine VM HPC include un'utilità, google-hpc-compute, che installa le librerie MPI consigliate e utilizza fornitori libfabric Google Cloud personalizzati tramite il trasporto TCP.

Limitazioni

I vantaggi dell'ottimizzazione variano da un'applicazione all'altra. In alcuni casi, una determinata ottimizzazione potrebbe avere un effetto negativo sulle prestazioni. Valuta la possibilità di eseguire il benchmarking delle tue applicazioni per trovare la configurazione più efficiente o conveniente.

Utilizza l'utilità google-hpc-compute per il supporto di Intel MPI 2021

Lo script google_install_intelmpi è lo strumento correlato a MPI nell'utilità Google-hpc-compute. Semplifica l'installazione e la configurazione di Intel MPI.

L'utilità google-hpc-compute è inclusa nell'immagine VM HPC.

Installa Intel MPI 2021

Per installare la libreria Intel MPI durante la creazione di una nuova VM HPC, segui i passaggi per creare una VM HPC e, durante la creazione dell'istanza VM includi quanto segue:

--metadata=google_install_intelmpi="--impi_2021"

Per installare la libreria su una VM HPC esistente, esegui questo comando sulla VM:

sudo google_install_intelmpi --impi_2021 --install_dir=PATH_INSTALL_MPI

La posizione predefinita per install_dir è impostata su /opt/intel.

Libreria Intel MPI 2018 e ottimizzazioni collettive MPI

L'immagine VM HPC include le ottimizzazioni collettive di Intel MPI eseguite su istanze c2-standard-60 e c2d-standard-112 utilizzando policy di posizionamento compatto. Queste sintonizzazioni sono disponibili nella directory /usr/share/google-hpc-compute/mpitune-configs/intelmpi-2018.

Per applicare queste configurazioni di ottimizzazione a una libreria MPI installata, esegui lo script shell mpivars per configurare l'ambiente corretto. Puoi quindi installare le ottimizzazioni direttamente con il seguente comando (utilizza l'opzione --sudo se hai bisogno dell'accesso root alla directory): google_install_mpitune

Puoi utilizzare mpitune per specificare manualmente gli algoritmi e i parametri di configurazione per la comunicazione collettiva MPI e generare file di configurazione.

Ad esempio, per eseguire l'ottimizzazione per 22 istanze VM e 30 vCPU per istanza, esegui l'origine dello script shell mpivars per configurare l'ambiente corretto, quindi esegui il seguente comando. Devi disporre dell'accesso write alla directory o eseguire il comando come utente root.

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

Questo comando genera un file di configurazione nella directory Intel MPI che può essere utilizzato in seguito per eseguire le applicazioni. Per utilizzare la configurazione di ottimizzazione per un'applicazione, aggiungi l'opzione -tune alla riga di comando mpirun, ad esempio:

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

Sostituisci quanto segue:

  • HOSTFILE: il nome di un file nel sistema operativo guest che elenca i nomi di rete delle istanze VM
  • APPLICATION_NAME: il nome del file dell'applicazione da eseguire

Crea un'immagine personalizzata utilizzando l'immagine VM HPC

Per implementare le best practice su larga scala, crea un'immagine sistema operativo personalizzata da utilizzare con le tue istanze VM HPC. Completa le seguenti attività per creare un'immagine personalizzata da utilizzare durante la creazione di istanze VM HPC:

  1. Crea una VM che utilizza l'immagine VM HPC.

  2. Personalizza la VM con le ottimizzazioni MPI.

  3. Crea un'immagine personalizzata utilizzando il disco di avvio dell'immagine VM HPC come disco di origine. Puoi farlo tramite la consoleGoogle Cloud o Google Cloud CLI.

Console

  1. Nella console Google Cloud , vai alla pagina Immagini.

    Vai a Immagini

  2. Fai clic su Crea immagine.

  3. Specifica un nome per l'immagine.

  4. In Disco di origine, seleziona il nome del disco di avvio sulla VM HPC.

  5. Seleziona le altre proprietà rimanenti per l'immagine.

  6. Fai clic su Crea.

gcloud

Crea l'immagine personalizzata utilizzando il comando images create.

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

Sostituisci quanto segue:

  • IMAGE_NAME: il nome dell'immagine personalizzata
  • INSTANCE_NAME: il nome della VM HPC
  • INSTANCE_ZONE: la zona in cui si trova la VM HPC
  • IMAGE_FAMILY: facoltativo. La famiglia di immagini a cui appartiene questa immagine.
  • LOCATION: facoltativo. La regione in cui archiviare l'immagine personalizzata. La località predefinita è la multi-regione più vicina alla località del disco di origine.

Prezzi

L'immagine VM HPC è disponibile senza costi aggiuntivi. Poiché l'immagine VM HPC viene eseguita su Compute Engine, potresti dover sostenere dei costi relativi alle risorse di Compute Engine, come vCPU, dischi e memoria. Per saperne di più, consulta la pagina relativa ai prezzi di Compute Engine.

Passaggi successivi