Why don’t you have your application look at the OMPI_COMM_WORLD_LOCAL_RANK envar, and then use that to calculate the offset location for your threads (i.e., local rank 0 is on socket 0, local rank 1 is on socket 1, etc.). You can then putenv the correct value of the GOMP envar
> On Jun 28, 2016, at 8:40 PM, Saliya Ekanayake <esal...@gmail.com> wrote: > > Hi, > > I am trying to do something like below with OpenMPI and OpenMP (threads). > > <image.png> > > I was trying to use the explicit thread affinity with GOMP_CPU_AFFINITY > environment variable as described here > (https://gcc.gnu.org/onlinedocs/libgomp/GOMP_005fCPU_005fAFFINITY.html > <https://gcc.gnu.org/onlinedocs/libgomp/GOMP_005fCPU_005fAFFINITY.html>). > > However, both P0 and P1 processes will read the same GOMP_CPU_AFFINITY and > will place threads on the same set of cores. > > Is there a way to overcome this and pass process specific affinity scheme to > OpenMP when running with OpenMPI? For example, can I say T0 of P0 should be > in Core 0, but T0 of P1 should be Core 4? > > P.S. I can manually achieve this within the program using > sched_setaffinity(), but that's not portable. > > Thank you, > Saliya > > -- > Saliya Ekanayake > Ph.D. Candidate | Research Assistant > School of Informatics and Computing | Digital Science Center > Indiana University, Bloomington > > _______________________________________________ > users mailing list > us...@open-mpi.org > Subscription: https://www.open-mpi.org/mailman/listinfo.cgi/users > Link to this post: > http://www.open-mpi.org/community/lists/users/2016/06/29556.php