CPU thread assignment

A forum for discussing FAH-related hardware choices and info on actual products (not speculation).

Moderator: Site Moderators

Forum rules
Please read the forum rules before posting.
Post Reply
Juggy
Posts: 111
Joined: Fri Mar 20, 2020 12:07 pm
Hardware configuration: Intel i9 9900KF @4.9GHZ
MSI Z390M Gaming OC
64GB G-Skill Ripjaw 3200
Gigabyte RTX2060 Super Gaming OC
NZXT Kraken X63 AIO
Corsair RM850
Samsung 1TB Evo Pro NVMe
Location: Qatar

CPU thread assignment

Post by Juggy »

I have been told more than once that the GPU requires a single CPU thread to feed it with data

My 8C/16T i9 is being utilised between 9 and 10% by Core22 and that equates to more than a single thread, I am not folding on the CPU at all

Seems more than a single tread to me but the maths may not be as obvious as I suspect.

If I set processor affinity to one thread it maxes out at 100%, if I set to 2 threads it one is at around 40% and the other at 80% with sometimes one or the other reaching 100%. If I set to 3 threads is seems happiest with all 3 drifting between 40 and 60% util without maxing out.

I have noticed that if I do not CPU fold my GPU performs better, even more so now that I have the "client-type advanced" set on my GPU slot for Beta units.

Does this mean that a GPU requires more than a single thread to perform at its optimum?

GPU is an RTX 2080 Super.
Image
Image
Joe_H
Site Admin
Posts: 7867
Joined: Tue Apr 21, 2009 4:41 pm
Hardware configuration: Mac Pro 2.8 quad 12 GB smp4
MacBook Pro 2.9 i7 8 GB smp2
Location: W. MA

Re: CPU thread assignment

Post by Joe_H »

One CPU thread is sort of a minimum, very fast GPUs like your 2080 may require a full CPU core, i.e. 2 threads, to keep up. Some very large atom count WUs may briefly use even more CPU threads during the periodic checkpoint creation and sanity check in order to complete it in reasonable time.

So I think the best way to think of the "1 CPU thread per GPU" direction is that it is a "rule of thumb"; works for most cases and may need modification for the extremes.

What you may also see is that if you do decide to enable CPU folding again, restricting to using no more than the 8 cores / FPUs will have the least impact on GPU folding.
Image

iMac 2.8 i7 12 GB smp8, Mac Pro 2.8 quad 12 GB smp6
MacBook Pro 2.9 i7 8 GB smp3
Juggy
Posts: 111
Joined: Fri Mar 20, 2020 12:07 pm
Hardware configuration: Intel i9 9900KF @4.9GHZ
MSI Z390M Gaming OC
64GB G-Skill Ripjaw 3200
Gigabyte RTX2060 Super Gaming OC
NZXT Kraken X63 AIO
Corsair RM850
Samsung 1TB Evo Pro NVMe
Location: Qatar

Re: CPU thread assignment

Post by Juggy »

Joe_H wrote:One CPU thread is sort of a minimum, very fast GPUs like your 2080 may require a full CPU core, i.e. 2 threads, to keep up. Some very large atom count WUs may briefly use even more CPU threads during the periodic checkpoint creation and sanity check in order to complete it in reasonable time.

So I think the best way to think of the "1 CPU thread per GPU" direction is that it is a "rule of thumb"; works for most cases and may need modification for the extremes.

What you may also see is that if you do decide to enable CPU folding again, restricting to using no more than the 8 cores / FPUs will have the least impact on GPU folding.
Makes perfect sense, thanks

Will enable CPU folding when I setup the 3950 this weekend and assign 3/4's of the CPU to folding and the rest for general compute and GPU feed.
Image
Image
kiore
Posts: 931
Joined: Fri Jan 16, 2009 5:45 pm
Location: USA

Re: CPU thread assignment

Post by kiore »

Juggy wrote:
Joe_H wrote:One CPU thread is sort of a minimum, very fast GPUs like your 2080 may require a full CPU core, i.e. 2 threads, to keep up. Some very large atom count WUs may briefly use even more CPU threads during the periodic checkpoint creation and sanity check in order to complete it in reasonable time.

So I think the best way to think of the "1 CPU thread per GPU" direction is that it is a "rule of thumb"; works for most cases and may need modification for the extremes.

What you may also see is that if you do decide to enable CPU folding again, restricting to using no more than the 8 cores / FPUs will have the least impact on GPU folding.
Makes perfect sense, thanks

Will enable CPU folding when I setup the 3950 this weekend and assign 3/4's of the CPU to folding and the rest for general compute and GPU feed.
Because Gromacs (software for cpu units) abhors some large prime numbers and because as noted high range GPUs are greedy resource wise, I set my CPU to 12 a good stable number leaving 4 threads for my RTX 2080ti and never worry about bottlenecks, I could also run a 2nd CPU with 2 threads but decided it was better to run the CPU a little under than over.
Image
i7 7800x RTX 3070 OS= win10. AMD 3700x RTX 2080ti OS= win10 .

Team page: http://www.rationalskepticism.org
Juggy
Posts: 111
Joined: Fri Mar 20, 2020 12:07 pm
Hardware configuration: Intel i9 9900KF @4.9GHZ
MSI Z390M Gaming OC
64GB G-Skill Ripjaw 3200
Gigabyte RTX2060 Super Gaming OC
NZXT Kraken X63 AIO
Corsair RM850
Samsung 1TB Evo Pro NVMe
Location: Qatar

Re: CPU thread assignment

Post by Juggy »

My 3950X and Asus X570 I Gaming ITX arrived today but to my dismay I realised that the ITX board only has one USB header so I can either control my fan controller or my Kraken X63.

Will have to wait for a header splitter to arrive before I can setup fan curves and pump settings for my CPU :(
Image
Image
Sparkly
Posts: 73
Joined: Sun Apr 19, 2020 11:01 am

Re: CPU thread assignment

Post by Sparkly »

Juggy wrote:Does this mean that a GPU requires more than a single thread to perform at its optimum?
Threads on a CPU doesn’t really work the way many seem to think it does, since the whole thing is technically based on cores, where multiple threads within each core is more comparable to a switch that will alternate between the threads based on the activity.

The point of it is to utilize each core better, since there will normally be some idle time when handling a single thread on a core, thus a second thread on the same core can steal some of the idle time from the first thread to make the second thread move forward at some speed instead of standing still waiting for full core access, which is why you will often see a very uneven utilization while looking at 2 threads running on 1 core.

Your entire system will use plenty of threads, more than the actual core/thread number your CPU has, to handle the various processes running on it, and they will all be moved around on the different cores with automatic load balancing, unless you force affinity.

Getting optimal conditions on a general use consumer system would require a decent amount of manual configuration to tweak and remove all the overhead everywhere, since there are many factors that play a part in the overall speed of things, like OS, Windows Defender messing it up on multiple cores in the background etc. etc., but in general the faster the GPU you have the more often it will communicate with the CPU, which again will communicate with RAM and whatnot, so the less load the CPU has to deal with when the GPU needs to talk the better, up to a point, and the faster a GPU process can get full access to a core the better, meaning the 1 thread your GPU process might be assigned to on a core might be on a core where the other thread is already active, which delays things a bit, resulting in lower GPU computational performance due to more idle time for the GPU.
aetch
Posts: 447
Joined: Thu Jun 25, 2020 3:04 pm
Location: Between chair and keyboard

Re: CPU thread assignment

Post by aetch »

Juggy wrote:My 3950X and Asus X570 I Gaming ITX arrived today but to my dismay I realised that the ITX board only has one USB header so I can either control my fan controller or my Kraken X63.

Will have to wait for a header splitter to arrive before I can setup fan curves and pump settings for my CPU :(
Thoughts:-
you could use a standard micro-usb cable and plug it into one of the IO panel usb ports
you could plug the AIO fans into either your fan controller or the fan headers on the motherboard

Woohoo, first post.
Folding Rigs - None (25-Jun-2022)

ImageImage
Juggy
Posts: 111
Joined: Fri Mar 20, 2020 12:07 pm
Hardware configuration: Intel i9 9900KF @4.9GHZ
MSI Z390M Gaming OC
64GB G-Skill Ripjaw 3200
Gigabyte RTX2060 Super Gaming OC
NZXT Kraken X63 AIO
Corsair RM850
Samsung 1TB Evo Pro NVMe
Location: Qatar

Re: CPU thread assignment

Post by Juggy »

Sparkly wrote:
Juggy wrote:Does this mean that a GPU requires more than a single thread to perform at its optimum?
Threads on a CPU doesn’t really work the way many seem to think it does, since the whole thing is technically based on cores, where multiple threads within each core is more comparable to a switch that will alternate between the threads based on the activity.

The point of it is to utilize each core better, since there will normally be some idle time when handling a single thread on a core, thus a second thread on the same core can steal some of the idle time from the first thread to make the second thread move forward at some speed instead of standing still waiting for full core access, which is why you will often see a very uneven utilization while looking at 2 threads running on 1 core.

Your entire system will use plenty of threads, more than the actual core/thread number your CPU has, to handle the various processes running on it, and they will all be moved around on the different cores with automatic load balancing, unless you force affinity.

Getting optimal conditions on a general use consumer system would require a decent amount of manual configuration to tweak and remove all the overhead everywhere, since there are many factors that play a part in the overall speed of things, like OS, Windows Defender messing it up on multiple cores in the background etc. etc., but in general the faster the GPU you have the more often it will communicate with the CPU, which again will communicate with RAM and whatnot, so the less load the CPU has to deal with when the GPU needs to talk the better, up to a point, and the faster a GPU process can get full access to a core the better, meaning the 1 thread your GPU process might be assigned to on a core might be on a core where the other thread is already active, which delays things a bit, resulting in lower GPU computational performance due to more idle time for the GPU.
Thanks for the explanation, I understand how that all works.
Image
Image
MeeLee
Posts: 1375
Joined: Tue Feb 19, 2019 10:16 pm

Re: CPU thread assignment

Post by MeeLee »

Yeah,
I think a single core, with two threads, should not be considered as 2 cores (200% the performance of a single core).
Instead, depending on the process, 2 threads on 1 core usually perform about 133% to 150% of a single core without SMT/HT.
So there's a 33 to 50% better performance than using 1 core 1 thread.

If your GPU utilizes 80+40%(=120%) of a core with 2 threads, you'd have to divide the 120% by 133 to 150%; meaning, your GPU is only using 80 to 90% of the same core without HT/SMT enabled.
Unless you run your CPU at base clock (3 to 3,5Ghz), a 2080 Super should usually not load more than 66% of a single core running at 4Ghz.
Juggy
Posts: 111
Joined: Fri Mar 20, 2020 12:07 pm
Hardware configuration: Intel i9 9900KF @4.9GHZ
MSI Z390M Gaming OC
64GB G-Skill Ripjaw 3200
Gigabyte RTX2060 Super Gaming OC
NZXT Kraken X63 AIO
Corsair RM850
Samsung 1TB Evo Pro NVMe
Location: Qatar

Re: CPU thread assignment

Post by Juggy »

aetch wrote:
Juggy wrote:My 3950X and Asus X570 I Gaming ITX arrived today but to my dismay I realised that the ITX board only has one USB header so I can either control my fan controller or my Kraken X63.

Will have to wait for a header splitter to arrive before I can setup fan curves and pump settings for my CPU :(
Thoughts:-
you could use a standard micro-usb cable and plug it into one of the IO panel usb ports
you could plug the AIO fans into either your fan controller or the fan headers on the motherboard

Woohoo, first post.
Yeah, both have been tried. The Noctua fans I have are attached directly to the fan controller and I am using an old cellphone charging cable to connect directly from the pump to the rear USB but it doesn't read the pump status :(

Will have to wait for my splitter

I am currently running a CPU WU on 28 threads and estimated PPD is 439000
Image
Image
Juggy
Posts: 111
Joined: Fri Mar 20, 2020 12:07 pm
Hardware configuration: Intel i9 9900KF @4.9GHZ
MSI Z390M Gaming OC
64GB G-Skill Ripjaw 3200
Gigabyte RTX2060 Super Gaming OC
NZXT Kraken X63 AIO
Corsair RM850
Samsung 1TB Evo Pro NVMe
Location: Qatar

Re: CPU thread assignment

Post by Juggy »

MeeLee wrote:Yeah,
I think a single core, with two threads, should not be considered as 2 cores (200% the performance of a single core).
Instead, depending on the process, 2 threads on 1 core usually perform about 133% to 150% of a single core without SMT/HT.
So there's a 33 to 50% better performance than using 1 core 1 thread.

If your GPU utilizes 80+40%(=120%) of a core with 2 threads, you'd have to divide the 120% by 133 to 150%; meaning, your GPU is only using 80 to 90% of the same core without HT/SMT enabled.
Unless you run your CPU at base clock (3 to 3,5Ghz), a 2080 Super should usually not load more than 66% of a single core running at 4Ghz.
Yeah, CPU is currently running at 4.2 all cores, GPU boosts to 1965mhz sometimes
Image
Image
Juggy
Posts: 111
Joined: Fri Mar 20, 2020 12:07 pm
Hardware configuration: Intel i9 9900KF @4.9GHZ
MSI Z390M Gaming OC
64GB G-Skill Ripjaw 3200
Gigabyte RTX2060 Super Gaming OC
NZXT Kraken X63 AIO
Corsair RM850
Samsung 1TB Evo Pro NVMe
Location: Qatar

Re: CPU thread assignment

Post by Juggy »

Finally got my USB header splitter so have control of my Kraken pump again.

24t for folding generates 71 degrees celsius of heat which I am pretty happy with.
Image
Image
Post Reply