CPU Usage issues, comparison between Mac and Windows

Official support for: meldaproduction.com
Post Reply New Topic
RELATED
PRODUCTS

Post

Hello everyone.

I recently bought a new PC running Windows 10.

It features a Skylake i7-7820x CPU, a member of the new AVX512 family.
It is a 8 core processor at 3.6 GHZ, with intel's turboboost it runs at max around 4.3 ghz.

So basically that's a fast, modern and capable processor, yet with certain meldaprodcution plugins it runs into trouble.

One of these plugins is mUnison. It's almost unusable (if you want to use high buffer sizes and resolution).

I benchmarked the plugin inside Ableton Live at 96 khz and get the following results:

processing time: 3.2 seconds
single core cpu usage: 10.59%
single core can run: 9.5 instances

Then I benchmarked the same plugin with the same settings on a Macbook pro with a i7 2.2 Ghz quad core:

processing time: 1.45 seconds
single core cpu usage: 4.82 %
single core can run: 20.7 instances


I can have double the power with a 2.2 ghz core compared to a roughly 4 ghz core. Shouldn't it be the other way around.??

This is odd, very odd. It even says on the Melda website that mUnison was created to perform splendid on AVX processors (I don't really know what AVX means).

BUT: It gets even more confusing.

So I benchmarked mMorph because I dont run into issues on PC, here are the results:

processing time: 0.28 seconds
single core usage: 0.92%
single core runs: 108.3 instances


Macbook:

processing time: 0.66 seconds
single core usage: 2.20%
single core can run: 45.5 instances


This is the result I would expect from the differences in CPU power between both machines.
The PC runs roughly double as much instances.

MCharacter lies in the middle, on PC it says 72 instances and on Mac it says 48...

It's kinda weird, I can easily stack 50 voices at 96 khz on the laptop, but my highend PC gets brought to its knees with the same settings. All other plugins run pretty much double as fast on the PC.

Any of you also have a brand new CPU and experience trouble like this?

There are certain AVX settings for the CPU in the BIOS / Overclock menues, but I don't want to mess with something I don't understand yet.

Maybe Vojtech has insight to offer? Would be greatly appreciated...
Anyway, long live Meldaproductions!!

- Andre

Post

Hi Andre,

ok, so what you are experiencing isn't really anything odd, unfortunately :). I'm sort of an optimization junkie, so I could spend hours talking about the subject, but no time on both of our sides :). Anyways right now the newest update is getting prepared, I'll check the comparisons between the 2.

Anyways a few pointers :). Back in about 2000 engineers still believed that the computer performance will double every 2 years. Didn't last long :D. Soon the size of the CPUs got so low, that they couldn't make it smaller, someone even told me they got into 1 atom per transistor (which I'm not sure if to believe), anyways the physics just doesn't really allow to make things faster, since it would need to get smaller and there we reach into actually electron flow speed limit and uncontrollable overheating.

So since we cannot make things faster the engineers decided to make processors "smarter". They now parallelize instruction flow, predict branches, vectorize calculations and of course increase the number of cores (which unfortunately isn't too useful in most cases of audio processing)... You mentioned the AVX is an instruction set, which handles the vectorization. It basically lets the software perform multiple calculations at once. Great if you want to say multiply an array of numbers by a constant (gain), but also more advanced calculations, but it is always the same calculation performed on multiple numbers. For audio processing it is very useful, since the audio signals are basically just long arrays of numbers and the calculations are often the same for each number. But there's a catch - it must NOT depend on the previous number, because obviously you cannot perform a calculation on something that is not available yet. And that's unfortunately very common too. In some case one can still exploit it by using some ugly math to improve things like filtering and that's why our filters are so fast on AVX (usually 3x faster than using native instruction set).

But in many cases the AVX is just completely pointless. And much of what MUnison does is unfortunately exactly that case - as most advanced spectral algorithms this one analyses sinusoids in the input signal and resynthesizes them, that's where the CPU spends most of the time. The code is essentially a huge pack of branches (if something then do this...). While the CPUs are smart enough to predict some of them, some are too complex (which I presume will be this case) and then it depends on the compiler if it thinks "ok, so this branch will result in yes most of them" and whether it will actually be true. Despite we used the most expensive compiler on both platforms and it should hypotetically generate the same code, it actually doesn't... In any case it's like a guessing game. Sometimes the compiler is lucky and sometimes it isn't :D.

Enough of that essay :D. My point is that higher core frequency, better instruction set etc. doesn't ensure faster processing and you end up with pure luck. Also note that the plugin's benchmark is based on white noise, which is like the worst possible signal for the MUnison's processing. Anyways I'll check for the next version. We have changed the compilers anyways and the whole optimization system now got rather different, so perhaps it will work better in your case. AVX512 won't be exploited though as it is used on just a few CPUs yet. But AVX2 will.

One important thing - the most relevant audio processing parameters are sampling rate and buffer size, check if you use the same ones.
Vojtech
MeldaProduction MSoundFactory MDrummer MCompleteBundle The best plugins in the world :D

Post

Interesting read. Will the new compiler change anything about how the plugins work, such as speed?

Post

Sure, things will change, to which extend is hard to predict. The new kernel itself is generally faster as it optimizes many core features, but I think the performance improvements will be in the rate of percents, there's not too much to optimize anymore, I already optimized the crap out of it :D. But things like opening, loading etc. should be better. But I certainly assume there will be cases like this thread - the compiler will just choose some wrong branch etc. and things will slow down. But it should usually be a matter of percents, the results in this thread seem like either the audio settings were different, or there was some external influence, or the compiler just did something very nonideal (which in case of the Intel compiler I was using was rather common unfortunately).
Vojtech
MeldaProduction MSoundFactory MDrummer MCompleteBundle The best plugins in the world :D

Post

Hi,

thank you very much for this detailed insight in how all of this works!
I learn a lot about audio just from reading your posts and tutorials on you website, so thanks for that :-)
Seems like there's far more to this than I thought.

The audio settings were the exact same, so the problem is not related to buffer size or resolution in the spectral settings, and as I mentioned, it only happens with MUnison. I just tested it again and the results are the same.

It's crazy, it's the only Melda plugin that slays this CPU.
Working on 96khz, raising the voices to 50, the CPU meter in ableton reaches 95%.
If I do that on the macbook, it displays only 35 % CPU meter. It's unbelievable, but I swear it's the truth :tu:

But it's not a big deal, I can switch to the macbook if I wanna use Unison in overkill mode, so that's that :D

There's more things to consider, though. I work with a 5 year old scarlett interface, and the drivers are from 2014. It's a discontinued product unfortunately. I can tell this interface is not optimized to work with my new system.

Well, all in all I guess the computations from MUnison are the worst nightmare for this cpu, for whatever reasons I do not understand too well :D

And I have one more question, since you're already here:

When working with Powersynth inside MXXX, and I set the settings inside powersynth to, let's say extreme x8 (it really does clean out aliasing when working with complex FM and waveforms), but the overall settings in MXXX are set to Normal, what exactly is happening?

I know a weird question, but complex software raises these questions :help:
thanks again for the answers!

Post

Hi Andre,

are you also using the same host? The DAW and audio drivers do most of the problems here. And unfortunately there's quite a lot of problems in that area. For example from my tests I did a few years ago, Cubase was far far better than Live (of the worst was ProTools of course :D ). This time it's about audio handling and thread scheduling.

Anyways please contact me via info@meldaproduction.com, I'll add you to the beta testing list, right now I'm actually uploading a new beta, so it would be cool if you could test it on your computer.

As for MXXX - I'm not sure what you mean by Normal there - it's the settings / Smart interpolation? This one manages handling of modulation & automation and other parameter changes. There's a lot to optimize to get the ideal CPU/audio quality ratio :D.
Vojtech
MeldaProduction MSoundFactory MDrummer MCompleteBundle The best plugins in the world :D

Post

Ok sounds good, I'll write you an email!

BTW yes it's the same host on macbook and PC, Ableton Live 9.

I also would like to use Cubase, Reaper or Fruity Loops in the future, because I've read that these DAWs are optimized for multithreaded CPUs.

Ok, so my question was:

I have Powersynth opened inside MXXX. Then I set the powersynth global settings to Extreme.
Then I go to the smart interpolation settings of MXXX and set the quality to minimum.

Will this affect the sound quality of that powersynth instance? I know it's a stupid question, I just wondered how the smart interpolation from MXXX affects the quality of powersynth's output. (since powersynth let's you choose the quality inside mxxx, other plugins dont)

Ok but this actually doesn't really matter, maybe I'll find some hints on your website about smart interpolation etc.
Thanks again for all the answers,
cheers

Post

I've tinkered with the interpolation settings before. The best thing to do is render out different versions with different settings and see what difference you hear. It is subtle.

My understand is that it affects the accuracy of moving parameters, so automation and (more importantly) modulation using modulators. I use a lot of follower modulators so was curious as to the effects. I actually found in my tests I preferred the default over the higher quality ones. This is likely because the higher quality ones were more 'jumpy' as they track the input more closely, whereas the lower quality interpolates and smooths out the signal. The really low quality settings smooth out the signal even more, but then start reacting a little too slowly to large data changes.

I guess the point is, do some tests, as more accuracy may not be preferable to your usage, ot likely not audible at all.

Post

Yes, the smart interpolation basically controls subgranularization of the parameter changes. If you imagine any parameter, which updating would take too much CPU to be performed per-sample, then most plugins would just change it instantly => zipper noise when you modulate/automate it. So Melda plugins change the parameter over time, so that it is smoother and you can a compromise in CPU requirements and audio quality.
Vojtech
MeldaProduction MSoundFactory MDrummer MCompleteBundle The best plugins in the world :D

Post

MeldaProduction wrote: then most plugins would just change it instantly => zipper noise when you modulate/automate it
I didn't come across a plugin yet which doesn't do any parameter smoothing, so most plugins already doing it the right way. But it was a Meldaproduction plugin back in v5 or v6 which had this behavior, though :lol: I remember, especially when switching to more bands, the new ones were automated steppy as hell in Cubase.

But the question was if settings in MXXX affect/override the settings of MPowerSynth inside MXXX ^^

Post

Actually, first you can't really have an idea what plugins do, especially this one is rather difficult to test. Second, last time I checked most EQs on the market did cause zipper noise when automated and they don't have modulation capabilities, which is obviously like a million times bigger stress for such an algorithm. And that's EQs, mostly using the simplest filters. Show me a plugin that has an oscillator with custom shape, that you can modulate :D and even better - an alias free oscillator with such feature. Then good luck finding a supercomputer, that would handle parameter per-sample updating of such an engine :D.

(btw. most plugins, that do something, smoothen the parameters, exactly as you said. That means that they cannot respond quickly, in other words they won't do what you actually ask them to. They simply slow things down enough, so that the zipper is not audible. For most slow automation it sort of does the job, but don't even try modulations...)
Vojtech
MeldaProduction MSoundFactory MDrummer MCompleteBundle The best plugins in the world :D

Post Reply

Return to “MeldaProduction”