Open polybeandip opened 3 months ago
Thanks for getting this down; super helpful! I'm super excited, especially if it just works as elegantly as I am hoping. One quick thing to add after your last bullet point: test compilation "by eye", by generating scheduling graphs in the style of Formal Abstractions. That is:
Please just edit your text above directly to include this.
In silly logistical land: feel free to convert certain bullet points into issues of their own and then assign them to yourself. I'll show you how in a sec!
@polybeandip for the fork under cucapra, try this?
For completeness and the benefit of others reading this, here's the fork.
@anshumanmohan describes a natural extension of Formal Abstractions' compilation procedure to handle non-work conserving behavior in discussion #16. The hope is that we can simply swap PIFOs in our tree for PIEOs to allow packets to live in our PIEO tree while remaining invisible until they're ready.
See issue #12 for an introduction to @KabirSamsi's work on PIEOs.
This issue is a concrete plan for formalizing PIEO trees and implementing them at the software level.
Extend Formal Abstractions for Packet Scheduling
Each of these tasks map cleanly to parts of Formal Abstractions, which are noted accordingly.
pop
a PIEO tree?push
to a PIEO tree? What is the data of apath
?simulation
for PIEO trees (§4)[x] Construct PIEO tree analogues for sections §5.2 to §5.5 in Formal Abstractions
pop
is preserved (Lemmas 5.6 and 5.7 Formal Abstractions).push
is preserved (Lemmas 5.8 and 5.9 in Formal Abstractions).Hopefully, by the end of all this, Theorems 6.1 and 6.2 can be used as is.
Done via #35
Extend pifo-trees-artifact
lib/path.ml
to accommodate the semantics and structure of PIEO trees (not necessary)lib/pieotree.ml
andlib/pieotree.mli
and implement a PIEO tree in itlib/control.ml
andlib/alg.ml
to build NWC algorithms via PIEO treesDone via #1 in schedulers-in-ocaml