[PD] Making a Realtime Convolution External

Seth Nickell seth at meatscience.net
Wed Apr 6 22:20:16 CEST 2011


SONOFA$#*&! I keep posting from the wrong email address and getting
bounced ;-) Sorry to Henry & IOhannes for the dupes...

> In the context of threading/part. conv, I had an idea to compute ahead.
> Most of the calculations for a given block can be computed ahead.  Only the
> most recent block of samples needs to be actually convolved, right away.
>
> Then, once you've summed the most recent block with the other partitions,
> you'd start a thread to "compute ahead" the next cycle's partitions.  If the
> load is low enough, it would complete by the next cycle--of course, you'd
> need to wait/join the background thread to make sure that it completes.

that's what it does, give or take :-)

1) Blocks that are due sooner are prioritized, whenever a worker
thread is signalled to wake up, it does the block next due.
2) The main thread pre-empts worker threads as soon as its called.
Worker threads check constantly for a signal to suspend their current
task, and hand the unfinished work back to the main thread.
3) If the main thread needs a block that hasn't been completed, it has
to work on it -> usually this means you aren't going to make your
schedule and the CPU is maxxed out.

-Seth



More information about the Pd-list mailing list