Convolution + DSD overloading powerful CPU

Processing my DSD test files, I can easily overload many of my 16 core Xeon.
Music simply stop playing.
All I am running is Roon.

My conclusion is that with a convolution filter and DSP treatment, it is esy to overload a big CPU.

If I test simpler files (192/24), I have to be careful reducing headroom. Overload can also happen .

I have a dual Xeon motherboard. See this link -

https://community.roonlabs.com/t/dsd512-is-this-even-possible-yes-just-needs-more-cpu/32749/17?u=slim_fishguttz

Enable Parallelize Sigma Delta Modulator.

If that does not bring the performance to >1.2x, disable Native DSD Processing.

1 Like

what did you use to build that convolution filter?

I did the measurements of my room with REW

And sent them to Thierry in England who specialyse in correction of the room and in interaural crosstalk, all adjusted to your own head.

Go and see : homeaudiofidelity.com

1 Like

Your situation is caused by processing DSD source material through a large convolution filter generated at a low sampling rate. In this situation, Roon is forced to upsample the filter by a large multiplier, creating an absolutely massive load on the convolution engine. A long filter generated at low PCM sampling rates is not a good match for the “Native DSD Processing” option, and would struggle on any CPU.

You are in this situation because you started with REW, and REW is incapable generating filters above 192kHz. REW’s authors were probably not thinking about DSD when baking in that limitation.

The latest beta of REW includes the ability to generate 352.8k and 384k filters. This could reduce the CPU load significantly, so it may be worth a shot.

@wklie’s suggestions above are good if you want this to work with your current filters.

1 Like

Hi @danny, I’ve the same problem when I use a convolution filter on DSD over DSD64 (which is processed at x1.6). DSD128 are processed at x0.6 up to x0.9 and it’s not sufficient.

I’m using filters provided by HAF in all possible sample rates (44, 48, 88, 96, 176, 192, 352, 384).
My Roon server is running on a Linux PC with a Rizen 5 1600 (3.2GHz and 3.6GHz boost) with low latency RAM (16GB) and SSD (NVMe M2 / 256GB). The Music files library is stored on a more classical HDD (2TB, Seagate with SSD cache).

I’m surprised to not be able to perform convolution in Native DSD (with Sigma Delta modulator parallelized or not) with DSD128 files. I would prefer to stay in native DSD and not switch to a PCM format.

If the problem is not a low sampling rate of the convolution filters, what should be the issue ?

Thanks
Pat

That’s likely impossible with your CPU.

@wklie Thanks. Which kind of CPU would allow to do it ? The Ryzen 5 1600 is already a powerful CPU. If I look at the cpu load, I see some peaks at moment but it is not constant. The 2 Cores used on the CPU are not loaded at their maximum…

DSP in Roon is using a maximum of 2 cores for a given zone. Having 8 or 16 cores is not helping. Prefer CPUs with high single core performance or lower the load, for example shorten the filters or disable native DSD processing.

If you’re currently at 0.9 processing speed, getting i7-9700K may possibly work. At 0.6, that’s really hard to say. To find out how powerful your CPU is, look at single thread benchmark.

The power consumption of such high frequency CPU seems to get higher the limits I fixed to me (don’t want to go over 65W).
For a gamer beast, that’s sounds ok, but I’m a bit reticent to use a power hungry server (running 24/24 7/7) for pure audio server.

I guess I’d better have to get all my DSD128 files I bought into DSD64 format. It’s a pity that the convolution filter can’t be placed after a DSD128 down to DSD64 conversion. In the current Roon version, I cannot convert DSD128 files before the convolution process.

Besides that, I’m surprised that the 2 cores used by Roon for the convolution does not seems to be loaded at 100% all the time during a convolution of DSD128 files. May be we should find out why the hardware is waiting for something instead of performing all the pure compute tasks required by the convolution…

Another question I have. If I well understood, Roon is able to spread the compute on 2 Cores, so why the software set the limits to 2 parallels tasks instead of 3 or 4 (horizontal scalability) ?
It is common today to get CPU with more and more cores rather than a pure race of GHz…

1 Like

DSP uses a single core for one zone, with the exception of the Sigma Delta Modulator which can use 2 cores if and only if parallelization is enabled.

In your case, you should simply turn off native DSD processing.

@wklie Aggree with you Peter, but doing this means to no longer send DSD to the DAC but only PCM stream (through the RoonBridge).
In some cases, I found some sound benefits with DSD files over their PCM version. I would accept the tradeoff if I could only convert to PCM when the file to read is in DSD128 and more, but stay in DSD when the file is encoded in DSD64 (my server’s CPU limit).