In my opinion, the software engineering problem with ADIFOR(C) is that they
are designed to run on whole programs. What
we really want is for small pieces of code, like routines for element
vectors, to be differentiated. Once you get whole programs,
you need to parse system headers, etc. which is a Herculean task. It broke
so often that they would maintain a machine in MCS
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
approach much better, in that you differentiate the intermediate
representation, and then generate code.

   Matt


On Sun, Sep 10, 2017 at 9:32 AM, Patrick Sanan <patrick.sa...@gmail.com>
wrote:

> 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.
> Stefano Zampini <stefano.zamp...@gmail.com> schrieb am So. 10. Sep. 2017
> um 13:15:
>
>> 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?
>>
>>
>> [szampini@localhost petsc]$ git grep -i adifor
>> bin/adiforfix.py:# $Id: adiforfix.py,v 1.3 2001/08/24 16:32:18 bsmith Exp
>> $
>> bin/adiforfix.py:#      | adiforfix.py
>> include/petsc/private/matimpl.h:  PetscErrorCode (*setvaluesadifor)(Mat,
>> PetscInt,void*);
>> include/petscmat.h:               MATOP_SET_VALUES_ADIFOR=74,
>> lib/petsc/conf/test:testexamples_ADIFOR: ${TESTEXAMPLES_ADIFOR}
>> 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
>> lib/petsc/conf/test:buildexamples_ADIFOR:
>> lib/petsc/conf/test:    -@${OMAKE} testexamples_ADIFOR
>> TESTEXAMPLES_ADIFOR=`echo ${TESTEXAMPLES_ADIFOR} | sed
>> s/runex[0-9]*[a-z0-9_]*//g`
>> src/docs/tao_tex/manual/mathprog.bib:@TechReport{bischof.carle.ea:adifor,
>> src/docs/tao_tex/manual/mathprog.bib:  title =        "{ADIFOR} 2.0
>> User's Guide",
>> src/docs/tex/petscapp.bib:  title = "Using {ADIFOR} and {ADIC} to Provide
>> a {J}acobian for the {SNES} Component of {PETSc}",
>> src/mat/f90-mod/petscmat.h:      PetscEnum MATOP_SET_VALUES_ADIFOR
>> src/mat/f90-mod/petscmat.h:      parameter(MATOP_SET_VALUES_ADIFOR=74)
>> src/snes/examples/tutorials/makefile:   -@${MPIEXEC} -n 2 ./ex5f
>> -adifor_jacobian -snes_monitor_short -ksp_gmres_cgs_refinement_type
>> refine_always > ex5f_4.tmp 2>&1;\
>> src/snes/examples/tutorials/makefile:   -@${MPIEXEC} -n 2 ./ex5f
>> -adiformf_jacobian  -snes_monitor_short -ksp_gmres_cgs_refinement_type
>> refine_always > ex5f_5.tmp 2>&1;\
>> src/snes/examples/tutorials/makefile:TESTEXAMPLES_ADIFOR               =
>> ex5f.PETSc runex5f_2 ex5f.rm
>>
>>
>> --
>> Stefano
>>
>


-- 
What most experimenters take for granted before they begin their
experiments is infinitely more interesting than any results to which their
experiments lead.
-- Norbert Wiener

http://www.caam.rice.edu/~mk51/

Reply via email to