Skip to content

ROCm Profiling

See the Quick Start guide on how to install Graphsignal.

Graphsignal profiles AMD ROCm workloads via AMD’s rocprofiler-sdk — no code instrumentation required. Attach the profiler to any HIP/ROCm program (PyTorch, vLLM, SGLang, raw HIP, custom Triton kernels) and the GPU side comes through automatically.

Everything lands in the local /signals endpoint as profile metrics — cumulative counters per named frame, sorted by value descending — plus counters:

  • rocm_kernels_nanoseconds — cumulative execution time per kernel, frames are the raw kernel symbols.
  • rocm_memcpy_nanoseconds — cumulative time per transfer kind, with rocm_memcpy_bytes{kind} counters carrying the volumes.
  • rocm_sync_nanoseconds — cumulative host-blocking time per HIP synchronization API (hipDeviceSynchronize, hipStreamSynchronize, hipEventSynchronize, …).

Host-side GPU probes work on ROCm too; device-storage probes recorded from HIP kernels are registered but not read by the ROCm activity library.

graphsignal-run loads a small activity library into the workload process via ROCP_TOOL_LIBRARIES; it collects rocprofiler-sdk activity records with low overhead and publishes cumulative state once per second. Everything else — analysis, statistics, the HTTP endpoint — runs in the sidecar profiler process, never inside the workload.

Wrap your launch command with graphsignal-run:

Terminal window
graphsignal-run <my-app>

Collection starts automatically once the workload begins using the GPU. Requires ROCm 7+; if ROCm isn’t found, Graphsignal skips ROCm profiling without affecting the workload. While the workload runs, read everything at http://127.0.0.1:18259/signals. See the Profiler CLI reference for options.