Automatic Differentiation of Parallel OpenMP Programs
In recent year, most of the engineering and scientific applications have been written in Fortran/C using OpenMP as the parallelization directives. The scientists and engineers may use some Automatic Differentiation Tools, for example Tapenade, to do the sensitivity analysis and design optimization for some critical processes and algorithms. Calling functions and subroutines in the computer programs are efficient to obtain both the original results and the differentiated values in Tangent or Adjoint modes. In this paper, only Loop Structure, which is a basic design pattern requiring parallel operation, is discussed here. The Tagent, Tangent vector, Adjoint and Adjoint vector have been examined for best performance. In the future, the vectorization of data and workshare of asynchronization for parallel OpenMP programs will be studied. Also, the OpenMP and Coarray Fortran for second and higher order derivatives will be tested and compared using Tapenade. Please feel free to contact the author at for any comments.