CS87: MPI practice

MPI practice
We are going to talk about the MPI interface using the tutoral from Lawrence Livermore National Library as a languge reference: LLNL's MPI tutorial

Links to other MPI tutorial and references are here: MPI links

There are also man pages for MPI library functions. We are also going to try out some things as we go, so start by copying over these files:

    cp -r ~newhall/public/cs87/mpi_examples/* .

We will look over and do the following together:

  1. Environment Management Routines: try out hello_world example after setting up environment to run applications: using openMPI on our system.

  2. Collective Communication Routines (Barrier and Bcast): look at bcast example

  3. Collective Communication Routines (Reduce): try approx_pi

  4. Point to Point Communication Routines: look at twoDarraydistr

  5. Try implementing game of life using what we have learned. Use a grid layout of the array. For example, for 4 processes pid 0 would get the top left quarter of the array, pid 1 the top right quarter of the array, pid 2 the left bottom quarter of the array, pid 3 the right bottom quarter of the array.
  6. Try implementing a solution to an irregular work pattern using the work queue idea. One problem in the book looks at computing the largest factor of expansion of the Syracuse Sequence:
        Xi+1  =   Xi/2    when Xi is even 
                  3Xi+1   when Xi is odd
    
       if you look at this sequence for 16:
         16, 8, 4, 2, 1   the largest factor of expansion is 16/16 = 1
       if you look at this sequence for 15:
         15, 46, 23, 70, ... 160 ... 1   the largest factor of expansion is 160/15 = 10.67
    
    Try to find the largest factor of expansion for a large set of values (everything up to N, where N is huge)

    Because the number of terms in the sequence for different starting values varies, you don't just want to give each process N/P values to start out with.