Tehila Mayzels, M.Sc. Thesis Seminar
Tuesday, 27.9.2016, 13:00
Task-based programming is an emerging paradigm that simplifies parallel programming. Task-based models, however, mostly focus on expressing concurrency and, for the most part, do not reason about data synchronization. The recently proposed O-structures memory versioning model is intended to fill this gap and dynamically track data dependencies. The model extends the concept of register renaming to the entire memory and thereby eliminates false- and anti-dependencies between tasks. However, it only provides low-level primitives, which makes programming more complex and requires deep understanding of the system.
In this research, we extend The LLVM compiler to support O-structures and to manage the hardware memory versioning with minimal programmer intervention. Our compiler uses simple programmer annotations to identify which memory elements should be tracked by the versioning hardware and replaces regular memory accesses with special versioned memory accesses. Our work focuses on handling a class of "unipath data structures". In this class of dynamic data structures there is exactly one path from the structure's root to each of its elements. Our compiler enables programs that use unipath data structures to run successfully with versioned memory model.