Oh my, I never noticed this! I'd been looking for mpfr_addmul in line
with GMP!! I see it is slightly different in that it doesn't do a = a
+ b*c.

I can actually speed some code up with this!!

Bill.

On 21 May, 10:39, Fredrik Johansson <fredrik.johans...@gmail.com>
wrote:
> On Fri, May 21, 2010 at 11:17 AM, Sergey Bochkanov <
>
>
>
>
>
> sergey.bochka...@alglib.net> wrote:
> > correction to my previous message:
>
> > > It   leads   to  unnecessary  allocation  of  temporaries  and  some
> > > performance penalty (about 25-30% for 128-bit precision).
>
> > Sorry, I made a mistake when estimating MPLAKACK performance. "25-30%"
> > are ALGLIB's, not MPLAPACK's.
>
> > I've  never measured MPLAPACK performance directly, but looking at its
> > RGEMM code and measuring allocation penalty for code like this:
>
> > > mpfr_t tmp1, tmp2;
> > > mpfr_init2(tmp1, Precision);
> > > mpfr_init2(tmp2, Precision);
> > > mpfr_mul(tmp1, mp_b, mp_c, GMP_RNDN);
> > > mpfr_add(tmp2, mp_a, mp_tmp, GMP_RNDN);
> > > mpfr_set(mp_d, tmp1, GMP_RNDN);
> > > mpfr_clear(tmp1);
> > > mpfr_clear(tmp2);
>
> > (which reproduces allocations done by MPLAPACK during "a=a+b*c" update
> > in the RGEMM call) and comparing it with
>
> > > mpfr_mul(mp_tmp, mp_b, mp_c, GMP_RNDN);
> > > mpfr_add(mp_d, mp_a, mp_tmp, GMP_RNDN);
>
> > which  does  the same thing, but more efficiently, I can conclude that
> > MPLAPACK  allocation  penalty  will be 100% for 128-bit precision code
> > (i.e. it will run twice longer), 50% for 256-bit precision.
>
> > As  for  ALGLIB,  it  really has 25-30% allocation penalty for 128-bit
> > code.  The  reason behind such difference from MPLAPACK is that ALGLIB
> > tries  to  allocate  new  multiple  precision  variables from internal
> > cache,  but  still  relies on OOP, which slows it down.
>
> > So  when I said that "ALGLIB ... suffers from the same OOP drawbacks",
> > I  was  a  bit  incorrect  -  it  suffers from OOP drawbacks, but from
> > _other_ drawbacks.
>
> > --
> > With best regards,
> >  Sergey                          mailto:sergey.bochka...@alglib.net
>
> MPFR has a fused multiply-add function, so d = a+b*c can be written
> mpfr_fma(d,a,b,c, MPFR_RNDN). This is almost certainly what you'd want to
> base MPFR linear algebra around.
>
> Fredrik
>
> --
> To post to this group, send an email to sage-devel@googlegroups.com
> To unsubscribe from this group, send an email to 
> sage-devel+unsubscr...@googlegroups.com
> For more options, visit this group athttp://groups.google.com/group/sage-devel
> URL:http://www.sagemath.org

-- 
To post to this group, send an email to sage-devel@googlegroups.com
To unsubscribe from this group, send an email to 
sage-devel+unsubscr...@googlegroups.com
For more options, visit this group at http://groups.google.com/group/sage-devel
URL: http://www.sagemath.org

Reply via email to