-
Notifications
You must be signed in to change notification settings - Fork 53
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
Deprecate static
attribute
#1429
Comments
@paili0628 can correct me if I'm wrong, but I think |
One thing I was wondering: how should frontends generate Calyx, with the But if there isn't, do we want to generate |
We talked about (but don't have an open issue) on another attribute called The other option is exposing the |
Sounds good, I can try to think about this some more and we can discuss in the Calyx meeting next Monday. |
Just as a little preparation for this upcoming synchronous meeting: @calebmkim's proposal along these lines makes sense to me:
It makes sense to me for frontends to do this (i.e., generate static "leaves" with a plain dynamic "tree"). Basically, it seems to me like static control inference works well enough that it's not clear why a frontend would ever need to generate a I could be wrong, but I think the excuse we would need to implement an externally-supported |
We've had a few synchronous discussions since this post, so I'm going to try to summarize the basic takeaways/calls to action from them. Separating Inference and PromotionWe want to separate Compaction goes in between inference and promotion.Once we have done that, we may want to insert
Names of AttributesThe proposal above suggests using |
@calebmkim can we also summarize the discussion between the |
Sure; iirc the context of this discussion was figuring out how to provide the timing guarantees of static programs with the rescheduling capabilities of dynamic programs. And there are two ways to represent a Calyx program that can do this: either by a) providing an attribute to dynamic programs, or b) a There is also a separate question about Calyx programs what frontends should emit. Obviously, if they want full control of the schedule, then they should use the In the calyx-static meeting, @sampsyo suggested that we treat Anything else you wanted to have down here? |
@calebmkim can we update this w.r.t. #1897? |
Sure, I've checked the boxes I've updated. Couple notes:
I think we can probably close the issues if this sounds good to you? |
Awesome! Looks like this issue is completed then? Maybe we need to update the docs for mentions of |
Sure, I can update docs |
With the new
static
primitives in place, this issue is ready to be addressed. However, it is a quite pervasive change and needs a little bit of coordination:@latency
attribute to mark the latency of primitive interfaces. This is needed because, as discussed in rethink about the static interface #1754, primitives can efficiently support both static and dynamic interfaces.@static
attribute deprecated and start emitting warnings whenever it is parsed by the frontend.ir::NumAttr::Static
from the attribute set.attr-promotion
pass (not sure what is does and why it needs to exist)static-promotion
passcompute-static
analysisThis is a major task for next semester. @calebmkim, @paili0628, and I will work on it.
Original text:
Once the transition to static groups and control is completed, we should deprecate the existing
"static"
attribute completely and remove/change passes that make use of it. One big blocker that requires coordination with @andrewb1999 is changing the CIRCT frontend to not use the static attribute anymore.The text was updated successfully, but these errors were encountered: