PolyesterForwardDiff.jl is a parallelized ForwardDiff.jl. That's it. It's super fast. See this paper for some benchmark results.
It's pretty much the same as ForwardDiff.jl except it is threaded. The API is the same for gradients and Jacobians.
PolyesterForwardDiff.threaded_gradient!(f, dx, x, ForwardDiff.Chunk(8));
PolyesterForwardDiff.threaded_jacobian!(g, dx, x, ForwardDiff.Chunk(8));
PolyesterForwardDiff.threaded_jacobian!(g!, y, dx, x, ForwardDiff.Chunk(8));
PolyesterForwardDiff.threaded_gradient!(f, dx, x, ForwardDiff.Chunk(8),Val{true}()); #To enable tag checking
If you use this package, please cite:
@article{mester2022differential,
title={Differential methods for assessing sensitivity in biological models},
author={Mester, Rachel and Landeros, Alfonso and Rackauckas, Chris and Lange, Kenneth},
journal={PLoS computational biology},
volume={18},
number={6},
pages={e1009598},
year={2022},
publisher={Public Library of Science San Francisco, CA USA}
}