[MPICH] Selecting which ethernet interface to use

Darius Buntinas buntinas at mcs.anl.gov
Wed Aug 22 21:41:56 CDT 2007

I don't know much about slurm, but looking at the docs, I bet it doesn't 
support that.

But if you can set environment variables for each process in slurm, you 
can set the address other processes will use to connect to a process by 
setting the MPICH_INTERFACE_HOSTNAME environment variable for that process.

E.g., if the address for a node is bb01 and the address for the ib 
interface is bb01-ib, set MPICH_INTERFACE_HOSTNAME=bb01-ib for any 
processes on that node.

Another way, if you can use mpd, would be to create a machinefile that 
looks like:

<hostname1>:<ncpus> ifhn=<ib-hostname1>
<hostname2>:<ncpus> ifhn=<ib-hostname2>

Where hostnameX is the name that mpd will use to start the process and 
connect to it, ncpus is the number of processes you want to start on 
that node, and ib-hostnameX is the address for the ib interface for that 

Then if your machine file is called ./mf, do

   mpiexec -n num_nodes -machinefile ./mf foo

Hope that helps.


On 08/22/2007 08:51 PM, Jeff Squyres wrote:
> Greetings.
> Is there a way to have MPICH2 select which ethernet interface to use if 
> you are using SLURM to launch jobs?
> I.e., I'm compiling and running my MPI application with:
>     mpicc foo.c -L/path/to/slurm -lpmi -o foo
>     srun -N num_nodes foo
> This seems to always choose eth0, but I'd much rather have it use ib0 
> (IP over InfiniBand).  Is there a way to make it use ib0?  I didn't see 
> anything about this in the user guide.
> Any insight would be appreciated; thanks.

More information about the mpich-discuss mailing list