<div dir="ltr">In my opinion, the software engineering problem with ADIFOR(C) is that they are designed to run on whole programs. What<div>we really want is for small pieces of code, like routines for element vectors, to be differentiated. Once you get whole programs,</div><div>you need to parse system headers, etc. which is a Herculean task. It broke so often that they would maintain a machine in MCS</div><div>to run on and then spit out the differentiated code. It became too much to maintain and we got rid of it. I like the FEniCS/Firedrake</div><div>approach much better, in that you differentiate the intermediate representation, and then generate code.</div><div><br></div><div>   Matt</div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Sun, Sep 10, 2017 at 9:32 AM, Patrick Sanan <span dir="ltr"><<a href="mailto:patrick.sanan@gmail.com" target="_blank">patrick.sanan@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div>I asked Barry about this wrt the manual a while ago, and we removed all reference to ADIFOR there, since it was no longer supported.<br><div class="gmail_quote"><div>Stefano Zampini <<a href="mailto:stefano.zampini@gmail.com" target="_blank">stefano.zampini@gmail.com</a>> schrieb am So. 10. Sep. 2017 um 13:15:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div>Should the references to ADIFOR listed below be removed? It seems PETSc does no longer provide support for automatic differentiation. I never used AD support in PETSc, but I was considering adding some reverse mode support to compute the transpose of the Jacobian matrices in adjoint computations. May ask why was it removed?</div><div><br></div><div><br></div><div>[szampini@localhost petsc]$ git grep -i adifor</div><div>bin/adiforfix.py:# $Id: adiforfix.py,v 1.3 2001/08/24 16:32:18 bsmith Exp $</div><div>bin/adiforfix.py:#      | adiforfix.py</div><div>include/petsc/private/matimpl.<wbr>h:  PetscErrorCode (*setvaluesadifor)(Mat,<wbr>PetscInt,void*);</div><div>include/petscmat.h:               MATOP_SET_VALUES_ADIFOR=74,</div><div>lib/petsc/conf/test:<wbr>testexamples_ADIFOR: ${TESTEXAMPLES_ADIFOR}</div><div>lib/petsc/conf/test:    -@ if test ${PRINT_PROGRESS}foo = debugtestfoo -a -n "${TESTEXAMPLES_ADIFOR}"; then printf "Running examples in `pwd`:\n ${TESTEXAMPLES_ADIFOR}\n"; fi</div><div>lib/petsc/conf/test:<wbr>buildexamples_ADIFOR:</div><div>lib/petsc/conf/test:    -@${OMAKE} testexamples_ADIFOR TESTEXAMPLES_ADIFOR=`echo ${TESTEXAMPLES_ADIFOR} | sed s/runex[0-9]*[a-z0-9_]*//g`</div><div>src/docs/tao_tex/manual/<wbr>mathprog.bib:@TechReport{<wbr>bischof.carle.ea:adifor,</div><div>src/docs/tao_tex/manual/<wbr>mathprog.bib:  title =        "{ADIFOR} 2.0 User's Guide",</div><div>src/docs/tex/petscapp.bib:  title = "Using {ADIFOR} and {ADIC} to Provide a {J}acobian for the {SNES} Component of {PETSc}",</div><div>src/mat/f90-mod/petscmat.h:      PetscEnum MATOP_SET_VALUES_ADIFOR</div><div>src/mat/f90-mod/petscmat.h:      parameter(MATOP_SET_VALUES_<wbr>ADIFOR=74)</div><div>src/snes/examples/tutorials/<wbr>makefile:   -@${MPIEXEC} -n 2 ./ex5f -adifor_jacobian -snes_monitor_short -ksp_gmres_cgs_refinement_type refine_always > ex5f_4.tmp 2>&1;\</div><div>src/snes/examples/tutorials/<wbr>makefile:   -@${MPIEXEC} -n 2 ./ex5f -adiformf_jacobian  -snes_monitor_short -ksp_gmres_cgs_refinement_type refine_always > ex5f_5.tmp 2>&1;\</div><div>src/snes/examples/tutorials/<wbr>makefile:TESTEXAMPLES_ADIFOR               = ex5f.PETSc runex5f_2 ex5f.rm</div></div><div><div><br></div><span class="HOEnZb"><font color="#888888"><div><br></div>-- <br><div class="m_6689313078067402705m_-5866225893735656845gmail_signature">Stefano</div>
</font></span></div></blockquote></div></div>
</blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><div>What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead.<br>-- Norbert Wiener</div><div><br></div><div><a href="http://www.caam.rice.edu/~mk51/" target="_blank">http://www.caam.rice.edu/~mk51/</a><br></div></div></div>
</div>