/[MITgcm]/manual/s_autodiff/text/doc_ad_2.tex
ViewVC logotype

Diff of /manual/s_autodiff/text/doc_ad_2.tex

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

revision 1.21 by heimbach, Thu Jan 17 22:32:06 2008 UTC revision 1.24 by jmc, Tue Aug 31 20:56:21 2010 UTC
# Line 65  model output variable $\vec{v}=(v_1,\ldo Line 65  model output variable $\vec{v}=(v_1,\ldo
65  under consideration,  under consideration,
66  %  %
67  \begin{equation}  \begin{equation}
68  \begin{split}  \begin{aligned}
69  {\cal M} \, : & \, U \,\, \longrightarrow \, V \\  {\cal M} \, : & \, U \,\, \longrightarrow \, V \\
70  ~      & \, \vec{u} \,\, \longmapsto \, \vec{v} \, = \,  ~      & \, \vec{u} \,\, \longmapsto \, \vec{v} \, = \,
71  {\cal M}(\vec{u})  {\cal M}(\vec{u})
72  \label{fulloperator}  \label{fulloperator}
73  \end{split}  \end{aligned}
74  \end{equation}  \end{equation}
75  %  %
76  The vectors $ \vec{u} \in U $ and $ v \in V $ may be represented w.r.t.  The vectors $ \vec{u} \in U $ and $ v \in V $ may be represented w.r.t.
# Line 150  w.r.t. their corresponding inner product Line 150  w.r.t. their corresponding inner product
150  $\left\langle \,\, , \,\, \right\rangle $  $\left\langle \,\, , \,\, \right\rangle $
151  %  %
152  \begin{equation}  \begin{equation}
153  \begin{split}  \begin{aligned}
154  {\cal J} & = \,  {\cal J} & = \,
155  {\cal J} |_{\vec{u}^{(0)}} \, + \,  {\cal J} |_{\vec{u}^{(0)}} \, + \,
156  \left\langle \, \nabla _{u}{\cal J}^T |_{\vec{u}^{(0)}} \, , \, \delta \vec{u} \, \right\rangle  \left\langle \, \nabla _{u}{\cal J}^T |_{\vec{u}^{(0)}} \, , \, \delta \vec{u} \, \right\rangle
# Line 159  $\left\langle \,\, , \,\, \right\rangle Line 159  $\left\langle \,\, , \,\, \right\rangle
159  {\cal J} |_{\vec{v}^{(0)}} \, + \,  {\cal J} |_{\vec{v}^{(0)}} \, + \,
160  \left\langle \, \nabla _{v}{\cal J}^T |_{\vec{v}^{(0)}} \, , \, \delta \vec{v} \, \right\rangle  \left\langle \, \nabla _{v}{\cal J}^T |_{\vec{v}^{(0)}} \, , \, \delta \vec{v} \, \right\rangle
161  \, + \, O(\delta \vec{v}^2)  \, + \, O(\delta \vec{v}^2)
162  \end{split}  \end{aligned}
163  \label{deljidentity}  \label{deljidentity}
164  \end{equation}  \end{equation}
165  %  %
# Line 200  the gradient $ \nabla _{u}{\cal J} $ can Line 200  the gradient $ \nabla _{u}{\cal J} $ can
200  invoking the adjoint $ M^{\ast } $ of the tangent linear model $ M $  invoking the adjoint $ M^{\ast } $ of the tangent linear model $ M $
201  %  %
202  \begin{equation}  \begin{equation}
203  \begin{split}  \begin{aligned}
204  \nabla _{u}{\cal J}^T |_{\vec{u}} &  \nabla _{u}{\cal J}^T |_{\vec{u}} &
205  = \, M^T |_{\vec{u}} \cdot \nabla _{v}{\cal J}^T |_{\vec{v}}  \\  = \, M^T |_{\vec{u}} \cdot \nabla _{v}{\cal J}^T |_{\vec{v}}  \\
206  ~ & = \, M^T |_{\vec{u}} \cdot \delta \vec{v}^{\ast} \\  ~ & = \, M^T |_{\vec{u}} \cdot \delta \vec{v}^{\ast} \\
207  ~ & = \, \delta \vec{u}^{\ast}  ~ & = \, \delta \vec{u}^{\ast}
208  \end{split}  \end{aligned}
209  \label{adjoint}  \label{adjoint}
210  \end{equation}  \end{equation}
211  %  %
# Line 253  $ \langle \, \nabla _{v}{\cal J}^T \, , Line 253  $ \langle \, \nabla _{v}{\cal J}^T \, ,
253  = \nabla_v {\cal J} \cdot \delta \vec{v} $ )  = \nabla_v {\cal J} \cdot \delta \vec{v} $ )
254  %  %
255  \begin{equation}  \begin{equation}
256  \begin{split}  \begin{aligned}
257  \nabla_v {\cal J} (M(\delta \vec{u})) & = \,  \nabla_v {\cal J} (M(\delta \vec{u})) & = \,
258  \nabla_v {\cal J} \cdot M_{\Lambda}  \nabla_v {\cal J} \cdot M_{\Lambda}
259  \cdot ...... \cdot M_{\lambda} \cdot ...... \cdot  \cdot ...... \cdot M_{\lambda} \cdot ...... \cdot
260  M_{1} \cdot M_{0} \cdot \delta \vec{u} \\  M_{1} \cdot M_{0} \cdot \delta \vec{u} \\
261  ~ & = \, \nabla_v {\cal J} \cdot \delta \vec{v} \\  ~ & = \, \nabla_v {\cal J} \cdot \delta \vec{v} \\
262  \end{split}  \end{aligned}
263  \label{forward}  \label{forward}
264  \end{equation}  \end{equation}
265  %  %
# Line 267  whereas in reverse mode we have Line 267  whereas in reverse mode we have
267  %  %
268  \begin{equation}  \begin{equation}
269  \boxed{  \boxed{
270  \begin{split}  \begin{aligned}
271  M^T ( \nabla_v {\cal J}^T) & = \,  M^T ( \nabla_v {\cal J}^T) & = \,
272  M_{0}^T \cdot M_{1}^T  M_{0}^T \cdot M_{1}^T
273  \cdot ...... \cdot M_{\lambda}^T \cdot ...... \cdot  \cdot ...... \cdot M_{\lambda}^T \cdot ...... \cdot
# Line 276  M_{\Lambda}^T \cdot \nabla_v {\cal J}^T Line 276  M_{\Lambda}^T \cdot \nabla_v {\cal J}^T
276  \cdot ...... \cdot  \cdot ...... \cdot
277  \nabla_{v^{(\lambda)}} {\cal J}^T \\  \nabla_{v^{(\lambda)}} {\cal J}^T \\
278  ~ & = \, \nabla_u {\cal J}^T  ~ & = \, \nabla_u {\cal J}^T
279  \end{split}  \end{aligned}
280  }  }
281  \label{reverse}  \label{reverse}
282  \end{equation}  \end{equation}
# Line 295  $ \vec{v}^{(\lambda)} $ at each intermed Line 295  $ \vec{v}^{(\lambda)} $ at each intermed
295  %  %
296  \begin{equation}  \begin{equation}
297  \boxed{  \boxed{
298  \begin{split}  \begin{aligned}
299  \nabla_{v^{(\lambda)}} {\cal J}^T |_{\vec{v}^{(\lambda)}}  \nabla_{v^{(\lambda)}} {\cal J}^T |_{\vec{v}^{(\lambda)}}
300  & = \,  & = \,
301  M_{\lambda}^T |_{\vec{v}^{(\lambda)}} \cdot ...... \cdot  M_{\lambda}^T |_{\vec{v}^{(\lambda)}} \cdot ...... \cdot
302  M_{\Lambda}^T |_{\vec{v}^{(\lambda)}} \cdot \delta \vec{v}^{\ast} \\  M_{\Lambda}^T |_{\vec{v}^{(\lambda)}} \cdot \delta \vec{v}^{\ast} \\
303  ~ & = \, \delta \vec{v}^{(\lambda) \, \ast}  ~ & = \, \delta \vec{v}^{(\lambda) \, \ast}
304  \end{split}  \end{aligned}
305  }  }
306  \end{equation}  \end{equation}
307  %  %
# Line 418  and the shorthand notation for the adjoi Line 418  and the shorthand notation for the adjoi
418  $ \delta v^{(\lambda) \, \ast}_{j} = \frac{\partial}{\partial v^{(\lambda)}_{j}}  $ \delta v^{(\lambda) \, \ast}_{j} = \frac{\partial}{\partial v^{(\lambda)}_{j}}
419  {\cal J}^T $, $ j = 1, \ldots , n_{\lambda} $,  {\cal J}^T $, $ j = 1, \ldots , n_{\lambda} $,
420  for intermediate components, yielding  for intermediate components, yielding
421    {\small
422  \begin{equation}  \begin{equation}
423  \small  \begin{aligned}
 \begin{split}  
424  \left(  \left(
425  \begin{array}{c}  \begin{array}{c}
426  \delta v^{(\lambda) \, \ast}_1 \\  \delta v^{(\lambda) \, \ast}_1 \\
# Line 465  for intermediate components, yielding Line 465  for intermediate components, yielding
465  \delta v^{\ast}_{n} \\  \delta v^{\ast}_{n} \\
466  \end{array}  \end{array}
467  \right)  \right)
468  \end{split}  \end{aligned}
469  \end{equation}  \end{equation}
470    }
471    
472  Eq. (\ref{forward}) and (\ref{reverse}) are perhaps clearest in  Eq. (\ref{forward}) and (\ref{reverse}) are perhaps clearest in
473  showing the advantage of the reverse over the forward mode  showing the advantage of the reverse over the forward mode
# Line 537  operator which maps the model state spac Line 538  operator which maps the model state spac
538  Then, $ \nabla_v {\cal J} $ takes the form  Then, $ \nabla_v {\cal J} $ takes the form
539  %  %
540  \begin{equation*}  \begin{equation*}
541  \begin{split}  \begin{aligned}
542  \nabla_v {\cal J}^T & = \, 2 \, \, H \cdot  \nabla_v {\cal J}^T & = \, 2 \, \, H \cdot
543  \left( \, {\cal H}(\vec{v}) - \vec{d} \, \right) \\  \left( \, {\cal H}(\vec{v}) - \vec{d} \, \right) \\
544  ~          & = \, 2 \sum_{j} \left\{ \sum_k  ~          & = \, 2 \sum_{j} \left\{ \sum_k
545  \frac{\partial {\cal H}_k}{\partial v_{j}}  \frac{\partial {\cal H}_k}{\partial v_{j}}
546  \left( {\cal H}_k (\vec{v}) - d_k \right)  \left( {\cal H}_k (\vec{v}) - d_k \right)
547  \right\} \, {\vec{f}_{j}} \\  \right\} \, {\vec{f}_{j}} \\
548  \end{split}  \end{aligned}
549  \end{equation*}  \end{equation*}
550  %  %
551  where $H_{kj} = \partial {\cal H}_k / \partial v_{j} $ is the  where $H_{kj} = \partial {\cal H}_k / \partial v_{j} $ is the
# Line 663  $ n^{lev3}, \,\, n^{lev2}, \,\, n^{lev1} Line 664  $ n^{lev3}, \,\, n^{lev2}, \,\, n^{lev1}
664  %\psfrag{v_kn^lev2}{\mathinfigure{v_{k_{n}^{lev2}}}}  %\psfrag{v_kn^lev2}{\mathinfigure{v_{k_{n}^{lev2}}}}
665  %\psfrag{v_k1^lev1}{\mathinfigure{v_{k_{1}^{lev1}}}}  %\psfrag{v_k1^lev1}{\mathinfigure{v_{k_{1}^{lev1}}}}
666  %\psfrag{v_kn^lev1}{\mathinfigure{v_{k_{n}^{lev1}}}}  %\psfrag{v_kn^lev1}{\mathinfigure{v_{k_{n}^{lev1}}}}
667  %\mbox{\epsfig{file=part5/checkpointing.eps, width=0.8\textwidth}}  %\mbox{\epsfig{file=s_autodiff/figs/checkpointing.eps, width=0.8\textwidth}}
668  \resizebox{5.5in}{!}{\includegraphics{part5/checkpointing.eps}}  \resizebox{5.5in}{!}{\includegraphics{s_autodiff/figs/checkpointing.eps}}
669  %\psfull  %\psfull
670  \end{center}  \end{center}
671  \caption{  \caption{
# Line 695  the parts of the code that are relevant Line 696  the parts of the code that are relevant
696  differentiation using the software tool TAF.  differentiation using the software tool TAF.
697  Modifications to use OpenAD are described in \ref{sec_ad_openad}.  Modifications to use OpenAD are described in \ref{sec_ad_openad}.
698    
699  \input{part5/doc_ad_the_model}  \input{s_autodiff/text/doc_ad_the_model}
700    
701  The basic flow is depicted in \ref{fig:adthemodel}.  The basic flow is depicted in \ref{fig:adthemodel}.
702  If CPP option \texttt{ALLOW\_AUTODIFF\_TAMC} is defined,  If CPP option \texttt{ALLOW\_AUTODIFF\_TAMC} is defined,
# Line 730  If gradient checks are to be performed, Line 731  If gradient checks are to be performed,
731  {\tt ALLOW\_GRADIENT\_CHECK} is defined. In this case  {\tt ALLOW\_GRADIENT\_CHECK} is defined. In this case
732  the driver routine {\it grdchk\_main} is called after  the driver routine {\it grdchk\_main} is called after
733  the gradient has been computed via the adjoint  the gradient has been computed via the adjoint
734  (cf. Section \ref{section_grdchk}).  (cf. Section \ref{sec:ad_gradient_check}).
735    
736  %------------------------------------------------------------------  %------------------------------------------------------------------
737    
# Line 740  the gradient has been computed via the a Line 741  the gradient has been computed via the a
741  In order to configure AD-related setups the following packages need  In order to configure AD-related setups the following packages need
742  to be enabled:  to be enabled:
743  {\it  {\it
744  \begin{table}[h!]  \begin{table}[!ht]
745  \begin{tabular}{l}  \begin{tabular}{l}
746  autodiff \\  autodiff \\
747  ctrl \\  ctrl \\
# Line 784  the forward model. However, depending on Line 785  the forward model. However, depending on
785  to generate, and on which AD tool is available (TAF or TAMC),  to generate, and on which AD tool is available (TAF or TAMC),
786  the following {\tt make} targets are available:  the following {\tt make} targets are available:
787    
788  \begin{table}[h!]  \begin{table}[!ht]
789  {\footnotesize  {\footnotesize
790  \begin{tabular}{|ccll|}  \begin{tabular}{|ccll|}
791  \hline  \hline
# Line 1014  The aspects relevant to the treatment of Line 1015  The aspects relevant to the treatment of
1015  are controlled by the package {\it pkg/ctrl} and will be treated  are controlled by the package {\it pkg/ctrl} and will be treated
1016  in the next section.  in the next section.
1017    
1018  \input{part5/doc_cost_flow}  \input{s_autodiff/text/doc_cost_flow}
1019    
1020  \subsubsection{Enabling the package}  \subsubsection{Enabling the package}
1021    
# Line 1104  Within this 'driver' routine, S/R are ca Line 1105  Within this 'driver' routine, S/R are ca
1105  the chosen cost function contributions.  the chosen cost function contributions.
1106  In the present example ({\bf ALLOW\_COST\_TRACER}),  In the present example ({\bf ALLOW\_COST\_TRACER}),
1107  S/R {\it cost\_tracer} is called.  S/R {\it cost\_tracer} is called.
1108  It accumulates {\bf objf\_tracer} according to eqn. (\ref{???}).  It accumulates {\bf objf\_tracer} according to eqn. (ref:ask-the-author).
1109  %  %
1110  \subsubsection{Finalize all contributions}  \subsubsection{Finalize all contributions}
1111  %  %
# Line 1136  taf -output 'fc' ... Line 1137  taf -output 'fc' ...
1137    
1138  %%%% \end{document}  %%%% \end{document}
1139    
1140  \input{part5/doc_ad_the_main}  \input{s_autodiff/text/doc_ad_the_main}
1141    
1142  \subsection{The control variables (independent variables)  \subsection{The control variables (independent variables)
1143  \label{section_ctrl}}  \label{section_ctrl}}
# Line 1156  All aspects relevant to the treatment of Line 1157  All aspects relevant to the treatment of
1157  (parameter setting, initialization, perturbation)  (parameter setting, initialization, perturbation)
1158  are controlled by the package {\it pkg/ctrl}.  are controlled by the package {\it pkg/ctrl}.
1159    
1160  \input{part5/doc_ctrl_flow}  \input{s_autodiff/text/doc_ctrl_flow}
1161    
1162  \subsubsection{genmake and CPP options}  \subsubsection{genmake and CPP options}
1163  %  %
# Line 1267  temperature and salinity are initialised Line 1268  temperature and salinity are initialised
1268  a perturbation anomaly is added to the field in S/R  a perturbation anomaly is added to the field in S/R
1269  {\it ctrl\_map\_ini}  {\it ctrl\_map\_ini}
1270  %  %
1271    %\begin{eqnarray}
1272  \begin{equation}  \begin{equation}
1273  \begin{split}  \begin{aligned}
1274  u         & = \, u_{[0]} \, + \, \Delta u \\  u         & = \, u_{[0]} \, + \, \Delta u \\
1275  {\bf tr1}(...) & = \, {\bf tr1_{ini}}(...) \, + \, {\bf xx\_tr1}(...)  {\bf tr1}(...) & = \, {\bf tr1_{ini}}(...) \, + \, {\bf xx\_tr1}(...)
1276  \label{perturb}  \label{perturb}
1277  \end{split}  \end{aligned}
1278  \end{equation}  \end{equation}
1279    %\end{eqnarray}
1280  %  %
1281  {\bf xx\_tr1} is a 3-dim. global array  {\bf xx\_tr1} is a 3-dim. global array
1282  holding the perturbation. In the case of a simple  holding the perturbation. In the case of a simple
# Line 1499  u_{[k+1]} \, = \,  u_{[0]} \, + \, \Delt Line 1502  u_{[k+1]} \, = \,  u_{[0]} \, + \, \Delt
1502  $ u_{[k+1]} $ then serves as input for a forward/adjoint run  $ u_{[k+1]} $ then serves as input for a forward/adjoint run
1503  to determine $ {\cal J} $ and $ \nabla _{u}{\cal J} $ at iteration step  to determine $ {\cal J} $ and $ \nabla _{u}{\cal J} $ at iteration step
1504  $ k+1 $.  $ k+1 $.
1505  Tab. \ref{???} sketches the flow between forward/adjoint model  Tab. ref:ask-the-author sketches the flow between forward/adjoint model
1506  and the minimization routine.  and the minimization routine.
1507    
1508    {\scriptsize
1509  \begin{eqnarray*}  \begin{eqnarray*}
 \scriptsize  
1510  \begin{array}{ccccc}  \begin{array}{ccccc}
1511  u_{[0]} \,\, ,  \,\, \Delta u_{[k]}    & ~ & ~ & ~ & ~ \\  u_{[0]} \,\, ,  \,\, \Delta u_{[k]}    & ~ & ~ & ~ & ~ \\
1512  {\Big\downarrow}  {\Big\downarrow}
# Line 1554  ad \, v_{[k]} (\delta {\cal J}) = Line 1557  ad \, v_{[k]} (\delta {\cal J}) =
1557   ~ & ~ & ~ & ~ & \Delta u_{[k+1]} \\   ~ & ~ & ~ & ~ & \Delta u_{[k+1]} \\
1558  \end{array}  \end{array}
1559  \end{eqnarray*}  \end{eqnarray*}
1560    }
1561    
1562  The routines {\it ctrl\_unpack} and {\it ctrl\_pack} provide  The routines {\it ctrl\_unpack} and {\it ctrl\_pack} provide
1563  the link between the model and the minimization routine.  the link between the model and the minimization routine.
1564  As described in Section \ref{???}  As described in Section ref:ask-the-author
1565  the {\it unpack} and {\it pack} routines read and write  the {\it unpack} and {\it pack} routines read and write
1566  control and gradient {\it vectors} which are compressed  control and gradient {\it vectors} which are compressed
1567  to contain only wet points, in addition to the full  to contain only wet points, in addition to the full

Legend:
Removed from v.1.21  
changed lines
  Added in v.1.24

  ViewVC Help
Powered by ViewVC 1.1.22