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

Multicore convolution #821

Open
newling opened this issue Oct 3, 2024 · 2 comments
Open

Multicore convolution #821

newling opened this issue Oct 3, 2024 · 2 comments

Comments

@newling
Copy link
Contributor

newling commented Oct 3, 2024

Convolutions currently target a single AIE core. This is because targetting multiple cores results in

error: 'aie.memtile_dma' op could not find and assign a valid BD id

See #789

This task is to make the required changes to be able to compile to multiple AIE cores.

@newling newling changed the title Mulitcore convolution Multicore convolution Oct 3, 2024
@newling
Copy link
Contributor Author

newling commented Oct 8, 2024

Update:

I can use a full column of 4 AIE cores with (for conv2d)

 tileSizeLevel0 = {1, 1, OW, 4*OC, 0, 0, 0}; 
 tileSizeLevel1 = {1, 1, OW, OC, 0, 0, 0}; 

The above error message is then observed when this is extended to multiple columns:

 tileSizeLevel0 = {1, 2, OW, 4*OC, 0, 0, 0}; 
 tileSizeLevel1 = {1, 1, OW, OC, 0, 0, 0}; 

@newling
Copy link
Contributor Author

newling commented Oct 8, 2024

Update:

The problem is that there are these dma start ops which have "index" gte 6:

  %13 = aie.dma_start(S2MM, 7, ^bb40, ^bb42)   

They are created in lower-to-aie.

newling added a commit that referenced this issue Oct 9, 2024
This PR switches all numerical convolution tests to use the objectFifo
pipeline. With respect to the new tiling strategy:

1) A single **column** is currently used. Targeting multiple columns
results in ` error: 'aie.memtile_dma' op could not find and assign a
valid BD id`. This will will be investigated as follow-up work:
#821

2) There is no longer interleaving of compute and L2->L1 data movement,
which means #619 becomes
low priority / obsolete

3) L3->L2, L2->L3 still uses padding. But L2->L1, L1->L2 uses packing. 

4) Channel-first convolution is completely unsupported, we expect high
level transforms to convert to channel last before reaching our backend.

5) Vectorization is not currently enabled, due to issues with alignment.
See follow-up task #820.
This is functionally ok for now, as peano can scalarize code for all
data types.
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