Topic: Performance issues on M1 mac (arm64) with multicore rendering
Hello,
Fantastic work Modartt on the Pianoteq 7.1.0 release! It's really great to have native arm64 support. I am enjoying Pianoteq a lot.
I would like to report an issue about performance on a M1 mac. In short, the performance index shows large fluctuations, probably due to heterogeneous cores in the M1 chip. Here are some screenshots: https://imgur.com/a/f5OcBgr
---------------------
- arm64 native, multicore rendering: Performance index 62..135 (warning: large fluctuations) https://i.imgur.com/y6pJdVc.png
- arm64 native, singlecore rendering: Performance index around 143 https://i.imgur.com/X7dls9p.png
- Rosetta 2, multicore rendering: Performance index 75..98 https://i.imgur.com/7PdOk8a.png
- Rosetta 2, singlecore rendering: around 103 https://i.imgur.com/DfmP7lj.png
In the above case, I used a layered instrument consisting of two piano layers (which is of course more CPU-intensive). When it comes to a single-layered instrument, however, I feel it is more stable (performance index around 100..138 with multicore rendering). FYI I am using a M1 mac with 8GB RAM.
What is strange here is that with multicore rendering enabled on native arm64 mode, the performance fluctuates a lot. I guess this is because M1 has four high-performance Firestorm cores and four energy-efficient Icestorm cores and things are much slower on Icestorm cores. However, the gap is not as big as this when Pianoteq is running under Rosetta2's x86_64 emulation mode. I feel when multicore rendering is used, we should use only high-performance cores (not sure this is configurable from an application) to attain better stability.
My experience is that, on native arm64 mode, sound rendering is more stable with multicore rendering disabled in general (and you can see higher performance index). However, when the audio load is very high, I often hear some crackles as it would utilize only one core. Overall, the setting that worked most stably for me is Rosetta2 + multicore rendering.
Thank you!