Tena Sakai wrote:
Hi,

I have a script I call fib.r.  It looks like:

   #!/usr/bin/env r
fib <- function( n ) {
                a <- 0
                b <- 1
                for ( i in 1:n ) {
                    t <- b
                    b <- a
                    a <- a + t
                }
                a
            }
print( fib(argv[1]) )

When I run this script with a parameter, it generates a fibonocci number:

   $ fib.r 5
   5
   $ fib.r 6
   8

and if I stick this into <program> part of MIMD example I have used previously:

   $ mpirun -H vixen -np 1 hostname : --hostfile myhosts -np 8 fib.r 7

I get:

   vixen.egcrc.org
   [1] 13
   [1] 13
   [1] 13
   [1] 13
   [1] 13
   [1] 13
   [1] 13
   [1] 13

This is good as proof of concept, but what I really want to do is to have that 7 different for each (slave) process. Ie., I want to run “rfib 5” on node 0, “rfib 6” on node 1, “rfib 7” on node 2, and so on. Is there any way to give a different
parameter(s) to different process/slot?

I thought maybe I can use –rf option to do this, but I am leaning toward –app option. Unfortunately, I see no example for the application context file. Would
someone kindly explain how I can do what I describe?

Thank you.

Tena Sakai
tsa...@gallo.ucsf.edu


Hi Tena

We ran MPMD/MIMD programs  here using in the past.
Coupled climate modes: atmosphere, ocean, sea ice, etc, each one one executable, communicating via MPI. Actually this was with MPICH1, somewhat different syntax than OpenMPI, the flag/file was called '-pgfile' not '-app',
but I see no reason why it shouldn't work in your case with OpenMPI.

I think if you create a 'appfile' with this content:

-H node0 -np 1 rfib 5
-H node0 -np 1 rfib 6
...

and launch mpirun with

mpirun -app appfile

it is likely to work.

Under Torque I cannot test this very easily,
because I need to parse the Torque file that gives me the nodes,
then write down the 'appfile' on the fly (which is what I used to
do for the coupled climate models).

However, I tried on a standalone machine (where the -H nodename didn't
make sense, and was not used) and it worked.
My appfile test was like this:
-np 1 ls appfile
-np 1 hostname
-np 2 date
-np 4 who

You can add your -H nodename to each line.

I hope this helps,
Gus Correa
---------------------------------------------------------------------
Gustavo Correa
Lamont-Doherty Earth Observatory - Columbia University
Palisades, NY, 10964-8000 - USA
---------------------------------------------------------------------

Reply via email to