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

Contents 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 - (show 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 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
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 +' 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 +' 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
72 if (our_rev_mode%switchedToCheckpoint) then
73
74 if (our_rev_mode%arg_store) then
75 write(*,'(A,A,A)')
76 +'JU:',indentation(1:our_indent),
77 +' __SRNAME__: entering arg store'
78 !$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 +' __SRNAME__: entering arg restore'
84 !$PLACEHOLDER_PRAGMA$ id=6
85 end if
86 if (our_rev_mode%plain) then
87 write(*,'(A,A,A)')
88 +'JU:',indentation(1:our_indent),
89 +' __SRNAME__: entering plain'
90 our_orig_mode=our_rev_mode
91 our_rev_mode%arg_store=.FALSE.
92 write(*,'(A,A,A)')
93 +'JU:',indentation(1:our_indent),
94 +' __SRNAME__: run plain, down plain'
95 !$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 +'JU:',indentation(1:our_indent),
101 +' __SRNAME__: entering tape'
102 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 +' __SRNAME__: run tape, down arg store/plain'
111 !$PLACEHOLDER_PRAGMA$ id=2
112 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 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 !$PLACEHOLDER_PRAGMA$ id=3
121 our_rev_mode=our_orig_mode
122 end if
123
124 else
125
126 our_rev_mode%switchedToCheckpoint = .TRUE.
127
128 if (our_rev_mode%arg_store) then
129 write(*,'(A,A,A)')
130 +'JU:',indentation(1:our_indent),
131 +' __SRNAME__: s2c entering arg store'
132 write(*,*) 'JU: ERROR : arg store here is wrong logic'
133 stop
134 end if
135 if (our_rev_mode%arg_restore) then
136 write(*,'(A,A,A)')
137 +'JU:',indentation(1:our_indent),
138 +' __SRNAME__: entering arg restore'
139 write(*,*) 'JU: ERROR : arg restore here is wrong logic'
140 stop
141 end if
142 if (our_rev_mode%plain) then
143 write(*,'(A,A,A)')
144 +'JU:',indentation(1:our_indent),
145 +' __SRNAME__: s2c entering plain'
146 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 +'JU:',indentation(1:our_indent),
153 +' __SRNAME__: s2c entering as tape'
154 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 +'JU:',indentation(1:our_indent),
158 +' __SRNAME__: s2c store argument cp'
159 !$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 +'JU:',indentation(1:our_indent), ' __SRNAME__: s2c run plain'
169 !$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 +' __SRNAME__: s2c entering as adjoint'
176 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 +'JU:',indentation(1:our_indent),
181 +' __SRNAME__: s2c restore argument cp'
182 !$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 +'JU:',indentation(1:our_indent),
193 +' __SRNAME__: s2c run tape, down arg store/plain'
194 !$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 +'JU:',indentation(1:our_indent),
204 +' __SRNAME__: s2c run adjoint, down arg restore/tape'
205 !$PLACEHOLDER_PRAGMA$ id=3
206 our_rev_mode=our_orig_mode
207 end if
208
209 our_rev_mode%switchedToCheckpoint=.FALSE.
210
211 end if
212
213 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 +' 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 +' 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 our_indent=our_indent-1
230 end subroutine template

  ViewVC Help
Powered by ViewVC 1.1.22