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

Configure AIE through control packets #714

Open
jtuyls opened this issue Aug 28, 2024 · 3 comments
Open

Configure AIE through control packets #714

jtuyls opened this issue Aug 28, 2024 · 3 comments
Assignees

Comments

@jtuyls
Copy link
Collaborator

jtuyls commented Aug 28, 2024

As enabling general AIE configuration through control packets will be a heavy lift, I intend to approach this in phases:

  1. As an initial POC, use control packets to program shim DMAs.
  2. Use control packets to program Memtile DMAs and cores (DMAs + PM) (in addition to shim)
  3. Use control packets to program stream switches?? (in addition to shim, memtile, cores)

For the initial POC to program shim DMAs using control packets, I believe the following pieces will be needed:

  1. Some initial support for packet routing (at least between L3 and L2) so channels can be shared between control packets and data. Without this, there won't be enough Shim channels to do both. This will require some changes to AMDAIEStatetfulTransform to enable packet flows. As we're trying to get rid of this pass and AIE dialect ops, I will try to extract the flow logic from it so that the necessary transformations for enabling packet flows can be done on AMDAIE ops. Therefore, the following changes will be needed:
  2. A way of providing preconfigured control packet routes and taking the union of the control packet and data packet routes into account while assigning resources, routing, etc.
  3. New logic to lower shim DMA instructions to control packets (see Configure AIE using control packets Xilinx/mlir-aie#1728)

After this initial POC, I will move on to phases 2 and 3.

Resources:

@jtuyls jtuyls self-assigned this Aug 28, 2024
@makslevental
Copy link
Collaborator

The router will need to be updated again (well depending on how much we're gonna copy paste from mlir-aie).

@jtuyls
Copy link
Collaborator Author

jtuyls commented Aug 28, 2024

The router will need to be updated again (well depending on how much we're gonna copy paste from mlir-aie).

Yeah, I was wondering about this. What changes would be needed in the router?

@makslevental
Copy link
Collaborator

makslevental commented Aug 28, 2024

Yeah, I was wondering about this. What changes would be needed in the router?

Some of this stuff https://github.com/Xilinx/mlir-aie/pulls?q=is%3Apr+is%3Aclosed+author%3AYu-Zhewen (starting with Xilinx/mlir-aie#1643).

jtuyls added a commit that referenced this issue Oct 2, 2024
This PR introduces the `amdaie.flow` operation (in consistency with
`aie.flow`). This operation represents connections between
ports/channels on tiles in the array and is lowered to `aie.flow` for
routing. This idea is to lower `amdaie.connection` to `amdaie.flow` +
DMA operations, however this PR goes halfway by creating `amdaie.flow`
operations, while still keeping a reference inside `amdaie.connection`
as the latter is still needed inside `LowerToAIE` for lowering to the
AIE dialect DMA operations. This will be cleaned up in the future, but
for now, this enables me to start adding routes for control packets in
conjunction with data routes for
#714.
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

2 participants