Software Archive
Read-only legacy content

Intel OMP_PROC_BIND implementation

Petros
Novice
838 Views
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
0 Kudos
6 Replies
Jay_H_Intel
Employee
838 Views

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

0 Kudos
Petros
Novice
838 Views
Thanks for taking the time to look into it.

Petros
0 Kudos
Petros
Novice
838 Views
jayhoeflinger wrote:

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

Just bumping the topic to say that the new 2013 Parallel Studio that rolled out didn't fix this...
0 Kudos
pbkenned1
Employee
838 Views
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 http://software.intel.com/en-us/articles/omp-proc-bind-is-now-supported-on-compatible-non-intel-processors Patrick
0 Kudos
dfishman
Beginner
838 Views

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.

Thanks,

0 Kudos
TimP
Honored Contributor III
838 Views

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.

0 Kudos
Reply