Ignore OpenMP on machine that does not have it

Tim picture Tim · Aug 19, 2009 · Viewed 19k times · Source

I have a C++ program using OpenMP, which will run on several machines that may have or not have OpenMP installed.

How could I make my program know if a machine has no OpenMP and ignore those #include <omp.h>, OpenMP directives (like #pragma omp parallel ...) and/or library functions (like tid = omp_get_thread_num();) ?

Answer

Andrew Dalke picture Andrew Dalke · Dec 9, 2011

OpenMP compilation adds the preprocessor definition "_OPENMP", so you can do:

#if defined(_OPENMP)
   #pragma omp ...
#endif

For some examples, see http://bisqwit.iki.fi/story/howto/openmp/#Discussion and the code which follows.