Open sritchie opened 3 years ago
J.M. Siskind and B.A. Pearlmutter, `Efficient Implementation of a Higher-Order Language with Built-In AD,' Extended abstract, presented at the International Conference on Algorithmic Differentiation (AD), Oxford, UK, 12-15 September 2016. \url{http://engineering.purdue.edu/~qobi/papers/ad2016b.pdf}
also
\url{http://arxiv.org/abs/1611.03416}
Jeff (http: //engineering.purdue.edu/~qobi)
Another benchmark (a better variant of saddle) is in:
A. Radul, B.A. Pearlmutter, and J.M. Siskind, `AD in Fortran: Implementation via Prepreprocessor,' Proceedings of the 6th International Conference on Automatic Differentiation (AD2012), pp. 273-284, Fort Collins, CO, 23-27 July 2012. http://engineering.purdue.edu/~qobi/papers/ad2012.pdf
A. Radul, B.A. Pearlmutter, and J.M. Siskind, `AD in Fortran, Part 1: Design,' arXiv:1203.1448, 7 March 2012. http://arxiv.org/abs/1203.1448
A. Radul, B.A. Pearlmutter, and J.M. Siskind, `AD in Fortran, Part 2: Implementation via Prepreprocessor,' arXiv:1203.1450, 7 March 2012. http://arxiv.org/abs/1203.1450
Jeff (http: //engineering.purdue.edu/~qobi)
Thanks @qobi !
@barak and @qobi presented on a series of AD benchmarks that they performed as part of their work on Stalingrad:
scmutils didn't do terribly well for a few reasons, one of which is no compilation of the derivatives... but no matter!
The task here is to get the SICMUtils code for these benchmarks tidied up, measured and going faster.
I took a pass at getting the code mechanically ported from the two straightforward benchmarks that worked in scmutils,
particle-FF
andsaddle-FF
. These are described in the first paper linked above.NOTE:
probabilistic-lambda-calculus
,probabilistic-prolog
andbackprop
all have forward-mode examples too that would work with some porting. Also once I get sicmutils/sicmutils#226 up and running we can get the rest of the benchmarks running here too. I know they'd be faster with a more intelligentcompile
implementation that could handle multiple arguments more gracefully. This would need to generate multiple nested functions in forward mode.And the results (with nothing to compare it to, since this is a new M1 mac and I haven't run any other benchmarks here):