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