
Hauptwerk currently supports a maximum of 64 logical CPU cores. I see that each of your Xeon e7-8880 v4 CPUs has 22 physical cores and 44 logical cores ( https://ark.intel.com/content/www/us/en ... 0-ghz.html ). As far as I know, nobody has ever tried to run it on a system with more than 64 logical cores before (or maybe even with more than 32), but I'll log potentially adding future support for it as an enhancement request.
Whilst Hauptwerk doesn't officially support Windows Server 2022 (and I'm not aware of anyone who has tried it previously), II think it's likely to work, but only the first 64 logical CPU cores will be used by Hauptwerk (on any operating system).
Since an extra virtual (Hyper-Threaded) core gives much less benefit than an extra physical core, if you can disable Hyper-Threading in the BIOS then you would halve the total logical CPU count (to 8x22=176) but Hauptwerk would be using more of the physical cores, which I would expect to give a significant performance benefit.
That said, since synchronising each additional logical core adds some performance overheads, there's likely to be a point beyond which additional cores won't actually benefit performance overall.
See also: viewtopic.php?f=16&t=20719&p=155080&hilit=cores#p155080
mdyde wrote:I'm afraid I don't have any specific benchmarks to offer for the hardware you're looking for, or much more to add beyond what was already covered in the previous discussions on it in this thread:
https://forum.hauptwerk.com/viewtopic.php?f=16&t=19945mdyde wrote:A few minor points to add to Bob's very comprehensive reply (thanks very much, Bob):vpo-organist wrote:How many cores are used by Hauptwerk?
- Hauptwerk's audio and convolution reverb engines should run distributed across any number of logical cores up to 64.
- If I recall correctly, the most I've ever heard of anyone using with Hauptwerk is 32 physical cores, although more commonly up to 16 or 24 (and even then, more than 12 is rare).
- More CPU cores do potentially benefit polyphony and the convolution reverb engine, but per-core CPU performance is still extremely important, since threads running on different cores inevitably sometimes need to communicate with each other (thread synchronisation, exchanging data, etc.), and the more cores there are, the more the overheads in keeping them synchronised. Hence with huge numbers of cores there may eventually be a point beyond which more cores even reduce overall performance. Although I can't give advice based on benchmarks, my inclination would be to be wary of going much beyond about 8 physical cores if doing so also involved a significant trade-off in per-core performance (base clock speed, etc.).
- Base clock speed, CPU cache, and memory bandwidth are also extremely important, as is making sure that any candidate CPU has support for the AVX2 instruction set.
- If it doesn't involve much of a trade-off in per-core performance (base clock speed, etc.), then I would expect that up to something like 16 physical CPU cores (32 logical) would scale well with minimal additional synchronisation overheads. (Numbers of cores beyond that may well perform well too, but we don't have feedback on that.)
- Hauptwerk's sample set cache loading mechanism (which determines how fast organs are loaded into memory) can currently take advantage of up to 6 CPU cores (but more won't hurt).
- The MIDI/relay event processing (organ switches, pipe on/off events, etc.) are necessarily serialised to ensure that the state of the organ relay remains consistent.
- Each of the background models (wind supply models, pipework modulation, tremulants) runs in its own thread (one thread per model). That's done since the wind model's time-slices need to be extremely short/frequent (sub-millisecond) and serialised. (It might possibly be be able to gain some performance in the future from further multi-threading the wind model within the time-slices, but possibly not, since the overheads of so many, extremely frequent, thread context switches might exceed any potential performance gain.)
- The first few logical cores are kept free of audio/convolution engine loads, and are instead used for the MIDI/relay, background models, and other threads. If there are 12 or more logical CPU cores then the first 4 logical cores will be reserved for those purposes.
- Hence per-core performance may well become a bottleneck for the achievable polyphony, even if you had a huge number of cores for the audio engine.
So in summary, to emphasize again: per-core performance (base clock speed, etc.) is still very, very important, even with a lot of cores.vpo-organist wrote:Is AVX-512 also supported by Hauptwerk?
AVX-512 might possibly benefit convolution reverb performance (which relies on a third-part library for the DFFT function), but Hauptwerk (v6.0.2) won't currently benefit from it above AVX2 in other respects. (AVX2 is definitely worthwhile.)
(We did originally make a dedicated AVX-512 build for testing, but there seemed to be strange compatibility problems with at least one AVX-512 CPU, and it gave negligible performance/polyphony gain anyway, so we abandoned it for now, to be on the safe side. It might be resurrected in the longer-term if it proves beneficial.)vpo-organist wrote:I currently only know the Intel Core i9-10980XE with AVX-512, Turbo 4.8 GHz, 18 cores/36 threads and costs around 1000 EUR. CPU benchmark 33989.
Or should it be a Ryzen 9 5900X, 4.8 GHz, 12Core/24Threads, AVX-2, Bench 39518 for 544 EUR?
Bob's reply covers that in great depth, and the only thing I would add is that Hauptwerk's convolution reverb engine might possibly perform better on Intel CPUs than AMD, all else being equal (same per-core performance, etc.), but in other respects Hauptwerk should be optimised equally for instruction sets (AVX2, etc.) on Intel vs. AMD CPUs.
...
As above:
- Hauptwerk's audio and convolution engines will certainly take advantage of more than 8 physical cores, but since per-core performance is also extremely important I would be cautious of going much beyond 8 cores if doing so also involves a significant compromise in per-core performance (otherwise, the more cores the better, within reason).