rocprofiler-pc-sampling
Profiles a target application using rocprofv3 with program counter sampling enabled and then analyzes the results.
Skill by amd
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/amd-rocprofiler-pc-sampling
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
- Runs as
- Python package
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/rocprofiler-pc-sampling
What's inside
- Skill name
rocprofiler-pc-sampling- Description
- Profiles a target application using rocprofv3 with program counter sampling enabled and then analyzes the results. Use when the user has a program that runs on an AMD GPU and asks to perform PC sampling, to determine the runtime performance characteristics of their application, to determine stall reasons, or to determine hotspots in the code.
- License
- MIT
- Instructions
- 90 lines in SKILL.md · view on GitHub
Before installing
- Ships executable scripts
Files (10)
- .federated.json
- SKILL.md
- evals.json · evals/
- machine.yml · evals/
- cuda_demo.cu · evals/resources/
- demo_program.hip.cpp · evals/resources/
- stall-reasons.md · resources/
- analyze_pc_sampling.py · scripts/
- skill-card.md
- test_analyze_pc_sampling.py · tests/
SKILL.md (first lines)
# PC Sampling ## Prerequisites - The system must have a ROCm installation and an accessible AMD GPU; that is, `amd-smi` should return at least one valid device. - The GPU must support PC sampling. Available PC sampling configurations can be determined via `rocprofv3-avail info --pc-sampling` or `rocprofv3 -L`. Your sampling method and interval must align with the outputs of this command. Also pay attention to any flags reported for a given configuration; at time of writing, stochastic sampling intervals must be powers of two. - The application should be built with debug symbols AND optimization flags (e.g. `-g -O3`) in order to get source line attribution and a representative execution profile. ## How to use PC Sampling To run rocprofv3 with PC sampling: - explicitly enable pc sampling with the flag `--pc-sampling-beta-enabled`. - specify the pc sampling method with `--pc-sampling-method`: `host_trap` or `stochastic` - specify the interval unit for the sampling with `--pc-sampling-unit`: `time` for host_trap and `cycles` for stochastic - specify the sampling interval with `--pc-sampling-interval`: an integer representing microseconds if you specified `time` or cycles if you specified `cycles`. - add the `--kernel-trace` flag to track kernel launches for attribution - specify either the `json` or `csv` output format with `--output-format`; the default output format, `rocpd`, does not currently support PC sampling output. A typical command will look like the following: ```bash rocprofv3 \ --pc-sampling-beta-enabled \ --pc-sampling-method stochastic \ --pc-sampling-unit cycles \ --pc-sampling-interval 1048576 \ --kernel-trace \ --output-format json \ -- <target app> ``` ### PC Sampling Outputs Output-related options: - `-d <dir>`: output location (default: `%cwd%`) - `-o <prefix>`: name prefix (default: `%hostname%/%pid%`) - `--output-format csv,json`: emit both formats Default path pattern: `<output_dir>/<output_prefix>_<name>.<ext>` where prefix is `%hostname%/%pid%` unless overridden. #### Possible output files | File | Format | Contents | |-----|-----|-----| | `*_pc_sampling_stochastic.csv` or `*_pc_sampling_host_trap.csv` | CSV | Flat sample records; one row per sample | | `*_agent_info.csv` | CSV | GPU/CPU agent metadata (**not** samples) | | `*_kernel_trace.csv` | CSV | Kernel dispatch records (with `--kernel-trace`) | | `*_results.json` | JSON | All data in one file | ### PC Sampling Guidance There are two types of PC sampling: host-trap and stochastic. Stochastic requires hardware support and is available on fewer GPUs, but provides more information. The default output format, rocpd, does not currently support pc sampling, so you must explicitly specify json (preferred) or csv. json outputs contain more information. - Prefer stochastic sampling unless the sampling interval needs to be larger than what stochastic can support. - Prefer the json output format since it will carry richer information when using stochastic sampling. - Prefer larger stochastic sampling intervals (2^18^-2^20^; often the maximum) unless the workload is short enough that this does not produce sufficient samples. Shorter intervals will quickly produce huge amounts of data. - Prefer host trap intervals on the order of 1000 microseconds, decreasing if needed. ## Analyzing PC Sampling Results Inside this skill's folder is an analysis script: scripts/analyze_pc_sampling.py. When passed the output sample file (.json or .csv) it will report the top sample locations and top stall reasons. You may also filter results to a particular kernel -with `--kernel <kernel name>`. Run the included python script to perform basic analysis of the output files. Use its output to analyze the user's code, explain its performance, and help give specific and relevant suggestions for improvements. Inform the user of hot spots, the causes of the hotspots (if available), and possible improvements if any. If there are no notable potential improvements, briefly explain why. For example, transpose operations are heavily memory bound and a profile of a well-written transpose kernel will exhibit large amounts of WAITCNT stalls. This is inherent from the task itself and is not *necessarily* a failing of the kernel. However, a naive transpose kernel may exhibit scattered reads or writes, causing far more memory traffic and thus WAITCNT stalls than is necessary. ## Procedure Checklist 1. ensure the prerequisites defined above are met 2. if there is not an up-to-date build of the target application with debug information, build it 3. profile the application with rocprofv3 using pc sampling settings as directed above 4. run this skill's included analysis script on the profiling outputs 5. check that the run was successful and produced a non-trivial number of samples 6. use the output of the script to provide analysis of their code's behavior and specific guidance on possible improvements ## Misc. Tips Tiny workloads may produce too few samples. Ensure the workload is large enough to get a representative sample count. If source code is available and the workload is too small, consider modifying the code to invoke the kernel multiple times, and then restoring it to its original state after the profiling run. Host-trap sampling can have an instruction "skid" of one or two instructions; if sample attribution does not make sense, look at the surrounding instructions and branch targets. A brief overview of stall types and their causes is available in this skill's resources/stall-reasons.md. The rocm-systems repository has several PC sampling documentation files in this folder: projects/rocprofiler-sdk/source/docs/how-to/. You may also access them here: https://rocm.docs.amd.com/projects/rocprofiler-sdk/en/develop/how-to/cdna3-cdna4-pc-sampling.html Only one PC sampling configuration can be used at a time, so if exactly one valid configuration is reported then PC sampling is probably being actively used by another process. If this happens, report it to the user and inform them that results may be affected.
From amd/skills, MIT.
More from amd/skills
- 0.700score
local-ai-use
amd
Makes this agent generate images, transcribe audio, and synthesize speech on the user's own machine through a local Lemonade Server instead of a paid cloud API.
SkillAFreshness: A★ 465Claude Code +9 - 0.700score
lemonade-router-builder
amd
Turns a natural-language description of routing intent into a valid Lemonade `collection.router` policy JSON.
SkillAFreshness: A★ 465Claude Code +9 - 0.700score
quark-install
amd
Installs or verifies AMD Quark and ensures the selected Python environment has an accelerator-matched PyTorch.
SkillAFreshness: A★ 465Claude Code +9 - 0.700score
quark-torch-llm-ptq
amd
Runs an end-to-end AMD Quark post-training quantization workflow for PyTorch / Hugging Face LLMs: inspect a Hub or local model, choose a quantization plan…
SkillAFreshness: A★ 465Claude Code +9 - 0.700score
serving-llms-on-epyc
amd
Serves an LLM on a supported AMD EPYC server CPU using vLLM with zentorch, in Docker, Podman, or conda.
SkillAFreshness: A★ 465Claude Code +9 - 0.695score
tracelens-analysis-orchestrator
amd
Orchestrates modular PyTorch profiler trace analysis with TraceLens: generates perf reports, prepares category data, runs system-level and compute-kernel…
SkillAFreshness: A★ 465Claude Code +9 - 0.695score
hyperloom-workload-optimizer
amd
Autonomously optimizes end-to-end LLM inference throughput on AMD Instinct GPUs and reports a validated gain, using the Hyperloom multi-agent optimizer.
SkillAFreshness: A★ 465Claude Code +9 - 0.695score
local-ai-app-integration
amd
Integrates local AI capabilities into applications using Embeddable Lemonade.
SkillAFreshness: A★ 465Claude Code +9 - 0.695score
magpie-kernel-evaluator
amd
Benchmarks LLM inference and drives GPU kernel optimization with Magpie.
SkillAFreshness: A★ 465Claude Code +9 - 0.695score
rocm-doctor
amd
Diagnoses why ROCm, the HIP SDK, PyTorch, or llama.cpp is broken on an AMD GPU on Linux, Windows, or WSL2, then applies a low-risk fix with consent or hands…
SkillAFreshness: A★ 465Claude Code +9 - 0.660score
apu-memory-tuner
amd
Inspects and tunes the shared-vs-dedicated memory split on AMD Ryzen APUs with unified memory (UMA) so larger LLMs and image-gen models fit on the iGPU, or so…
SkillBFreshness: B★ 465Claude Code +9 - 0.660score
serving-llms-on-instinct
amd
Serves AI models on AMD Instinct GPU hardware using vLLM.
SkillBFreshness: B★ 465Claude Code +9
Signals
- Stars
- 465
- Forks
- 44
- Open issues
- 45
- Last commit (this folder)
- Oct 19, 2026 (9 days ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/amd/skills
- Website
- developer.amd.com/
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from amd
- 0.700score
quark-torch-llm-ptq
amd
Runs an end-to-end AMD Quark post-training quantization workflow for PyTorch / Hugging Face LLMs: inspect a Hub or local model, choose a quantization plan…
SkillAFreshness: A★ 465Claude Code +9 - 0.700score
serving-llms-on-epyc
amd
Serves an LLM on a supported AMD EPYC server CPU using vLLM with zentorch, in Docker, Podman, or conda.
SkillAFreshness: A★ 465Claude Code +9 - 0.700score
local-ai-use
amd
Makes this agent generate images, transcribe audio, and synthesize speech on the user's own machine through a local Lemonade Server instead of a paid cloud API.
SkillAFreshness: A★ 465Claude Code +9 - 0.700score
quark-install
amd
Installs or verifies AMD Quark and ensures the selected Python environment has an accelerator-matched PyTorch.
SkillAFreshness: A★ 465Claude Code +9 - 0.700score
lemonade-router-builder
amd
Turns a natural-language description of routing intent into a valid Lemonade `collection.router` policy JSON.
SkillAFreshness: A★ 465Claude Code +9 - 0.695score
local-ai-app-integration
amd
Integrates local AI capabilities into applications using Embeddable Lemonade.
SkillAFreshness: A★ 465Claude Code +9
Cite this page
rocprofiler-pc-sampling skill. Agent Mart. https://agentmart.dev/skills/amd-rocprofiler-pc-sampling (last updated 2026-10-24)