Skip to content
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

air.channel.put/get ops are not able to lower through air-to-aie if memref is not produced directly by memref.alloc #707

Open
erwei-xilinx opened this issue Aug 13, 2024 · 2 comments

Comments

@erwei-xilinx
Copy link
Collaborator

Unlike air.dma_memcpy_nd which has air-copy-to-dma folding its src/dst side memref chain---consisting of memref.subview, memref.transpose, or memref.expand_shape---into its wrap-and-stride list, air.channel.put/get, if having src/dst side memref produced by any of those memref ops, will fail at air-to-aie. This is because air-to-aie assumes that any memref op chain at src/dst were already folded to wraps and strides prior to this point.

This won't affect code progressively compiled from memref.copy via air.dma_memcpy_nd; it shall affect user handwritten code.

@erwei-xilinx
Copy link
Collaborator Author

Currently being handled with a slightly more informative failure: #706

Might be possible to make this work with some canonicalizer to air.channel.put/get to handle this scenario.

@erwei-xilinx
Copy link
Collaborator Author

Update on this issue: this could be fixed by rewriting the condenseMemrefDataReorderingToAIRDma as a canonicalizer. Related PR: #744 Thanks, @fifield!

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

No branches or pull requests

1 participant