Computer Programs
PSR-0231 GRESS-3.0.
last modified: 18-FEB-1999 | catalog | categories | new | search |

PSR-0231 GRESS-3.0.

GRESS-3.0, FORTRAN Precompiler with Differentiation Enhancement

top ]
1. NAME OR DESIGNATION OF PROGRAM:  GRESS-3.0
top ]
2. COMPUTERS

To submit a request, click below on the link of the version you wish to order. Rules for end-users are available here.

Program name Package id Status Status date
GRESS-3.0 PSR-0231/07 Arrived 18-FEB-1999

Machines used:

Package ID Orig. computer Test computer
PSR-0231/07 Many Computers
top ]
3. DESCRIPTION OF PROGRAM OR FUNCTION

The GRESS FORTRAN precompiler (SYMG) and run-time library are used to enhance conventional FORTRAN-77 programs with analytic differentiation of arithmetic statements for automatic differentiation in either forward or reverse mode. GRESS 3.0 is functionally equivalent to GRESS 2.1. GRESS 2.1 is an improved and updated version of the previous released GRESS 1.1. Improvements in the implementation of a the CHAIN option have resulted in a 70 to 85% reduction in execution time and up to a 50% reduction in memory required for forward chaining applications.
top ]
4. METHOD OF SOLUTION

GRESS uses a precompiler to analyze FORTRAN statements and determine the mathematical operations embodied in them. As each arithmetic assignment statement in a program is analyzed, SYMG generates the partial derivatives of the term on the  left with respect to each floating-point variable on the right. The  result of the precompilation step is a new FORTRAN program that can  produce derivatives for any REAL (i.e., single or double precision) variable calculated by the model. Consequently, GRESS enhances FORTRAN programs or subprograms by adding the calculation of derivatives along with the original output. Derivatives from a GRESS enhanced model can be used internally (e.g., iteration acceleration) or externally (e.g., sensitivity studies). By calling GRESS run-time routines, derivatives can be propagated through the code via the chain rule (referred to as the CHAIN option) or accumulated to create an adjoint matrix (referred to as the ADGEN option). A third option, GENSUB, makes it possible to process a subset of a program (i.e., a do loop, subroutine, function, a sequence of subroutines, or a whole program) for calculating derivatives of dependent variables with respect to independent variables. A code enhanced with the GENSUB option can use forward mode, reverse mode, or a hybrid of the two modes.
top ]
5. RESTRICTIONS ON THE COMPLEXITY OF THE PROBLEM

GRESS accepts a majority of ANSI X3.9-1978 standard FORTRAN 77. Restrictions and limitations are discussed in the GRESS User's Manual. Users should also refer to the README.1ST file on the distribution diskette and to the additional restrictions and comments mentioned here. GRESS/SYMG will require significant modifications to implement on non-ASCII computers. Function sub-programs must define the return value of the function immediately before the return statement.
top ]
6. TYPICAL RUNNING TIME

Execution times for both precompiler and enhanced application programs are problem dependent. Running time for application programs will increase significantly after enhancement. On a VAX 8600 computer, the precompiler will process an application FORTRAN program at a rate of approximately 1000 lines of code per 4 seconds of CPU time.
top ]
7. UNUSUAL FEATURES OF THE PROGRAM:
top ]
8. RELATED AND AUXILIARY PROGRAMS

GRESS 2.0 is an improved and updated version of the previously released GRESS 1.1. The major improvement is the implementation of a new precompiler, SYMG, that performs symbolic differentiation of floating point assignment statements. Other improvements include allowing tab characters, include files, statement functions, improved error handling, and an  option that allows the processing of subroutines and functions for derivative calculation. GRESS 2.0 is also more portable than previous releases of GRESS. A code enhanced with GRESS 2.0 will execute two-to-five times faster than a code enhanced with previous  releases of GRESS.
top ]
9. STATUS
Package ID Status date Status
PSR-0231/07 18-FEB-1999 Masterfiled Arrived
top ]
10. REFERENCES

- J.E. Horwedel et al.:
  Sensitivity Analysis of AIRDOS-EPA Using ADGEN with Matrix
  Reduction Algorithms,
  ORNL/TM-11373 (1989)
- J.E. Horwedel et al.: Sensitivity Analysis of EQ3,
  ORNL/TM-11407 (1990)
- J.E. Horwedel et al.:
GRESS, A Preprocessor for Sensitivity Studies of Fortran Programs,   Proc. of SIAM Workshop of Automatic Differentiation of Algorithms:    Theory, Implementation, and Application, Breckenridge, Colorado,
  January 6-8, 1991, p. 243-250 (1991)
- J.E. Horwedel et al.:
Automated Sensitivity Analysis of ana Atmospheric Dispersion Model    Atmospheric Environment Vol 26A, no.9, pp 1643-1649, (1992)
  (printed in Great Britain)
- E.M. Oblow et al.:
  Sensitivity Analysis Using Computer Calculus: A Nuclear Waste
  Application (Nucl. Sci. Eng. 94, 46 (1986))
- B.A. Worley et al.:
  Application of an Automated Procedure for Adding a Comprehensive
  Sensitivity Calculation Capability to the ORIGEN2 Point Depletion
  and Radioactivity Decay Code (Nucl. Sci. Eng. 94, 180 (1986))
- B.A. Worley et al.:
  Experience with the Forward and Reverse Mode of GRESS in
  Contaminant Transport Modeling and Other Applications, Proc. of
  SIAM Workshop on Automatic Differentiation of Algorithms: Theory,
  Implementation, and Application, Breckenridge, Colorado,
  January 6-8, 1991, p. 307-314 (1991)
- G.F. Corliss et al.:
  Automatic Differentiation of Algorithms: Theory, Implementation,
  and Application, Breckenridge, Colorado, January 6-8, 1991,
PSR-0231/07, included references:
- J.E. Horwedel:
  GRESS Version 2.0 User's Manual
  ORNL/TM-11951 (November 1991)
- E.M. Oblow:
  An Automated Procedure for Sensitivity Analysis Using Computer
  Calculus
  ORNL/TM-8776 (May 1983)
- B.A. Worley et al.:
  ADGEN - ADjoint GENerator for Computer Models
  ORNL/TM-11037 (May 1989)
- J.E. Horwedel et al.:
  Matrix Reduction Algorithms for GRESS and ADGEN
  ORNL/TM-11261 (November 1989)
- J.E. Horwedel et al.:
  Reverse Automatic Differentiation of Modular FORTRAN Programs
  ORNL/TM-12050 (March 1992)
top ]
11. MACHINE REQUIREMENTS

GRESS 2.0 is operable on VAX computers. Storing an adjoint matrix requires a direct access storage device.
top ]
12. PROGRAMMING LANGUAGE(S) USED
Package ID Computer language
PSR-0231/07 FORTRAN-77
top ]
13. OPERATING SYSTEM UNDER WHICH PROGRAM IS EXECUTED

FORTRAN 77 and C  compilers are required under the VMS or UNIX operating system. Both  VMS and ULTRIX versions are included for VAX computers.
top ]
14. OTHER PROGRAMMING OR OPERATING INFORMATION OR RESTRICTIONS:
top ]
15. NAME AND ESTABLISHMENT OF AUTHORS

Contributed by: Radiation Safety Information Computational Center
                Oak Ridge National Laboratory
                Oak Ridge, Tennessee, U. S. A.
Developed by:   Oak Ridge National Laboratory, Oak Ridge, Tennessee, USA
top ]
16. MATERIAL AVAILABLE
PSR-0231/07
miscellaneous    mag tapeREADME.RSI RSIC Information file           MISTP
source program   mag tapeGRESS-3.0 Files                            SRCTP
user's guide             ORNL/TM-11951 (November 1991)              WRKPT
report                   ORNL/TM-8776 (May 1983)                    REPPT
report                   ORNL/TM-11037 (May 1989)                   REPPT
report                   ORNL/TM-11261 (November 1989)              REPPT
report                   ORNL/TM-12050 (March 1992)                 REPPT
top ]
17. CATEGORIES
  • P. General Mathematical and Computing System Routines

Keywords: sensitivity analysis.