Community
cancel
Showing results for 
Search instead for 
Did you mean: 
Highlighted
Beginner

Building OpenMP-compatible sequential libraries

Hi, I have code that consists of a non-parallelized (statically linked) library that I reuse across various projects, and some user code that calls this library from OpenMP-parallelized loops. After observing numerous data races in the library routines, which I though I had written in a thread-safe way, I realized that the sequential library itself has to be compiled with -qopenmp, even though it does not use OpenMP at all. I was wondering what the best practice is when creating a sequential library that can be used both with OpenMP and sequential user code. Are there any problems when linking against a library compiled with -qopenmp if the user code itself is compiled without -qopenmp? Thanks, Richard
0 Kudos
2 Replies
Highlighted
Black Belt

It should be sufficient to

It should be sufficient to set -auto (implied by -qopenmp) or to declare all procedures RECURSIVE.  The difference, with ifort, is in the default storage for local arrays.

If you have SAVE or DATA usage, that may still be incompatible with threading.

0 Kudos
Highlighted
Beginner

Thank you very much, -auto

Thank you very much, -auto seems to fix the issue as well.
0 Kudos