Transactifying Applications Using an Open Compiler Framework
Pascal Felber, Christof Fetzer, Ulrich Mueller, Torvald Riegel, Martin Suesskraut, and Heiko Sturzrehm

Abstract:

Transactional memory dramatically reduces the complexity of writing concurrent code. Yet, seamless integration of transactional constructs in application code typically comes with a significant performance penalty. Recent studies have shown that compiler support allows producing highly efficient STM-based applications without putting the hassle on the programmer. So far, STM integration has been partially implemented in custom, proprietary compiler infrastructures. In this paper, we propose and evaluate the use of the LLVM open compiler framework to generate efficient concurrent applications using word-based STM libraries. Since LLVM uses the GCC compiler suite as front-end, it can process code written in C or C++ (with partial support for other languages). We also present a tool that allows ``transactifying'' assembly code and can complement LLVM for legacy code and libraries. Experiments using a lightweight C word-based STM library show that LLVM integration performs as well as hand-optimized calls to the STM library and better than assembly code instrumentation of the application code.

Bibtex:

@inproceedings { felber2007tanger,
  title = {Transactifying Applications using an Open Compiler Framework},
  author = {Pascal Felber and Christof Fetzer and Ulrich M\"uller and
Torvald Riegel and Martin S\"u{\ss}kraut and Heiko Sturzrehm },
  booktitle = {TRANSACT},
  month = {August},
  year = {2007},
}

Download: