Eugene Loh wrote:

Put more strongly, the "correct" (subjective term) way for an MPI implementation to bind processes is upon process creation and waiting until MPI_Init is "wrong". This point of view has nothing to do with asking the MPI implementation to support binding of non-MPI processes.

I wanted to clarify my comment. That notion of correct/wrong here is, as I indicated, quite subjective. It reflects a particular point of view (the challenge of getting local memory on a NUMA node). There is no "standard" to tell us what is right or wrong here. An equally valid point of view is that users should not expect any MPI support (including for something as nonstandard as process binding) until MPI_Init has been called. I was just trying to help Geoffroy make a case here: why we might want to bind processes even if they don't call -- er, haven't yet called :^) -- MPI_Init.

I've used another hack when using an MPI implementation whose binding support either doesn't exist or I don't know how to use it or I don't trust it. Instead of launching the executables, I launch a process that looks like this (I'm typing this from memory, probably full of typos and not guaranteed to work):

#!/bin/csh
set CPULIST = ( 47 23 19 8 43 12 )
@ me = $OMPI_COMM_WORLD_RANK + 1
pbind -b $CPULIST[$me] $$
./a.out

I hope you get the idea. Anyhow, it's a wrapper script that binds the process before launching the MPI executable.

Mainly, just wanted to clarify that I wasn't saying unequivocally what was right/wrong here. Only expressing one point of view to help represent Geoffroy's case.

Reply via email to