Community
cancel
Showing results for 
Search instead for 
Did you mean: 
james_B_8
Beginner
86 Views

Nested OMP on Xeon Phi using OMP4

Xeon Phi has 60 cores and 4 threads per core. I am writing an experiment that will have 1 master thread on each core, and each of these will spawn  4 slave threads.

Looking at the manual https://software.intel.com/en-us/node/512835 it seems that I want to set the envars:

MIC_OMP_NESTED=TRUE
MIC_OMP_PROC_BIND="spread, close"
MIC_OMP_NUM_THREADS=60

Is this correct? I've tested this and it doesn't die... Is there a way I can get the runtime to spitout affinity debug info about where it is actually placing things so I can be certain?

Cheers,

James

Tags (1)
0 Kudos
3 Replies
TimP
Black Belt
86 Views

If you want to see whether spread or close took effect, you could set MIC_KMP_AFFINITY=verbose.  Are you serious about wanting to set both at the same time?

One might guess that your intentions align with OpenMP 4 teams concept.  OMP_NESTED doesn't have good affinity options.

james_B_8
Beginner
86 Views

Thanks.

KMP_AFFINITY=verbose does indeed output verbose info for OMP_PROC_BIND.

I think it's working with the envars in my OP. Looking at the case of 2 master threads each spawning 2 slaves I get:

OMP: Info #242: KMP_AFFINITY: pid 50593 thread 0 bound to OS proc set {1}
...
OMP: Info #242: OMP_PROC_BIND: pid 50593 thread 1 bound to OS proc set {119}
...
OMP: Info #242: OMP_PROC_BIND: pid 50593 thread 2 bound to OS proc set {2}
OMP: Info #242: OMP_PROC_BIND: pid 50593 thread 3 bound to OS proc set {120}
OMP: Info #242: OMP_PROC_BIND: pid 50593 thread 2 bound to OS proc set {120}
OMP: Info #242: OMP_PROC_BIND: pid 50593 thread 3 bound to OS proc set {2}
OMP: Info #242: OMP_PROC_BIND: pid 50593 thread 2 bound to OS proc set {2}
OMP: Info #242: OMP_PROC_BIND: pid 50593 thread 3 bound to OS proc set {120}
OMP: Info #242: OMP_PROC_BIND: pid 50593 thread 2 bound to OS proc set {120}
OMP: Info #242: OMP_PROC_BIND: pid 50593 thread 3 bound to OS proc set {2}
OMP: Info #242: OMP_PROC_BIND: pid 50593 thread 2 bound to OS proc set {2}
OMP: Info #242: OMP_PROC_BIND: pid 50593 thread 3 bound to OS proc set {120}
OMP: Info #242: OMP_PROC_BIND: pid 50593 thread 2 bound to OS proc set {120}

0 and 1 are the 'masters' and threads 2 and 3 are the 'slaves' here. It thread numbering for the slaves is a bit tricky here. It seems that they are bound to the OS proc next to the OS proc of their parent. Where they end up depends entirely on which master spawns them first. This seems sensible to me.

I will try out omp teams.

Cheers,

james

jimdempseyatthecove
Black Belt
86 Views

James,

Try:

MIC_OMP_NESTED=TRUE
MIC_OMP_PROC_BIND="spread, close"
MIC_OMP_NUM_THREADS=60,4

Jim Dempsey

Reply