Programs -------- oned: Solve the 2-d Poisson problem using 1-d decomposition and the exchange code in exchng1.f (see below) onedsync: Solve the 2-d Poisson problem using 1-d decomposition and the exchange code in exsync1d.f (see below) onedsandr: Solve the 2-d Poisson problem using 1-d decomposition and the exchange code in exsandr1d.f (see below) onedpair: Solve the 2-d Poisson problem using 1-d decomposition and the exchange code in expair1d.f (see below) onednb: Solve the 2-d Poisson problem using 1-d decomposition, the exchange code in exchng1nb.f (see below), and the sweep code in sweep.f onedovlp: Solve the 2-d Poisson problem using 1-d decomposition, the exchange code in nbexchng.f (see below), and the sweep code in nbsweep.f . Overlaps computation with communication. twod: Solve the 2-d Poisson problem using 2-d decomposition and the code in exchng2.f (see below) Versions of the programs with "pr" at the end (e.g., onedpr) are linked with the MPE profiling libraries. Scripts ------- runprogs: Example script to run the programs (and the profiling versions) using mpirun runtab1: Example script to run the programs used to generate Table 4.7 (Timings for variants of the 1-D decomposition of the Poisson problem) Source Files ------------ Makefile.in: This is a makefile template that is compatible with the makefile templates used by the MPICH model MPI implementation. Makefile: SAMPLE Makefile generated from Makefile.in. You will almost certainly need to modify this for your MPI version base.f: Example of a Jacobi sweep; used in text. This is a code fragment decomp.f A Fortran version of MPE_DECOMP1D; used in several routines diff.f Computes the difference between two successive approximate solutions, assuming a 1-d decomposition of a 2-d domain diff2d.f Computes the difference between two successive approximate solutions, assuming a 2-d decomposition of a 2-d domain exbsend.f Exchange data with neighbors for a 1-d decomposition of a 2-d domain, using send and receive up, then down. Uses buffered sends. exchng1.f Version of exbsend.f that uses the MPI_SENDRECV call exchng1nb.f Version of exbsend.f that used nonblocking send and receive (MPI_ISEND, MPI_IRECV, and MPI_WAITALL) exchng2.f Exchange data with neighbors for a 2-d decomposition of a 2-d domain, using MPI_SENDRECV and a "strided" data-type. expair1d.f Version of exbsend.f that uses "pair" blocking sends and receives. exsandr1d.f Version of exbsend.f that uses MPI_SEND instead of MPI_BSEND. exsync1d.f Version of exbsend.f that uses MPI_SSEND instead of MPI_BSEND. Used to show behavior of MPI_SEND when no internal buffering is provided. fndnbr2d.f Compute the neighbors and decomposition for a 2-d decomposition of a 2-d domain. nbexchng.f Non-blocking exchange. This is similar to exchng1nb.f, except that the MPI_WAITALL is called depending on an input argument (allowing the communication to overlap computation). nbsweep.f Special sweep for use with non-blocking exchange. This has two parts; the first does not involve any of the elements that are being exchanged and the second involves only those elements, allowing communication and computation to overlap. oned.f Main program for the solution to the Poisson problem using Jacobi interation on a 1-d decomposition of a 2-d domain. onedbase.f Support routines for oned.f. Contains routine to initialize data. onedcenter.f Code fragment for kernel of Poisson solver example onednb.f Version of oned.f that uses the nonblocking exchange routine (nbexchng.f) sweep.f Routine to perform a Jacobi sweep for a 1-d decomposition decomposition of a 2-d domain sweep2.f Routine to perform a Jacobi sweep for a 2-d decomposition decomposition of a 2-d domain twod.f Main program for the solution to the Poisson problem using Jacobi interation on a 2-d decomposition of a 2-d domain. twodbase.f Support routines for twod.f. Contains routine to initialize data. Building Programs: You may need to add a link for 'mpif.h' to this directory. To use the MPICH configure to construct the Makefile for this directory, do ln -s /config.status ( setenv CONFIG_FILES Makefile ; ./config.status ) (This assumes that you are using csh as your shell).