Skip to content

HPC Clusters⚓︎

From node ID to xname⚓︎

Component names (xnames) identify the geolocation for hardware components in the HPE Cray EX system.

On the node, you can run the following command to get the xname:

cat /etc/cray/xname

The xname has the following format:

xXcCsSbBnN
Field Description
x Cabinet number
c Chassis number
s Slot number
b Card number
n Node number

For CSCS GH200 system, the node number is always 0 (n0). The card number can be either 0 or 1, for the two nodes in the compute blade.

Power measurements⚓︎

On Cray EX systems, power measurements can be obtained from the pm_counters in

/sys/cray/pm_counters/
pm_counters for a GH200 node on Alps
$ ls -l /sys/cray/pm_counters/
total 0
-r--r--r-- 1 root root 65536 Nov 21 10:48 accel0_energy
-r--r--r-- 1 root root 65536 Nov 21 10:48 accel0_power
-r--r--r-- 1 root root 65536 Nov 21 10:48 accel0_power_cap
-r--r--r-- 1 root root 65536 Nov 21 10:48 accel1_energy
-r--r--r-- 1 root root 65536 Nov 21 10:48 accel1_power
-r--r--r-- 1 root root 65536 Nov 21 10:48 accel1_power_cap
-r--r--r-- 1 root root 65536 Nov 21 10:48 accel2_energy
-r--r--r-- 1 root root 65536 Nov 21 10:48 accel2_power
-r--r--r-- 1 root root 65536 Nov 21 10:48 accel2_power_cap
-r--r--r-- 1 root root 65536 Nov 21 10:48 accel3_energy
-r--r--r-- 1 root root 65536 Nov 21 10:48 accel3_power
-r--r--r-- 1 root root 65536 Nov 21 10:48 accel3_power_cap
-r--r--r-- 1 root root 65536 Nov 21 14:38 cpu0_energy
-r--r--r-- 1 root root 65536 Nov 21 14:38 cpu0_power
-r--r--r-- 1 root root 65536 Nov 21 14:38 cpu0_temp
-r--r--r-- 1 root root 65536 Nov 21 14:38 cpu1_energy
-r--r--r-- 1 root root 65536 Nov 21 14:38 cpu1_power
-r--r--r-- 1 root root 65536 Nov 21 14:38 cpu1_temp
-r--r--r-- 1 root root 65536 Nov 21 14:38 cpu2_energy
-r--r--r-- 1 root root 65536 Nov 21 14:38 cpu2_power
-r--r--r-- 1 root root 65536 Nov 21 14:38 cpu2_temp
-r--r--r-- 1 root root 65536 Nov 21 14:38 cpu3_energy
-r--r--r-- 1 root root 65536 Nov 21 14:38 cpu3_power
-r--r--r-- 1 root root 65536 Nov 21 14:38 cpu3_temp
-r--r--r-- 1 root root 65536 Nov 21 14:38 cpu_energy
-r--r--r-- 1 root root 65536 Nov 21 14:38 cpu_power
-r--r--r-- 1 root root 65536 Nov 21 14:38 energy
-r--r--r-- 1 root root 65536 Nov 21 14:38 freshness
-r--r--r-- 1 root root 65536 Nov 21 14:38 generation
-r--r--r-- 1 root root 65536 Nov 21 10:45 power
-r--r--r-- 1 root root 65536 Nov 21 10:45 power_cap
-r--r--r-- 1 root root 65536 Nov 21 14:38 raw_scan_hz
-r--r--r-- 1 root root 65536 Nov 21 14:38 startup
-r--r--r-- 1 root root 65536 Nov 21 14:38 version

Measuring power consumption

The following script samples relevant pm_contters:

#!/bin/bash

while [ ! -f stop_monitor ];
do
  cat /sys/cray/pm_counters/power >> node_power.txt
  cat /sys/cray/pm_counters/accel0_power >> gpu0_power.txt
  cat /sys/cray/pm_counters/accel1_power >> gpu1_power.txt
  cat /sys/cray/pm_counters/accel2_power >> gpu2_power.txt
  cat /sys/cray/pm_counters/accel3_power >> gpu3_power.txt
  cat /sys/cray/pm_counters/cpu0_power >> cpu0_power.txt
  cat /sys/cray/pm_counters/cpu1_power >> cpu1_power.txt
  cat /sys/cray/pm_counters/cpu2_power >> cpu2_power.txt
  cat /sys/cray/pm_counters/cpu3_power >> cpu3_power.txt
  sleep 5
done

It can run alongside an application to log power consumption over time.

#!/bin/bash
#SBATCH --nodes=1
#SBATCH --ntasks-per-node=4
#SBATCH --gpus-per-task=1
#SBATCH --time=00:01:00
#SBATCH --partition=debug
#SBATCH --uenv=prgenv-gnu/25.6:v2
#SBATCH --view=default

rm -f stop_monitor

date

srun --overlap -n1 monitor.sh &
pid=$! # Get PID of most recent background process

srun --overlap -n1 ./bindgpu0.sh hwloc-bind --cpubind core:0-7 -- node-burn/build/burn -ggemm,5000 -cstream,500000 -d30 &
pidj1=$!

srun --overlap -n1 ./bindgpu1.sh hwloc-bind --cpubind core:72-79 -- node-burn/build/burn -ggemm,5000 -cstream,500000 -d30 &
pidj2=$!

wait $pidj1
wait $pidj2

sleep 10
touch stop_monitor

date
trap does not play nice with Slurm

Using trap to stop the monitoring script does not work well with Slurm jobs, and and error is produced. Instead, a sentinel file (stop_monitor) is used to signal the monitoring script to stop.