OpenMP creates a separate monitor thread

OpenMP creates a separate monitor thread


What is the purpose of the separate monitor thread OpenMP creates?


In my Fortran application, the additional thread is always spawned, even when setting OMP_SET_NUM_THREADS(1).

Granted, it doesn't look like it does much, per the Linux "ps -L" command, but I haven't seen any easily accessible information describing the purpose of the additional thread at a high level.

Thanks in advance.

4 posts / 0 new
Last post
For more complete information about compiler optimizations, see our Optimization Notice.

It looks like you are (mistakenly) using quite old version of the OpenMP RTL instead of library provided in Open Source package.  You can check this looking at error output produced with setting KMP_VERSION=1.

The behavior of launching monitor thread unconditionally had been fixed in the Intel OpenMP RTL sometime in 2010. It should not be launched for single thread application in newer libraries.

The purpose of monitor thread is to provide wall clock counter that is used by other threads on barriers.


Setting KMP_VERSION=1 results in the following data

Intel(R) OMP Copyright (C) 1997-2013, Intel Corporation. All Rights Reserved.
Intel(R) OMP version: 5.0.20130625
Intel(R) OMP library type: performance
Intel(R) OMP link type: static
Intel(R) OMP build time: 2013-06-25 12:30:46 UTC
Intel(R) OMP build compiler: Intel C++ Compiler 12.1
Intel(R) OMP alternative compiler support: yes
Intel(R) OMP API version: 3.1 (201107)
Intel(R) OMP dynamic error checking: no
Intel(R) OMP thread affinity support: not used
Intel(R) OMP debugger support version: 1.1

I'm using ifort 14.0.0 and the build date is 2013-06-25 for the libraries.

So I guess I still need to go to and get newer libraries?

Note: I've moved this over to the Fortran Compiler for Linux Thread, as I realize this should be supported by the Intel composer.


Leave a Comment

Please sign in to add a comment. Not a member? Join today