IMPORTANT INFORMATION FOR NEW USERS OR USERS OF EARLIER VERSIONS

The Fortran subroutines in MUDPACK discretize a variety of elliptic Partial Differential Equations (PDEs) and boundary conditions using finite difference formula on grids superimposed on the rectangular solution regions. Then multigrid iterative techniques are used with point, line, or planar relaxation to generate second- and fourth-order approximations to the underlying real and complex, two- and three-dimensional continuous problems.

The MUDPACK software package includes 124 files containing over 100,000 lines of Fortran77 code and documentation. The code may also be compiled with Fortran90 and 95 compilers, but you may need to provide correct flags since the source code is fixed rather than free source form.

The subroutine names, functionality, argument lists, test programs, and documentation files for version 5.0.1 and version 5.0 of MUDPACK are identical. 5.0.1 corrects an error in subroutine mud2sp, namely, an incorrect call to routine rcd2spp is replaced by a call to rmd2spp.

PARALLEL PERFORMANCE

In single processor mode, the openMP statements in version 5.0.1 of MUDPACK are interpreted as comment cards not affecting execution. To ensure this is the case, users should check that their compilers do not recognize OpenMP directives by default. If this is the case, the directives can be turned off with compiler flags or removed by passing MUDPACK source code through an appropriate sed or awk script which removes lines beginning with C$OMP.

Parallel performance was measured on on a Cray J9, a SGI Origin, and a two processor IBM SP computer, using the three MUDPACK solvers mud2, mud3, and mud3cr. The tables below record measured wall clock time in seconds for an increasing number of processors, mp. For each example and grid size, either the least expensive relaxation method (point relaxation with 5 multigrid cycles) or the more expensive and robust relaxation method (line relaxations in all directions with 3 multigrid cycles) is executed. This is typical of the amount of computation needed to solve elliptic problems with the numerical methods embedded in MUDPACK.

The second example illustrates that the cost overhead for parallelization of medium resolution two-dimensional problems can cancel any advantage gained by selecting more than one processor. Once a resolution is chosen, some preliminary timings should be made before using a MUDPACK solver with more than one processor.

Example 1: (513 X 769 grid) executing 3 multigrid cycles using bi-directional line relaxations with the multigrid solver mud2.

Cray J9
SGI Origin
IBM SP
time mp time mp time mp
16.86 1 8.78 1 9.93 1
9.76 2 6.88 2 5.61 2
6.46 4 5.29 4
5.33 8 4.30 8
3.90 16 3.89 16

Example 2: (257 X 193 grid) executing 5 multigrid cycles using red/black Gauss-Seidel point relaxation with the multigrid solver mud2.

Cray J9
SGI Origin
IBM SP
time mp time mp time mp
0.38 1 0.27 1 0.17 1
0.42 2 0.49 2 0.15 2
0.44 4 0.95 4
0.44 8 0.99 8
0.45 16 1.16 16

Example 3: (95 X 65 X 129 grid) executing 5 multigrid cycles using red/black Gauss-Seidel point relaxation with the multigrid solver mud3.

Cray J9
SGI Origin
IBM SP
time mp time mp time mp
8.21 1 9.83 1 6.63 1
4.97 2 8.46 2 4.03 2
3.33 4 5.17 4
2.62 8 4.22 8
2.54 16 3.13 16

Example 4: (49 X 257 X 49 grid) executing to a prescribed error tolerance with point relaxation and then with line relaxations in 3 directions with the quasi-multigrid solver mud3cr (see the documentation mud3cr.d and the test program tmud3cr.f for a description of the problem approximated).

SGI Origin (point)
SGI Origin (lines)
time mp time mp
39.6 1 74.2 1
28.7 2 41.1 2
12.0 4 26.8 4
9.8 8 20.0 8
8.9 16 15.7 16

BINARY MUDPACK LIBRARY AVAILABLE TO NCAR COMPUTER USERS

If you compute on NCAR's CISL computers, you may request the binary MUDPACK library be placed on /contrib for that computer. Please use the CISL Customer Support link to make this request: CISL Customer Support

VERSION 5.0.1 INCOMPATIBLE WITH VERSIONS EARLIER THAN 4.0

Version 5.0.1 of MUDPACK is the latest in a series of major revisions since the software was first released in 1990. Changes in argument lists, work space requirements, and file organization make the current version incompatible with versions of MUDPACK built before version 4.0. The functionality has been expanded by adding new solvers. To ensure portability, all MUDPACK 5.0.1 software has been passed through fortran verification software and compiled and executed on different platforms with both fortran77 and fortran90 compilers.

OUTLINE OF MAJOR CHANGES BETWEEN VERSIONS 4.0 AND 5.0

(1) Open MP directives

Open MP directives have been inserted in the time critical portions of each of 44 files within MUDPACK. This was done for do loops where red/black Gauss-Seidel point, line, and planar relaxation (for 3-d problems) are executed at different grid levels and in loops where weighted residual restrictions occur. The relaxation and residual restriction portion of multigrid codes account for at least 90% of the execution time with most problems. It was necessary to restructure line relaxation kernels to allow more efficient parallelization when open MP directives are inserted. The changes did not adversely affect single processor vector performance. See the parallel performance tables above, on this page, for improvement measurements on a variety of machines at the National Center for Atmospheric Research.

(2) Code Simplification and modernization.

Code simplification has been achieved by expanding internal arrays to include virtual boundaries. This has reduced the code complexity required to handle the variety of boundary conditions MUDPACK software allows. Tests have indicated the resulting streamlining has yielded a 10-30% speedup for a single processor depending on the problem and resolution. Use of equivalencing between arrays has been eliminated. Statement labels have been eliminated, all variable types declared, and nested loops have been streamlined and indented.

(3) Separation of discretization and approximation calls

The first call to a solver discretizes the continuous elliptic PDE and boundary conditions using standard second-order finite difference formula. Afterwards, calls to generate approximations can be made. This is a natural separation analogous to separating the LUD factorization and solution phase in matrix solvers. Further it allows more appropriate efficiency monitoring of MUDPACK software since the discretization phase is heavily dependent upon user provided subroutines for inputing coefficients and boundary conditions. Only the approximation phase should be monitored for efficiency. Earlier versions of MUDPACK allowed discretization and approximation to occur with the same call.

(4)Simplification of multigrid options

The variants in multigrid cycling have been simplified in version 5.0. F cycling and unweighted or half weighted residual restriction were deemed unnecessary and have been eliminated. V cycles or W cycles with fully weighted residual restriction are retained as the optimal choices. More general multigrid cycling is allowed but flagged as a nonfatal error indicating probable inefficient use of multigrid. The prolongation operator can still be either linear or cubic interpolation.

(5)New three-dimensional solvers

New "hybrid" three-dimensional multigrid/direct method solvers muh3 and cuh3 along with a quasi-multigrid solver, mud3cr, for three-dimensional problems with cross derivative terms and possibly oblique derivative boundary have been added to the package. Use of hybrid solvers for nonsingular two- and three-dimensional problems is encouraged since they can be more robust then their "multigrid only" counterparts and they cost only marginally more in computation and storage. The hybrid solvers also provide more choices of grid resolution.

(6)Four color relaxation

Four color relaxation has replaced red/black relaxation for PDEs with cross derivative terms. This can provide better convergence rates.

(7)Correction in planar relaxation

If planar relaxation is selected for three-dimensional anisotropic PDEs then full two-dimensional multigrid cycling is implemented for each plane visited during three dimensional multigrid cycling. Earlier versions of MUDPACK did not use full two-dimensional cycling.

Return to MUDPACK web site