2023-01-19: APP 2.0.0-beta13 has been released !
!!! Big performance increase due to optimizations in integration !!!
and upgraded development platform to GraalVM 22.3 based on openJDK19
We are very close now to releasing APP 2.0.0 stable with a complete printable manual...
Saving number of threads
One of the pet annoyances about APP is the fact that it always defaults to number of threads -1, but this is pointless. APP detects the number of "Threads" the CPU is capable of, this is usually the number of cores + hyperthreading (Or AMD equivalent), but setting this above a certain amount is a false economy and here is why.
Logical processors (Hyperthreading) on the CPU are not actual cores, and should never be treated as 100% of a core, instead you should only take their performance as 30% of the actual core value, so for example, on my desktop system, I have an 18 Core CPU, and my Ice Lake system I am testing I have a 32 Core CPU.
By default APP sets my desktop PC to 35 out of 36 threads, and the Ice Lake system, 63 of 64 threads, and I have found that this hampers performance, not just with APP, but also other things as well (I do a lot of chia plotting).
So you should never run it above 30% on top of the number of cores you have so for example
18 Cores + 30% = 23 threads
32 Cores + 30% = 41 threads
I have done a lot of testing on this, and doing the above delivers a more performant envelope rather than having higher than the cores+30%, as I said Hyperthreading is not a true core and therefore should not be treated as such.
I purposely do this in APP, but sometimes I forget to set the value, so it would be good if APP actually saved that setting across application launches.
By the way on my Ice Lake system, I managed to fully calibrate, align, normalise, stack etc in an hour, with 604 frames in total at 62mpx per frame 😀
In an hour, that is a great result. 🙂 I'll pass your ideas to Mabula, he definitely did think about this and also performed a lot of tests so I'm sure he has a reasoning to share. Thanks!
Hi Simon @stastro,
Thank you very much for your thoughts on this and your testing.
Well, things are not that clear to me the way you state it. I have done a lot of benchmarking using hyperthreading on an AMD Threadripper system and clearly it works different than your experience with Intel CPUs. With the Threadripper i have 32 threads and I get more performance with 31 threads then with 24 or 28 threads. I tested this frequently and with threadripper the threads do scale as you would expect. If Intel cpus don't, then it seems that hyperthreading for AMD is much better somehow?
Did you test with other applications running in the background as well, or was APP the only active application running?
I will make a note on our TODO list to test this on a new Intel system to see if that works the same as in your experience. If it does, I will add that to our documentation so Intel users will be informed that it is more beneficial to use not all threads.
And we will make sure that the setting is remembered between restarts of APP 😉
Hi Mabula, yes nothing else was running, just Ubuntu 22.04 with APP launched, even forced the cpu_governor to performance to ensure it was running at max performance.
What Threadripper CPU are you using, the 32Core platform I am using is the Intel 6314U @ 2.30Ghz base frequency, but I also have 512GB RAM, so might do some testing with a 64GB RAMDRIVE too, I am ranked 11 in the PixInsight Benchmarks at the moment without any optimisation