Summer Progress Tracker – Kabir Samsi #6
Replies: 5 comments 5 replies
-
OverviewThis was my first week on the project. My primary efforts have been concerned with learning how to write with basic Calyx, fully reviewing "Formal Abstractions in Packet Scheduling", and getting comfortable with the eDSL. Specifically, I have been following along the tracker for this project. have completed the first two steps, and am currently working on the third. Completed WorkI've fully read "Formal Abstractions in Packet Scheduling", focused on the sections highlighted, and made a summarized set of notes (in line with how Anshuman has described reading papers at depth). This is a continuation of what I've been doing over the last three weeks. This was just to ensure that I'm well-versed enough in the project. I completed the Calyx matrix multiplier, as well as a couple of other memory-related programs to test myself (matrix adder, alternative dot product calculator, etc.). This took longer than expected or desired. Over the first two days, I was struggling a bit with the syntax, but things began to click on Wednesday. Since then I've been able to work at a better pace. Next TasksI'm planning to spend the new day or two getting very familiar with the calyx-py eDSL. I intend to re-implement the matrix multiplier there and review the PIFO-related data structures (also in accordance with the checklist). I'd also like to take some time this weekend to review my own notes on the packet scheduling paper. I'd like to have this done by the end of the weekend. As such, I'd hope to move to the 'quests' section and begin to experiment with the generalized PIFO implementation next week. |
Beta Was this translation helpful? Give feedback.
-
OverviewPosting this slightly late (following Monday rather than Friday). This past week, with a stronger foundation in Calyx and in the project, I made progress in a few areas and began my first packet-scheduling specific task. Completed WorkI spent a good deal of time working on the I also conducted my first code review for Anshuman's seq_mem conversion PR. It wasn't a very involved review, but was a good experience and I'm looking forward to reviewing more! For packet-scheduling specific tasks, I studied the PIFO and FIFO implementations in Next TasksI will be working now on studying Calendar Queues, and seeing if they merit a Calyx implementation as well. I'll also be spending some time working with Akash on the binary heap structure, thinking about the implementation of PIEO queues (which I expect will involve the binary heap), and getting to work on that. |
Beta Was this translation helpful? Give feedback.
-
Apologies for having missed out on a couple of weeks here! UpdatesMy most updates as per the last few weeks involve a having proposed full implementations for PIEOs and Calendar Queues, and designed test oracles for them both as per Calyx PR #2192. In particular, I explored both verbose and simple test oracles for the two structures. These involve implementing PIEOs as binary heaps, and Calendar Queues as hashtable-like structures which store PIEOs as buckets. As of Friday 7/12 I am nearly finished with a calyx-py implementation for PIEOs in the branch Next StepsMy immediate task involves finishing the implementations for both of these in calyx-py. Concurrently (albeit on te back-burner), I am starting work implementing PIFO Trees using binary heaps. I'm hoping to have calyx-py implementations for both completed by the end of this week with PRs opened for each, and proposals for binary-heap PIFOs following soon after! |
Beta Was this translation helpful? Give feedback.
-
Update for last week: Each draws a parallel to one of the two Python test oracles I implemented previously. I worry that I've spent too much time reinventing the wheel – after effectively creating a more complex variant of the Stable Binary Heap, I figured out today a way to combine the two to improve the performance of the structure. I'll continue with this. Separately, I'm continuing to explore working with Binary-Heap PIFO Trees. |
Beta Was this translation helpful? Give feedback.
-
This week, I worked a lot on optimizing our parser, and on extending our DSL to be compatible with a handful of non-work-conserving policies. This involved researching new policies, and explored ways to target PIFO and PIEO Tree representations with our new policies. Specifically, I worked on error handling in the parser, such that faulty programs are rejected with more descriptive errors rather than outputting direct syntax errors. The setup for this now actually allows us to play with 'smarter' compiler options in the future, such as creating a way to catch erroneous programs and re-parse them to be well-formatted. In addition to this, I researched four new, non-work-conserving policies, and documented them and their functionality in our Glossary. For two of these, I discussed clean translations from policy to queue representations, which I plan to do for the remaining ones as well. Along with four work-conserving policies we already have, I added these into the DSL, with lexing, parsing, formedness-checking and pretty-printing support. Finally, I spent a good deal of time studying well-formedness and its meaning, both for PIFO and PIEO Trees. Formal Abstractions offers a strong definition, and outlines two lemmas whichsuggestiong that pushing and popping from a PIFO Tree preserve its well-formedness. My main goal is to justify such lemmas for PIEO Trees as well. To do so, I explored proofs for these lemmas with PIFO Trees, and on this path further formalized the My next major goals are to complete this proof for PIEO Trees, finish up the PIEO representation in Calyx, and possibly get on the track of extending our language to deal with custom policies! On the backburner still is the issue of PIFO Tree representations with Binary Heap nodes. |
Beta Was this translation helpful? Give feedback.
-
Stores my weekly progress on this project, logged every Friday as an additional comment.
Beta Was this translation helpful? Give feedback.
All reactions