Intel® Fortran Compiler
Build applications that can scale for the future with optimized code designed for Intel® Xeon® and compatible processors.
28459 Discussions

OpenMP threads and cores on OS X 10.9.3

Eric_K_7
Beginner
241 Views

I have an OpenMP code that is compiled with ifort version 14.0.3.166 on a quad-core Macbook Pro running OS X 10.9.3.   All the work is done in a simple parallel DO region, and I have not requested any sort of dynamic thread management; the number of threads is fixed with OMP_NUM_THREADS=4.  The program works fine, and the "top" utility shows 4 running threads when the program is executing.  However, the cpu usage shows only 50%.  Is this an artifact of top's sampling algorithm, or are only two cores actually executing all the threads?  Is this an o/s limitation or is there some environment or kernel configuration issue that I am missing?  Any suggestions appreciated.  Thanks! 

--Eric

0 Kudos
2 Replies
jimdempseyatthecove
Honored Contributor III
241 Views

Is the work in the parallel DO region equal amongst threads?

Jim Dempsey

0 Kudos
TimP
Honored Contributor III
241 Views

If you have HyperThreading active, 4 threads on 4 cores are expected to show 50% usage even if you may be getting the full performance of the platform.  I don't know whether any Macbook has HT; you can look up your CPU model on ark.intel.com

If you don't set an affinity option, chances are some cores will be running 2 threads.  For example, your compiler library should support OMP_PROC_BIND = spread which would be one of the options for spreading 4 threads across 4 cores, which would usually improve performance

On a single quiad-core CPU, if you don't set affinity, disabling HT may improve performance, besides enabling you to see "100%" usage with 4 threads.

0 Kudos
Reply