Re: [OMPI users] environment variables and MPI_Comm_spawn

2013-12-12 Thread Ralph Castain
It would have to be done via MPI_Info arguments, and we never had a request
to do so (and hence, don't define such an argument). It would be easy
enough to do so (look in the ompi/mca/dpm/orte/dpm_orte.c code).

MPI implementations generally don't forcibly propagate envars because it is
so hard to know which ones to handle - it is easy to propagate a system
envar that causes bad things to happen on the remote end.

One thing you could do, of course, is add that envar to your default shell
setup (.bashrc or whatever). This would set the variable by default on your
remote locations (assuming you are using rsh/ssh for your launcher), and
then any process you start would get it. However, that won't help if this
is an envar intended only for the comm_spawned process.

I can add this capability to the OMPI trunk, and port it to the 1.7 release
- but we don't go all the way back to the 1.4 series any more.



On Wed, Dec 11, 2013 at 2:10 PM, tom fogal  wrote:

> Hi all,
>
> I'm developing on Open MPI 1.4.5-ubuntu2 on Ubuntu 13.10 (so, Ubuntu's
> packaged Open MPI) at the moment.
>
> I'd like to pass environment variables to processes started via
> MPI_Comm_spawn.  Unfortunately, the MPI 3.0 standard (at least) does
> not seem to specify a way to do this; thus I have been searching for
> implementation-specific ways to accomplish my task.
>
> I have tried setting the environment variable using the POSIX setenv(3)
> call, but it seems that Open MPI comm-spawn'd processes do not inherit
> environment variables.  See the attached 2 C99 programs; one prints
> out the environment it receives, and one sets the MEANING_OF_LIFE
> environment variable, spawns the previous 'env printing' program, and
> exits.  I run via:
>
>   $ env -i HOME=/home/tfogal \
>   PATH=/bin:/usr/bin:/usr/local/bin:/sbin:/usr/sbin \
>   mpirun -x TJFVAR=testing -n 5 ./mpienv ./envpar
>
> and expect (well, hope) to find the MEANING_OF_LIFE in 'envpar's
> output.  I do see TJFVAR, but the MEANING_OF_LIFE sadly does not
> propagate.  Perhaps I am asking the wrong question...
>
> I found another MPI implementation which allowed passing such
> information via the MPI_Info argument, however I could find no
> documentation of similar functionality in Open MPI.
>
> Is there a way to accomplish what I'm looking for?  I could even be
> convinced to hack source, but a starting pointer would be appreciated.
>
> Thanks,
>
> -tom
>
>
> ___
> users mailing list
> us...@open-mpi.org
> http://www.open-mpi.org/mailman/listinfo.cgi/users
>


Re: [OMPI users] Prototypes for Fortran MPI_ commands using 64-bit indexing

2013-12-12 Thread Dave Love
"Jeff Squyres (jsquyres)"  writes:

> On Dec 10, 2013, at 10:42 AM, Dave Love  wrote:
>
>> This doesn't seem to have been fixed, and I think it's going to bite
>> here.  Is this the right change?
>
> Thanks for reminding us.
>
>> --- openmpi-1.6.5/ompi/config/ompi_setup_mpi_fortran.m4~ 2012-04-03 
>> 15:30:24.0 +0100
>> +++ openmpi-1.6.5/ompi/config/ompi_setup_mpi_fortran.m4  2013-12-10 
>> 12:23:54.232854527 +
>> @@ -127,8 +127,8 @@
>> AC_MSG_RESULT([skipped (no Fortran bindings)])
>> else
>> bytes=`expr 4 \* $ac_cv_sizeof_int + $ac_cv_sizeof_size_t`
>> -num_integers=`expr $bytes / $OMPI_SIZEOF_FORTRAN_INTEGER`
>> -sanity=`expr $num_integers \* $OMPI_SIZEOF_FORTRAN_INTEGER`
>> +num_integers=`expr $bytes / $ac_cv_sizeof_int`
>> +sanity=`expr $num_integers \* $ac_cv_sizeof_int`
>
> I think this is right, but it is has different implications for different 
> series:
>
> 1. No more releases are planned for the v1.6 series.

Yes, but I need it for compatibility.

(In case anyone else tries:  for some reason I can't rebuild configure
with the autotools on RHEL6, though it has the specified versions or
above; I patched configure directly.)

> We can commit this fix over there, and it will be available via nightly 
> tarballs.  There are also ABI implications -- see #2, below.

I'm building rpms with patches anyhow.

> 2. This fix changes the ABI for the 1.5/1.6 and 1.7/1.8 series
> (separately, of course).  As such, we will need to make this a
> non-default configure option.  E.g., only do this new behavior if
> --enable-abi-breaking-fortran-status-i8-fix is specified (or some name
> like that).  By default, we have to keep the ABI for the entire
> 1.5/1.6 and 1.7/1.8 series -- so if you specify this switch, you
> acknowledge that you're breaking ABI for the -i8 case.

OK, but I assumed that was a non-issue since the ABI is broken anyhow in
the case where it changes, as I understand it.

> 3. For the v1.9 series (i.e., currently the SVN trunk), we can make this be 
> the default, and the --enable-abi-breaking... switch will not exist.
>
> Sound ok?

It doesn't matter to me as long as I know the change DTRT, but my OK
probably isn't relevant.  Thanks.


Re: [OMPI users] environment variables and MPI_Comm_spawn

2013-12-12 Thread Jeff Squyres (jsquyres)
Won't OMPI still automatically pick up env variables that are named beginning 
with "OMPI_"?


On Dec 12, 2013, at 9:47 AM, Ralph Castain  wrote:

> It would have to be done via MPI_Info arguments, and we never had a request 
> to do so (and hence, don't define such an argument). It would be easy enough 
> to do so (look in the ompi/mca/dpm/orte/dpm_orte.c code).
> 
> MPI implementations generally don't forcibly propagate envars because it is 
> so hard to know which ones to handle - it is easy to propagate a system envar 
> that causes bad things to happen on the remote end.
> 
> One thing you could do, of course, is add that envar to your default shell 
> setup (.bashrc or whatever). This would set the variable by default on your 
> remote locations (assuming you are using rsh/ssh for your launcher), and then 
> any process you start would get it. However, that won't help if this is an 
> envar intended only for the comm_spawned process.
> 
> I can add this capability to the OMPI trunk, and port it to the 1.7 release - 
> but we don't go all the way back to the 1.4 series any more.
> 
> 
> 
> On Wed, Dec 11, 2013 at 2:10 PM, tom fogal  wrote:
> Hi all,
> 
> I'm developing on Open MPI 1.4.5-ubuntu2 on Ubuntu 13.10 (so, Ubuntu's
> packaged Open MPI) at the moment.
> 
> I'd like to pass environment variables to processes started via
> MPI_Comm_spawn.  Unfortunately, the MPI 3.0 standard (at least) does
> not seem to specify a way to do this; thus I have been searching for
> implementation-specific ways to accomplish my task.
> 
> I have tried setting the environment variable using the POSIX setenv(3)
> call, but it seems that Open MPI comm-spawn'd processes do not inherit
> environment variables.  See the attached 2 C99 programs; one prints
> out the environment it receives, and one sets the MEANING_OF_LIFE
> environment variable, spawns the previous 'env printing' program, and
> exits.  I run via:
> 
>   $ env -i HOME=/home/tfogal \
>   PATH=/bin:/usr/bin:/usr/local/bin:/sbin:/usr/sbin \
>   mpirun -x TJFVAR=testing -n 5 ./mpienv ./envpar
> 
> and expect (well, hope) to find the MEANING_OF_LIFE in 'envpar's
> output.  I do see TJFVAR, but the MEANING_OF_LIFE sadly does not
> propagate.  Perhaps I am asking the wrong question...
> 
> I found another MPI implementation which allowed passing such
> information via the MPI_Info argument, however I could find no
> documentation of similar functionality in Open MPI.
> 
> Is there a way to accomplish what I'm looking for?  I could even be
> convinced to hack source, but a starting pointer would be appreciated.
> 
> Thanks,
> 
> -tom
> 
> 
> ___
> 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


-- 
Jeff Squyres
jsquy...@cisco.com
For corporate legal information go to: 
http://www.cisco.com/web/about/doing_business/legal/cri/



Re: [OMPI users] ?????? ?????? ?????? can you help me please ?thanks

2013-12-12 Thread Jeff Squyres (jsquyres)
The reply chains have become intermingled, and there seems to be a lot of 
confusion on exactly what is being asked and what answers have already been 
provided.  I'm sorry -- I'm unable to follow exactly where we are in this 
question.

Can you start a single new thread with an explicit description of what you are 
asking?





On Dec 9, 2013, at 7:54 PM,  <781578...@qq.com> wrote:

> it means that only three 3 processors have worked,and other  processors  have 
> done nothing.why?
> 
> 
> --  --
> ??: "Ralph Castain";;
> : 2013??12??9??(??) 11:18
> ??: "Open MPI Users";
> : Re: [OMPI users]?? ?? can you help me please ?thanks
> 
> Forgive me, but I have no idea what that output means. Why do you think only 
> 3 processors are being used?
> 
> On Dec 9, 2013, at 5:05 AM,  <781578...@qq.com> wrote:
> 
>>  I have a server  with  12 cores.when I run mpi program with 10 
>> processors.only  three processors works.Here are a picture about the problem
>>  
>> <40f6d...@e690af16.27c0a552.jpg>
>>  
>> why?Is the problem with process schedule??   
>> --  --
>> ??: "Bruno Coutinho";;
>> : 2013??12??6??(??) 11:14
>> ??: "Open MPI Users";
>> : Re: [OMPI users]?? can you help me please ?thanks
>> 
>> Probably it was the changing from eager to rendezvous protocols as Jeff said.
>> 
>> If you don't know what are these, read this:
>> https://computing.llnl.gov/tutorials/mpi_performance/#Protocols
>> http://blogs.cisco.com/performance/what-is-an-mpi-eager-limit/
>> http://blogs.cisco.com/performance/eager-limits-part-2/
>> 
>> You can tune eager limit chaning mca parameters btl_tcp_eager_limit (for 
>> tcp), btl_self_eager_limit (comunication fron one process to itself), 
>> btl_sm_eager_limit (shared memory) and btl_udapl_eager_limit or 
>> btl_openib_eager_limit (if you use infiniband).
>> 
>> 
>> 2013/12/6 Jeff Squyres (jsquyres) 
>> I sent you some further questions yesterday:
>> 
>> http://www.open-mpi.org/community/lists/users/2013/12/23158.php
>> 
>> 
>> On Dec 6, 2013, at 1:35 AM,  <781578...@qq.com> wrote:
>> 
>> > Here is  my code:
>> > int*a=(int*)malloc(sizeof(int)*number);
>> > MPI_Send(a,number, MPI_INT, 1, 1,MPI_COMM_WORLD);
>> >
>> > int*b=(int*)malloc(sizeof(int)*number);
>> > MPI_Recv(b, number, MPI_INT, 0, MPI_ANY_TAG, MPI_COMM_WORLD, &status);
>> >
>> > number  here is the size of my array(eg,a or b).
>> > I  have try it on my local compute and my rocks cluster.On rocks cluster, 
>> > one processor  on  one frontend node  use "MPI_Send" send a message ,other 
>> > processors on compute nodes use "MPI_Recv" receive message .
>> > when number is least than 1,other processors can receive message fast;
>> > but when  number is more than 15000,other processors can receive message 
>> > slowly
>> > why??  becesue openmpi API ?? or other  problems?
>> >
>> > it spends me a few days , I want your help,thanks for all readers. good 
>> > luck for you
>> >
>> >
>> >
>> >
>> > --  --
>> > ??: "Ralph Castain";;
>> > : 2013??12??5??(??) 6:52
>> > ??: "Open MPI Users";
>> > : Re: [OMPI users] can you help me please ?thanks
>> >
>> > You are running 15000 ranks on two nodes?? My best guess is that you are 
>> > swapping like crazy as your memory footprint problem exceeds available 
>> > physical memory.
>> >
>> >
>> >
>> > On Thu, Dec 5, 2013 at 1:04 AM,  <781578...@qq.com> wrote:
>> > My ROCKS cluster includes one frontend and two  compute nodes.In my 
>> > program,I have use the openmpi API  such as  MPI_Send and  MPI_Recv .  but 
>> >  when I  run  the progam with 3 processors . one processor  send a message 
>> > ,other receive message .here are some code.
>> > int*a=(int*)malloc(sizeof(int)*number);
>> > MPI_Send(a,number, MPI_INT, 1, 1,MPI_COMM_WORLD);
>> >
>> > int*b=(int*)malloc(sizeof(int)*number);
>> > MPI_Recv(b, number, MPI_INT, 0, MPI_ANY_TAG, MPI_COMM_WORLD, &status);
>> >
>> > when number is least than 1,it runs fast.
>> > but number is more than 15000,it runs slowly
>> >
>> > why??  becesue openmpi API ?? or other  problems?
>> > --  --
>> > ??: "Ralph Castain";;
>> > : 2013??12??3??(??) 1:39
>> > ??: "Open MPI Users";
>> > : Re: [OMPI users] can you help me please ?thanks
>> >
>> >
>> >
>> >
>> >
>> > On Mon, Dec 2, 2013 at 9:23 PM,  <781578...@qq.com> wrote:
>> > A simple program at my 4-node ROCKS cluster runs fine with command:
>> > /opt/openmpi/bin/mpirun -np 4 -machinefile machines ./sort_mpi6
>> >
>> >
>> > Another bigger programs runs fine on the head node only with command:
>> >
>> > cd ./sphere; /opt/openmpi/bin/mpirun -np 4 ../bin/sort_mpi6
>> >
>> > But with the command:
>> >
>> > cd /sphere; /opt/openmpi/bin/mpirun -np 4 -machinefile ../machines
>> > ../bin/sort_mpi6
>> >
>> > It