University of Kassel OpenMP (UKOMP)


  • 02.05.2006 Our paper on thread cancellation has been accepted for Euro-Par 2006!
  • 12.04.2006 Our paper on scheduling has been accepted to IWOMP 2006 and we are looking forward to presenting it there.
  • 12.09.2005 The project site for UKOMP went live today, featuring proposals for scheduling and thread-cancellation.

Parallel computing systems are becoming increasingly popular. Even for the desktop, workstations with two to four processors are commonplace nowadays. Parallel systems will become even more widespread with the introduction of so called multi-core dies, which unify many processors on a single chip.

Until recently, writing a shared-memory parallel program required either the utilization of a threading system like POSIX threads (which is relatively low level) or the use of vendor-specific constructs, which raised a lot of portability issues. These problems were solved by OpenMP, a standard API for C, C++ and Fortran which has been endorsed by all major software and hardware vendors. OpenMP provides the programmer with a high level API which allows parallelizing a serial program in a simple and incremental way.

The OpenMP specification is not as easy to use and powerful as it could be though. Some areas, where OpenMP lags behind other parallel programming systems are thread cancellation and the avoidance of busy waiting. Support for nested parallelism is still not as useful as it could be as well. It is therefore an important goal of this project to explore new ways to deal with these and related problematic areas in OpenMP, by enhancing OpenMP with new directives and runtime library functions.

Eventually we want to try to influence the direction future OpenMP specifications are taking, which can be done by writing proposals to the OpenMP ARB. The proposals will be backed up by a working implementation in an actual compiler (OMPi). All proposals have a standardized form, inspired by the Python Enhancement Proposals (PEPs) and are called Enhancement Proposals for OpenMP (EPOs).

This project is the main part of the doctoral thesis of Michael Süß. All ideas will be implemented into the OMPi compiler in cooperation with the group of Prof. Vassilios V. Dimakopoulos of the University of Ioannina.

Enhancement Proposals for OpenMP (EPOs)
This list contains the EPOs we have created so far with a short abstract on what problem they solve. Feedback is of course welcome. If you want to try out the new functionality yourself, please contact me and I will provide you with a special pre-release version of the OMPi compiler, which contains all the changes.

  • EPO 1: Thread Cancellation (text version): Thread cancellation in this context means the ability to end execution of parallel regions prematurely for all threads in a team with a simple directive. This is often a needed capability e.g. in irregular parallel algorithms.
  • EPO 2: Scheduling (text version): OpenMP currently does not give the programmer the power to put a thread to sleep or influence the scheduling process in any way. These capabilities are useful especially for testing purposes, and this proposal therefore suggests two simple additions to the OpenMP specification. These are the yield and the sleepuntil directive.


For further information please contact one of the following members of our staff:

Michael Süß
Prof. Dr. Claudia Leopold

[SL04] M. Süß, C.Leopold: A User's Experience with Parallel Sorting and OpenMP; Proceedings of the Sixth European Workshop on OpenMP - EWOMP'04, p. 23-38, Stockholm, Oktober 2004.