View a markdown version of this page

Configuration de la topologie matérielle dans AWS PIÈCES - AWS PIÈCES

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Configuration de la topologie matérielle dans AWS PIÈCES

Slurm prend de meilleures décisions de placement lorsqu'il connaît la configuration matérielle interne d'un nœud de calcul : comment les cœurs sont regroupés en sockets et en domaines d'accès à Non-Uniform la mémoire (NUMA), comment les caches L3 sont mappés aux cœurs et à quels cœurs chaque GPU est connecté. Cette rubrique décrit comment Slurm modélise cette mise en page et comment AWS PCS la configure sur chaque version de Slurm prise en charge.

Topologie du processeur

Les cœurs d'un nœud de calcul ne sont pas interchangeables. Ils sont regroupés en packages physiques (sockets) et en domaines NUMA, et chaque groupe partage des ressources telles que des contrôleurs de mémoire et un cache L3. Deux tâches placées dans le même groupe communiquent plus rapidement et partagent le cache ; les tâches réparties entre les groupes sont moins compétitives pour les ressources partagées.

Slurm décrit ce regroupement par nœud avec les ThreadsPerCore paramètres SocketsCoresPerSocket, et dans. slurm.conf Ce que Slurm considère comme un socket est configurable avec le paramètre par Parameters nœud :

  • numa_node_as_socket— chaque domaine NUMA est un socket.

  • l3cache_as_socket— chaque domaine de cache L3 est un socket. Cela peut être utile sur certains processeurs dont le niveau de socket est trop grossier et où le cache L3 peut permettre une meilleure répartition des tâches.

Lorsque la topologie du processeur est configurée, les options de planification tenant compte des sockets fonctionnent comme prévu : options de tâche telles que --ntasks-per-socket et--sockets-per-node, et allocation basée sur les sockets avec les valeurs ou du paramètre au niveau du CR_Socket cluster. CR_Socket_Memory SelectTypeParameters Pour plus d'informations sur la façon dont Slurm alloue les sockets, les cœurs et les threads, consultez la section Prise en charge des Multi-core/Multi-thread architectures dans la documentation de Slurm.

AWS PCS ne configure pas la topologie du processeur sur les versions de Slurm antérieures à la version 25.11. Les nœuds de ces versions annoncent donc un cœur par socket et ces options n'ont aucun effet.

Affinité GPU

Chaque GPU d'un nœud est le plus proche d'un domaine NUMA, de sorte qu'un sous-ensemble des cœurs du nœud y est local. Une tâche exécutée sur les cœurs locaux de son GPU transfère les données sur un chemin plus court qu'une tâche exécutée sur l'autre socket. Slurm enregistre cette GPU-to-core affinité par appareil (l'Coresattribut d'un gres.conf enregistrement), ainsi que le schéma d' GPU-to-GPU interconnexion (). Links

Sur les nœuds de calcul AWS PCS, ces informations ne peuvent pas être configurées statiquement à l'avance, car l'énumération des périphériques dépend de chaque instance et les périphériques ne deviennent visibles qu'au démarrage du nœud. Le AutoDetect mécanisme de Slurm résout ce problème : lorsqu'un nœud démarre, slurmd interroge la bibliothèque de gestion NVIDIA (NVML) et signale l'affinité détectée au contrôleur lors de l'enregistrement.

Note

Lorsqu'un nœud est hors tension, Slurm ne connaît pas son GPU-to-CPU affinité. L'affinité n'est disponible que lorsque le nœud démarre et s'enregistre, de sorte que les décisions de planification pour les nœuds hors tension sont prises sans elle.

L'affinité GPU détectée automatiquement est exprimée en termes de sockets, elle nécessite donc une topologie de processeur correcte. Si un nœud enregistre une affinité GPU qui ne correspond pas aux limites de socket configurées du nœud, Slurm le définit INVALID_REG et le vide. Pour plus d’informations, consultez Résoudre les problèmes liés aux enregistrements de nœuds non valides (INVALID_REG) dans AWS PIÈCES.

Grâce à l'affinité GPU disponible, Slurm peut placer des tâches sur des cœurs locaux aux GPU qui leur sont alloués. L'affinité des ressources génériques (GRES) est gérée au niveau de la granularité du socket. Le placement dépend des options de poste ; les combinaisons qui utilisent l'affinité détectée incluent --ntasks-per-socket avec --gpus-per-task et --gpus avec--ntasks-per-gpu.

Comportement de la topologie par version de Slurm

Ce que AWS PCS configure pour vous et ce que vous pouvez configurer vous-même dépendent de la version de Slurm du cluster.

Depuis Slurm 25.11

Topologie du processeur via des paramètres personnalisés

Vous pouvez configurer vous-même la topologie du processeur à l'aide Sockets des paramètres Slurm Parameters personnalisés pour un groupe de nœuds de calcul. Pour plus d’informations, consultez Paramètres Slurm personnalisés pour AWS Groupes de nœuds de calcul PCS.

  • Définissez Sockets le nombre de domaines que Slurm doit traiter comme des sockets. AWS PCS calcule et définit la correspondance CoresPerSocket pour vous. La valeur doit diviser le nombre de cœurs du nœud de manière égale.

  • Définissez Parameters sur numa_node_as_socket ou l3cache_as_socket pour déclarer quels sont les domaines.

Avecl3cache_as_socket, Sockets est obligatoire : AWS PCS ne peut pas déterminer la disposition du cache L3 d'un type d'instance. Vous devez donc fournir le nombre de domaines de cache L3. Cela s'applique à toutes les versions de Slurm, y compris la version 26.05 et les versions ultérieures.

Exemple— Domaines de cache L3 sous forme de sockets sur un hpc7a.96xlarge groupe de nœuds de calcul (24 domaines de cache L3, 8 cœurs chacun)
aws pcs update-compute-node-group \ --cluster-identifier my-cluster \ --compute-node-group-identifier my-cng-1 \ --slurm-configuration \ 'slurmCustomSettings=[{parameterName=Sockets,parameterValue=24},{parameterName=Parameters,parameterValue=l3cache_as_socket}]'
Note

AWS Le PCS valide la structure d'une Sockets valeur, et non son exactitude par rapport au matériel. Une valeur qui ne correspond pas à la configuration réelle du nœud entraîne un placement sous-optimal ou une activation de la INVALID_REG détection automatique du GPU.

Topologie GPU avec AutoDetect (opt-in)

Sur Slurm 25.11, la détection automatique du GPU est désactivée par défaut. Vous vous inscrivez en ajoutant AutoDetect à l'enregistrement GPU du groupe de nœuds de calcul dansgresCustomSettings. Pour plus d’informations, consultez Configuration des paramètres GRES personnalisés dans AWS PIÈCES.

AutoDetect nécessite la configuration de la topologie du processeur du nœud. Le 25.11, cela signifie définir le groupe Sockets de nœuds de calcul comme décrit dans la section précédente. Sans cela, les nœuds enregistrent une affinité GPU qui ne correspond pas à la configuration par défaut d'un cœur par socket, et Slurm la définit comme telle. INVALID_REG

Depuis Slurm 26.05

Topologie du processeur par défaut

À partir de Slurm 26.05, AWS PCS configure la topologie NUMA-based du processeur par défaut. AWS PCS détermine le nombre de domaines NUMA à partir du type d'instance du groupe de nœuds de calcul et des ensembles SocketsCoresPerSocket, et Parameters=numa_node_as_socket sur chaque nœud.

Les règles suivantes s’appliquent :

  • Si un groupe de nœuds de calcul utilise plusieurs types d'instances, AWS PCS applique la topologie par défaut uniquement lorsque tous possèdent le même nombre de domaines NUMA. Dans le cas contraire, AWS PCS ne définit pas la topologie, ce qui correspond au comportement des versions précédentes.

  • Si vous définissez Sockets les paramètres Slurm personnalisés du groupe de nœuds de calcul, votre valeur est prioritaire et AWS PCS n'est pas ajoutée. Parameters Utilisez-le pour remplacer la valeur par défaut, par exemple pour utiliser des domaines de cache L3 comme sockets avecParameters=l3cache_as_socket, ce qui nécessite toujours votre Sockets valeur.

Note

La topologie automatique s'applique aux clusters créés avec Slurm 26.05 ou version ultérieure, et aux clusters lorsque vous les mettez à jour vers la version 26.05 ou ultérieure.

Détection automatique du GPU par défaut

À partir de Slurm 26.05, AWS PCS active la détection automatique du GPU par défaut. AWS PCS ajoute AutoDetect=full à l'enregistrement GPU qu'il génère pour un groupe de nœuds de calcul GPU lorsque la disposition des sockets du nœud est connue, soit parce que AWS PCS a configuré automatiquement la topologie du processeur, soit parce que vous l'avez définie Sockets vous-même. Lorsque la configuration du socket n'est pas disponible, AWS PCS émet son enregistrement GPU sansAutoDetect, ce qui correspond au comportement des versions précédentes. Pour plus d'informations sur l'enregistrement GPU généré par AWS PCS et sur la manière dont il réconcilie cet enregistrement avec le vôtre, consultez. Comment ? AWS PCS applique vos enregistrements gres.conf