Dsd upsampling, parallel processing: allow to use more than 2 cores

A question to roon: would you please implement a function to allow user to choose a number of cores for dsd upsampling. So not only to switch parallelized processing but also to choose the cores number would be very helpful. Thanks!

Here the discussion about the problem:

Roon CTO several years ago already addressed multi core DSP. Not likely to be implemented because of inefficiency and tradeoffs.

AJ

Sounds like an excuse to me, to avoid the complexities of parallel computing. There are many C++ compilers supporting OpenMP extensions, and there are also STL execution policies, to name just a couple of parallelization techniques.

1 Like

DSD, by its very nature, is a serial bit stream. It lends itself to serial operations, hence the relative inefficiency of parallel processing.

AJ

You are correct, but DSD is just one example. For that, you can at least use 2 cores, one for each channel, with no other parallelization.

Well, filtering via FIR convolution and IIR parametric equalization also is a serial operation if performed natively in the time domain, which I believe is how Roon DSP applies such processing. Per my understanding, Roon DSP does not convert to the frequency domain by applying FFT and inverse FFT to the audio and filters.

AJ

FIR can actually be parallelized in time domain for single channel.

Roon implemented already a parallelization with 2 cores. And it looks not as it is one core per channel. So it should be possible to do further parallelization. Nuc10i7 has 12 threads. It is enough potential to spend some more threads for dsd processing.