The Beowulf HOWTO
Prev |  |

# 7. Run A Program

Once you can do all the tests shown above, you should be able to run a program. From here on in, the instructions are lam specific.

Go back to the head node, log in as wolf, and enter the following commands:

    cat > /nnt/wolf/lamhosts
    wolf01
    wolf02
    wolf03
    wolf04
    <control d>

Go to the lam examples directory, and compile "hello.c":

    mpicc -o hello hello.c
    cp hello /mnt/wolf

Then, as shown in the lam documentation, start up lam:

    [wolf@wolf00 wolf]$ lamboot -v lamhosts
    LAM 7.0/MPI 2 C++/ROMIO - Indiana University
    n0<2572> ssi:boot:base:linear: booting n0 (wolf00)
    n0<2572> ssi:boot:base:linear: booting n1 (wolf01)
    n0<2572> ssi:boot:base:linear: booting n2 (wolf02)
    n0<2572> ssi:boot:base:linear: booting n3 (wolf04)
    n0<2572> ssi:boot:base:linear: finished

So we are now finally ready to run an app. [Remember, I am using lam; your message passing interface may have different syntax].

    [wolf@wolf00 wolf]$ mpirun n0-3 /mnt/wolf/hello
    Hello, world! I am 0 of 4
    Hello, world! I am 3 of 4
    Hello, world! I am 2 of 4
    Hello, world! I am 1 of 4
    [wolf@wolf00 wolf]$

Recall I mentioned the use of NFS above. I am telling the nodes to all use the nfs shared directory, which will bottleneck when using a larger number of boxes. You could easily copy the executable to each box, and in the mpirun command, specify node local directories: mpirun n0-3 /home/wolf/hello. The prerequisite for this is to have all the files available locally. In fact I have done this, and it worked better than using the nfs shared executable. Of course this theory breaks down if my cluster application needs to modify a file shared across the cluster.

Prev | Home |
Verification |  |