Hi Julius and Bart,
That's an interesting result. We will investigate...
Cheers
Yann
Yann Orlarey
Directeur scientifique
www.grame.fr
2016-06-18 23:30 GMT+02:00 Julius Smith <j...@ccrma.stanford.edu>:
> Hi Bart,
>
> Thanks for your careful observations.
>
> I did some further testing based on your examples, and it appears
> interleave is quite slow to compile for large orders. For example:
>
> > cat ti.dsp
> import("math.lib");
> nrBands = 64;
> process = interleave(nrBands,2);
> > faust -time ti.dsp > /dev/null
> start parser
> end parser (duration : 0.00804901)
> start evaluation
> end evaluation (duration : 3.72051)
> start propagation
> end propagation (duration : 93.3685) [ <<<<<<<<<<<<< ]
> start compilation
> start ScalarCompiler::prepare
> start deBruijn2Sym
> end deBruijn2Sym (duration : 0.000441074)
> start typeAnnotation
> end typeAnnotation (duration : 0.00181293)
> end ScalarCompiler::prepare (duration : 0.00369)
> end compilation (duration : 0.00520587)
>
> [elapsed wall time a few minutes]
>
>
> Maybe there is a way to formulate more directly to avoid interleave?
>
> - Julius
>
>
> On Thu, Jun 16, 2016 at 3:07 PM, Bart Brouns <b...@magnetophon.nl> wrote:
>
>> Hi Julius,
>>
>> I tried to come up with a minimal example, and came to the conclusion
>> that it's not any particular piece of dsp that is at fault, but it's just
>> that the compiler gets slow with elaborate constructions.
>>
>> Since originally the stable filters where suspect, I tested with my
>> classicVocoder.dsp, which has 2 or 3 high passes and many bandpasses.
>>
>> All of them can be switched for unstable ones by setting a variable in
>> lib/constants.lib to 0 and recompiling.
>>
>> In the same file, you can set the number of bands the vocoder has.
>> Note: Changing the nrBands only changes how many of everything we have,
>> it's the same dsp.
>>
>>
>>
>> To duplicate my experiment, do:
>>
>> git clone https://github.com/magnetophon/VoiceOfFaust.git
>>
>> or, if you already have it, git checkout master.
>>
>> cd VoiceOfFaust
>> cp lib/smallConstants.lib lib/constants.lib
>>
>>
>> all testing is done with:
>> faust2jack -t 99999 -time -osc -vec classicVocoder.dsp
>>
>>
>> with nrBands = 4 and stableFilters 1, classicVocoder.dsp compiles in 40s
>> so there is no problem with stableFilters or the way it's used here.
>>
>> with nrBands = 32 and stableFilters = 0, it takes 2min40,which makes
>> sense, cause it's doing a lot more work.
>> so a high number of bands is also no problem.
>>
>> with nrBands = 16 and stableFilters = 1, it takes 2min05
>> so no problem with medium nr of bands and stable filters either
>>
>> but then:
>> with nrBands = 32 and stableFilters = 1, we're looking at 7min50!
>>
>> to show that the problem is also not necessarily in stableFilters or high
>> number of bands:
>> cp lib/bigConstants.lib lib/constants.lib
>> It has nrBands = 16, stableFilters = 0, but lot's of other features
>> turned on, and takes 6min25
>>
>> To give a bit of context on how big the resulting dsp's are:
>> with bigConstants iit takes 24% cpu at runtime, and with smallConstants
>> with nrBands changed to 32 takes about the same.
>>
>> Unfortunately, the version that I'd like to use, bigConstants with 16
>> bands and stableFilters, takes 3 hours and 51 minutes to compile,
>> even though it uses no more than 20% of my RAM.
>> It uses 31% CPU at runtime.
>>
>> For my entry in the Faust Awards, I have 9 different of these beasts, so
>> it'd be nice if they could compile quicker! ;)
>>
>>
>> Many thanks,
>> Bart.
>>
>>
>>
>> On Wed, Jun 15, 2016 at 04:14:08PM -0700, Julius Smith wrote:
>>
>>> Hi Bart,
>>>
>>> Actually I am on the master branch.
>>>
>>> 6 minutes is still very long for a compile time! If any minimized
>>> example takes more than a few seconds to compile, I would like to
>>> drill down into that. We need that minimized example.
>>>
>>> As I mentioned earlier, there appeared to be a circular dependency in
>>> the Evaluation phase for the compiler. However, something had to have
>>> terminated the evaluation, so maybe infinite recursion is not a
>>> possible explanation?
>>>
>>> - Julius
>>>
>>>
>>> On Wed, Jun 15, 2016 at 1:55 AM, Bart Brouns <b...@magnetophon.nl>
>>> wrote:
>>>
>>>> Hi Julius,
>>>>
>>>> Looks like you are using faust 2, right?
>>>>
>>>> I built the latest faust 1 to reproduce your issue, and got 12 min
>>>> compile
>>>> time for the stable highpass and 6 min for the regular one.
>>>>
>>>> Faust 2.0-a41 gives me a huge RAM usage and endless build time.
>>>>
>>>> I'm unable to build Faust 2 from git because my distro only provides
>>>> .so
>>>> libs for llvm, while Faust looks for .a libs.
>>>>
>>>> Thanks,
>>>> Bart.
>>>>
>>>>
>>>> On Tue, Jun 14, 2016 at 09:08:40PM -0700, Julius Smith wrote:
>>>>
>>>>>
>>>>> I tried
>>>>>
>>>>> highpassStable(N,fc) = highpass(N,fc);
>>>>>
>>>>> and it still compiles forever
>>>>>
>>>>
>>>>
>>>>
>>>>
>>>
>>>
>>> --
>>> 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/ <http://ccrma.stanford.edu/>
>
>
> ------------------------------------------------------------------------------
> What NetFlow Analyzer can do for you? Monitors network bandwidth and
> traffic
> patterns at an interface-level. Reveals which users, apps, and protocols
> are
> consuming the most bandwidth. Provides multi-vendor support for NetFlow,
> J-Flow, sFlow and other flows. Make informed decisions using capacity
> planning
> reports. http://sdm.link/zohomanageengine
> _______________________________________________
> Faudiostream-users mailing list
> Faudiostream-users@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/faudiostream-users
>
>
------------------------------------------------------------------------------
What NetFlow Analyzer can do for you? Monitors network bandwidth and traffic
patterns at an interface-level. Reveals which users, apps, and protocols are
consuming the most bandwidth. Provides multi-vendor support for NetFlow,
J-Flow, sFlow and other flows. Make informed decisions using capacity planning
reports. http://sdm.link/zohomanageengine
_______________________________________________
Faudiostream-users mailing list
Faudiostream-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/faudiostream-users