Research Project Title:
Optimizing Parallel Loops in Cilk Using Loop Frames
abstract: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.