An nvitop-style interactive terminal GPU monitor for Intel Arc and Data Center GPUs, built with Textual.
XPUITOP ◆ Intel GPU Monitor ◆ 4 GPU(s) Tue Feb 04 14:23:01 2025
─────────────────────────────────────────────────────────────────────────────
GPU 0 Arc(TM) Pro B60 Graphics [0000:03:00.0]
Temp: 42°C Pwr: 23.5W Freq: 2050MHz
GPU █████░░░░░░░░░░░░░░░░░░░░ 20.3% ▁▁▂▂▃▃▃▂▂▂▃▄▅▅▄▃▂▂▁
MEM ████████████░░░░░░░░░░░░░ 2048/4096 MiB ▁▁▂▃▄▅▆▆▆▆▅▅▅▅▅▅▅▅▅▅
─────────────────────────────────────────────────────────────────────────────
Processes (sort: mem, press 'o' to cycle)
GPU PID USER MEM(MiB) COMMAND
0 12345 ubuntu 512.0 python3 train.py
- Live dashboard with configurable auto-refresh (default 2s)
- Per-GPU cards showing utilization, memory, temperature, power, frequency
- Braille history graphs (full mode) and sparkline graphs (compact mode)
- Host CPU, memory, and swap monitoring
- Process table with sorting, selection, and signal sending
- Three display modes: auto, full, compact
- Works with xpu-smi (Level Zero) — no NVIDIA dependency
- Intel GPU with Level Zero driver stack installed
xpu-smiCLI tool (part of the Intel GPU driver packages)- Python 3.10+
# Make sure xpu-smi works
xpu-smi discovery
# Install from source
pip install -e .
# Run
xpuitop
# or
python -m xpuitopxpuitop [OPTIONS]
Options:
-i, --interval SEC Refresh interval in seconds (default: 2)
-m, --mode MODE Display mode: auto, full, compact (default: auto)
-o, --only GPUS Comma-separated GPU indices to monitor (e.g. 0,2)
--ascii Use ASCII-only characters (no Unicode)
| Key | Action |
|---|---|
q |
Quit |
r |
Force refresh |
a |
Auto display mode |
f |
Full display mode |
c |
Compact display mode |
o |
Cycle process sort (mem / pid / gpu) |
h / ? |
Show help |
t |
Show device tree |
e |
Send signal to selected process |
Up / Down |
Navigate process list |
The app shells out to xpu-smi for data:
xpu-smi discovery— device enumeration (name, memory, PCI address)xpu-smi dump -d -1 -m 0,1,2,3,5,18 -n 1— live telemetry (utilization, power, freq, temp, memory)xpu-smi ps -j— GPU process list
It parses both JSON and CSV fallback formats for maximum compatibility across xpu-smi versions.
XPUITOP_DEBUG=1 xpuitop
# Logs written to /tmp/xpuitop.log