cutedsl-kernel-integration
bởi nvidia
Use when integrating a CuTeDSL/CUTE DSL kernel into cuDNN Frontend as a frontend-only Python API, including APIBase wrappers, lazy cudnn exports, optional…
npx skills add https://github.com/nvidia/cudnn-frontend --skill cutedsl-kernel-integrationCuTeDSL Kernel Integration
Use this skill to add or update a CuTeDSL frontend-only API in cuDNN Frontend. The goal is a complete integration: Python API, wrapper, exports, docs, and tests.
Before Editing
- Inspect the current repo state and avoid overwriting unrelated changes.
- Confirm every original source file needed for the integration is available. If a source file is missing, report that gap instead of inferring its contract from a related kernel.
- Record source provenance when it is available: upstream URL, local source path, commit, and which files map to public API modules versus private helpers.
- Classify the kernel before choosing a template:
- Kernel family: dense GEMM, GEMM fusion, grouped GEMM, discrete grouped GEMM, MoE, attention, sparse attention, or another frontend-only API family.
- Execution topology: single kernel, paired forward/backward APIs, multi-kernel orchestrator, helper-kernel setup, distributed/runtime-coordinated execution, or internal scheduler.
- Public surface: class API, high-level wrapper, returned tensors, optional outputs, workspace ownership, and import/export namespace.
- Internal support: source helper modules, schedulers, metadata utilities, and generated descriptors that must stay private to the package.
- Read
references/integration-pattern.mdfor the detailed repo conventions before implementing.
Integration Workflow
- Add or update the operation package under the closest existing family, such as
python/cudnn/<operation>/,python/cudnn/grouped_gemm/<operation>/,python/cudnn/discrete_grouped_gemm/<operation>/, orpython/cudnn/sdpa/<direction>/. - Implement the class API by extending
APIBase; keep constructor descriptors,check_support(),compile(), andexecute()consistent with the closest template. - Add a high-level wrapper that allocates outputs, caches/reuses compiled kernels where the template does, and returns a
TupleDict. - Export the public class and wrapper through the operation/family
__init__.pyfiles and_LAZY_OPTIONAL_IMPORTSinpython/cudnn/__init__.py. - Reuse the existing
cutedsloptional dependency unless the new kernel truly needs an additional package. - Add FE OSS documentation and update the relevant overview or operation index links.
- Add tests under
test/python/fe_api/, including support validation and numerical/reference coverage when executable. - For grouped/discrete/MoE/SDPA kernels, preserve the source helper and scheduler topology; shared helper modules should be internal package files, not public
cudnnexports.
Verification
- Run focused formatting or tests for the files changed.
- At minimum for skill-only edits, verify this
SKILL.mdhas valid frontmatter and all referenced paths exist. - For kernel integrations, run the relevant
pytest test/python/fe_api/test_<operation>.pytarget when the environment has the required GPU and optional dependencies; otherwise report the skipped verification explicitly.