Übung: Ermitteln der richtigen NUMA-Zuordnung für eine HPC-SKU

Abgeschlossen

Eine der eng gekoppelten HPC-Anwendungen Ihres Forschungs- und Entwicklungsteams verwendet hybride Parallelisierung (MPI und Threads) für eine bessere Leistung. Das Team hat festgestellt, dass HB120_v2 die beste SKU für diese Anwendung ist. Nun muss das Team die optimale Stelle zum Anheften des Prozesses und der Threads herausfinden.

In der folgenden Übung führen Sie die Schritte aus, mit denen Ihr Forschungs- und Entwicklungsteam die HB120_v2-NUMA-Topologie ermittelt hat, und finden heraus, welche CPU-IDs zu welchen NUMA-Domänen gehören.

Hinweis

Diese Übung ist optional. Wenn Sie die Schritte in dieser Übung ausführen möchten, müssen Sie zuvor ein Azure-Abonnement erstellen. Wenn Sie kein Azure-Konto besitzen oder gerade kein Konto erstellen möchten, können Sie die Anweisungen durchlesen und die dargelegten Informationen nachvollziehen.

  1. Öffnen Sie eine Eingabeaufforderung mit installierter Azure CLI.

  2. Melden Sie sich bei Ihrem Azure-Konto an. Durch diesen Schritt wird sichergestellt, dass Sie über die Berechtigung zum Bereitstellen von Ressourcen verfügen.

    az login
    
  3. Erstellen Sie eine Ressourcengruppe. Sie stellen die HB120_v2-VM in dieser Ressourcengruppe bereit. Ersetzen Sie RESOURCE-GROUP_NAME durch einen eindeutigen Namen Ihrer Wahl und LOCATION durch einen Standort in Ihrer Nähe (z. B. eastus).

    az group create \
       --name <RESOURCE-GROUP_NAME> \
       --location <LOCATION>
    
  4. Erstellen Sie eine HB120_v2-VM, die das CentOS-HPC 7.8-Image aus dem Azure Marketplace verwendet. Ersetzen Sie RESOURCE-GROUP_NAME durch die Ressourcengruppe, die Sie im letzten Schritt erstellt haben, und VM-NAME durch einen eindeutigen Namen Ihrer Wahl.

    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
    

    Das Ausführen dieses Befehls dauert möglicherweise einige Zeit. Wenn Ihre VM erstellt wurde, notieren Sie sich deren öffentliche IP-Adresse (publicIpAddress) aus der JSON-Ausgabe. Diese IP-Adresse wird im nächsten Schritt verwendet.

  5. Melden Sie sich mit den automatisch generierten SSH-Schlüsseln bei Ihrer HB120_v2-VM an.

    ssh azureuser@<VM-PUBLIC-IP-ADDRESS>
    
  6. Installieren Sie lstopo-no-graphics (aus hwloc rpm).

    sudo yum install -y hwloc
    
  7. Führen Sie lstopo-no-graphics aus, um die NUMA-Topologie zu ermitteln.

    lstopo-no-graphics 2>&1 | tee lstopo-no-graphics.out
    
  8. Notieren Sie sich die IDs der Kerne und zu welchen NUMA-Domänenknoten sie gehören.

Die Zuordnungen der HB120_v2-Kern-IDs zu den 30 NUMA-Domänen lauten wie folgt: 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 und 116–119.

Mit diesen NUMA-Zuordnungsinformationen wissen Sie, wo Sie Prozesse und Threads anheften können. Jeder Prozess sollte einer eigenen NUMA-Domäne zugeordnet werden. Führen Sie nur für MPI-Prozesse einen, zwei, drei oder vier Prozesse pro NUMA-Domäne aus. Sehen Sie sich an, welche Zuordnung die beste Leistung bietet (z. B. eine kürzere tatsächliche Zeit). Gruppieren Sie bei hybriden parallelen Anwendungen den Prozess und die zugehörigen Threads in derselben NUMA-Domäne. Die nächste MPI-Einheit zeigt, mit welchen MPI-Befehlszeilenargumenten Sie Prozesse an NUMA-Domänen anheften.