Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Die Optimierung der Leistung virtueller Maschinen (VMs) ist im Bereich hochleistungsgestützter Computing (HPC) und künstlicher Intelligenz (AI) von entscheidender Bedeutung. Azure bietet eine Reihe von Tools und Techniken, um sicherzustellen, dass HPC- und KI-Workloads effizient auf ihrer Plattform ausgeführt werden. Zwei wichtige Aspekte dieser Optimierung sind das Anheften von Prozessen und Threads sowie die optimale Platzierung von MPI-Prozessen.
Dieser Artikel enthält eine ausführliche Anleitung zur Verbesserung der Leistung von HPC- und AI-Workloads auf Azure-VMs. Sie zielt auf die Bedeutung von Prozess- und Thread-Pinning, die optimale Platzierung von MPI-Prozessen und die Verwendung der Azure-Tools wie checkapppinning.py zur Erreichung dieser Optimierungen ab. Darüber hinaus werden Strategien für die Platzierung von MPI-Prozessen, die Sammlung von Leistungsmetriken und Empfehlungen für verschiedene MPI-Implementierungen behandelt, um eine effiziente und effektive Ausführung von HPC- und KI-Anwendungen auf Azures HPC-Spezial-VMs sicherzustellen.
Tool zum optimalen Anheften von Prozessen/Threads für Azure HPC-/KI-VMs
Um die Leistung von HPC-Anwendungen zu maximieren, ist es wichtig, Prozesse und Threads gleichmäßig über den virtuellen Computer zu verteilen, wobei alle Sockets, NUMA-Domänen und L3-Caches verwendet werden. Diese Verteilung stellt sicher, dass die Speicherbandbreite und die Gleitkommaleistung optimiert sind. In hybriden parallelen Anwendungen verfügt jeder Prozess über mehrere Threads. Um die Datenfreigabe zu maximieren und wiederzuverwenden, ist es am besten, einen Prozess und seine Threads im gleichen L3-Cache beizubehalten.
Azure bietet ein Tool namens "App-Pinning überprüfen ", um diesen Prozess zu unterstützen. Sie hilft dabei, die CPU-Topologie des virtuellen Computers anzuzeigen, zu überprüfen, wo parallele Anwendungsprozesse und Threads ausgeführt werden, und optimale MPI- und Slurm-Prozessaffinitätsargumente zu generieren. Stellen Sie mithilfe dieses Tools sicher, dass ihre HPC/AI-Anwendungen auf azure HPC-Spezial-VMs optimal ausgeführt werden.
Beispiel: Verwenden des Tools
- ANZEIGEN der VM-CPU-Topologie
# python check_app_pinning.py --view-topology
- Überprüfen der Prozess- und Threadplatzierung
# python check_app_pinning.py --check-placement
- Generieren von Affinitätsargumenten
# python check_app_pinning.py --generate-affinity
Durch die Nutzung dieses Tools können Sie eine bessere Leistung für die HPC- und KI-Workloads in Azure erzielen und sicherstellen, dass die Anwendungen effizient und effektiv ausgeführt werden.
Optimale MPI-Prozessplatzierung für VMs der Azure HB-Serie
Für MPI-Anwendungen kann eine optimale Prozessbindung zu erheblichen Leistungsverbesserungen führen, insbesondere für unterausgelastete Systeme. Die Einführung des AMDs Chiplet-Designs fügt diesem Prozess Komplexität hinzu. Im Chiplet-Design integriert AMD kleinere CPUs zusammen, um einen Socket mit 64 Kernen bereitzustellen. Um die Leistung zu maximieren, ist es wichtig, die Menge an L3-Cache und Speicherbandbreite pro Kern auszugleichen.
VMs der Azure HB-Serie, z. B. hb60rs und HBv2, enthalten mehrere NUMA-Domänen und -Kerne. Beispielsweise verfügt die VM HB60rs über 60 AMD Neapelkerne, wobei jeder Socket 8 NUMA-Domänen enthält. Wenn der virtuelle Computer nicht ausgelastet ist, müssen Sie den L3-Cache und die Speicherbandbreite zwischen Kernen ausgleichen. Sie kann erreicht werden, indem sie die entsprechende Anzahl von Kernen pro Knoten auswählen und spezifische MPI-Prozessplatzierungsstrategien verwenden.
Beispiel: MPI-Prozessplatzierung
- Auswählen der Anzahl der Kerne pro Knoten
# mpirun -np 60 --map-by ppr:8:node --bind-to core my_mpi_application
- Verteilen von MPI-Prozessen gleichmäßig über NUMA-Domänen hinweg
# mpirun -np 60 --map-by ppr:8:node:pe=8 --bind-to numa my_mpi_application
Sammlung von Leistungsmetriken
Das Sammeln von Leistungsmetriken ist für das Verständnis und die Optimierung der Leistung von HPC- und KI-Workloads unerlässlich. Azure bietet mehrere Tools und Methoden zum Sammeln dieser Metriken.
Beispiel: Sammeln von Leistungsmetriken
Verwenden von Azure Monitor:
- Richten Sie Azure Monitor ein, um Metriken wie CPU-Auslastung, Arbeitsspeicherauslastung und Netzwerkbandbreite zu sammeln.
- Erstellen Sie einen Log Analytics-Arbeitsbereich, und konfigurieren Sie Diagnoseeinstellungen, um Metriken an den Arbeitsbereich zu senden.
Verwenden von PerfCollect:
- Installieren von PerfCollect auf Ihrem virtuellen Computer
# wget https://aka.ms/perfcollect -O perfcollect # chmod +x perfcollect # sudo ./perfcollect install
- Beginne mit dem Sammeln von Metriken.
# sudo ./perfcollect start mysession
- Beenden der Erfassung von Metriken und Generieren eines Berichts
# sudo ./perfcollect stop mysession
MPI-Implementierungen
Verschiedene MPI-Implementierungen können unterschiedliche Leistungsmerkmale auf Azure HPC/AI-VMs aufweisen. Zu den gängigen MPI-Implementierungen gehören OpenMPI, MPICH und Intel MPI. Jede Implementierung hat ihre Stärken und kann je nach spezifischer Workload- und VM-Konfiguration unterschiedlich ausgeführt werden.
Empfehlungen für MPI-Einrichtung und Prozessanheftung
- OpenMPI
- Verwenden Sie die Optionen "--bind-to" und "-map-by", um die Prozessplatzierung zu steuern. Beispiel:
# mpirun -np 60 --bind-to core --map-by ppr:8:node my_mpi_application
- MPICH
- Verwenden Sie die HYDRA_BIND- und HYDRA_RANK Umgebungsvariablen, um die Prozessplatzierung zu steuern:
# export HYDRA_BIND=core # export HYDRA_RANK=8 # mpiexec -np 60 my_mpi_application
- Intel MPI
- Verwenden Sie die I_MPI_PIN- und I_MPI_PIN_DOMAIN Umgebungsvariablen, um die Prozessplatzierung zu steuern. Beispiel:
# export I_MPI_PIN=1 # export I_MPI_PIN_DOMAIN=socket # mpirun -np 60 my_mpi_application
Indem Sie diese Empfehlungen befolgen und die von Azure bereitgestellten Tools und Techniken verwenden, können Sie die Leistung ihrer HPC- und KI-Workloads optimieren, um eine effiziente und effektive Ausführung auf Azures HPC-Spezial-VMs sicherzustellen.