SICOPOLIS V5-dev  Revision 1264
Data Types | Functions/Subroutines | Variables
revolve Module Reference

the module containing the revolve implementation More...

Data Types

type  rvAction
 this encapsulates all the information needed to perfrom the correct action an instance is returned from rvNextAction More...
 

Functions/Subroutines

logical function, public rvInit (steps, checkpoints, errorMsgRevolve, anActionInstance, bundle)
 method to initialize the internal state; must be called before any call to rvNextAction More...
 
logical function, public rvAdjust (steps, checkpoints, errorMsgRevolve)
 method to change the internal state for the total number of steps/checkpoints; must be called after rvInit More...
 
subroutine, public rvVerbose (level)
 method to set the verbosity to a level in [0-3] as described for ourVerbosity More...
 
type(rvaction) function, public rvNextAction ()
 the method to determine the next action; to be called in an unbound loop after rvInit More...
 
integer function, public rvGuess (steps, bundle)
 estimates the number of checkpoints required; equivalent to adjust in Alg. 799 More...
 
double precision function, public rvFactor (steps, checkpoints, bundle)
 computes the run time overhead factor; equivalent to expense in Alg. 799 More...
 

Variables

integer, parameter, public rvstore =1
 store a checkpoint now equivalent to TAKESHOT in Alg. 799 More...
 
integer, parameter, public rvrestore =2
 restore a checkpoint now equivalent to RESTORE in Alg. 799 More...
 
integer, parameter, public rvforward =3
 execute iteration(s) forward equivalent to ADVANCE in Alg. 799 More...
 
integer, parameter, public rvfirstuturn =4
 tape iteration(s); optionally leave to return later; and (upon return) do the adjoint(s) equivalent to FIRSTTURN in Alg. 799 More...
 
integer, parameter, public rvuturn =5
 tape iteration(s) and do the adjoint(s) equivalent to YOUTURN in Alg. 799 More...
 
integer, parameter, public rvdone =6
 we are done with adjoining the loop equivalent to the terminate enum value in Alg. 799 More...
 
integer, parameter, public rverror =7
 an error has occurred equivalent to the error enum value in Alg. 799; see also errorMsgRevolve in rvAction More...
 
integer ourbundle = 1
 the number of iterations that may be bundled for a taping/adjoining sweep; set by calling rvInit; not supposed to be set/used directly by the user; More...
 
integer ourtail = 1
 the number of iterations in the last bundle set by calling rvInit; not supposed to be set/used directly by the user; More...
 
integer, dimension(:), allocatable ourstepof
 vector of step numbers indexed by checkpoint; not to be set/referemced directly by the user More...
 

Detailed Description

the module containing the revolve implementation

Function/Subroutine Documentation

logical function, public revolve::rvAdjust ( integer, intent(in)  steps,
integer, intent(in)  checkpoints,
character(*), intent(out)  errorMsgRevolve 
)

method to change the internal state for the total number of steps/checkpoints; must be called after rvInit

Parameters
stepsthe total number of steps in the iteration; equivalent to steps in Alg. 799
errorMsgRevolveset when an error condition occurs; else set to "none"
Returns
.true. if successfull, else .false. ansd errorMsgRevolve will be set

Definition at line 261 of file revolve.f90.

double precision function, public revolve::rvFactor ( integer, intent(in)  steps,
integer, intent(in)  checkpoints,
integer, intent(in), optional  bundle 
)

computes the run time overhead factor; equivalent to expense in Alg. 799

Parameters
stepsis the number of iterations
checkpointsis the number of allowed checkpoints
bundleis optional; detaults to 1, if specified indicates the number of iterations bundled in one tape/adjoint sweep
Returns
the estimated runtime overhead factor (does not account for the time needed to write checkpoints)

this method does not change the internal state and does not require rvInit

Definition at line 514 of file revolve.f90.

integer function, public revolve::rvGuess ( integer, intent(in)  steps,
integer, intent(in), optional  bundle 
)

estimates the number of checkpoints required; equivalent to adjust in Alg. 799

Parameters
stepsis the number of iterations
bundleis optional; detaults to 1, if specified indicates the number of iterations bundled in one tape/adjoint sweep
Returns
the number of checkpoints such that the growth in spatial complexity is balanced with the growth in temporal complexity

this method does not change the internal state and does not require rvInit

Definition at line 448 of file revolve.f90.

logical function, public revolve::rvInit ( integer, intent(in)  steps,
integer, intent(in)  checkpoints,
character(*), intent(out)  errorMsgRevolve,
type(rvaction), optional  anActionInstance,
integer, intent(in), optional  bundle 
)

method to initialize the internal state; must be called before any call to rvNextAction

Parameters
stepsthe total number of steps in the iteration; equivalent to steps in Alg. 799
checkpointsthe total number of checkpoints allowed to be stored at any time; equivalent to snaps in Alg. 799
errorMsgRevolveset when an error condition occurs; else set to "none"
anActionInstanceif supplied initializes its contents
bundleif supplied initializes ourBundle
Returns
.true. if successfull, else .false. ansd errorMsgRevolve will be set

Definition at line 182 of file revolve.f90.

type(rvaction) function, public revolve::rvNextAction ( )

the method to determine the next action; to be called in an unbound loop after rvInit

Returns
an instance of rvAction set to describe the next action (see the member documentation);

this method modifies the internal state; it is approximately equivalent to the method revolve in Alg. 799

available checkpoint slots

local copy of previous subrange start

Definition at line 284 of file revolve.f90.

subroutine, public revolve::rvVerbose ( integer, intent(in)  level)

method to set the verbosity to a level in [0-3] as described for ourVerbosity

Definition at line 273 of file revolve.f90.

Variable Documentation

integer revolve::ourbundle = 1

the number of iterations that may be bundled for a taping/adjoining sweep; set by calling rvInit; not supposed to be set/used directly by the user;

the default is 1 loop iteration which makes it equivalent to Alg. 799

Definition at line 110 of file revolve.f90.

integer, dimension(:), allocatable revolve::ourstepof

vector of step numbers indexed by checkpoint; not to be set/referemced directly by the user

Definition at line 159 of file revolve.f90.

integer revolve::ourtail = 1

the number of iterations in the last bundle set by calling rvInit; not supposed to be set/used directly by the user;

the default is 1 (for ourBundle = 1) which makes it equivalent to Alg. 799

Definition at line 116 of file revolve.f90.

integer, parameter, public revolve::rvdone =6

we are done with adjoining the loop equivalent to the terminate enum value in Alg. 799

Definition at line 53 of file revolve.f90.

integer, parameter, public revolve::rverror =7

an error has occurred equivalent to the error enum value in Alg. 799; see also errorMsgRevolve in rvAction

Definition at line 58 of file revolve.f90.

integer, parameter, public revolve::rvfirstuturn =4

tape iteration(s); optionally leave to return later; and (upon return) do the adjoint(s) equivalent to FIRSTTURN in Alg. 799

Definition at line 45 of file revolve.f90.

integer, parameter, public revolve::rvforward =3

execute iteration(s) forward equivalent to ADVANCE in Alg. 799

Definition at line 41 of file revolve.f90.

integer, parameter, public revolve::rvrestore =2

restore a checkpoint now equivalent to RESTORE in Alg. 799

Definition at line 37 of file revolve.f90.

integer, parameter, public revolve::rvstore =1

store a checkpoint now equivalent to TAKESHOT in Alg. 799

Definition at line 33 of file revolve.f90.

integer, parameter, public revolve::rvuturn =5

tape iteration(s) and do the adjoint(s) equivalent to YOUTURN in Alg. 799

Definition at line 49 of file revolve.f90.