calyxir / calyx

Intermediate Language (IL) for Hardware Accelerator Generators
https://calyxir.org
MIT License
469 stars 46 forks source link

[Fud2] Cider is the default for `--to dat` computations #2208

Open EclecticGriffin opened 1 month ago

EclecticGriffin commented 1 month ago

It should probably be verilator for the sake of matching the original fud and for overall stability

sgpthomas commented 1 month ago

I think defaults are decided based on the order that they are added. I think that the right solution to this problem is being able to explicitly declare priorities of operators. So that it doesn't depend on something rather opaque.

EclecticGriffin commented 1 month ago

Yeah I agree with that approach

sampsyo commented 1 month ago

We definitely need a way to do something about this so that the default paths are more obvious & predictable. The tracker (#1878) mentions priorities as a way about this, and it links to #1873 for further discussion. I will link the tracker to this issue as well as a specific instance of the prioritization problem, which we should perhaps fix even if we don't have a general scheme yet.

In general, however, I'm not 100% sure integer priority scores are the way… they are a little bit brittle and fiddly to manage. Maybe there's another way that we can ensure a deterministic order of op registration (including from Rhai files) that would allow this kind of control without scoring.

rachitnigam commented 1 month ago

Maybe there's another way that we can ensure a deterministic order of op registration (including from Rhai files) that would allow this kind of control without scoring.

The downside is that this will require fiddling with Rhai for users who only care about using fud2 (instead of adding new stages, ops, etc.)

sampsyo commented 1 month ago

I think I understand what you're saying: the the user should also be able to specify what to prioritize. That wasn't what I was thinking of here; it was just that the fud2 developer should have a way to predictably induce the default that they want.

Separately, yeah, I guess it could also make sense to let users pick whether they want to behave like --through icarus or --through verilator as the default behavior, just by modifying their config file. But that seems like a somewhat more niche thing; it's more important that the default defaults be controllable by fud2 developers.