KeLP Code for the Curious

KeLP facilitates the design of reusable software. In this spirit we are providing our users with source codes that may be used as starting points for your applications.

Currently 14 applications are available:

jacobi2D_noAPI jacobi3D_basic rb3D NAS-FT region3_init
jacobi2D_useAPI jacobi3D_contig rb3D_MPI SUMMA region3_move
  jacobi3D_manhattan NAS-MG SUMMA_MPI region3_xcut

 

jacobi2D
Solves the 2D Poisson Equation using Jacobi's method (found in the KeLP distribution) There are two versions.
noAPI
uses the DOCK library for data decomposition
useAPI
uses the mgrid API described in the KeLP User's guide
jacobi3D
Solves 3D Poisson Equation using Jacobi's method. There are 3 versions:
basic
is the simplest version and you should start with this one before exploring how to optimize communication through direct MotionPlan manipulation (this is described in the KeLP technical reports.)
Manhattan
Manhattan stencil optimization - modifies MotionPlan.
contig
Contiguous face optimization - modifies MotionPlan.
rb3D
Solves Poisson's equation using Gauss-Seidel's method with Red/Black ordering. Includes extensive benchmarking code an performance optimizations. There is also a hand code MPI version called rb3D_MPI
The rb3D program supports various command line options to configure processor geometries and so on. Click HERE for an explanation of command line options and output format, but also look at the source code for the details. Note that there are two cache blocking factors, and only 2 processor geometry specifiers.
 
NAS-MG
Solves an elliptic equation in 3D dimensions using multigrid v-cycles.
 
NAS-FT
Solves the 3D heat equation using a Fourier method.
 
SUMMA
Performs a blocked matrix multiply using the SUMMA algorithm by van de Geijn et al. at Univ. Texas at Austin. There is also a hand-coded version (a modified version of code made publicly available by van de Geijn) called SUMMA_MPI
 
region3_init   region3_move   region3_xcut
These are small tutorial programs that will be docuemented in the User's guide.
 

Running your program

Develop your code on a workstation and collect timing measurements on the platform of your choice. Supported platforms include

  • IBM SP2,
  • Linux Beowulf clusters,
  • SGI-CRAY Origin 2000,
  • Solaris workstation clusters running  MPI-CH.
  • A Cray T3E port is in the works along with a port to Sun HPC.


    Maintained by Scott B. Baden. Last modified: 08/11/99 04:59:20 Copyright © 1999, Scott B. Baden.