Peculiar CPU usage and vectorisation

This forum is for developers of Rack Extensions to discuss the RE SDK, share code, and offer tips to other developers.
veezay
Posts: 3
Joined: 28 May 2020

Post 05 Sep 2020

Hello!

I'm new to C++ and RE development, as I started learning both at the start of 2020 soon after the RE SDK was released open for everybody. I've been writing two REs and I'm a bit baffled about the CPU usage I'm getting. When I disable the multi-core audio rendering in Reason's preferences, the performance is a lot better (no buffer underruns) while only utilising one of the CPU cores, but if I enable the multi-core support, the CPU usage jumps to almost 100% and I'm getting a lot of buffer underruns even when my audio buffer size is maxed out. Reason's DSP meter shows similar CPU load behaviour. I'm aware that my code isn't the most efficient, so such heavy single-core utilisation I'm seeing is expected, but I don't see what Reason is doing with all the other cores when it gets the chance. My code isn't using any vectorisation.

Speaking of vectorisation, I recall seeing Jukebox-specific vector types in the SDK documentation a while back, but after they updated the documentation, I can't find any information about them anymore. Did they deem them unnecessary for any future plugins? I'm pretty sure at this point the compiler is much more capable at deciding when and how to utilise vectorisation compared to myself, but I'm still curious.

I'm using SDK version 4.1.0 and Reason Recon 11.2.1d8.

User avatar
pongasoft
RE Developer
Posts: 250
Joined: 21 Apr 2016
Location: Las Vegas

Post 05 Sep 2020

I do not know much about vectorisation but I do know that Reason Recon is a debug version and as a result it is not behaving like Reason in all aspect. It is certainly very odd that the CPU jumps to 100%.

One thing you can try is to generate the u45 and upload it to the reason server (as a beta) so that you can download the RE to run in Reason and see if you get similar results (it is the only way to try in Reason vs Reason Recon).

veezay
Posts: 3
Joined: 28 May 2020

Post 05 Sep 2020

Yeah, I've also noticed Recon being less optimised in its performance which is understandable since it does a whole lot more compared to actual Reason. I have sort of kept my plugin performance in Recon as a benchmark as in "if it's fine using it in Recon with a bunch of other devices in a project, I'm sure it's at least as fine in Reason". That's why I am intrigued by the multi-core performance, in case it's just Recon-specific behaviour.

I haven't yet linked a company to my developer account, which I'm guessing is required before I can upload a u45 for beta testing, so I've still got work to do. Thanks for the tip though, that never occurred to me!

User avatar
Enlightenspeed
RE Developer
Posts: 494
Joined: 03 Jan 2019

Post 08 Sep 2020

Go here for the scripting details:
https://developer.reasonstudios.com/doc ... types_simd

You might notice this says SDK 4.2.0 but everything is still the same, just with a maintenence update to the GUI rendering scripts.

Cheers,
Brian

User avatar
Socram
RE Developer
Posts: 136
Joined: 04 Jul 2015

Post 08 Sep 2020

Do not trust Recon for performance, it does a ton of logging and other things that make it run extremely slow. Your only option as far as I know is to upload a build and set it to Development (not Testing) and give beta licenses to yourself.
Static Cling - Rack Extension Developer of Tome, Index, Optic, Chord Detector, Delta, AutoLatch, and more coming soon!
www.StaticCling.io
info@StaticCling.io

veezay
Posts: 3
Joined: 28 May 2020

Post 12 Sep 2020

Enlightenspeed wrote:
08 Sep 2020
Go here for the scripting details:
https://developer.reasonstudios.com/doc ... types_simd

You might notice this says SDK 4.2.0 but everything is still the same, just with a maintenence update to the GUI rendering scripts.

Cheers,
Brian
Ah, thanks!

  • Information
  • Who is online

    Users browsing this forum: CommonCrawl [Bot] and 0 guests