Supposons un ordinateur NUMA avec deux processeurs installés sur une carte mère avec deux sockets CPU.
Par exemple, supposons que deux Xeons sont installés en tant que CPU.
Si vous vérifiez avec la commande lscpu
,
$ lscpu
architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 32
On-line CPU(s) list: 0-31
Nombre de threads par cœur:1
Nombre de cœurs par socket:16
Socket(s): 2
Nœud NUMA: 2
Fournisseur ID: GenuineIntel
Famille de CPU: 6
modèle: 85
Model name: Intel(R) Xeon(R) Gold 6242 CPU @ 2.80GHz
marcher: 7
CPU MHz: 1200.048
CPU max MHz: 3900.0000
CPU min MHz: 1200.0000
BogoMIPS: 5600.00
Virtualisation: VT-x
Cache L1d: 32K
Cache L1i: 32K
Cache L2: 1024K
Cache L3: 22528K
Processeur NUMA nœud 0: 0-15
Processeur NUMA nœud 1: 16-31
C'est le cas lorsqu'il est affiché sous la forme. Comme vous pouvez le voir dans ici, Xeon Gold 6242 a 16 cœurs, et il est vrai que le nœud NUMA 0 reconnaît 16 cœurs de 0 à 15. Le second est le nœud NUMA 1, qui reconnaît 16 cœurs de 16 à 31. En d'autres termes, il dispose de 32 ressources de base en tant qu'ordinateur. (La technologie Hyperthreading est désactivée)
Le système d'exploitation est CentOS 7, et je souhaite utiliser The Terascale Open-source Resource and QUEue Manager (TORQUE) comme système de gestion des travaux.
Tout d'abord, installez le serveur, le client et le planificateur TORQUE conformément à Configuration du couple sur CentOS 7.
Si elle est définie conformément à l'article ci-dessus, la commande pbsnodes
ne doit afficher qu'un seul nœud (16 cœurs).
Dans ce cas, il y a deux nœuds NUMA, donc
Il est nécessaire de réécrire partiellement les paramètres comme suit.
/var/lib/torque/server_priv/nodes
HOSTNAME num_node_boards=2 numa_board_str=16
/var/lib/torque/mom_priv/mom.layout
nodes=0
nodes=1
Ici, le nom d'hôte de l'ordinateur doit être écrit à la place de HOSTNAME
.
Définissez le nombre de nœuds NUMA dans num_node_boards
.
Définissez le nombre de cœurs de processeur par nœud NUMA dans numa_board_str
.
Réglez le couple ci-dessus et redémarrez:
# systemctl restart pbs_server
# systemctl restart pbs_sched
# systemctl restart pbs_mom
Exécutez à nouveau la commande pbsnodes
, et si deux nœuds avec np = 16, state = free
sont affichés, cela réussit.
Je pense que les noms des nœuds sont comme «HOSTNAME-0» et «HOSTNAME-1».
Par exemple, lors de l'exécution de 32 calculs parallèles avec OpenMP, Ajoutez des options à votre script de travail, telles que:
#PBS -l nodes=2:ppn=16
Dans cet exemple, les deux nœuds et cœurs NUMA (32 cœurs au total) sont réservés.
Pendant l'exécution de ce travail (status: R
), d'autres travaux sont en état d'attente ( status: Q
).