@bbhaag, outside of the challenges I had tested llr321 and llr ESP on Haswell and on Broadwell-EP. Due to time constraints I didn't run the very same test regime for both applications, but what I saw confirmed the expectation that their performance profiles are similar (but not the same). For 4-core/8-thread Haswell Xeon E3, 3.4 GHz, 8 MB L3 cache, dual-channel DDR3,
- llr321 throughput peaked when 1 task at a time was run with 8 threads (with almost no difference to 1 task with 7 threads), when no other processor load was present on the system,
- llrESP throughput peaked at 1 task at a time with 6 threads (with almost no difference to 1 task with 7 threads), ditto without any other load present.
I estimate these optimum configs to give about 1.5 times the throughput compared with running 4 tasks with 1 thread each, and >1.5 times the throughput compared with running 8 tasks with 1 thread each, on this LGA1150 Haswell.
The next PrimeGrid challenges in June and August will have subprojects with much shorter runtimes per task. With those, multithreading will not scale as well as it does with llr321 and llrESP.
I
made a thread with various PrimeGrid performance comparisons.
BTW, in my experience it is 100 % safe to change the multithreading configuration via app_config at any time during the execution of LLR tasks, regardless of completion percentage, and apply it to the still unfinished tasks. There are several ways to do that, but I'd recommend to (1.) shut down the boinc client, (2.) edit app_config.xml, (3.) restart the boinc client.
--------
@zzuupp, 20 hours sounds right for CPU time on a decent CPU with HT and MT off. But by 10 hours I believe you are referring to
run time, not CPU time.
Before the challenge the web prefs showed even 41 hours recent average CPU time for llrESP. Apparently more modern machines were turned towards this project when the challenge started. However, CPU time does not only depend on the machine architecture, it also depends on the configuration of a given machine: Whether or not HT is used; whether the application was configured for multithreading, and to which thread count, and more factors.
As an example, the latest 20 tasks on one of my hosts with best throughput have averages of 4.4 hours run time but 43.2 hours CPU time. As you can see from that, both hyperthreading and multithreading are used, and an unusually high thread count at that.