I would love to see the CPU powers being put to more use.
My DAW is mainly optimized for heavy CPU loads (as many others probably are…), I have no fancy GPU, as that has never been a real requirement for audio work. Infact it is so unfancy that I don’t get a choice in the system settings
Processing unmix modules takes forever, but the weird thing is that the CPU cores are not really that hard at work during processing - I have 12 cores and they only run around 30% each.
It must be possible to push them further? I dont see any settings for that…
This is just my guess: it could be that RAM transfer speed to the CPU is not fast enough to saturate your CPU cores.
AI models are loaded completely into memory and for processing then transfer speeds are playing a critical role. VRAM on GPUs has much higher transfer speeds.
DDR4-3200 → max. 25.6 GByte/s
DDR5 → up to 64 GByte/s
Nvidia RTX 3090 → max 936.2 GByte/s
Nvidia RTX 5090 → max. 1.79 TByte/s
If you think that is expensive, wait what Nvidia is planning to do with GPU prices this year - rumors are that those will increase by 30-40%, as they can’t supply the market (thanks AI bubble) and memory module prices also went up and still do.
5070Ti seems to have currently the best price/performance ratio.
In general, buy a GPU with the most memory you can afford.
I’m not sure how to measure if memory bandwidth is an issue, but here is a screenshot from the “unmix song” proces running. I enabled “Show Kernel Times” (the filled blue graph).
From my experience wait times would either show up as longer 0% or 100% CPU usage periods, depending on implementation. What we see here is a rather jaggy variation pattern, and no saturated or dead zones.
I would say that there is room for CPU utilization improvement, perhaps by segmenting song processing into x number of parallel running sequences or something (just a guess).
Your CPU does have 6 true cores (and 12 logical cores). The idea behind those logical cores is to make better use of the complete compute logic of a core. But a logical core is not a replacement of a full physical core. Intel used this feature for the first time with the Pentium 4, which had 1 physical core and 2 logical cores. It was call Hyperthreading. It means it does a logical split of the available units off the core on the CPU die, so the OS can put other threads onto unused parts while the other logical core is already occupied with current threads.
This really had made multitasking snappier for the first time while one core had 100% load.
This works exceptional well when you can use different compute logic parts, but if it is a heavily parallelized task of the same calculations using the same compute logic parts, you will run out of compute units on the logical core.
In your case utilization reaches over 50% which means all 6 physical cores are being fully under load.
A GPU does not have logical compute units like your CPU, it’s all physical compute units - and they are massive parallel.
Thanks for the explanation - yes, that does make more sense. However I should note that the “51%” utilization measurement is a “lucky shot” - most of the time this is way lower and it changes a lot.
For comparison I did a standard Cubase export to see how that compares - here we see a nearly perfect utilization across the cores. My guess is that the reason why the load is roughly 50% on each logical core is, like you explain, that there is only 6 physical cores:
I highly doubt that SpectraLayers’ CPU load will ever look similar because you are comparing totally different tasks. A lot of the computations for your Cubase audio export will likely fit into the way faster CPU cache stages and will only be a fraction of the amount of data SpectraLayers’ Unmix module has to process.
I have made a test on my workstation (12 physical cores, an AMD Ryzen 9 5900X with 128 GB of DDR4 3600MHz RAM, GPU Nvidia RTX A6000 Ampere with 48GB VRAM):
Unmix (High, everything ticked) of a 30 sec track
CPU only => ~ 2min (without the initial model loading time)
GPU => ~ 10 sec (without the initial model loading time)
A whopping ~12 times faster (I should probably do a test with a longer track and use a stop watch for precision).
That’s what my CPU load was looking like (Sysinternals Process Explorer), red is Kernel time.
Just to add some context to my bandwidth comparison above:
The reason GPU processing is so much faster isn’t just about raw compute power - it’s fundamentally about memory bandwidth. When Unmix processes audio, it’s constantly moving massive spectrograms through the neural network layers.
With CPU processing, those huge data matrices have to travel between system RAM and CPU cores over that 57.6 GB/s connection. The CPU itself might be fast, but it’s essentially waiting on data to arrive most of the time. Think of it like having a really fast chef who has to wait for ingredients to be delivered.
The GPU’s 768 GB/s VRAM bandwidth means data stays close to where it’s being processed - 13x faster access. The AI models sit in VRAM, the spectrograms sit in VRAM, and the Tensor cores can just crunch through everything without constantly fetching data from across the system bus.
This is why the CPU usage graphs look the way they do - it’s not that SpectraLayers isn’t trying to use the CPU efficiently, it’s that the task is fundamentally memory-bandwidth limited when running on CPU. The initial 100% burst when loading models is the CPU actually working at full capacity because it’s just copying data into RAM - no complex memory access patterns yet.
So yeah, if anyone’s looking to speed up Unmix processing, a better GPU is going to give you way more bang for your buck than adding CPU cores.
I have no doubt that a decent GPU will make a great difference here. On my other workstation (not for audiowork) I have an RTX4090 and Spectralayers unmix a standard song within a 1-2 minutes (compared to +20 min on the older CPU only workstation). My intention with this request was to get some attention on improving CPU only performance, if possible.
I’m guessing that your CPU screenshots are from a CPU only processing, right?
It would be interesting to see the CPU load during a GPU enabled run (and perhaps also the GPU tab..)
I did that too, but did not make a screenshot as my CPU was idling while my GPU did crunch through the data (hovering between 70-80% load) and using ~18 GB VRAM.
I had Davinci Resolve, Reaper and Topaz Video open in the background, those + Win OS did grab 17 GB of VRAM alone. Hadn’t I have a GPU with 48 GB VRAM then of course I would have had the other apps closed before using Unmix.