gfx950-asm-development
Develop, validate, and tune hand-written AMD gfx950 assembly kernels, with rocprof profiling.
Skill by yichiche
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/yichiche-gfx950-asm-development
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 and code. Checked Oct 26, 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/gfx950-asm-development
What's inside
- Skill name
gfx950-asm-development- Description
- Develop, validate, and tune hand-written AMD gfx950 assembly kernels, with rocprof profiling. Use for .s kernel development, HIP code-object integration, or assembly-kernel performance work on MI355X.
- License
- MIT
- Instructions
- 82 lines in SKILL.md · view on GitHub
Before installing
- Ships executable scripts
Files (5)
- SKILL.md
- openai.yaml · agents/
- instruction-patterns.md · references/
- profiling.md · references/
- kernel_summary.py · scripts/
SKILL.md (first lines)
# gfx950 ASM Development
Produce a correct assembly kernel, a working launch path, and a reproducible measurement. Reuse the project's build, loader, and test harness where available. Target AMD gfx950 / MI355X; verify the actual device and ROCm toolchain before applying architecture-specific instructions.
## 1. Establish the kernel contract
Read the caller and reference implementation. Identify:
- Input/output shapes, dtypes, strides, alignment, and buffer ownership.
- Numerical requirements, reduction order, and any permitted approximation.
- Grid/workgroup dimensions, supported tail sizes, and empty-input behavior.
- The current kernel, representative workload cases, and the requested performance metric.
Infer these from the project when possible. Resolve a missing interface requirement before implementing code that depends on it. Use workload shapes supplied by the user or found in the application.
## 2. Implement the kernel
Establish a correct implementation and a callable entry point. Make the following explicit in the source or wrapper:
1. Kernel-argument offsets, sizes, and alignment; keep them consistent with the host launcher and code-object metadata.
2. Work-item/workgroup indexing, the declared wave mode, and the mapping from logical elements to threads.
3. Register use and the kernel descriptor's resource declarations.
4. Bounds checks and masks for partial tiles or irregular inputs.
5. Load/store completion, dependencies, and synchronization around shared data.
Use the target ISA and ABI documentation to check instruction semantics. An unfamiliar instruction or lane mapping needs an isolated correctness check on the target device. Do not assume timing or layout properties from a different GPU.
For LDS-DMA, transposed LDS reads, FP8 MFMA, packing, and dependency handling used in attention kernels, read [references/instruction-patterns.md](references/instruction-patterns.md).
For standalone assembly, a typical build sequence is:
```bash
ASM_LLVM_BIN="${ROCM_PATH:-/opt/rocm}/llvm/bin"
"$ASM_LLVM_BIN/clang" --target=amdgcn-amd-amdhsa -mcpu=gfx950 \
-x assembler -c kernel.s -o kernel.o
"$ASM_LLVM_BIN/ld.lld" -shared kernel.o -o kernel.co
"$ASM_LLVM_BIN/llvm-readobj" --notes --symbols kernel.co
"$ASM_LLVM_BIN/llvm-objdump" -d --mcpu=gfx950 kernel.co > kernel.disasm
```
The source must contain suitable AMDHSA kernel metadata. Match the project's ROCm version and code-object ABI; use its build command if it already handles these requirements. Inspect the emitted symbol, metadata, and disassembly after a successful build.
If compilation or loading fails, check the target, compiler, metadata, and argument ABI first. Fix an environment or interface mismatch before adding alternate execution paths.
## 3. Integrate and validate
Use the existing HIP module loader when possible. For a new launcher, load the code object, resolve the exported kernel name, pass arguments with the declared layout, and launch the matching grid/workgroup dimensions. Keep buffers alive until completion and check HIP errors at launch and synchronization.
Validate through the same entry point that the application will use:
- Compare with a trusted reference using tolerances appropriate to the dtype and operation. Check NaN/Inf behavior where relevant.
- Cover normal cases, small inputs, partial tiles, nontrivial strides, and irregular or empty segments supported by the interface.
- Use structured inputs and targeted cases to isolate indexing, masking, reduction, and synchronization errors.
- After framework integration, run the relevant operator tests and an application-level check. Numerical kernel tests do not validate argument packing or dispatch selection by themselves.
Do not benchmark a candidate as a replacement until its relevant correctness checks pass.
## 4. Measure and make one change at a time
Record the source revision, device, ROCm/compiler versions, input case, launch configuration, and clock/load conditions. Warm up compilation and execution before timing. Define whether allocation, copies, and synchronization belong in the timed region, and use the same definition for baseline and candidate.
Use repeated device-side timings where appropriate; report a representative latency and its variation. Keep a baseline and candidate on the same workload and entry point.
Choose an optimization from observed evidence. Useful first checks are:
- Whether accesses are aligned and coalesced, and whether address calculation is unnecessarily expensive.
- Whether register pressure, spills, or workgroup resource use limit useful concurrency.
- Whether instruction sequences contain redundant work or avoidable dependency chains.
- Whether LDS layout or synchronization contributes to the observed cost.
- Whether work distribution creates a long tail on irregular inputs.
Change one factor, rerun correctness checks, then repeat the same measurement. Inspect generated ISA when the expected change depends on instruction selection or scheduling. Keep a short experiment log with the change, result, and supporting evidence; discard candidates that fail correctness or show no reproducible benefit.
## 5. Profile and diagnose performance
Use [references/profiling.md](references/profiling.md) to rank kernels with rocprofv3 traces and investigate bottlenecks with hardware performance counters. Choose counters for a specific hypothesis, relate the results to the generated ISA, and test the proposed change with the same correctness checks and benchmark.
## Deliverables
Return the changed source and launch path, exact build/test/benchmark commands, correctness results, and a compact baseline/candidate comparison. Explain the observed reason for any improvement and distinguish measured conclusions from remaining hypotheses. State which checks could not be run on the available hardware.From yichiche/agent-box, MIT.
More from yichiche/agent-box
- 0.598score
commit-push
yichiche
Commit (if needed) and push to the user's fork, with repo-aware remote selection and user confirmation before push.
SkillAFreshness: A★ 2Claude Code +9 - 0.598score
implement-kernel
yichiche
Implement a kernel optimization for SGLang on MI355/ROCm.
SkillAFreshness: A★ 2Claude Code +9 - 0.598score
gpu-status
yichiche
Show which AMD GPUs are free and the exact CUDA_VISIBLE_DEVICES to use for SGLang.
SkillAFreshness: A★ 2Claude Code +9 - 0.595score
generate-profile
yichiche
Generate an e2e profiling trace of an SGLang server run.
SkillAFreshness: A★ 2Claude Code +9 - 0.594score
abox-live
yichiche
Monitor Claude agents running inside your containers, from the host or phone — the single entry point (absorbed the old `abox`).
SkillAFreshness: A★ 2Claude Code +9 - 0.594score
pr-conflict-fix
yichiche
Resolve a conflicting GitHub PR inside a throwaway container built from an image you name.
SkillAFreshness: A★ 2Claude Code +9 - 0.594score
commit-push-pr
yichiche
Commit, push, and create a PR in one flow — checks state at each stage, confirms push target, collects accuracy/benchmark data, drafts PR in HackMD format for…
SkillAFreshness: A★ 2Claude Code +9 - 0.594score
compare-kernels
yichiche
Compare kernel categories and timings between two trace analysis Excel files.
SkillAFreshness: A★ 2Claude Code +9 - 0.589score
ci-analysis
yichiche
Analyze GitHub Actions CI failures for a pull request: trace root-cause jobs vs fast-fail cascades (check-pr-test-health), fetch job logs with gh, attribute…
SkillAFreshness: A★ 2Claude Code +9 - 0.585score
pr-ci-watch
yichiche
Watch a list of sgl-project/sglang PRs on two cadences (daily, or high-priority every 2h) and babysit them — re-run red NVIDIA CI only after /ci-analysis…
SkillAFreshness: A★ 2Claude Code +9 - 0.557score
debug-kernel-crash
yichiche
Debug GPU kernel crashes in SGLang (CUDA and ROCm) using @debug_kernel_api logging — illegal memory access, device assert, NaN/Inf, wrong shapes.
SkillBFreshness: B★ 2Claude Code +9 - 0.557score
add-jit-kernel
yichiche
Step-by-step guide for adding a lightweight JIT kernel to SGLang — CUDA path via python/sglang/kernels/jit, ROCm/MI355 path via Triton or aiter.
SkillBFreshness: B★ 2Claude Code +9
Signals
- Stars
- 2
- Forks
- 0
- Open issues
- 0
- Last commit (this folder)
- Oct 19, 2026 (9 days ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/yichiche/agent-box
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from yichiche
- 0.598score
implement-kernel
yichiche
Implement a kernel optimization for SGLang on MI355/ROCm.
SkillAFreshness: A★ 2Claude Code +9 - 0.598score
gpu-status
yichiche
Show which AMD GPUs are free and the exact CUDA_VISIBLE_DEVICES to use for SGLang.
SkillAFreshness: A★ 2Claude Code +9 - 0.598score
commit-push
yichiche
Commit (if needed) and push to the user's fork, with repo-aware remote selection and user confirmation before push.
SkillAFreshness: A★ 2Claude Code +9 - 0.595score
generate-profile
yichiche
Generate an e2e profiling trace of an SGLang server run.
SkillAFreshness: A★ 2Claude Code +9 - 0.594score
commit-push-pr
yichiche
Commit, push, and create a PR in one flow — checks state at each stage, confirms push target, collects accuracy/benchmark data, drafts PR in HackMD format for…
SkillAFreshness: A★ 2Claude Code +9 - 0.594score
compare-kernels
yichiche
Compare kernel categories and timings between two trace analysis Excel files.
SkillAFreshness: A★ 2Claude Code +9
Cite this page
gfx950-asm-development skill. Agent Mart. https://agentmart.dev/skills/yichiche-gfx950-asm-development (last updated 2026-10-24)