Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Konfiguration der Hardwaretopologie in AWS STCK
Slurm trifft bessere Platzierungsentscheidungen, wenn es das interne Hardware-Layout eines Rechenknotens kennt: wie sich Kerne in Sockets und Non-Uniform Memory Access (NUMA) -Domänen gruppieren, wie L3-Caches den Kernen zugeordnet werden und an welche Kerne jede GPU angeschlossen ist. Dieses Thema beschreibt, wie Slurm dieses Layout modelliert und wie AWS PCS es auf jeder unterstützten Slurm-Version konfiguriert.
CPU-Topologie
Die Kerne eines Rechenknotens sind nicht austauschbar. Sie sind in physische Pakete (Sockets) und NUMA-Domänen gruppiert, und jede Gruppe teilt sich Ressourcen wie Speichercontroller und L3-Cache. Zwei Aufgaben in derselben Gruppe kommunizieren schneller und teilen sich den Cache. Gruppenübergreifende Aufgaben konkurrieren weniger um die gemeinsam genutzten Ressourcen.
Slurm beschreibt diese Gruppierung pro Knoten mit den SocketsCoresPerSocket, und den ThreadsPerCore Einstellungen in. slurm.conf Was Slurm als Socket behandelt, ist mit der Einstellung pro Knoten konfigurierbar: Parameters
-
numa_node_as_socket— jede NUMA-Domain ist ein Socket. -
l3cache_as_socket— jede L3-Cache-Domain ist ein Socket. Dies kann auf bestimmten Prozessoren nützlich sein, bei denen die Socket-Ebene zu grob ist und der L3-Cache möglicherweise eine bessere Aufgabenverteilung bietet.
Wenn die CPU-Topologie konfiguriert ist, funktionieren die Socket-fähigen Planungsoptionen wie vorgesehen: Joboptionen wie --ntasks-per-socket und und --sockets-per-node Socket-basierte Zuweisung mit den OR-Werten der CR_Socket Einstellung auf Clusterebene. CR_Socket_Memory SelectTypeParameters Weitere Informationen darüber, wie Slurm Sockets, Kerne und Threads zuweist, finden Sie unter Unterstützung für Architekturen in der Slurm-Dokumentation. Multi-core/Multi-thread
AWS PCS konfiguriert die CPU-Topologie auf Slurm-Versionen vor 25.11 nicht, daher kündigen Knoten auf diesen Versionen einen Kern pro Socket an und diese Optionen haben keine Auswirkung.
GPU-Finität
Jede GPU in einem Knoten ist einer NUMA-Domäne am nächsten, sodass eine Teilmenge der Kerne des Knotens lokal zu ihr gehört. Eine Aufgabe, die auf Kernen ausgeführt wird, die sich in der Nähe ihrer GPU befinden, überträgt Daten über einen kürzeren Pfad als eine Aufgabe auf dem anderen Socket. Slurm zeichnet diese GPU-to-core Affinität pro Gerät (das Cores Attribut eines gres.conf Datensatzes) zusammen mit dem GPU-to-GPU Interconnect-Layout (Links) auf.
Auf AWS PCS-Rechenknoten können diese Informationen nicht im Voraus statisch konfiguriert werden, da die Geräteaufzählung von der einzelnen Instanz abhängt und die Geräte erst sichtbar werden, wenn der Knoten gestartet wird. Slurms AutoDetectslurmd fragt er die NVIDIA Management Library (NVML) ab und meldet die erkannte Affinität bei der Registrierung an den Controller.
Anmerkung
Während ein Knoten heruntergefahren ist, kennt Slurm seine Affinität nicht. GPU-to-CPU Die Affinität wird erst verfügbar, wenn der Knoten bootet und sich registriert. Planungsentscheidungen für ausgeschaltete Knoten werden also ohne die Affinität getroffen.
Die automatisch erkannte GPU-Affinität wird in Sockets ausgedrückt. Daher ist eine korrekte CPU-Topologie erforderlich. Wenn ein Knoten eine GPU-Affinität registriert, die nicht zu den konfigurierten Socket-Grenzen des Knotens passt, setzt Slurm den Knoten auf INVALID_REG und entleert ihn. Weitere Informationen finden Sie unter Beheben Sie Fehler bei ungültigen Knotenregistrierungen (INVALID_REG) in AWS STCK.
Wenn die GPU-Affinität verfügbar ist, kann Slurm Aufgaben auf Kernen platzieren, die sich lokal auf den ihnen zugewiesenen GPUs befinden. Die Generic Resource (GRES) -Affinität wird mit Socket-Granularität behandelt. Die Platzierung hängt von den Joboptionen ab. Zu den Kombinationen, die die erkannte Affinität verwenden--gpus-per-task, gehören --ntasks-per-socket mit und mit. --gpus --ntasks-per-gpu
Topologie, Verhalten nach Slurm-Version
Was AWS PCS für Sie konfiguriert und was Sie selbst konfigurieren können, hängt von der Slurm-Version des Clusters ab.
Von Slurm 25.11
CPU-Topologie durch benutzerdefinierte Einstellungen
Sie können die CPU-Topologie selbst mit den Sockets und Parameters benutzerdefinierten Slurm-Einstellungen für eine Rechenknotengruppe konfigurieren. Weitere Informationen finden Sie unter Benutzerdefinierte Slurm-Einstellungen für AWS PCS berechnet Knotengruppen.
-
Stellen Sie
Socketsdie Anzahl der Domänen ein, die Slurm als Sockets behandeln soll. AWS PCS berechnet und legt das MatchingCoresPerSocketfür Sie fest. Der Wert muss die Anzahl der Kerne des Knotens gleichmäßig teilen. -
Auf
numa_node_as_socketoder setzenParameters, uml3cache_as_socketzu deklarieren, um welche Domänen es sich handelt.
Mitl3cache_as_socket, Sockets ist erforderlich: AWS PCS kann das L3-Cache-Layout eines Instance-Typs nicht ermitteln, daher geben Sie die Anzahl der L3-Cache-Domänen an. Dies gilt für jede Slurm-Version, einschließlich 26.05 und höher.
Beispiel— L3-Cache-Domains als Sockets auf einem hpc7a.96xlarge Knotengruppe berechnen (24 L3-Cache-Domänen, jeweils 8 Kerne)
aws pcs update-compute-node-group \ --cluster-identifiermy-cluster\ --compute-node-group-identifiermy-cng-1\ --slurm-configuration \ 'slurmCustomSettings=[{parameterName=Sockets,parameterValue=24},{parameterName=Parameters,parameterValue=l3cache_as_socket}]'
Anmerkung
AWS PCS überprüft die Struktur eines Sockets Werts, nicht seine Richtigkeit anhand der Hardware. Ein Wert, der nicht mit dem tatsächlichen Layout des Knotens übereinstimmt, führt zu einer suboptimalen Platzierung oder dazu, dass die automatische INVALID_REG GPU-Erkennung aktiv ist.
GPU-Topologie mit AutoDetect (Opt-In)
Auf Slurm 25.11 ist die automatische GPU-Erkennung standardmäßig deaktiviert. Sie melden sich an, indem Sie AutoDetect den GPU-Datensatz der Compute-Knotengruppe in hinzufügen. gresCustomSettings Weitere Informationen finden Sie unter Konfiguration benutzerdefinierter GRES-Einstellungen in AWS 5 STCK.
AutoDetect erfordert, dass die CPU-Topologie des Knotens konfiguriert wird. In 25.11 bedeutet das, dass die Compute-Knotengruppe wie im vorherigen Abschnitt beschrieben eingestellt Sockets wird. Ohne sie registrieren Knoten eine GPU-Affinität, die nicht zum Standardlayout mit einem Kern pro Socket passt, und Slurm setzt sie auf. INVALID_REG
Von Slurm 26.05
Standard-CPU-Topologie
Ab Slurm 26.05 konfiguriert AWS PCS standardmäßig die NUMA-based CPU-Topologie. AWS PCS bestimmt die Anzahl der NUMA-Domänen anhand des Instanztyps der Compute-Knotengruppe und legt SocketsCoresPerSocket, und auf jedem Knoten fest. Parameters=numa_node_as_socket
Die folgenden Regeln gelten:
-
Wenn eine Rechenknotengruppe mehrere Instanztypen verwendet, wendet AWS PCS die Standardtopologie nur an, wenn alle die gleiche Anzahl von NUMA-Domänen haben. Andernfalls lässt AWS PCS die Topologie unkonfiguriert, was dem Verhalten früherer Versionen entspricht.
-
Wenn Sie die benutzerdefinierten Slurm-Einstellungen der Compute-Knotengruppe festlegen
Sockets, hat Ihr Wert Vorrang und AWS PCS fügt nichts hinzu.ParametersVerwenden Sie dies, um die Standardeinstellung zu überschreiben, z. B. um L3-Cache-Domänen als Sockets mit zu verwendenParameters=l3cache_as_socket, wofür immer noch Ihr Wert erforderlich ist.Sockets
Anmerkung
Die automatische Topologie gilt für Cluster, die mit Slurm 26.05 oder höher erstellt wurden, und für Cluster, wenn Sie sie auf 26.05 oder höher aktualisieren.
Standardmäßig automatische GPU-Erkennung
Ab Slurm 26.05 aktiviert AWS PCS standardmäßig die automatische GPU-Erkennung. AWS PCS fügt dem GPU-Datensatz AutoDetect=full hinzu, den es für eine GPU-Rechenknotengruppe generiert, wenn das Socket-Layout des Knotens bekannt ist, entweder weil AWS PCS die CPU-Topologie automatisch konfiguriert hat oder weil Sie es selbst eingerichtet haben. Sockets Wenn das Socket-Layout nicht verfügbar ist, gibt AWS PCS seinen GPU-Datensatz ohne ausAutoDetect, was dem Verhalten früherer Versionen entspricht. Weitere Informationen zu dem von AWS PCS generierten GPU-Datensatz und zum Abgleich dieses Datensatzes mit Ihrem eigenen finden Sie unter. Wie AWS PCS wendet Ihre gres.conf-Datensätze an