tilegym-converting-cutile-to-julia

Converts cuTile Python GPU kernels into cuTile.jl Julia equivalents with validation and testing.

3.2k|370|Updated Feb 25, 2026
One-click install
npx skills add https://github.com/NVIDIA/skills --skill tilegym-converting-cutile-to-julia
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: tilegym-converting-cutile-to-julia
Source: https://github.com/NVIDIA/skills/tree/main/skills/tilegym-converting-cutile-to-julia
Command: npx skills add https://github.com/NVIDIA/skills --skill tilegym-converting-cutile-to-julia

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes scripts (resource) and references (resource) components.

What problem does it solve?

Porting cuTile Python GPU kernels (@ct.kernel) to Julia's cuTile.jl involves many subtle differences — 0-indexed vs 1-indexed indexing, row-major vs column-major memory layout, broadcasting rules, type system mapping, and launch API changes — that silently produce wrong results or compiler errors if missed.

Core Features & Use Cases

  • Guided Conversion Workflow: A phased workflow covering pre-flight analysis, kernel signature and body conversion, test writing, static validation, and test execution.
  • API Mapping & Critical Rules: Bidirectional Python↔Julia API tables plus 17 critical rules covering indexing, broadcasting, reductions, memory layout, and ct.load order remapping.
  • Static Validation Script: A bundled Python validator (scripts/validate_cutile_jl.py) that flags anti-patterns like ct.full(), ct.bid(0), .astype(), and missing return statements.
  • Use Case: An engineer porting a softmax kernel from cuTile Python to cuTile.jl follows the workflow, applies the API mapping, validates the .jl file, and runs Julia-native tests against NNlib.jl references.

Quick Start

Ask your agent to convert a specific cuTile Python kernel file to a cuTile.jl Julia kernel and validate it with the bundled validator script.

Frequently Asked Questions about tilegym-converting-cutile-to-julia

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I convert a cuTile Python kernel to Julia cuTile.jl?

Follow the phased workflow: analyze the Python kernel, write a Julia kernel in julia/kernels/, convert the signature and body using the API mapping and critical rules, write a Julia test, then validate with scripts/validate_cutile_jl.py and run julia --project=julia/ julia/test/runtests.jl.

What are the biggest differences between cuTile Python and cuTile.jl?

Julia uses 1-based indexing (ct.bid(1) not ct.bid(0)), column-major memory layout, explicit broadcast dots (max.(a,b), a .* b), Julia type names (Float32 not ct.float32), and ct.Constant wrapping at launch rather than in the kernel signature.

Why does my Julia cuTile kernel fail with IRError: Unsupported function call: max?

This error occurs when calling max(a, b) on two tiles without broadcast syntax. Use max.(a, b) with the broadcast dot, the same as regular Julia arrays. The same fix applies to min(a, b).

Does cuTile.jl support ct.full() or ct.zeros() like Python?

No, ct.full() and ct.zeros() do not exist in cuTile.jl. Use Julia Base overlays instead: fill(val, shape), zeros(Float32, dims...), or ones(Float32, dims...) to construct tiles.

What hardware and software are required to run converted Julia cuTile kernels?

You need Julia at the version declared in julia/Project.toml, a CUDA 13.1+ driver, and a Blackwell GPU (compute capability 10+). Dependencies including CUDA.jl, cuTile.jl, and NNlib.jl are managed via julia/Project.toml.

How are Julia cuTile kernels tested compared to Python?

Julia kernels use the native Test stdlib, not pytest. Tests live in julia/test/, compare against NNlib.jl or manual CPU references with dtype-appropriate tolerances, and run via julia --project=julia/ julia/test/runtests.jl.