Spring 2019
The following are listed in no particular order. Also note that this is in no way an exhaustive list; suggestions here are just ideas to get you started. Feel free to suggest a project of your own!
gcc
.
Characterize its performance—both the software library and
(for x86 and Power) the support for hardware TM.
gcc
.
You might want to check out the retry
mechanism of Haskell and the work of Wang & Spear.
shared_ptr
and weak_ptr
in particular)
that “play nice” with transactions. In particular,
figure out how to ensure that nontransactional increments and
decrements of shared_ptr
reference counts—and
invocations of
destructors when counts reach zero—always serialize with
respect to transactions that touch the same objects.
How much overhead is your mechanism forced to impose on
nontransactional code?
atomic
variables that can safely be accessed inside
atomic
blocks, in such a way that nontransactional
accesses serialize with respect to transactions that access the same
objects.
gcc
’s
OpenMP implementation, to allow safe parallelization of loops whose
iterations the programmer thinks are probably—but not
provably— independent. If you’re interested,
Prof. Ding would be more than happy to talk.
Alternatively, working from the same infrastructure, explore the possibility of using DPR as a teaching language. This project would entail a detailed assessment of the implementation, identification of the steps needed to make it “first-year proof,” and implementation of as many steps as possible toward that goal.