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

Reply via email to