- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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
Link Copied
2 Replies
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Thank you very much, -auto seems to fix the issue as well.
Reply
Topic Options
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page