Matrix Multiplication Cascade Programming Example #2271
-
In the MLIR-AIE dialect, the aie.cascade_flow sets the cascade connection between tiles. However, in the cascade programming example, it doesn't seem to be setting the cascade flow, so it's unclear how the cascade connection is being set--is it implicit somehow? When I build the application, the generated MLIR also doesn't show the use of the cascade_flow operator. Moreover, in the kernel code, data is being written to the cascade stream, but there's also a third argument in the function call that doesn't seem to be used. Is that third argument contributing at all to the functionality of the application, and how is the compiler able to know which direction the cascade stream is supposed to flow (i.e. North to South, or West to East) without the cascade_flow operator? |
Beta Was this translation helpful? Give feedback.
Replies: 1 comment 3 replies
-
@kurtis-b It would be helpful if you link in the specific example you're referring to so if there's any errors, we can fix it.
|
Beta Was this translation helpful? Give feedback.
@kurtis-b Yes, you're right, there is no explicit cascade flows in this design and this is on us to create a design to highlight how to do cascade flows in python. The reason the cascade matmul design doesn't show cascade flows and doesn't lower to cascade flows is because it's leveraging the fact the hardware default for cascade flow is down a column. The cascade matmul does exactly that, and as long as the tile putting data onto the cascade stream is above the one getting the data from the cascade stream, it will just work out of the box. This is the default setting for the cascade control mux. This is not helpful for designers looking to be explicit about this connection or to create m…