/[MITgcm]/MITgcm_contrib/heimbach/OpenAD/code_shallow_openad/ad_template.checkpoint.f
ViewVC logotype

Annotation of /MITgcm_contrib/heimbach/OpenAD/code_shallow_openad/ad_template.checkpoint.f

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.5 - (hide annotations) (download)
Thu Dec 19 16:09:57 2013 UTC (12 years, 10 months ago) by utke
Branch: MAIN
CVS Tags: HEAD
Changes since 1.4: +0 -0 lines
FILE REMOVED
stale

1 heimbach 1.1 subroutine template()
2     use OpenAD_checkpoints
3     use OpenAD_tape
4     use OpenAD_rev
5    
6     c we may need these for the checkpointing
7     use SIZE_mod
8     use EEPARAMS_mod
9     use PARAMS_mod
10     use BAR2_mod
11     use BARRIER_mod
12     use CG2D_mod
13     use CG3D_mod
14     use DFILE_mod
15     use DYNVARS_mod
16     use EEIO_mod
17     use EESUPPORT_mod
18     use EOS_mod
19     use EXCH_JAM_mod
20     use EXCH_mod
21     use FC_NAMEMANGLE_mod
22     use FFIELDS_mod
23     use GAD_mod
24     use GLOBAL_MAX_mod
25     use GLOBAL_SUM_mod
26     use GRID_mod
27     use MPI_INFO_mod
28     use SOLVE_FOR_PRESSURE3D_mod
29     use SOLVE_FOR_PRESSURE_mod
30     use SURFACE_mod
31     use tamc_mod
32     use tamc_keys_mod
33     use cost_mod
34     use g_cost_mod
35     use ctrl_mod
36     use ctrl_dummy_mod
37     use ctrl_weights_mod
38     use optim_mod
39     use grdchk_mod
40    
41     !$TEMPLATE_PRAGMA_DECLARATIONS
42    
43     integer :: cp_loop_variable_1,cp_loop_variable_2,
44     + cp_loop_variable_3,cp_loop_variable_4,cp_loop_variable_5
45    
46     type(modeType) :: our_orig_mode
47    
48     integer iaddr
49     external iaddr
50    
51     character*(80):: indentation='
52     + '
53    
54     our_indent=our_indent+1
55 utke 1.3
56     write(*,
57     +'(A,A,A,A,L,A,L,A,L,A,L,A,L,A,L,A,I6,A,I6,A,I6,A,I6,A,I8,A,I8)')
58     +'JU:',indentation(1:our_indent), 'enter __SRNAME__:',
59 utke 1.2 +' As:',our_rev_mode%arg_store,
60     +' Ar:',our_rev_mode%arg_restore,
61     +' Pl:',our_rev_mode%plain,
62     +' Ta:',our_rev_mode%tape,
63     +' Ad:',our_rev_mode%adjoint,
64 utke 1.3 +' Sw:',our_rev_mode%switchedToCheckpoint,
65     +' CD:',cp_double_pointer,
66     +' CI:',cp_integer_pointer,
67     +' CB:',cp_boolean_pointer,
68     +' CS:',cp_string_pointer,
69     +' TD:',double_tape_pointer,
70     +' TI:',integer_tape_pointer
71 utke 1.2
72     if (our_rev_mode%switchedToCheckpoint) then
73 heimbach 1.1
74     if (our_rev_mode%arg_store) then
75     write(*,'(A,A,A)')
76 utke 1.3 +'JU:',indentation(1:our_indent),
77     +' __SRNAME__: entering arg store'
78 heimbach 1.1 !$PLACEHOLDER_PRAGMA$ id=4
79     end if
80     if (our_rev_mode%arg_restore) then
81     write(*,'(A,A,A)')
82     +'JU:',indentation(1:our_indent),
83 utke 1.3 +' __SRNAME__: entering arg restore'
84 heimbach 1.1 !$PLACEHOLDER_PRAGMA$ id=6
85     end if
86     if (our_rev_mode%plain) then
87     write(*,'(A,A,A)')
88 utke 1.3 +'JU:',indentation(1:our_indent),
89     +' __SRNAME__: entering plain'
90 heimbach 1.1 our_orig_mode=our_rev_mode
91     our_rev_mode%arg_store=.FALSE.
92 utke 1.3 write(*,'(A,A,A)')
93     +'JU:',indentation(1:our_indent),
94     +' __SRNAME__: run plain, down plain'
95 heimbach 1.1 !$PLACEHOLDER_PRAGMA$ id=1
96     our_rev_mode=our_orig_mode
97     end if
98     if (our_rev_mode%tape) then
99     write(*,'(A,A,A)')
100 utke 1.3 +'JU:',indentation(1:our_indent),
101     +' __SRNAME__: entering tape'
102 heimbach 1.1 our_orig_mode=our_rev_mode
103     our_rev_mode%arg_store=.TRUE.
104     our_rev_mode%arg_restore=.FALSE.
105     our_rev_mode%plain=.TRUE.
106     our_rev_mode%tape=.FALSE.
107     our_rev_mode%adjoint=.FALSE.
108     write(*,'(A,A,A)')
109     +'JU:',indentation(1:our_indent),
110 utke 1.3 +' __SRNAME__: run tape, down arg store/plain'
111     !$PLACEHOLDER_PRAGMA$ id=2
112 heimbach 1.1 our_rev_mode%arg_store=.FALSE.
113     our_rev_mode%arg_restore=.TRUE.
114     our_rev_mode%plain=.FALSE.
115     our_rev_mode%tape=.TRUE.
116 utke 1.3 our_rev_mode%adjoint=.FALSE.
117     write(*,'(A,A,A)')
118     +'JU:',indentation(1:our_indent),
119     +' __SRNAME__: following with adjoint, down arg restor/tape'
120 heimbach 1.1 !$PLACEHOLDER_PRAGMA$ id=3
121     our_rev_mode=our_orig_mode
122     end if
123    
124 utke 1.2 else
125    
126     our_rev_mode%switchedToCheckpoint = .TRUE.
127    
128     if (our_rev_mode%arg_store) then
129     write(*,'(A,A,A)')
130 utke 1.3 +'JU:',indentation(1:our_indent),
131     +' __SRNAME__: s2c entering arg store'
132     write(*,*) 'JU: ERROR : arg store here is wrong logic'
133     stop
134 utke 1.2 end if
135     if (our_rev_mode%arg_restore) then
136     write(*,'(A,A,A)')
137     +'JU:',indentation(1:our_indent),
138 utke 1.3 +' __SRNAME__: entering arg restore'
139     write(*,*) 'JU: ERROR : arg restore here is wrong logic'
140     stop
141 utke 1.2 end if
142     if (our_rev_mode%plain) then
143     write(*,'(A,A,A)')
144 utke 1.3 +'JU:',indentation(1:our_indent),
145     +' __SRNAME__: s2c entering plain'
146 utke 1.2 our_orig_mode=our_rev_mode
147     !$PLACEHOLDER_PRAGMA$ id=1
148     our_rev_mode=our_orig_mode
149     end if
150     if (our_rev_mode%tape) then
151     write(*,'(A,A,A)')
152 utke 1.3 +'JU:',indentation(1:our_indent),
153     +' __SRNAME__: s2c entering as tape'
154 utke 1.2 c we have to switch from split to checkpointing mode
155     c i.e. outside taping means top level checkpointing here
156     write(*,'(A,A,A)')
157 utke 1.3 +'JU:',indentation(1:our_indent),
158     +' __SRNAME__: s2c store argument cp'
159 utke 1.2 !$PLACEHOLDER_PRAGMA$ id=4
160     c now do the forward run down a plain
161     our_orig_mode=our_rev_mode
162     our_rev_mode%arg_store=.FALSE.
163     our_rev_mode%arg_restore=.FALSE.
164     our_rev_mode%plain=.TRUE.
165     our_rev_mode%tape=.FALSE.
166     our_rev_mode%adjoint=.FALSE.
167     write(*,'(A,A,A)')
168 utke 1.3 +'JU:',indentation(1:our_indent), ' __SRNAME__: s2c run plain'
169 utke 1.2 !$PLACEHOLDER_PRAGMA$ id=1
170     our_rev_mode=our_orig_mode
171     end if
172     if (our_rev_mode%adjoint) then
173     write(*,'(A,A,A)')
174     +'JU:',indentation(1:our_indent),
175 utke 1.3 +' __SRNAME__: s2c entering as adjoint'
176 utke 1.2 c we have to switch from split to checkpointing mode
177     c i.e. outside adjoint means argument restore, taping and then adjoint here
178     c argument restore
179     write(*,'(A,A,A)')
180 utke 1.3 +'JU:',indentation(1:our_indent),
181     +' __SRNAME__: s2c restore argument cp'
182 utke 1.2 !$PLACEHOLDER_PRAGMA$ id=6
183     c setup checkpointing downwards
184     our_orig_mode=our_rev_mode
185     our_rev_mode%arg_store=.TRUE.
186     our_rev_mode%arg_restore=.FALSE.
187     our_rev_mode%plain=.TRUE.
188     our_rev_mode%tape=.FALSE.
189     our_rev_mode%adjoint=.FALSE.
190     c taping this level
191     write(*,'(A,A,A,A)')
192 utke 1.3 +'JU:',indentation(1:our_indent),
193     +' __SRNAME__: s2c run tape, down arg store/plain'
194 utke 1.2 !$PLACEHOLDER_PRAGMA$ id=2
195     c setting up for taping downwards
196     our_rev_mode%arg_store=.FALSE.
197     our_rev_mode%arg_restore=.TRUE.
198     our_rev_mode%plain=.FALSE.
199     our_rev_mode%tape=.TRUE.
200     our_rev_mode%adjoint=.TRUE.
201     c adjoining this level
202     write(*,'(A,A,A,A)')
203 utke 1.3 +'JU:',indentation(1:our_indent),
204     +' __SRNAME__: s2c run adjoint, down arg restore/tape'
205 utke 1.2 !$PLACEHOLDER_PRAGMA$ id=3
206     our_rev_mode=our_orig_mode
207     end if
208    
209     our_rev_mode%switchedToCheckpoint=.FALSE.
210 heimbach 1.1
211 utke 1.2 end if
212    
213 utke 1.3 write(*,
214     +'(A,A,A,A,L,A,L,A,L,A,L,A,L,A,L,A,I6,A,I6,A,I6,A,I6,A,I8,A,I8)')
215     +'JU:',indentation(1:our_indent), 'leave __SRNAME__:',
216 utke 1.2 +' As:',our_rev_mode%arg_store,
217     +' Ar:',our_rev_mode%arg_restore,
218     +' Pl:',our_rev_mode%plain,
219     +' Ta:',our_rev_mode%tape,
220     +' Ad:',our_rev_mode%adjoint,
221 utke 1.3 +' Sw:',our_rev_mode%switchedToCheckpoint,
222     +' CD:',cp_double_pointer,
223     +' CI:',cp_integer_pointer,
224     +' CB:',cp_boolean_pointer,
225     +' CS:',cp_string_pointer,
226     +' TD:',double_tape_pointer,
227     +' TI:',integer_tape_pointer
228    
229 heimbach 1.1 our_indent=our_indent-1
230     end subroutine template

  ViewVC Help
Powered by ViewVC 1.1.22