Exercice : déterminer le mappage NUMA correct pour une référence SKU HPC

Effectué

L’une des applications HPC étroitement couplées de l’équipe R&D utilise la parallélisation hybride (MPI + threads) pour améliorer les performances. L’équipe a déterminé que HB120_v2 est la meilleure référence SKU pour cette application et elle doit déterminer l’emplacement optimal pour épingler le processus et les threads.

Dans l’exercice suivant, vous suivez la procédure utilisée par votre équipe R&D pour déterminer la topologie NUMA HB120_v2 et découvrir quels ID de processeur correspondent à quels domaines NUMA.

Remarque

Cet exercice est facultatif. Si vous souhaitez effectuer cet exercice, vous devrez créer un abonnement Azure avant de commencer. Si vous n’avez pas de compte Azure ou si vous ne souhaitez pas en créer un pour l’instant, vous pouvez lire les instructions pour comprendre les informations qui sont présentées.

  1. Ouvrez une invite de commandes avec Azure CLI installé.

  2. Connectez-vous à votre compte Azure. Cette étape vous assure de disposer de l’autorisation de déployer des ressources.

    az login
    
  3. Créez un groupe de ressources. Vous déployez la machine virtuelle HB120_v2 dans ce groupe de ressources. Remplacez RESOURCE-GROUP_NAME par un nom unique de votre choix et remplacez LOCATION par un emplacement à proximité (par exemple eastus).

    az group create \
       --name <RESOURCE-GROUP_NAME> \
       --location <LOCATION>
    
  4. Créez une machine virtuelle HB120_v2 qui utilise l’image CentOS-HPC 7.8 disponible à partir de la Place de marché Azure. Remplacez RESOURCE-GROUP_NAME par le groupe de ressources que vous avez créé à la dernière étape et remplacez VM-NAME par un nom unique de votre choix.

    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
    

    L’exécution de cette commande peut prendre un certain temps. Une fois votre machine virtuelle créée, notez l’adresse publicIpAddress de la machine virtuelle qui fait partie de la sortie JSON. Vous utiliserez cette adresse IP à l’étape suivante.

  5. Connectez-vous à votre machine virtuelle HB120_v2 en utilisant les clés SSH qui ont été générées automatiquement.

    ssh azureuser@<VM-PUBLIC-IP-ADDRESS>
    
  6. Installez lstopo-no-graphics (à partir de hwloc RPM).

    sudo yum install -y hwloc
    
  7. Exécutez lstopo-no-graphics pour déterminer la topologie NUMA.

    lstopo-no-graphics 2>&1 | tee lstopo-no-graphics.out
    
  8. Notez les ID des cœurs et les nœuds de domaine NUMA dont ils font partie.

Les mappages des ID des cœurs HB120v2 aux 30 domaines NUMA sont les suivants : 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 et 116-119.

Avec ces informations de mappage NUMA, vous savez désormais où épingler les processus et les threads. Chaque processus doit être mappé à son propre domaine NUMA. Pour les processus MPI uniquement, essayez d’exécuter un, deux, trois ou quatre processus par domaine NUMA. Constatez le mappage qui offre les meilleures performances (par exemple, une durée totale d’exécution inférieure). Pour les applications parallèles hybrides, regroupez le processus et ses threads dans le même domaine NUMA. L’unité MPI suivante montre les arguments de ligne de commande MPI à utiliser pour épingler les processus aux domaines NUMA.