A framework for dynamically instrumenting GPU compute applications within GPU Ocelot
LLVM: a compilation framework for lifelong program analysis & transformation