Luka Govedi
MIT EECS | Hudson River Trading Undergraduate Research and Innovation Scholar
Optimizing Parallel Loops in Cilk Using Loop Frames
2020–2021
Electrical Engineering and Computer Science
- Programming Languages and Software Engineering
Charles E. Leiserson
Cilk is a C-language extension for parallel programming, which is supported by the OpenCilk compiler and the OpenCilk runtime system. It supports recursive fork-join parallelism, including parallel loops. Those are currently implemented via static binary splitting, which contains unnecessary overhead and has suboptimal cache-locality properties. In this project, I will continue my work on a different approach to parallelizing loops via dynamic splitting – the runtime-system frames only get split in the event of a steal. The milestones for my project will be: benchmarking and performance engineering the current prototype, implementing it in the Tapir/LLVM compiler extension, and implementing this protocol for nested loops, using multidimensional LoopFrames.
I chose SuperUROP because it will enable me to pursue my research topic further while providing me with guidance on paper-writing and approach. I am excited to continue work on this project because I’m passionate about performance engineering of software and because of the large-scale impact of my project. I am looking forward to learning even more about parallel algorithms and the Cilk runtime system as well as the research process.