Skip to content

[FEAT] Add cuTile interpreter and tracing support - #499

Open
pd-hung wants to merge 3 commits into
mainfrom
cutile-support
Open

pd-hung wants to merge 3 commits into
mainfrom
cutile-support

Conversation

@pd-hung

@pd-hung pd-hung commented Oct 10, 2026

Copy link
Copy Markdown
Collaborator

This change does not include TileBench

Summary

  • Adds the cuTile CPU interpreter.
  • Connects cuTile to the shared tracing frontend.
  • Adds a matmul example with visualization.
  • Adds cuTile setup and usage instructions.

Test Plan

  • Unit tests in tests/cutile/test_cutile.py.
  • Integration tests in tests/cutile/test_cutile_tracer.py, covering kernel execution, trace save/load, and visualizer APIs.
  • Tested against TileBench across all 45 operators, all passed.
  • All unit, cuTile tests passed.

Related Issues

None.

Breaking Changes

None.

Checklist

  • I added tests to all new functionality I added/bugs I fixed.
  • I verified that a human has reviewed all code in this PR.
  • I ran npm run build:frontend if the PR modified any TypeScript code.
  • I made sure that my code is well documented (comments explaining strange code, docstrings for functions, website modified if new functionality added).

@pd-hung
pd-hung requested a review from mark14wu October 10, 2026 02:48
@pd-hung

pd-hung commented Oct 10, 2026

Copy link
Copy Markdown
Collaborator Author

I’ll start resolving the merge conflicts and update the cuTile implementation to use the new tilelens.

@pd-hung pd-hung changed the title Cutile support [FEAT] Add cuTile interpreter and tracing support Oct 10, 2026
@github-actions

Copy link
Copy Markdown

Performance Benchmark

Benchmark main (min) PR (min) Change Samples
gemm 0.074s 0.074s +0.3% 20 / 20
gemm_oob 0.083s 0.083s -0.3% 20 / 20
indirect_load 0.015s 0.015s -0.3% 20 / 20
nested_loop 0.153s 0.153s -0.1% 20 / 20
block_pointer_loop_advance 0.087s 0.087s -0.2% 20 / 20
liger_jsd 0.102s 0.102s +0.2% 20 / 20
flaggems_layernorm 0.267s 0.268s +0.2% 20 / 20
swiglu 0.124s 0.125s +0.3% 20 / 20
cross_entropy 0.695s 0.698s +0.5% 20 / 20
fused_linear_jsd 0.156s 0.156s -0.3% 20 / 20
Total 1.756s 1.760s +0.2% N/A

Iterations: 1 warmup + 20 measured
Samples are shown as main / PR; long pytest benchmarks may use fewer samples.

@Jokeren Jokeren left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please add end to end tests

run: |
cd tilelens
uv sync --extra test
uv sync --extra test --extra cutile

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

cutile can be a default dependency

Comment thread docs/index.html
<h1>Analyze and debug your tile-based DSL kernels</h1>
<p style="display: block; font-size: 0.95rem; color: var(--text-muted); margin-top: -1rem; margin-bottom: 2.5rem;">
Note: Triton is the default DSL frontend; Amazon NKI support is optional and in active development.
Note: Triton is the default DSL frontend; Amazon NKI and NVIDIA cuTile support is in active development.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We could make cuTile default if you're confident

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants