Not in the top 1,000 by GitHub stars

mit-han-lab/ncu-report-skill

History

Review weekly changes to SKILL.md before updating. Dates mark the weeks in which we observed each version; checks apply to the recorded commits.

View weekly changes

SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

c7980a43cb88 → c7980a43cb88

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → c7980a43cb88

No earlier version was observed for comparison.

Compare on GitHub

View on GitHubAdd to my skills

Verified commit c7980a43cb88a8734d113b22b57ff66746cf5719

274GitHub stars
7stars in 7 days
1skill in this repository
8commits in 30 days

Heat

4.8
  • Star growth, last 7 daysNot available
  • Star growth, last 24 hoursNot available
  • Rank movement, last 7 daysNot available
  • Commits, last 30 daysNot available
  • Accounts asking about it through MCP, last 7 daysNot available
  • Hot votes this weekNot available

Heat never changes the order by stars, and sponsorship never touches it. How heat works

Stars over time

Oct 25, 2026Nov 4, 2026274

30-day change not yet available: not enough history.

Individual skills in this repository

How it works

ncu-report-skill

When your agent uses it

Use before deciding how to optimize a CUDA kernel (hand-written CUDA, Triton, CUTLASS/CuTe), when a kernel is slower than expected, and whenever you are about to run Nsight Compute (ncu) or read its output — instead of guessing at the bottleneck, writing your own profiling script, or reading ncu's console tables by eye. One ncu collection, then helpers that extract key metrics, NCU's rule results, per-line stalls (inlined CUTLASS/CuTe/Triton code included) and PM timelines, and a playbook from signals to fixes. Also when a user asks to profile a kernel, read an ncu report or write an optimization plan ("profile 一下", "为什么慢", "ncu 报告"). Written for ncu 2026.3 on Blackwell (B200 / B300) and other NVIDIA GPUs.

What it loads into context

Frontmatter

194 tokens

Always available to the agent

SKILL.md

2,841 tokens

When the skill is activated

Reference documents

48,322 tokens

Loaded on request

Token counts are estimates. Scripts run separately; they are not counted as reference context.

The playbook

  1. Golden rule
  2. Quickstart (what to do when someone says "profile this kernel")
  3. Where the GPU is
  4. File index
  5. Critical lessons (don't skip)
  6. Related skills

Scripts executed separately

  • helpers/analyze_reports.py
  • helpers/extract_stall_hotspots.py
  • helpers/list_flashinfer_workloads.py
  • helpers/ncu_utils.py
  • helpers/plot_timeline.py

Files

  • .gitignoreasset391 bytes
  • LICENSEasset1,063 bytes
  • README.mddoc7,283 bytes
  • SKILL.mdcore11,700 bytes
  • SKILL.mdcore11,700 bytes
  • SKILL.mdcore11,700 bytes
  • SKILL.mdcore11,700 bytes
  • SKILL.mdcore11,700 bytes
  • SKILL.mdcore11,700 bytes
  • SKILL.mdcore11,700 bytes
  • blackwell-cuda-programming.mddoc45,341 bytes
  • helpers/README.mddoc3,284 bytes
  • helpers/analyze_reports.pyruns6,037 bytes
  • helpers/extract_stall_hotspots.pyruns11,279 bytes
  • helpers/harness_template.cuasset7,801 bytes
  • helpers/list_flashinfer_workloads.pyruns11,386 bytes
  • helpers/ncu_utils.pyruns23,813 bytes
  • helpers/plot_timeline.pyruns8,802 bytes
  • helpers/safetensors_loader.hasset6,801 bytes
  • reference/00-directory-layout.mddoc7,930 bytes
  • reference/01-workflow.mddoc10,556 bytes
  • reference/02-harness-guide.mddoc14,370 bytes
  • reference/03-collection.mddoc12,423 bytes
  • reference/04-python-api.mddoc12,264 bytes
  • reference/05-analysis-dimensions.mddoc17,785 bytes
  • reference/06-diagnosis-playbook.mddoc17,769 bytes
  • reference/07-report-template.mddoc6,583 bytes
  • reference/08-metric-names.mddoc13,409 bytes
  • reference/09-common-issues.mddoc12,844 bytes
Read SKILL.md

# Skill: CUDA Kernel Profiling (Nsight Compute)

**When to use:** before choosing what to optimize in a GPU kernel (CUDA C++, Triton, CUTLASS/CuTe), when a kernel is slower than its budget or baseline, after a change whose effect you do not understand, and every time you are about to run `ncu` or read a report — so the bottleneck comes from measurements, not guesses. Also when someone asks to profile a kernel, find its bottlenecks, read an ncu report or write an optimization plan ("profile X", "为什么这个 kernel 慢", "ncu report 说...", "下一步怎么优化", "帮我看一下这份 ncu 报告").

**Written for:** Nsight Compute 2026.3.1, the newest release (it also reads reports of older versions), on Blackwell — B200 (sm_100) and B300 (sm_103), 148 SMs each. A CUDA toolkit bundles the ncu of its release (CUDA 13.2: 2026.1.1); newer ones are separate installs (NVIDIA's CUDA package repositories carry `nsight-compute-<version>`, and the toolkit's `ncu` launcher runs the newest installed). Most advice is generic; GPU- or version-specific notes say so. ncu's flags, sets and metric names change between releases: `ncu --version`, `ncu --help`, `ncu --list-sets` and `ncu --list-sections` are the authority when something here does not match what you have.

---

## Golden rule

**Profile → Diagnose → Plan, in that order. Never guess.**

Most under-performing CUDA kernels are under-performing for exactly one reason that ncu can tell you in 10 seconds. Don't invent hypotheses before you have the report. Don't start coding a fix before you've matched the observed pattern to a known diagnosis. Don't write a wall of suggestions — rank them by evidence and expected impact.
View the complete source on GitHub

Skills included

  • ncu-report-skill

Repository facts

License
MIT
Created
Apr 13, 2026
Last pushed
Oct 14, 2026
Forks
39
Open issues
1
Project activity
Active

Before you install

Network or broad shell

Automated signals, not a guarantee

Checked Nov 6, 2026

Not fully analyzed: some files were too long, unreadable or missing. This never lowers the level.

Show 6 notes
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
Show all 28 signals by file

README.md

  • Network accessline 2
    > [!IMPORTANT] > This skill is maintained as a standalone submodule of > [Kernel Design Agents (KDA)](https://github.com/mit-han-lab/kernel-design-agents)
  • Network accessline 3
    > This skill is maintained as a standalone submodule of > [Kernel Design Agents (KDA)](https://github.com/mit-han-lab/kernel-design-agents) > for easy installation.
  • Network accessline 4
    > [Kernel Design Agents (KDA)](https://github.com/mit-han-lab/kernel-design-agents)
  • Network accessline 6
    > > For bug reports, feature requests, and discussions, please use the main KDA repository: > https://github.com/mit-han-lab/kernel-design-agents
  • Network accessline 8
    > https://github.com/mit-han-lab/kernel-design-agents
  • Network accessline 62
    # Clone somewhere stable git clone https://github.com/mit-han-lab/ncu-report-skill.git ~/workspace/ncu-report-skill
  • Network accessline 63
    git clone https://github.com/mit-han-lab/ncu-report-skill.git ~/workspace/ncu-report-skill
  • Network accessline 82
    git clone https://github.com/mit-han-lab/ncu-report-skill.git /tmp/ncu
  • Network accessline 90
    cd /path/to/other-repo git submodule add https://github.com/mit-han-lab/ncu-report-skill.git .claude/skills/ncu-report-skill
  • Network accessline 91
    git submodule add https://github.com/mit-han-lab/ncu-report-skill.git .claude/skills/ncu-report-skill

SKILL.md

  • Dangerous shell operationline 51
    ncu locks the GPU clock for every profiled kernel by default, which keeps reports comparable: at boost in ncu 2026.1–2026.3 (`--clock-control boost`; older versions default to `base`, which on a B300 runs kernels ~1.7x slower). `ncu --help`

helpers/analyze_reports.py

  • Executable scriptline 1
    #!/usr/bin/env python3

helpers/extract_stall_hotspots.py

  • Executable scriptline 1
    #!/usr/bin/env python3

helpers/list_flashinfer_workloads.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Access to secretsline 46
    [Credential-related source omitted]

helpers/ncu_utils.py

  • Executable scriptline 1
    Executable file

helpers/plot_timeline.py

  • Executable scriptline 1
    #!/usr/bin/env python3

reference/01-workflow.md

  • Dangerous shell operationline 56
    # 5. Permissions. ncu usually works without sudo (RestrictProfilingToAdminUsers is 0

reference/03-collection.md

  • Dangerous shell operationline 235
    sudo nvidia-smi -lgc <mhz>,<mhz>
  • Dangerous shell operationline 237
    sudo nvidia-smi -rgc

reference/08-metric-names.md

  • Network accessline 142
    l1tex__t_requests_pipe_lsu_mem_global_op_ld.sum                    # LD request count l1tex__t_requests_pipe_lsu_mem_global_op_st.sum                    # ST request count # sectors/request = sectors.sum / requests.sum (ideal: 4 / 8 / 16 fo
  • Network accessline 143
    l1tex__t_requests_pipe_lsu_mem_global_op_st.sum                    # ST request count # sectors/request = sectors.sum / requests.sum (ideal: 4 / 8 / 16 for 4- / 8- / 16-byte loads per thread) smsp__sass_average_data_bytes_per_sector_mem_glo
  • Network accessline 144
    # sectors/request = sectors.sum / requests.sum (ideal: 4 / 8 / 16 for 4- / 8- / 16-byte loads per thread)

reference/09-common-issues.md

  • Dangerous shell operationline 13
    **A) Use sudo (simplest on dedicated servers):**
  • Dangerous shell operationline 15
    sudo ncu [...]
  • Dangerous shell operationline 20
    sudo sh -c 'echo "options nvidia NVreg_RestrictProfilingToAdminUsers=0" > /etc/modprobe.d/ncu.conf'
  • Dangerous shell operationline 21
    sudo update-initramfs -u
  • Dangerous shell operationline 194
    sudo nvidia-smi -pm 1

How the signals fit together

Facts from a static read of the files at the pinned commit. They describe what the code does, not why.

Signal confidence: 28 facts

Works with

Agent compatibility, from the files in this repository
AgentStatusEvidenceInstall to
Claude CodeCompatibleStandard SKILL.md SKILL.md.claude/skills/<skill-name>/
CodexCompatibleStandard SKILL.md SKILL.md.agents/skills/<skill-name>/
CursorCompatibleStandard SKILL.md SKILL.md.cursor/skills/<skill-name>/
Gemini CLICompatibleStandard SKILL.md SKILL.md.gemini/skills/<skill-name>/
GitHub CopilotCompatibleStandard SKILL.md SKILL.md.github/skills/<skill-name>/
OpenCodeCompatibleStandard SKILL.md SKILL.md.opencode/skills/<skill-name>/
  • Native The repository ships a manifest, folder or frontmatter field for this agent.
  • Compatible A standard SKILL.md that this agent can read.
  • Unknown No evidence either way.

Derived automatically from paths, manifests and frontmatter. Not tested on each agent.