The libKOMP runtime system

 

libKOMP is a runtime system for OpenMP 3.0+ that comes with nice features to efficiently deal with fine-grain task parallelism. It’s binary compatible with existing OpenMP applications that were compiled by GCC 4.6, and it relies on the kaapi runtime system to create tasks and execute them on a work-stealing manner.

What is libKOMP?

libKOMP is part of the kaapi library, and can be seen as a front-end that replaces original GNU GCC libgomp runtime routines by the corresponding ones implemented using kaapi.


libKOMP is part of kaapi from January 2013 (xkaapi 2.0).


You can find more information about how to get the kaapi library (also called XKaapi) here.

Getting libKOMP

The default configuration/installation procedure of the kaapi library will also build and install the libKOMP runtime system.


From a fresh kaapi checkout/tarball:

Installing libKOMP

cd kaapi

./configure --prefix=where_to_install_kaapi

make && make install

Along with other useful stuff, the commands you just executed installed the libKOMP library (.so, . a or .dylib depending on your OS) and the libkomp-run script in the « where_to_install_kaapi » folder. You may want to add the where_to_install_kaapi/bin folder to your PATH environment variable, as you’ll be using the libkomp-run script a lot.

Now you have installed libKOMP, using it to run your favorite OpenMP application is easy, as long as it has been built by GCC.


Just use the libkomp-run script to execute your application like this:

Using libKOMP

libkomp-run ./my-bad-performing-openmp-app

You feel the urge to sharing your love/pain with us? Here is a list of people involved in the development of the libKOMP runtime system:


François Broquedis: francois.broquedis_AT_imag.fr

Thierry Gautier: thierry.gautier_AT_inrialpes.fr

Vincent Danjean: vincent.danjean_AT_imag.fr

Contact

I’ll try to maintain a merely up-to-date list of libKOMP-related publications here:


[1] libKOMP, an efficient OpenMP runtime system for both Fork-Join and Data-Flow paradigms

I’d like to know more about how this works!

Coming soon...

Frequently Asked Questions