0

I'm using a multi-threaded software(PFC3D developped by Itasca consulting) to do some simulations.After moving to a powerful computer Intel Xeon Gold 5120T CPU 2.2GHZ 2.19 GHZ (2 Processors)(28 physical cores, 56 logical cores)(Windows10) to have rapid calculations, the software seems to only use a limited number of cores.Normally the number of cores detected in the software is 56 and it takes automaticly the maximum number of cores.

I'm quite sure that the problem is in the system not in my software because I'm running the same code in a intel core i9-9880H Processor (16 logical cores) and it'is using all the cores with even more efficiency than the xeon gold.

The software is using 22 to 30; 28 cores/56 threads are displayed on task managers CPU page.I have windows 10 pro.

I appreciate very much your precious help.

Thank you

Youssef

interface

classes

details

code

youssef
  • 3
  • 2
  • 1
    Why not contact the makers of the software about this issue ? This is more of a question to do with PFC3D so they'll be best placed to answer. – auburg Jun 25 '20 at 08:15
  • Thank you, I 'm waiting to see what we can do. – youssef Jun 26 '20 at 12:09

1 Answers1

0

It's hard to say because I do not have the code and you provide so little information. You seems to have no IO because you said that you use 100% of the CPU on i9. That should simplify a little bit but...

There could be many reasons.

My feeling is that you have threading synchronisation (like critical section) that depends on shared ressource(s). That ressource seems to be lightly solicitated and thread require it just a little wich enable 16 threads to access it without too much collisions (or very little). I mean that thread do not have to wait for shared resource (it is mostly available / not locked). But adding more threads improve significantly collisions amount (locking state of shared ressources by another thread) to have to wait for that ressource. That really sounds like something like that. But it is only a guess.

A quick try that could potentially improve the performance (because I have the feeling that shared resource require very quick access), is to use SpinLock instead of regular Critical Section. But that is totally a guess based on very little and also SpinLock is available in C# but perhaps not in your language.

About the number of CPU taken, it could be normal to take only the half depending on how the program is made. Sometimes it could be better to not use hyperthreaded and perhaps your program is doing this itself. Also there could be a bug in either the program itself, in C# or in the BIOS which tell the app that there is only 28 cpus instead of 56 (usually due to hyperthreading). IT is still a guess.

There could be some additional information that could potentially help you in this stack overflow question.

Good luck.

Eric Ouellet
  • 10,996
  • 11
  • 84
  • 119
  • Mr Ouellet , many thanks for your answer; I appreciate that. I switched off my hyperthreading; so it remains 28 cores, and it's working a bit better !!! I have edit my question by adding some screen shots of pfc5.0 interface documentation and maybe it could help;I have found the famous spinlock in the utility implementation! – youssef Jun 29 '20 at 08:16
  • I agree with auburg. I think it would be prefereable to contact the maker of PFC3D. Perhaps they could fix that. I would not personnaly invest more time myself, sorry. Good luck! – Eric Ouellet Jun 29 '20 at 15:42