Quoted from:https://www.csm.ornl.gov/chammp/pstswm/index.html
PSTSWM is a message-passing benchmark code and parallel algorithm testbed that solves the nonlinear shallow water equations on a rotating sphere using the spectral transform method. It is a parallel implementation of STSWM, developed by J. J. Hack and R. Jacob at the National Center for Atmospheric Research (NCAR) and used to generate reference solutions for the shallow water test cases described in
PSTSWM was developed to evaluate parallel algorithms for the spectral transform method as it is used in global atmospheric circulation models. Multiple parallel algorithms are embedded in the code and can be selected at run-time, as can the problem size, number of processors, and data decomposition. Six different problem test cases are also supported, each with associated reference solutions and error analysis options.
PSTSWM is written in Fortran 77 with VMS extensions and a small number of C preprocessor directives. Message passing is implemented using MPI, MPI/SHMEM, PICL, PVM, and/or native message passing libraries, with the choice being made at compile time. Additionally, all message passing is encapsulated in three high level routines for broadcast, global minimum and global maximum, and in two classes of low level routines representing variants and/or stages of the swap operation and the send/receive operation. Porting the code to another message passing system requires either porting the PICL, MPI, or PVM libraries and/or implementing the (few) communication routines in PSTSWM using native message passing primitives.
Two versions of PSTSWM are available here. Version 4.0 was last modified in October of 1995. It is the basis of the codes used the PARKBENCH benchmark suite, and includes the PICL tracing and profiling library. Version 6.9 is the most recent version of the (still evolving) research code, which is used for benchmarking and performance analysis of high performance computing systems. It includes a number of features and modifications not found in version 4.0, including
- higher precision calculation of Gauss quadrature weights and locations and of Associated Legendre Polynomials and their derivatives, eliminating a numerical stability problem in the original STSWM code;
- Fourier transform routines that can handle transform lengths with factors 2-3-5;
- compile-time options to use platform-specific math library routines for FFTs and memory copies;
- checkpoint/restart;
- code to guarantee that certain fields are not vertically decomposed during semi-implicit timestepping in spectral space, to more accurately represent parallel 3D spectral atmospheric models;
- runtime options to use synchronous MPI point-to-point communication routines (in addtion to the blocking, nonblocking, and ready commands already supported);
- runtime options to use SHMEM put/get one-sided messaging for the performance critical message-passing;
- runtime options to call MPI collective communication routines;
- compile-time options to use vector-friendly alternative implementations of performance-critical routines;
- runtime option to execute multiple simultaneous serial experiments on a parallel system;
- runtime option to run in a subset of the available processors, leaving some processors idle.
Version 6.9 comes with makefiles for the following platforms
- Cray T3E
- Cray X1
- HP AlphaServer SC
- HP AlphaServer GS (Marvel)
- HP Exemplar
- IBM SP (including both Power3 and Power4 clusters)
- Linux/MPICH
- NEC SX5
- NEC SX6
- SGI Altix
- SGI Origin
and it is easily ported to most systems with an MPI library and a Fortran compiler. The PICL library is not included with the release of version 6.9. PICL is still used internally as an MPI profiling library, and is available upon request. Documentation of the new features in PSTSWM v6.9 is also missing, but the code is "backward compatible" with the original documentation. Updated documentation may appear someday, but it is unlikely. Questions should be directed to worleyph@ornl.gov.
To create PSTSWM v4.0, you need pstswm.v4.0.tar.Z. Use uncompress to generate pstswm.v4.0.tar. Next, untar pstswm.v4.0.tar to create the directory pstswm.v4. From within this directory, type "make" for information on what make parameters to use. The userguide should be used for additional information on compiling and for directions on executing the code. As of 4/1/95, PSTSWM v4.0 ran on the Cray Research T3D, the IBM SP-1 and SP-2, the Intel iPSC/2, iPSC/860, DELTA, and Paragon (on both GP and MP nodes and using either the NX or SUNMOS operating systems), the nCUBE/2 and nCUBE/2S, across a network of workstations, and on a Cray vector machine (as a serial application).
To create PSTSWM v6.9, you need pstswm.v6.9.tar.gz. Use gunzip to generate pstswm.v6.9.tar. Next, untar pstswm.v6.9.tar to create the directory pstswm.v6.9. From within this directory, type "make" for information on what make parameters to use. As with v4.0, the userguide should be used for additional information.
PSTSWM was originally developed by P. H. Worley at Oak Ridge National Laboratory and by I. T. Foster at Argonne National Laboratory as part of the Department of Energy CHAMMP research program. Worley has been responsible for most subsequent development.