March 3, 2020
Windows with more than 64 cores
Windows has a unique (as far as I can tell) "feature", which I have not experienced first hand but I've heard about. If your system has more than 64 cores (effectively, e.g. 40 cores each with 2 threads would count), then it divides the cores into "processor groups." By default, an application that creates threads and does no additional work has all of its threads run in the same processor group (is this always Group 0? or is it randomly assigned? I have no idea).
The significance of this is that if, for example, you have a 36 core hyperthreaded CPU (72 logical cores), then a traditionally-written multithreaded application can utilize at most 36 cores. (It's also unclear to me if the 36 cores in a processor group in this scenario are 18x2 threads each, or 36 threads on 36 unique cores).
Anyway, we're now testing a REAPER tweak to address this. If you need to implement this in your application, see SetThreadGroupAffinity(), and get ready for some fun using GetLogicalProcessorInformationEx() with RelationGroup and parsing the output to determine the group structure (the documentation for that is a bit light IMO!).
So there you go, everybody.
Recordings:
live solo improv: super8