Esercizio - Trovare il mapping NUMA corretto per uno SKU HPC

Completato

Una delle applicazioni HPC tightly coupled del team di ricerca e sviluppo usa la parallelizzazione ibrida (MPI + thread) per ottimizzare le prestazioni. Il team ha determinato che HB120_v2 è lo SKU migliore per questa applicazione e il team deve determinare la posizione ottimale per aggiungere il processo e i thread.

Nell'esercizio seguente si seguirà la procedura usata dal team di ricerca e sviluppo per determinare la topologia NUMA di HB120_v2 e individuare gli ID CPU corrispondenti ai domini NUMA.

Nota

Questo esercizio è facoltativo. Per completare questo esercizio, sarà necessario creare una sottoscrizione di Azure prima di iniziare. Se non si dispone di un account Azure o non si vuole crearne uno in questo momento, è possibile leggere le istruzioni per avere un'idea delle informazioni contenute.

  1. Aprire un prompt dei comandi in cui è installata l'interfaccia della riga di comando di Azure.

  2. Accedere all'account di Azure. Questo passaggio consente di assicurarsi che sia disponibile l'autorizzazione necessaria per la distribuzione delle risorse.

    az login
    
  3. Crea un gruppo di risorse. La macchina virtuale HB120_v2 viene distribuita in questo gruppo di risorse. Sostituire RESOURCE-GROUP_NAME con un nome univoco a scelta e sostituire LOCATION con una posizione vicina, ad esempio east-us.

    az group create \
       --name <RESOURCE-GROUP_NAME> \
       --location <LOCATION>
    
  4. Creare una macchina virtuale HB120_v2 che usa l'immagine CentOS-HPC 7.8 di Azure Marketplace. Sostituire RESOURCE-GROUP_NAME con il gruppo di risorse creato nell'ultimo passaggio e sostituire VM-NAME con un nome univoco a scelta.

    az vm create \
       --resource-group <RESOURCE-GROUP-NAME> \
       --name <VM-NAME> \
       --admin-username azureuser \
       --generate-ssh-keys \
       --image OpenLogic:CentOS-HPC:7_8:latest \
       --size Standard_HB120rs_v2
    

    Il completamento del comando potrebbe richiedere qualche minuto. Dopo la creazione della macchina virtuale, prendere nota del valore di publicIpAddress della macchina virtuale, che farà parte dell'output JSON. Questo indirizzo IP verrà usato nel passaggio successivo.

  5. Accedere alla macchina virtuale HB120_v2 usando le chiavi SSH generate automaticamente.

    ssh azureuser@<VM-PUBLIC-IP-ADDRESS>
    
  6. Installare lstopo-no-graphics (di hwloc rpm).

    sudo yum install -y hwloc
    
  7. Eseguire lstopo-no-graphics per determinare la topologia NUMA.

    lstopo-no-graphics 2>&1 | tee lstopo-no-graphics.out
    
  8. Prendere nota degli ID core e dei nodi di dominio NUMA di cui fanno parte.

I mapping degli ID core di HB120v2 a 30 domini NUMA sono i seguenti: 0-3, 4-7, 8-11, 12-15, 16-19, 20-23, 24-27, 28-31, 32-35, 36-39, 40-43, 44-47, 48-51, 52-55, 56-59, 60-63, 64-67, 68-71, 72-75, 76-79, 80-83, 84-87, 88-91, 92-95, 96-99, 100-103, 104-107, 108-111, 112-115 e 116-119.

Con queste informazioni sul mapping NUMA, è ora possibile stabilire dove aggiungere processi e thread. Ogni processo deve essere associato al proprio dominio NUMA. Solo per i processi MPI, provare a eseguire uno, due, tre o quattro processi per ogni dominio NUMA. Vedere quale mapping offre le prestazioni migliori, ad esempio un tempo di clock totale di esecuzione inferiore. Per le applicazioni ibride in parallelo, raggruppare il processo e i relativi thread nello stesso dominio NUMA. L'unità MPI successiva mostra gli argomenti della riga di comando MPI da usare per aggiungere processi ai domini NUMA.