Dear Gilles,
thanks for your answer.
- compiler: gcc-6.3.0
- OpenMP environment vars: OMP_PROC_BIND=true, GOMP_CPU_AFFINITY not set
- hyperthread a given OpenMP thread is on: it's printed in the output below as
a 3-digit number after the first ",", read by sched_getcpu() in the OpenMP test
That should be a two steps tango
- Open MPI bind a MPI task to a socket
- the OpenMP runtime bind OpenMP threads to cores (or hyper threads) inside
the socket assigned by Open MPI
which compiler are you using ?
do you set some environment variables to direct OpenMP to bind threads ?
Also, how do
Open MPI isn’t doing anything wrong - it is doing exactly what it should, and
exactly what you are asking it to do. The problem you are having is that OpenMP
isn’t placing the threads exactly where you would like inside the process-level
“envelope” that Open MPI has bound the entire process to.
Dear rhc,
to make it more clear what I try to achieve, I collected some examples for
several combinations of command line options. Would be great if you find time
to look to these below. The most promise one is example "4".
I'd like to have 4 MPI jobs starting 1 OpenMP job each with 10