Hi,

On Nov 17, 2009, at 9:10 , Ralph Castain wrote:
> Not exactly. It completely depends on how Torque was setup - OMPI isn't 
> forwarding the environment. Torque is.

I actually tried compiling OMPI with the tm interface a couple of versions back 
for both packages but ran into memory trouble, which is why I didn't pursue 
this.  With torque-2.4.x out and OpenMPI getting close to 1.3.4 I'll try again.


> We made a design decision at the very beginning of the OMPI project not to 
> forward non-OMPI envars unless directed to do so by the user. I'm afraid I 
> disagree with Michael's claim that other MPIs do forward them - yes, MPICH 
> does, but not all others do.
> 
> The world is bigger than MPICH and OMPI :-)

Yup, I saw your message from just last month 
http://www.open-mpi.org/community/lists/users/2009/10/10994.php ; I didn't mean 
to make a global claim :-)  I'm aware that exporting environment variables 
(including $PWD) under MPI is implementation dependent.  I just happened to 
have MPICH, Intel MPI (same roots), and OpenMPI on my cluster.

> First, if you are using a managed environment like Torque, we recommend that 
> you work with your sys admin to decide how to configure it. This is the best 
> way to resolve a problem.

Yeah, I wish that guy would know better and not have to ask around mailing 
lists :-)


> Second, if you are not using a managed environment and/or decide not to have 
> that environment do the forwarding, you can tell OMPI to forward the envars 
> you need by specifying them via the -x cmd line option. We already have a 
> request to expand this capability, and I will be doing so as time permits. 
> One option I'll be adding is the reverse of -x - i.e., "forward all envars 
> -except- the specified one(s)".

The issue with -x is that modules may set any random variable.  The reverse 
option to -x would be great of course.  MPICH2 and Intel MPI pass all but a few 
(known to be host-specific) variables by default, and counter that with "none" 
and "all" options.


Thanks!

Michael



> HTH
> ralph
> 
> On Nov 17, 2009, at 5:55 AM, David Singleton wrote:
> 
>> 
>> I can see the difference - we built Open MPI with tm support.  For some
>> reason, I thought mpirun fed its environment to orted (after orted is
>> launched) so orted can pass it on to MPI tasks.  That should be portable
>> between different launch mechanisms.  But it looks like tm launches
>> orted with the full mpirun environment (at the request of mpirun).
>> 
>> Cheers,
>> David
>> 
>> 
>> Michael Sternberg wrote:
>>> Hi David,
>>> Hmm, your demo is well-chosen and crystal-clear, yet the output is 
>>> unexpected.  I do not see environment vars passed by default here:
>>> login3$ qsub -l nodes=2:ppn=1 -I
>>> qsub: waiting for job 34683.mds01 to start
>>> qsub: job 34683.mds01 ready
>>> n102$ mpirun -n 2 -machinefile $PBS_NODEFILE hostname
>>> n102
>>> n085
>>> n102$ mpirun -n 2 -machinefile $PBS_NODEFILE env | grep FOO
>>> n102$ export FOO=BAR
>>> n102$ mpirun -n 2 -machinefile $PBS_NODEFILE env | grep FOO
>>> FOO=BAR
>>> n102$ type mpirun
>>> mpirun is hashed (/opt/soft/openmpi-1.3.2-intel10-1/bin/mpirun)
>>> Curious, what do you get upon:
>>>     where mpirun
>>> I built OpenMPI-1.3.2 here from source with:
>>>   CC=icc  CXX=icpc  FC=ifort  F77=ifort \
>>>   LDFLAGS='-Wl,-z,noexecstack' \
>>>   CFLAGS='-O2 -g -fPIC' \
>>>   CXXFLAGS='-O2 -g -fPIC' \
>>>   FFLAGS='-O2 -g -fPIC' \
>>>   ./configure --prefix=$prefix \
>>>       --with-libnuma=/usr \
>>>       --with-openib=/usr \
>>>       --with-udapl \
>>>       --enable-mpirun-prefix-by-default \
>>>       --without-tm
>>> I did't find the behavior I saw strange, given that orterun(1) talks only 
>>> about $OPMI_* and inheritance from the remote shell.  It also mentions a 
>>> "boot MCA module", about which I couldn't find much on open-mpi.org - hmm.
>>> In the meantime, I did find a possible solution, namely, to tell ssh to 
>>> pass a variable using SendEnv/AcceptEnv.  That variable is then seen by and 
>>> can be interpreted (cautiously) in /etc/profile.d/ scripts.  A user could 
>>> set it in the job file (or even qalter it post submission):
>>>     #PBS -v VARNAME=foo:bar:baz
>>> For VARNAME, I think simply "MODULES" or "EXTRAMODULES" could do.
>>> With best regards,
>>> Michael
>>> On Nov 17, 2009, at 4:29 , David Singleton wrote:
>>>> I'm not sure why you dont see Open MPI behaving like other MPI's w.r.t.
>>>> modules/environment on remote MPI tasks - we do.
>>>> 
>>>> xe:~ > qsub -q express -lnodes=2:ppn=8,walltime=10:00,vmem=2gb -I
>>>> qsub: waiting for job 376366.xepbs to start
>>>> qsub: job 376366.xepbs ready
>>>> 
>>>> [dbs900@x27 ~]$ module load openmpi
>>>> [dbs900@x27 ~]$ mpirun -n 2 --bynode hostname
>>>> x27
>>>> x28
>>>> [dbs900@x27 ~]$ mpirun -n 2 --bynode env | grep FOO
>>>> [dbs900@x27 ~]$ setenv FOO BAR
>>>> [dbs900@x27 ~]$ mpirun -n 2 --bynode env | grep FOO
>>>> FOO=BAR
>>>> FOO=BAR
>>>> [dbs900@x27 ~]$ mpirun -n 2 --bynode env | grep amber
>>>> [dbs900@x27 ~]$ module load amber
>>>> [dbs900@x27 ~]$ mpirun -n 2 --bynode env | grep amber
>>>> LOADEDMODULES=openmpi/1.3.3:amber/9
>>>> PATH=/apps/openmpi/1.3.3/bin:/home/900/dbs900/bin:/bin:/usr/bin::/opt/bin:/usr/X11R6/bin:/opt/pbs/bin:/sbin:/usr/sbin:/apps/amber/9/exe
>>>> _LMFILES_=/apps/Modules/modulefiles/openmpi/1.3.3:/apps/Modules/modulefiles/amber/9
>>>> AMBERHOME=/apps/amber/9
>>>> LOADEDMODULES=openmpi/1.3.3:amber/9
>>>> PATH=/apps/openmpi/1.3.3/bin:/home/900/dbs900/bin:/bin:/usr/bin:/opt/bin:/usr/X11R6/bin:/opt/pbs/bin:/sbin:/usr/sbin:/apps/amber/9/exe
>>>> _LMFILES_=/apps/Modules/modulefiles/openmpi/1.3.3:/apps/Modules/modulefiles/amber/9
>>>> AMBERHOME=/apps/amber/9
>>>> 
>>>> David
>>>> 
>>>> 
>>>> Michael Sternberg wrote:
>>>>> Dear readers,
>>>>> With OpenMPI, how would one go about requesting to load environment 
>>>>> modules (of the http://modules.sourceforge.net/ kind) on remote nodes, 
>>>>> augmenting those  normally loaded there by shell dotfiles?
>>>>> Background:
>>>>> I run a RHEL-5/CentOS-5 cluster.  I load a bunch of default modules 
>>>>> through /etc/profile.d/ and recommend to users to customize modules in 
>>>>> ~/.bashrc.  A problem arises for PBS jobs which might need job-specific 
>>>>> modules, e.g., to pick a specific flavor of an application.  With other 
>>>>> MPI implementations (ahem) which export all (or judiciously nearly all) 
>>>>> environment variables by default, you can say:
>>>>>   #PBS ...
>>>>>   module load foo         # not for OpenMPI
>>>>>   mpirun -np 42 ... \
>>>>>           bar-app
>>>>> Not so with OpenMPI - any such customization is only effective for 
>>>>> processes on the master (=local) node of the job, and any variables 
>>>>> changed by a given module would have to be specifically passed via mpirun 
>>>>> -x VARNAME.   On the remote nodes, those variables are not available in 
>>>>> the dotfiles because they are passed only once orted is live (after 
>>>>> dotfile processing by the shell), which then immediately spawns the 
>>>>> application binaries (right?)
>>>>> I thought along the following lines:
>>>>> (1) I happen to run Lustre, which would allow writing a file coherently 
>>>>> across nodes prior to mpirun, and thus hook into the shell dotfile 
>>>>> processing, but that seems rather crude.
>>>>> (2) "mpirun -x PATH -x LD_LIBRARY_PATH …" would take care of a lot, but 
>>>>> is not really general.
>>>>> Is there a recommended way?
>>>>> regards,
>>>>> Michael
>>>> _______________________________________________
>>>> users mailing list
>>>> us...@open-mpi.org
>>>> http://www.open-mpi.org/mailman/listinfo.cgi/users
>> 
>> 
>> -- 
>> --------------------------------------------------------------------------
>>  Dr David Singleton               ANU Supercomputer Facility
>>  HPC Systems Manager              and NCI National Facility
>>  david.single...@anu.edu.au       Leonard Huxley Bldg (No. 56)
>>  Phone: +61 2 6125 4389           Australian National University
>>  Fax:   +61 2 6125 8199           Canberra, ACT, 0200, Australia
>> --------------------------------------------------------------------------
>> _______________________________________________
>> users mailing list
>> us...@open-mpi.org
>> http://www.open-mpi.org/mailman/listinfo.cgi/users
> 
> 
> _______________________________________________
> users mailing list
> us...@open-mpi.org
> http://www.open-mpi.org/mailman/listinfo.cgi/users


Reply via email to