Re: [eigen] two things |
[ Thread Index | Date Index | More lists.tuxfamily.org/eigen Archives ]
Thanks a lot for the experimental data, very useful! Benoit On Wednesday 25 June 2008 22:51:40 Gael Guennebaud wrote: > ok, so I benched a = a + b, 400x400 (10000 repetitions) > > hand coded vector with loop peeling: > 1.0101 sec 1.47521 GFlops > > VectorXf(400*400): > 1.50368 0.990978 GFlops > > MatrixXf, various configuration inner/outer: > 400 x 400 1.69703s 0.878074 GFlops > 320 x 500 1.61007s 0.925497 GFlops > 256 x 625 1.65798s 0.898753 GFlops > 250 x 640 1.72979s 0.861445 GFlops > 200 x 800 1.7328s 0.859946 GFlops > 160 x 1000 1.78083s 0.836755 GFlops > 128 x 1250 1.70838s 0.872238 GFlops > 125 x 1280 1.83812s 0.810676 GFlops > 100 x 1600 1.79399s 0.830616 GFlops > 80 x 2000 1.90025s 0.78417 GFlops > 64 x 2500 1.91228s 0.779236 GFlops > 50 x 3200 2.40844s 0.618706 GFlops > 40 x 4000 2.08198s 0.715722 GFlops > 32 x 5000 2.30892s 0.645372 GFlops > 25 x 6400 3.05263s 0.488142 GFlops > 20 x 8000 2.89561s 0.514611 GFlops > 16 x 10000 3.36251s 0.443156 GFlops > 10 x 16000 6.72561s 0.221559 GFlops > 8 x 20000 8.03166s 0.18553 GFlops > 5 x 32000 8.08158s 0.184384 GFlops > 4 x 40000 9.30723s 0.160103 GFlops > > so .... yeah why not ! > > gael. > > On Wed, Jun 25, 2008 at 10:17 PM, Benoît Jacob <jacob@xxxxxxxxxxxxxxx> wrote: > > On Wednesday 25 June 2008 22:09:17 Gael Guennebaud wrote: > >> right, an intermediate solution would be to specialize Matrix<> if one > >> of the dim is 1, e.g. let's add an additional "hidden" template > >> parameter: > >> > >> template <typename T, int R, int C, ..., int IsVector = R==1 || C==1> > >> class Matrix {....}; > >> > >> template <typename T, int R, int C, ..., int Flags> > >> class Matrix<T,R,C, ..., MaxSize,1,Flags,true> { /* vector */ }; > >> > >> but this only allows to improve a bit the constructors and this does > >> not offer any template Vector<> class, so I'm not sure it's worth it, > >> just an idea.... > > > > It's interesting, I'm not opposed to it; on the other hand like you i'm > > not sure if it's worth the effort, as the problems with the matrix > > constructors are essentially "virtual problems" which don't cause harm in > > practice. > > > >> > 2) about linear vectorization: i remember you suggested adding a > >> > packet(int) method. I think this is still a good idea and would still > >> > improve linear vectorization despite the improvements you already > >> > made. OK? > >> > >> actually I'm not sure that's worth it: I've done some bench and if I > >> remember well the overhead between a MatrixXf(R,C); versus a > >> VectorXf(R*C); was negligible, like x1.1 or x1.2..... > > > > so it was a 10% or 20% speed difference? Not what I call negligible! > > > > Also, the speed difference becomes bigger as the InnerSize is small. What > > sizes did you test? > > > > Cheers, > > > > Benoit
Attachment:
signature.asc
Description: This is a digitally signed message part.
Mail converted by MHonArc 2.6.19+ | http://listengine.tuxfamily.org/ |