- yes pow is slow, but we still have to understand why this filterBank.dsp is 
so slower in the wasm context...

- that for this «  fastapprox » reference. I guess one way to switch between 
the standard math functions to specific ones would be to have a kind of « 
function mapping file » described somewhere that the compiler would use with a 
special -approx parameter or something. 

Stéphane

> Le 22 sept. 2017 à 18:49, Julius Smith <j...@ccrma.stanford.edu> a écrit :
> 
> Ah, yes, pow is definitely way slow.  For occurrences in the inner
> loop (audio rate), I've taken to using the foreign function fastpow2()
> from fastapprox-0.3.2.tar.gz by Paul Mineiro (this might also be the
> one Kjetil Matheussen uses, who alerted me to the idea).  It
> sacrifices precision for speed, so if the Faust compiler is to use it,
> maybe there should be a new fastpow() primitive, and/or a compiler
> switch that says to use it wherever applicable at the audio sampling
> rate.  This was critical for getting GeoShred running on the iPad 2
> without dropouts!
> 
> - Julius
> 
> On Fri, Sep 22, 2017 at 12:21 AM, Stéphane Letz <l...@grame.fr> wrote:
>> Thanks Julius for the feedback. Several things:
>> 
>> - it appears that this "5 times slower » case for filterBank.dsp is a bit of 
>> a « pathological one » : since 1) Chrome which is usually the best is 
>> significantly slower in this example, I don’t know why… 2) filterBank.dsp 
>> uses a lot of pow (10, x) that the C++ backend  path rewrites (and I guess 
>> optimize as...) as exp10(x) which probably explains the « C++ is better than 
>> LLVM IR which does not do this rewriting ». I will add this remark in the 
>> post… And doing this pow (10, x) ==>  exp10(x) rewrite rule is probably easy 
>> to add in the Faust compiler
>> 
>> - I’m currently only testing the Faust internal wasm backend. I should also 
>> benchmark the Faust ==> C++ ==> Emscripten ==> wasm path, to see if the 
>> Emscripten C++ ==> wasm  path is better and by how much compared to our own 
>> Faust internal wasm backend.
>> 
>> - I think we should avoid to go for a "use native primitives » strategy...
>> 
>> - so I’m trying to get feedback from a french Mozilla developer, who works 
>> in the compiler part. I hope he will give me some insights...
>> 
>> Stéphane
>> 
>> 
>>> Le 22 sept. 2017 à 00:36, Julius Smith <j...@ccrma.stanford.edu> a écrit :
>>> 
>>> Hi Stéphane,
>>> 
>>> Thanks for the interesting and informative report!  It appears that
>>> the big differentiator in performance is small audio feedback loops,
>>> such as used in filterbank.  If this is the case, then the simple
>>> one-pole filter, "pole(p) = + ~ *(p);" should show substantially the
>>> same performance differentials as filterbank.  The question then
>>> becomes whether the compiler can make use of native primitives for
>>> optimizing such constructs.  One approach might be to write alternate
>>> source employing foreign functions using things like Web Audio's
>>> BiquadFilterNode (for example).  It would be ideal if such primitives
>>> could be substituted by the Faust compiler, given the appropriate
>>> option(s).
>>> 
>>> - Julius
>>> 
>>> On Thu, Sep 21, 2017 at 1:50 AM, Stéphane Letz <l...@grame.fr> wrote:
>>>> Hi All,
>>>> 
>>>> Based on WebAssembly code generated from the wasm backend.
>>>> 
>>>> Extensive testing in different situations, compiled in the post here: 
>>>> http://faust.grame.fr/news/2017/09/15/backend-benchmarks.html
>>>> 
>>>> Stéphane
>>>> ------------------------------------------------------------------------------
>>>> Check out the vibrant tech community on one of the world's most
>>>> engaging tech sites, Slashdot.org! http://sdm.link/slashdot
>>>> _______________________________________________
>>>> Faudiostream-users mailing list
>>>> Faudiostream-users@lists.sourceforge.net
>>>> https://lists.sourceforge.net/lists/listinfo/faudiostream-users
>>> 
>>> 
>>> 
>>> --
>>> Julius O. Smith III <j...@ccrma.stanford.edu>
>>> Professor of Music and, by courtesy, Electrical Engineering
>>> CCRMA, Stanford University
>>> http://ccrma.stanford.edu/~jos/
>> 
>> 
>> 
> 
> 
> 
> -- 
> Julius O. Smith III <j...@ccrma.stanford.edu>
> Professor of Music and, by courtesy, Electrical Engineering
> CCRMA, Stanford University
> http://ccrma.stanford.edu/~jos/


------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Faudiostream-users mailing list
Faudiostream-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/faudiostream-users

Reply via email to