-
Notifications
You must be signed in to change notification settings - Fork 31
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Hoisting transpose operation #90
Comments
cc: @stevenvar |
Thanks for your Q, this is a missing feature that is being pushed back into our stack of shorter term things thanks to recent developments. There are a few things intersecting here but a rough summary is:
I think 4. is realtively easy to get started on as far as extending the op semantics/verification/tests and tracking uses to ensure transformations fail in the presence of this permutation_map. Do you guys want to take ownership of point 4. and starting working on core MLIR patches? |
Hi Nicolas, thanks for the answer. Yes, @stevenvar is having a look at this. We saw two possibilities: Do you think that a) is the wrong way to go (or it is harder to do than b) )? About your point 1., do you mean x86 has got a |
I don't think a) is wrong in itself but def. harder given the state of the world and there are also tradeoffs + composability differences:
There is an instruction |
Thanks a lot for all the explanation. So yes, we can take ownership of point 4. |
Hi @nicolasvasilache , all,
Before I adventure in writing a pass, I was wondering if you guys already thought about how transposition is handled in the code.
How (I think) transposition is handled in the current code
During packing:
memref<?x?x?xKx1>
In the micro-kernel
Kx1
buffervector.transpose
to have our1xK
vectorouterproduct
Is this what we are doing, or am I missing something?
What I would like to have
Is it possible to hoist the
vector.transpose
in the packing phase? I.e., :During packing:
vector.transpose
and store in a buffer of typememref<?x?x?x1xK>
In the micro-kernel:
vector.load
from the1xK
bufferouterproduct
Is this something hard to do?
Thanks,
Giuseppe
The text was updated successfully, but these errors were encountered: