Intel® Integrated Performance Primitives
Deliberate problems developing high-performance vision, signal, security, and storage applications.

Mixing libiomp5.so and GNU's libgomp.so?

hapatrick
Beginner
799 Views

How can I determine the version of OpenMP in libiomp5.so? From examining the symbols, it appears *not* to be v3.0, so I'm guessing it is 2.5. But I would like to be sure.

I am using IPP v6.1.5.061.

The reason this comes up is because we have OpenMP directives in our own code, which we compile with gcc 4.4. gcc 4.4 uses OpenMP v3.0. If, as I suspect, IPP 6 is using an older version of OpenMP, it seems like issues could arise if we want to use IPP's internal threading, due to conflicts between the two OpenMP versions. Possible solutions I can think of are:

1. link to libgomp (GNU's OpenMP v3.0) instead of libiomp5 -- but would IPP still work if we replace libiomp5 with libgomp?

2. link to both libiomp5 and libgomp (GNU's OpenMP v3.0) -- but would this cause conflicts?

3. disable IPP's internal threading

If anyone has dealt with this or similar issues before, I'd be interested in knowing how you resolved them.

0 Kudos
1 Solution
Vladimir_Dudnik
Employee
799 Views
Hello,

To dump OpenMP version to console you can setKMP_VERSION environment variable.
Other OpenMP environment variables described in Intel Compiler documentation.

libiomp library should be compatible with Microsoft and GNU OpenMP implementations (although I'm not sure with what versions).

BTW, the fourth option might be to migrate to IPP 7.0 which was compiled with Intel Compiler v12.0 which I think support OpenMP 3.0 specification (IPP 6.1.6 was compiled by v11.1 compiler.

Regards,
Vladimir

View solution in original post

0 Kudos
2 Replies
Vladimir_Dudnik
Employee
800 Views
Hello,

To dump OpenMP version to console you can setKMP_VERSION environment variable.
Other OpenMP environment variables described in Intel Compiler documentation.

libiomp library should be compatible with Microsoft and GNU OpenMP implementations (although I'm not sure with what versions).

BTW, the fourth option might be to migrate to IPP 7.0 which was compiled with Intel Compiler v12.0 which I think support OpenMP 3.0 specification (IPP 6.1.6 was compiled by v11.1 compiler.

Regards,
Vladimir
0 Kudos
hapatrick
Beginner
799 Views

Thank you, that was helpful. It does not actually print the version of the OpenMP specification, but it does tell me when and with what compiler the library was built: October 22, 2007, with Intel C++ Compiler 10.0. Since the OpenMP v3.0 spec wasn't published until May 2008, I think that that confirms that it is an older version of OpenMP.

We will probably try upgrading to IPP 7.

0 Kudos
Reply