[SciPy-Dev] Speeding up scipy.special.erf()?

Julian Taylor jtaylor.debian at googlemail.com
Sat Mar 21 07:09:16 EDT 2015


Integrating vector math libraries into numpy is actually a gsoc topic
this year.
as erf is a C99 function it should probably also move to numpy.

Also the inlining Paul suggested works great, see:
https://github.com/scipy/scipy/pull/4653

On 21.03.2015 05:13, Travis Oliphant wrote:
> I have not tested this, but I suspect that the MATLAB routine is using
> the erf implementation from the Intel Math Kernel Libraries (MKL).    
> 
> There is a function in MKL called vdErf that takes a vector of doubles
> and is likely tuned to the hardware.    This could be linked to NumPy
> with similar speed benefits. 
> 
> -Travis
> 
> 
> On Fri, Mar 20, 2015 at 5:02 PM, Julian Taylor
> <jtaylor.debian at googlemail.com <mailto:jtaylor.debian at googlemail.com>>
> wrote:
> 
>     On 20.03.2015 22:08, Pauli Virtanen wrote:
>     > 20.03.2015, 20:29, Will Adler kirjoitti:
>     > [clip]
>     >> Is there anything that can be done to speed up SciPy’s erf()?
>     >
>     > Possibly.
>     >
>     > https://github.com/scipy/scipy/blob/master/scipy/special/cephes/ndtr.c#L483
>     >
>     > The simplest thing would probably be just to write the Pade approximant
>     > in a form the C compiler can inline. erf and erfc are also in C99, so
>     > glibc may have a fast implementation.
>     >
> 
>     using glibc is unlikely to be faster, as they focus on correctness and
>     not speed. Though its worth a try.
> 
>     The two 4 coefficient evaluations can be perfectly vectorized, just
>     needs rearranging the static coefficient tables, that should give a
>     decent speedup.
>     Also the isnan call could be turned into a builtin instead of the
>     function call gcc/glibc does.
>     In total with this implementation I guess 40-50% improvement should be
>     possible.
>     _______________________________________________
>     SciPy-Dev mailing list
>     SciPy-Dev at scipy.org <mailto:SciPy-Dev at scipy.org>
>     http://mail.scipy.org/mailman/listinfo/scipy-dev
> 
> 
> 
> 
> -- 
> 
> Travis Oliphant
> CEO
> Continuum Analytics, Inc.
> http://www.continuum.io
> 
> 
> _______________________________________________
> SciPy-Dev mailing list
> SciPy-Dev at scipy.org
> http://mail.scipy.org/mailman/listinfo/scipy-dev
> 




More information about the SciPy-Dev mailing list