Computer Programs

NAME OR DESIGNATION OF PROGRAM, COMPUTER, DESCRIPTION OF PROGRAM OR FUNCTION, METHOD OF SOLUTION, RESTRICTIONS ON THE COMPLEXITY OF THE PROBLEM, TYPICAL RUNNING TIME, UNUSUAL FEATURES OF THE PROGRAM, RELATED AND AUXILIARY PROGRAMS, STATUS, REFERENCES, MACHINE REQUIREMENTS, LANGUAGE, OPERATING SYSTEM UNDER WHICH PROGRAM IS EXECUTED, OTHER PROGRAMMING OR OPERATING INFORMATION OR RESTRICTIONS, NAME AND ESTABLISHMENT OF AUTHORS, MATERIAL, CATEGORIES

[ top ]

[ top ]

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.

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.

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.

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.

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 ]

[ 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.

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 ]

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,

- 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 ]

[ top ]

[ top ]

[ top ]

[ top ]

PSR-0231/07

miscellaneous mag tapeREADME.RSI RSIC Information file MISTPsource 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

Keywords: sensitivity analysis.