We have designed an abstract instrumented memory interfaces that allow programmers to exploit hardware and software features of transactional memory as well as persistent memory. We used the LLVM compiler framework for program analysis and transformation.Github link
In this project we explore design and implementation of concurrent data structures optimized to provide high performance on large multicore architectures (> 100 cores), where the memory latency distribution is not uniform, and distributed deployments.
Concurrent Applications include blocks of code ensuring threads mutual exclusion to preserve correct accesses to data. In multicore architectures, the traditional way to implement mutual exclusion leads to resource underutilization. In this project we exploit application semantics to improve performance of atomic parts of code using compiler and library extensions.
Distributed deployments (e.g., Cloud Computing) are the only feasible way to meet elasticity and scalability requirements of large applications and systems. We focus on designing scalable transactional databases that guarantee strong correctness high-level properties, such as non-blocking queries, to retain high performance.
This work is supported in part by US National Science Foundation under grants CNS-1814974, CCF-1723624, CCF-1253362, CCF-1218530, CNS-1016828, AFOSR under grants FA9550-17-1-0367, and Google, Comcast, Oracle, Intel. Any opinions, findings, and conclusions or recommendations expressed in this material are those of the author(s) and do not necessarily reflect the views of the National Science Foundation or the United States Air Force.