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 |
|