NVIDIA / NVIDIA/cutlass

[CuTeDSL] Tiler with `None` entry

Open
#3,350 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

inactive-30d
Dominant language
C++
Stars
10.5k
Forks
2.1k
Avg merge
3d 11h
Merged PRs (30d)
7

Description

When doing by-mode zipped_divide by using tiler, we can pass None as tiler entry, but what's the meaning?

Inspired by syntax of None in slicing OP, I expect that it means choose the mode as a single tile, no matter how big its size is. such as:

a = cute.make_layout((64,50),stride = (100,1))

assert cute.zipped_divide(a, (32,None)) == cute.zipped_divide(a, (32,50))

but in cute, we got an error:

         ((32,2),50):((100,3200),1)
loc("print(\22\\t\22, cute.zipped_divide(a, (32,None)))"("/root/test.py":10:16)): error: failed to perform a valid division of '!cute.layout<"(64,50):(100,1)">' by #cute.tile<"[32:1;_]">

and in pycute we got the same effect as tiler (32,1)

 pycute.zipped_divide(a, (32,None)) == pycute.zipped_divide(a, (32,1))  # instead of pycute.zipped_divide(a, (32,50))

if None is the same as 1, why bother support it? makes me wonder if the order of modes in this lineshould be switched? after switch it I got expected result.

So, what I missed? how should I do when I want to skip tiling a mode (I mean choose whole mode as one big tile, not many size-1 tiles) ?

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with python/pycute/layout.py at the linked line and reproduce the two zipped_divide examples using the shown layout. Compare how None is interpreted in pycute and CuTeDSL, especially the mode-ordering behavior, and determine the documented or intended way to leave a mode as one whole tile. Done means the None semantics and the correct operation are clarified, with behavior aligned if a defect is confirmed.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
api
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
52/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.