Re: [eigen] overriding scalar_X_op for auto-dif?

[ Thread Index | Date Index | More Archives ]

I'm glad to hear that a solution is possible.

Is there any way I could help?

It's important to us because it's holding up
the efficient use of matrices in multivariate
distributions like the normal, and we do a lot
of hierarchical regression modeling.

We can code around this by promoting everything to
an auto-dif variable, but it's hugely wasteful
in both time and space.  Eventually, we plan to
override the matrix arithmetic ops for auto-dif
to save even more space and time, but we want
to get everything working before worrying about
further optimization.

- Bob

On 5/19/11 5:42 PM, Gael Guennebaud wrote:
ok, actually it seems this is something we have to solve in Eigen
itself. Nothing difficult though.


On Thu, May 19, 2011 at 10:48 PM, Bob Carpenter<carp@xxxxxxxxxxx>  wrote:
Thanks so much for getting back to me so quickly
on this.  I tried overloading scalar_product_traits
and NumTraits, but still no luck getting multiplication
of an auto-dif matrix times a double matrix to compile.

I'd MUCH rather just overload the basic ops for now.
Later,  I can optimize with expressions and hand-coded
gradients for some cases without disturbing the API.
I'm afraid your auto-dif scalar code's a bit beyond
my current understanding of Eigen and C++ templates.

I've attached a small tar.gz ball.  Check out the
README.txt, which shows how to run our reverse-mode
auto-dif, has an example using Eigen auto-dif var
multiplication which works fine, and then a demo that
doesn't compile using double * auto-dif variables.
I include the specialization of scalar_product_traits
you suggested (with both orders), as well as NumTraits,
but still no luck.

- Bob Carpenter
  Columbia Uni, Dept of Statistics

Mail converted by MHonArc 2.6.19+