On Thu, Feb 26, 2009 at 1:13 PM, Jos van den Oever
<jvdoever@xxxxxxxxx> wrote:
2009/2/26 Gael Guennebaud <gael.guennebaud@xxxxxxxxx>:
> adolc internally uses dense vector to store each derivatives, so it
> cannot deal with large - sparse problem. What would be nice is to
> implement our own autodiff tool based on eigen's dense and sparse
> objects but that happens only if someone interested in doing that
> shows up...
Reduced storage in the Jacobian is not the main benefit I'm aiming for.
The solver uses a dense Jacobian storage wise, but can do faster
iteration steps if it knows which parts of the Jacobian are zero or
linear.
You are right that using a sparse matrix would probably improve
performance more.
yes, in mind the goal is to be able to instantiate Lev-Marq with sparse-matrices, then the conversion from adolc derivatives to the jacobian will generate a real sparse Jacobian... Note that I think the memory overhead needed by adolc might prevent its use for relatevly large problems.
If I understand the autodiff Jacobian correctly, the derivative
functions are calculated at compile time. So would it be possible to
find out which part of it are zero or linear?
yes, in forward mode the derivative are more or less computed at compile time using operator overloading, but this is not enough to be able to determine the zeros at compile-time. Likewise, you cannot determine linear parts at compile time, but, at runtime, I think this would be easy to flag the coefficients which are not linear (adolc does not provide that, but this is theoratically possible to add that).
Cheers,
Jos