| 1 |
heimbach |
1.1 |
%********************************************************************** |
| 2 |
|
|
\section{Adjoint code generation using OpenAD} |
| 3 |
|
|
\label{sec_ad_openad} |
| 4 |
|
|
\begin{rawhtml} |
| 5 |
|
|
<!-- CMIREDIR:sec_ad_openad: --> |
| 6 |
|
|
\end{rawhtml} |
| 7 |
|
|
%********************************************************************** |
| 8 |
|
|
|
| 9 |
|
|
Authors: Jean Utke, Patrick Heimbach and Chris Hill |
| 10 |
|
|
|
| 11 |
|
|
\subsection{Introduction} |
| 12 |
|
|
|
| 13 |
|
|
The development of OpenAD was initiated as part of the |
| 14 |
|
|
ACTS (Adjoint Compiler Technology \& Standards) project funded by the NSF Information Technology Research (ITR) program. |
| 15 |
|
|
The main goals for OpenAD initially defined for the ACTS project are: |
| 16 |
|
|
% |
| 17 |
|
|
\begin{enumerate} |
| 18 |
|
|
% |
| 19 |
|
|
\item |
| 20 |
|
|
develop a flexible, modular, open source tool that can ge`nerate adjoint codes of numerical simulation programs, |
| 21 |
|
|
% |
| 22 |
|
|
\item |
| 23 |
|
|
establish a platform for easy implementation and testing of source transformation algorithms via a language-independent abstract intermediate representation, |
| 24 |
|
|
% |
| 25 |
|
|
\item |
| 26 |
|
|
support for source code written in C and Fortan, |
| 27 |
|
|
% |
| 28 |
|
|
\item |
| 29 |
|
|
generate efficient tangent linear and adjoint for the |
| 30 |
|
|
MIT general circulation model. |
| 31 |
|
|
% |
| 32 |
|
|
\end{enumerate} |
| 33 |
|
|
|
| 34 |
|
|
OpenAD's homepage is at \texttt{http://www-unix.mcs.anl.gov/OpenAD/}. |
| 35 |
|
|
A development WIKI is at |
| 36 |
|
|
\texttt{http://wiki.mcs.anl.gov/OpenAD/index.php/Main\_Page}. |
| 37 |
|
|
From the WIKI's main page, click on \texttt{Handling GCM} for |
| 38 |
|
|
various aspects pertaining to differentiating the MITgcm with OpenAD. |
| 39 |
|
|
|
| 40 |
|
|
\subsection{Downloading and installing OpenAD} |
| 41 |
|
|
|
| 42 |
|
|
The OpenAD webpage has a detailed description on how to download and |
| 43 |
|
|
build OpenAD. From its homepage, please click on |
| 44 |
|
|
\texttt{Download Test Binaries}. |
| 45 |
|
|
You may either download pre-built binaries for quick trial, |
| 46 |
|
|
or follow the detailed build process described at |
| 47 |
|
|
\texttt{http://www-unix.mcs.anl.gov/OpenAD/access.html} |
| 48 |
|
|
|
| 49 |
|
|
\subsection{Building MITgcm adjoint with OpenAD} |
| 50 |
|
|
|
| 51 |
|
|
\textbf{17-January-2008} |
| 52 |
|
|
|
| 53 |
|
|
OpenAD was successfully built on head node of |
| 54 |
|
|
\texttt{itrda.acesgrid.org}, for following system: |
| 55 |
|
|
|
| 56 |
|
|
\begin{verbatim} |
| 57 |
|
|
> uname -a |
| 58 |
|
|
Linux itrda 2.6.22.2-42.fc6 #1 SMP Wed Aug 15 12:34:26 EDT 2007 i686 i686 i386 GNU/Linux |
| 59 |
|
|
|
| 60 |
|
|
> cat /proc/version |
| 61 |
|
|
Linux version 2.6.22.2-42.fc6 (brewbuilder@hs20-bc2-4.build.redhat.com) |
| 62 |
|
|
(gcc version 4.1.2 20070626 (Red Hat 4.1.2-13)) #1 SMP Wed Aug 15 12:34:26 EDT 2007 |
| 63 |
|
|
|
| 64 |
|
|
> module load ifc/9.1.036 icc/9.1.042 |
| 65 |
|
|
\end{verbatim} |
| 66 |
|
|
|
| 67 |
|
|
Head of MITgcm branch (checkpoint59m with some modif.s) was used for building |
| 68 |
|
|
adjoint code. |
| 69 |
|
|
Following routing needed special care (revert to revision 1.1): |
| 70 |
|
|
\\ |
| 71 |
|
|
\texttt{MITgcm\_contrib/heimbach/OpenAD/OAD\_support/active\_module.f90 } |
| 72 |
|
|
|
| 73 |
|
|
|