Craig's home page
UKy  Yale
Preprints The family
ML-DDDAS Group Free software Digital pictures
  My Current Class Old Classes
 MGNet IMA 2002 Graduate Student Summer Program
DDDAS LNCC-CCS Workshop
Minimus Journal Computing


Free Software

     I distribute several software packages: GEMMW, SMMP, Madpack, and MpiMG.  They are stored in a format known as gzipped tar format.  A discussion of how to unpack them is in this hyperlink.  This format is quite common on UNIX systems, but quite rare on Windows systems.

    All of these packages are free to use as long as the authors are given credit for them. If you use any of them in a for profit package, please contact me first.

GEMMW

    GEMMW is a Winograd variant of Strassen's fast matrix-matrix multiplication algorithm. It is written in C, uses a minimum amount of extra storage (which can be allocated dynamically or passed to the program), and uses a minimal number of program steps. It uses tricks not found in commercial competitors (IBM and Cray primarily). These tricks are described in detail in the paper

    C.C. Douglas, M.A. Heroux, G. Slishman, and R.M. Smith. GEMMW: A Portable Level 3 BLAS Winograd Variant of Strassen's Matrix-Matrix Multiply Algorithm. Journal of Computational Physics, 110 (1994), pp. 1-10.
This is joint work with the other authors listed above.

SMMP

    SMMP is a sparse matrix-sparse matrix multiplication code. It symbolically determines the product matrix' sparsity pattern, then numerically does the calculation. It is written in Fortran. This package is described in detail in the paper

    R.E. Bank and C.C. Douglas. SMMP: Sparse Matrix Multiplication Package. Advances in Computational Mathematics, 1 (1993), pp. 127-137.
This is joint work with the other author listed above.

Madpack

    Madpack stands for Multilevel, Aggregation, Disaggregation Package. Version 1 was released in May, 1986. It superceded a long line of multigrid solvers (KLEV) that I distributed from 1978 to 1986. Versions 2, 4, and 5 of Madpack are described in a general form in the paper

    C.C. Douglas. Madpack: A family of abstract multigrid or multilevel solvers. Computational and Applied Mathematics, 14 (1995), pp. 3-20.

    Version 2 comes in 3 flavors: all C, almost all Fortran-77, and almost all Ratfor (which translates into Fortran-77). This is a very small package, with sparse matrix iterative and direct solvers. It assumes that everything can be described in terms of matrix operations, including interpolation between solution spaces. Version 2 is a small, easy to learn package that can solve problems conveniently in 1-3 dimensions.

    Version 4 was distributed by IBM's Research Division (Thomas J. Watson Research Center, Yorktown Heights, New York, USA) for several years. It was withdrawn from their anonymous ftp server at my request in January, 1995. If you have a copy, I strongly urge you to migrate to version 5.

    Version 5 is a mixture of C and Fortran+m4 (m4 is a preprocessor that comes with most UNIX systems and there is a GNU m4 that works on everything). This is an object oriented multilevel package. The entire data structure needed by the abstract multilevel solvers is built for the user transparently. Memory is dynamically allocated and freed in an efficient manner. Serial and parallel computers can be used. Matrix free operations are supported. Version 5 requires a small learning curve. Once mastered, it can solve problems conveniently in 1-3 dimensions.

MpiMG

    MpiMG is a parallel multigrid package for solving elliptic boundary value problems in 2 and 3 dimensions. Constant and variable coefficient codes are included. Domain decomposition techniques are used liberally. Parallel iterative solvers for Gauss-Seidel, ADI, and ADG are provided. ADG is a novel ADI-like method which does not require a transpose or more than 1 communication between processors in m iterations, where m is small (m is bigger than would be used normally in a multigrid code). Communication between processors uses MPI. MpiMG is written in Fortran+m4 (m4 is a preprocessor that comes with most UNIX systems and there is a GNU m4 that works on everything). This is joint work with Sachit Malhotra.

 

Cheers,
Craig C. Douglas

Last modified: