Practical experience with Nebelung: the runtime support for transactional memory and OpenMP

Transactional Memory (TM) is a key future technology for emerging many-cores. On the other hand, OpenMP provides a vast established base for writing parallel programs, especially for scientific applications. Combining TM with OpenMP provides a rich, enhanced programming environment and an attractive solution to the many-core software productivity problem. In this paper, we discuss the runtime environment for supporting our combined TM and OpenMP framework. Through motivating examples, we briefly illustrate how the combined TM/OpenMP can facilitate writing parallel programs. We then discuss issues in runtime environment design. In another contribution, we introduce a set of applications that we specifically developed for our combined TM/OpenMP framework. Using those applications, we show how we can use the rich features provided by TM such as retry to support efficient TM/OpenMP programs. We also include an initial performance analysis of the runtime using the applications.

[1]  Maurice Herlihy,et al.  Transactional Memory: Architectural Support For Lock-free Data Structures , 1993, Proceedings of the 20th Annual International Symposium on Computer Architecture.

[2]  Kunle Olukotun,et al.  The OpenTM Transactional Application Programming Interface , 2007, 16th International Conference on Parallel Architecture and Compilation Techniques (PACT 2007).

[3]  Mateo Valero,et al.  unreadTVar: Extending Haskell Software Transactional Memory for Performance , 2007, Trends in Functional Programming.

[4]  Eduard Ayguadé,et al.  Transactional Memory and OpenMP , 2007, IWOMP.

[5]  Eduard Ayguadé,et al.  Thread fork/join techniques for multi-level parallelism exploitation in NUMA multiprocessors , 1999, ICS '99.