I am forking a new topic here so as not to hijack the original where is this stated.
I have an 8 core AMD with SMT [AMD Ryzen 7 9800X3D 8-Core Processor (4.70 GHz) ] so therefore 16 threads. My understanding of Apple M series is basically 4 performance cores and 4 efficiency cores for M1, and up from there, to a max of 10. I don’t understand the CPU threading model on Mac M series chips. But I don’t see how you can have 45 threads for Dorico and 79 for Audio. I admit my ignorance here is great, but could you explain what you really mean by ‘thread’ on a Mac.
Also, in relation to performance of 8 core 16 thread systems, this is a good page:
Gaming has some of the same considerations as music engraving, although not totally analogous.
The term “thread” in programming terms is a chain of instructions being executed (OS doesn’t matter here, this is true for all the OS’s you probably know about). An application can start any number of threads for various reasons. Some threads within an application aren’t created by the application directly, but by frameworks (such as QT) and by the OS.
The thread count in reference to a CPU is the number of threads the CPU can execute simultaneously. In your case that’s at most 16 threads, which is a large amount of simultaneous processing. Threads that are not being executed are idle and sit in memory, waiting for execution. Sometimes idle threads are waiting for the result of another thread before they can complete. Sometimes threads are tied to a specific core and are waiting for that core to free up.
To illustrate, a developer might put a feature like Dorico’s proofreader on its own thread. Once run, the proofreader doesn’t need to run again until the data changes. Creating a new thread is a slow operation for an operating system, so once created it’s typical to keep the thread around if you think you’ll use it again. That thread can sit idle until the application tells it to run again. In the case of the proofreader, it could be whenever a change was made to the score.
This is a very complicated topic, and I can elaborate if my answer wasn’t clear enough.
No, very clear. I am a programmer myself. So @benwiggy is referring to POSIX pthreads, not CPU hardware threading. Of course you can have hundreds of lightweight threads in a process. I just wanted to clarify that.
Yes, so Dorico had 45 threads, and only 10 of those threads can be processed at any one time by my CPU (which has 10 cores that can deal with 1 thread at a time).
Your original comment was that Dorico was “single-threaded by design”. I took this to mean one monolithic process that could only be dealt with by one core in a linear fashion.
Let me explain this a little differently. If you have a single core processor (like we had years ago) you also had multi-threaded execution. What then happens is, that if you have e.g. 10 threads, they are not really executed in parallel, but each thread runs only for a certain amount of time and then in a round robin fashion each thread gets put to sleep and awakened again. This is all done by the operating systems task scheduler (which is a thread by itself). So multi threading does not mean parallel processing. Parallel processing you can only do on multi-core machines like we have today. Does this make it a little clearer?