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

Systolic Generation Optimization #1760

Merged
merged 12 commits into from
Nov 7, 2023
Merged

Systolic Generation Optimization #1760

merged 12 commits into from
Nov 7, 2023

Conversation

calebmkim
Copy link
Contributor

Optimizes Systolic Array Generation:

  • Data that is passed between registers are continuous assignments now, rather than being scheduled. As long as we pass the from memories into these registers in at the right time, and the PEs read from them at the write time, we are fine (i.e., they will pass garbage but the garbage will never be read)
  • Also, simplified the schedule for invoking PEs by directly sending a signal into the mul_ready port.

@calebmkim
Copy link
Contributor Author

Merging this; I'll address any comments later.

Initial experiments show this can reduce LUT usage.

@calebmkim calebmkim merged commit e7ead0c into master Nov 7, 2023
@calebmkim calebmkim deleted the systolic branch November 7, 2023 18:08
@rachitnigam
Copy link
Contributor

Awesome! Worth pointing out in the paper that this is only possible because of static operators (if you think this argument is true). Specifically, in a dynamic control program, we don't know when the registers will be read so we cannot do these continuous assignments because we might read garbage values.

rachitnigam pushed a commit that referenced this pull request Feb 16, 2024
* better systolic array

* cleaner code

* small chnage

* metadata format

* remove getters

* flake8

* sort for testing

* plz work

* does this work

* simple sort

* another try

* plzzzz workkk
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

Successfully merging this pull request may close these issues.

2 participants