Intel OMP_PROC_BIND implementation

Intel OMP_PROC_BIND implementation

Hello everybody,I am doing an OpenMP implementation in Intel Fortran. I was really happy to see OpenMP 3.1 implemented because it would mean a nice cross-platform way of forbiding unwanted thread migration usingOMP_PROC_BIND. I set to true and it works fine on Intel architectures, but as soon as I tried it on an AMD Opteron I get this message:OMP: Warning #72: KMP_AFFINITY: affinity only supported for Intel processors.OMP: Warning #71: KMP_AFFINITY: affinity not supported, using "disabled".So, I guess the openmp library is implemented using kmp_affinity which by itself is supported only on Genuine Intel processors? What are my choices? Should I try linking with the OS (gnu) openmp library when and if they implement this feature? Should I give up of the possibility having a cross platform and cross-system way of thread binding?Thanks a lot,Petros

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

Thanks for pointing out this problem. Wewill address this issue in an upcoming compiler release.

Thanks for taking the time to look into it.



jayhoeflinger wrote:

Thanks for pointing out this problem. Wewill address this issue in an upcoming compiler release.

Just bumping the topic to say that the new 2013 Parallel Studio that rolled out didn't fix this...

OMP_PROC_BIND is now fixed for compatible non-Intel processors in Intel® C++/Fortran Composer XE 2013 Update 1 and Intel® C++/Fortran Composer XE 2011 Update 13. See

Hi all,

I am also seeing a very large performance impact of thread migration when using a 6 and core CPU. The CPUs are 4960X and E5-2867W.

I am attempting to solve that problem with the use of OMP_PROC_BIND. However, I am having a problem with setting core affinity.

My code is in FORTRAN and I am trying to use the OMP_GET_PROC_BIND and use a call OMP_PROC_BIND(.TRUE.).

I am using the ifort compiler. Version 11.1 Build 20100203 Package ID: w_cprof_p_11.1.060

I compile the code with -Qopenmp but I get an error"unresolved external symbol _OMP_GET_PROC_BIND".

All other openmp directives work; e.g. NTHREADS = OMP_GET_NUM_THREADS() etc.


As the preceding reply indicated, OpenMP 3.1 bits were still being introduced in the later 13.1 compiler updates (XE2013) so it would not be surprising that you must use the Intel proprietary equivalents KMP_AFFINITY to work with 11.1 compiler, if you didn't use the newer open sourced version of Intel OpenMP library.

Leave a Comment

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