higher than expected usage for reverb with multiple DSP threads #626
Comments
|
|
|
was hoping this was an artifact of usage metering. DSP work units have to spinlock for audio bus access, and they are at a high priority. but, the reverb contribution to workload seems to remain the same when more work units are added:
|
|
i can't really account for why the reverb CPU usage would be spread between DSP threads in the first place. the reverb is a monolithic UGen exported by Faust. AFAICT, when supernova constructs a DSP work graph, each work unit is the one thing is that the reverb definitely isn't using the nova SIMD operations. (neither are the GVerb or FreeVerb implementations in supercollider though - again, to my best knowledge.) |
|
as a test i switched the reverb to GVerb. same behavior observed re: multi-core spreading. |
|
well i'm just not sure this is something to worry about. it could well be a sampling artifact: we are seeing a pretty coarse-grained average of how often a given thread/core is occupied. and the computation of the reverb could be (evidently, is) handed off to a different thread on each tick of the scheduler. really the useful point of comparison would be: does supernova outperform scsynth on a single thread. |
|
mlr (softcut) all four tracks playing, with heavy reverb. grid plugged in, REC screen. wifi on, attached to network for diagnostics. scsynth
supernova
|
|
ok, temperature and current draw is pretty unarguable. spinlocks on bus access still seems like a likely culprit (?), probably not adequately tested on ARM. dang. supernova source is pretty dense and i don't think we have the bandwidth to tackle a fix for this ourselves. we can try for a more isolated test and file an issue upstream, who knows. i guess it's time to take a more serious look at the alternative of multiple |
|
i'm closing this since there doesn't seem to be a lot we can do about it. issue #630 discusses dual |
with a single-core engine like
TestSinethe reverb only uses one core.when loading
SoftCutor other multi-core engine, reverb jumps to using all cores.then reloading
TestSine, reverb still uses multiple cores. until crone is stopped/started.@catfact suggests this may be a bug
The text was updated successfully, but these errors were encountered: