MA 625: Assignment 7

The assignment is due Thursday, April 29 in class.

Please e-mail your codes to

before class. Please bring to class the pencil and paper part and the code part.

Get a copy of the FMV code by Steve McCormick and save it as TEXT to your local disk (this beats typing it into your computer yourself). You will be able to run this program on a single processor computer that has a Fortran compiler on it.

First, modify the code to run with 12 levels instead of 6 (this will give you a 4096x4096 fine grid problem, which is large enough to be interesting on a parallel computer). You will have to change the array bounds at the head of the program (or you will have memory overruns).

Using primarily domain decomposition techniques, parallelize the code so that it runs on p processors, where p > 1. Usual numbers for p are powers of 2, not random natural numbers. Your code should still run when p = 1, however. Note that you will not get exactly the same results as for the p = 1 case, but you should get something close.

Please use MPI. This will give you a very portable version of the code. If you cannot use MPI, talk to me about using the HP (proprietary) shared memory compiler directives. I would also prefer that you use Fortran, but I will entertain C, C++, or Java with a sufficient reason.

Turn in a report showing your parallel code's speedups with a set of p's. You should use the original, modified single processor code for the base time. Please include at least p = 1, 2, 4, 8, and 16. (You may want to run the rest of the values of p in between.) This will show how well your code scales.

You will need to learn about the SPP's batch system to run your jobs. Please look at the SPP batch queue help available so that you can find out how to submit, check on, and cancel multiprocessor jobs.

Cheers,
Craig C. Douglas