Angenommen, ein NUMA-Computer mit zwei CPUs ist auf einem Motherboard mit zwei CPU-Sockeln installiert.
Angenommen, zwei Xeons sind als CPUs installiert.
Wenn Sie mit dem Befehl lscpu
nachsehen,
$ lscpu
die Architektur: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 32
On-line CPU(s) list: 0-31
Anzahl der Threads pro Kern:1
Anzahl der Kerne pro Sockel:16
Socket(s): 2
NUMA-Knoten: 2
Hersteller-ID: GenuineIntel
CPU-Familie: 6
Modell-: 85
Model name: Intel(R) Xeon(R) Gold 6242 CPU @ 2.80GHz
Schritt: 7
CPU MHz: 1200.048
CPU max MHz: 3900.0000
CPU min MHz: 1200.0000
BogoMIPS: 5600.00
Virtualisierung: VT-x
L1d-Cache: 32K
L1i-Cache: 32K
L2-Cache: 1024K
L3-Cache: 22528K
NUMA-Knoten 0 CPU: 0-15
NUMA-Knoten 1 CPU: 16-31
Dies ist der Fall, wenn es als angezeigt wird. Wie Sie in [hier] sehen können (https://www.intel.co.jp/content/www/jp/ja/products/processors/xeon/scalable/gold-processors/gold-6242.html), Xeon Gold 6242 hat 16 Kerne, und es ist wahr, dass der NUMA-Knoten 0 16 Kerne von 0 bis 15 erkennt. Der zweite ist der NUMA-Knoten 1, der 16 Kerne von 16 bis 31 erkennt. Mit anderen Worten, es verfügt über 32 Kernressourcen als Computer. (Hyperthreading-Technologie ist deaktiviert)
Das Betriebssystem ist CentOS 7, und ich möchte den Open-Source-Ressourcen- und QUEue-Manager (TORQUE) von Terascale als Jobverwaltungssystem verwenden.
Installieren Sie zunächst den TORQUE-Server, den Client und den Scheduler gemäß Torque-Setup unter CentOS 7.
Wenn gemäß dem obigen Artikel festgelegt, sollte der Befehl pbsnodes
nur einen Knoten (16 Kerne) anzeigen.
In diesem Fall gibt es also zwei NUMA-Knoten
Die Einstellungen müssen teilweise wie folgt neu geschrieben werden.
/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
Hier sollte der Hostname des Computers anstelle von "HOSTNAME" geschrieben werden.
Stellen Sie die Anzahl der NUMA-Knoten in num_node_boards
ein.
Stellen Sie die Anzahl der CPU-Kerne pro NUMA-Knoten in numa_board_str
ein.
Stellen Sie das oben genannte ein und starten Sie das Drehmoment neu:
# systemctl restart pbs_server
# systemctl restart pbs_sched
# systemctl restart pbs_mom
Führen Sie den Befehl pbsnodes
erneut aus, und wenn zwei Knoten mit np = 16, state = free
angezeigt werden, ist dies erfolgreich.
Ich denke, die Namen der Knoten sind wie "HOSTNAME-0" und "HOSTNAME-1".
Wenn Sie beispielsweise 32 parallele Berechnungen mit OpenMP durchführen, Fügen Sie Ihrem Jobskript Optionen hinzu, z.
#PBS -l nodes=2:ppn=16
In diesem Beispiel sind alle zwei NUMA-Knoten und -Kerne (insgesamt 32 Kerne) reserviert.
Während dieser Job ausgeführt wird (status: R
), befinden sich andere Jobs im Standby-Zustand ( status: Q
).