Regarding to changing the `DLDataType`, I can see how it could have a wide 
disruptive impact. Scalable vectors are here to stay though, so could be a way 
to future proof `DLPack` standard? 🤷‍♀️ 

One of the main problems we have with using -1 to denote scalable vectors is 
that it doesn't capture all information. E.g. if we want to set the `lanes` of 
the `Ramp` to `8 * vscale()` (or `vscale(8)`), what's the `lanes` in 
`DataType`/`DLDataType` going to be?

1. **-1**: it's impossible to recover from this what was the "multiplier" (in 
this example 8), so runtime data type does not have all the information. Quite 
a lot of the stack (especially codegen) relies on checking the lanes from the 
`DataType` object. 
2. **-8**: captures all the information, but we think it's awful 🙈 

> One way to limit the scope of the change might be to introduce a distinction 
> between the runtime DLDataType, and some new compile-time data-type. 

How do you feel about extending `tvm::runtime::DataType` to hold some 
information about the scalability? From what I can see, it is just a wrapper 
around `DLDataType` plus some helper functions. We could add a field there to 
indicate if it is scalable vector. How disruptive would that be? I suppose we'd 
have the problem of the `DLDataType` not holding the information about the 
scalability, but I'm not sure if that would be very important.

-- 
Reply to this email directly or view it on GitHub:
https://github.com/apache/tvm-rfcs/pull/104#issuecomment-1757833764
You are receiving this because you are subscribed to this thread.

Message ID: <apache/tvm-rfcs/pull/104/c1757833...@github.com>

Reply via email to