How do we continue from here?
Assuming that there is a general interest in having a streaming abstraction, there are three ways of continuing this work.
Option 1: Continue as a standalone project
Instead of integrating the dialect in one of the existing projects, the development can continue as a standalone project that depends on MLIR and CIRCT. This approach gives the project high flexibility as we can design the dialect without the concerns of other parts of the community. On the other hand, this might end up in a product that doesnât align with the communityâs goals and will potentially end up unused.
Option 2: Adding the dialect to CIRCT
One option to interact with the community is to add the dialect to CIRCT. Currently, the only lowering implemented targets the handshake dialect, a dynamic HLS dialect. By bringing other HLS-focused dialects and lowerings into CIRCT, the project might motivate more research groups to contribute their work to this ecosystem. I understand that this might be a stretch of CIRCTâs goals and could cause an unwanted dialect explosion.
The problem I do see here is the fact that lowerings to other targets, e.g., CPUs and GPUs, are not something related to CIRCT. Providing a âgeneralâ streaming abstraction that can only target hardware seems an unnecessary limitation. One could also try to push the dialect forward in CIRCT and later âgraduateâ it by moving it into MLIR.
Option 3: Adding the dialect to MLIR
Ideally, such a dialect would directly land in MLIR as it allows all kinds of users to target it while also enabling a variety of backends. In this case, the stream-to-handshake
transformation could be a part of CIRCT while the input dialect is not, similar to std-to-handshake
.
At this point, I do not have plans to implement lowering from the stream dialect to CPU or GPU abstractions. Although I would be interested to work on these, the thesis project is my current priority. I fear that without someone that plans to implement these lowerings, the MLIR community will not accept such a contribution. I can create an RFC for the MLIR community, but I would first like your feedback on this.
Note: I talked to @shraiysh, and he would be interested in playing around with this, but he cannot commit to such a large task. Feel free to correct me Shraiysh
Any thought on this?