This repository has been archived on 2026-08-19. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
ROCm-Research-Archive/Scripts and Tests/gpu_stress_test.sh
T
2026-08-20 00:45:43 +02:00

65 lines
1.9 KiB
Bash

#!/bin/bash
# Stress the GPU with a real Vulkan compute workload and monitor clocks
H=/sys/class/drm/card0/device/hwmon/hwmon1
SYSFS=/sys/class/drm/card0/device
echo "=== PRE-LOAD ==="
echo "FREQ: $(cat $H/freq1_input) Hz"
cat $SYSFS/pp_dpm_sclk
# Check if pp_table exists or can be created
echo "=== PP_TABLE CHECK ==="
ls -la $SYSFS/pp_table 2>/dev/null || echo "pp_table: NOT PRESENT"
sudo cat $SYSFS/pp_table 2>/dev/null | wc -c || echo "pp_table: NOT READABLE"
# Create a Vulkan compute stress with vkcube or glmark if available
if command -v vkcube &>/dev/null; then
echo "Starting vkcube..."
timeout 8 vkcube --c 99999 &>/dev/null &
STRESS_PID=$!
elif command -v glmark2-es2 &>/dev/null; then
echo "Starting glmark2..."
timeout 8 glmark2-es2 --off-screen &>/dev/null &
STRESS_PID=$!
else
# Fallback: just do heavy memory operations via python
echo "Starting python GPU mem stress..."
timeout 8 python3 -c "
import ctypes, time
# Just allocate and fill memory rapidly to force GPU activity
data = bytearray(512*1024*1024)
for i in range(100):
data[i*1024:(i+1)*1024] = b'x' * 1024
time.sleep(6)
" &>/dev/null &
STRESS_PID=$!
fi
# Monitor during load
for i in 1 2 3 4 5 6; do
sleep 1
freq=$(cat $H/freq1_input)
dpm=$(cat $SYSFS/pp_dpm_sclk | grep '\*')
power=$(cat $H/power1_input)
temp=$(cat $H/temp1_input)
echo "t+${i}s: freq=${freq}Hz dpm=${dpm} power=${power}uW temp=${temp}mC"
done
kill $STRESS_PID 2>/dev/null
wait $STRESS_PID 2>/dev/null
echo "=== POST LOAD ==="
sleep 1
echo "FREQ: $(cat $H/freq1_input) Hz"
cat $SYSFS/pp_dpm_sclk
# Check if we can write pp_table
echo "=== PP_TABLE WRITE TEST ==="
if [ -f "$SYSFS/pp_table" ]; then
echo "pp_table exists, trying to read..."
sudo cat $SYSFS/pp_table > /tmp/pp_table_backup.bin 2>/dev/null
echo "Read $(wc -c < /tmp/pp_table_backup.bin) bytes"
else
echo "No pp_table file — cannot modify power table"
fi