Page 2 of 3

Re: What happens with my hyperthreading?

Posted: Fri Aug 07, 2020 11:34 am
by smatovic
You could do a plain NPS experiment with zero hashtable, just to figure out
what kind of impact memory latencies have on nowadays SF.

--
Srdja

Re: What happens with my hyperthreading?

Posted: Fri Aug 07, 2020 12:14 pm
by Milos
Laskos wrote: Fri Aug 07, 2020 9:51 am
Milos wrote: Fri Aug 07, 2020 5:50 am
Laskos wrote: Thu Aug 06, 2020 9:26 pm 60% speedup from hyperthreading using SF NNUE at longer TC, pretty crazy. What's that?

4 physical cores, 8 logical

Code: Select all

Games Completed = 100 of 100 (Avg game length = 60.676 sec)
Settings = Gauntlet/128MB/15000ms+250ms/M 700cp for 3 moves, D 120 moves/EPD:C:\LittleBlitzer\2moves_80_100.epd(1749)
Time = 6115 sec elapsed, 0 sec remaining
 1.  SFNNUE 0633 8 threads    	58.0/100	29-13-58  	(L: m=0 t=0 i=0 a=13)	(D: r=31 i=10 f=3 s=0 a=14)	(tpm=436.9 d=24.20 nps=7969609)
 2.  SFNNUE 0633 4 threads    	42.0/100	13-29-58  	(L: m=0 t=0 i=0 a=29)	(D: r=31 i=10 f=3 s=0 a=14)	(tpm=440.3 d=23.83 nps=4991558)
It's pretty obvious. Your cpu (being Haswell) has 2 8-wide FMA instructions per clock cycle, i.e. 2 FMA units per core. Meaning with 2 threads it can run one instruction per thread per clock cycle. By running 2 threads per core, you are able to hide instruction and operand fetch latency while with only 1 thread per core there would be thread stalling and you wouldn't be able to use both FMA units effectively.
Wasn't this valid 3-4-5 years ago too for my CPU? I was always getting a mere 30% from hyperthreading.
You used FMA vector instructions couple a years ago? Really, what for? C'mon at least try to understand what I wrote. I mean what's the purpose if you can't even put the minimum effort?

Re: What happens with my hyperthreading?

Posted: Fri Aug 07, 2020 12:37 pm
by Laskos
Milos wrote: Fri Aug 07, 2020 12:14 pm
Laskos wrote: Fri Aug 07, 2020 9:51 am
Milos wrote: Fri Aug 07, 2020 5:50 am
Laskos wrote: Thu Aug 06, 2020 9:26 pm 60% speedup from hyperthreading using SF NNUE at longer TC, pretty crazy. What's that?

4 physical cores, 8 logical

Code: Select all

Games Completed = 100 of 100 (Avg game length = 60.676 sec)
Settings = Gauntlet/128MB/15000ms+250ms/M 700cp for 3 moves, D 120 moves/EPD:C:\LittleBlitzer\2moves_80_100.epd(1749)
Time = 6115 sec elapsed, 0 sec remaining
 1.  SFNNUE 0633 8 threads    	58.0/100	29-13-58  	(L: m=0 t=0 i=0 a=13)	(D: r=31 i=10 f=3 s=0 a=14)	(tpm=436.9 d=24.20 nps=7969609)
 2.  SFNNUE 0633 4 threads    	42.0/100	13-29-58  	(L: m=0 t=0 i=0 a=29)	(D: r=31 i=10 f=3 s=0 a=14)	(tpm=440.3 d=23.83 nps=4991558)
It's pretty obvious. Your cpu (being Haswell) has 2 8-wide FMA instructions per clock cycle, i.e. 2 FMA units per core. Meaning with 2 threads it can run one instruction per thread per clock cycle. By running 2 threads per core, you are able to hide instruction and operand fetch latency while with only 1 thread per core there would be thread stalling and you wouldn't be able to use both FMA units effectively.
Wasn't this valid 3-4-5 years ago too for my CPU? I was always getting a mere 30% from hyperthreading.
You used FMA vector instructions couple a years ago? Really, what for? C'mon at least try to understand what I wrote. I mean what's the purpose if you can't even put the minimum effort?
The fact is, aside SF NNUE, Sf_dev, Komodo have this "new" speed-up. Where did it came from as of now and was not there 2 years ago?

Re: What happens with my hyperthreading?

Posted: Fri Aug 07, 2020 12:54 pm
by Milos
Laskos wrote: Fri Aug 07, 2020 12:37 pm
Milos wrote: Fri Aug 07, 2020 12:14 pm
Laskos wrote: Fri Aug 07, 2020 9:51 am
Milos wrote: Fri Aug 07, 2020 5:50 am
Laskos wrote: Thu Aug 06, 2020 9:26 pm 60% speedup from hyperthreading using SF NNUE at longer TC, pretty crazy. What's that?

4 physical cores, 8 logical

Code: Select all

Games Completed = 100 of 100 (Avg game length = 60.676 sec)
Settings = Gauntlet/128MB/15000ms+250ms/M 700cp for 3 moves, D 120 moves/EPD:C:\LittleBlitzer\2moves_80_100.epd(1749)
Time = 6115 sec elapsed, 0 sec remaining
 1.  SFNNUE 0633 8 threads    	58.0/100	29-13-58  	(L: m=0 t=0 i=0 a=13)	(D: r=31 i=10 f=3 s=0 a=14)	(tpm=436.9 d=24.20 nps=7969609)
 2.  SFNNUE 0633 4 threads    	42.0/100	13-29-58  	(L: m=0 t=0 i=0 a=29)	(D: r=31 i=10 f=3 s=0 a=14)	(tpm=440.3 d=23.83 nps=4991558)
It's pretty obvious. Your cpu (being Haswell) has 2 8-wide FMA instructions per clock cycle, i.e. 2 FMA units per core. Meaning with 2 threads it can run one instruction per thread per clock cycle. By running 2 threads per core, you are able to hide instruction and operand fetch latency while with only 1 thread per core there would be thread stalling and you wouldn't be able to use both FMA units effectively.
Wasn't this valid 3-4-5 years ago too for my CPU? I was always getting a mere 30% from hyperthreading.
You used FMA vector instructions couple a years ago? Really, what for? C'mon at least try to understand what I wrote. I mean what's the purpose if you can't even put the minimum effort?
The fact is, aside SF NNUE, Sf_dev, Komodo have this "new" speed-up. Where did it came from as of now and was not there 2 years ago?
For SF-NNUE it makes total sense for others I have no clue. Looks like numbers are a bit high, but only 30% extra you had before also looks too low. Maybe you didn't use AVX2 based compiles before?

Re: What happens with my hyperthreading?

Posted: Fri Aug 07, 2020 1:02 pm
by Laskos
smatovic wrote: Fri Aug 07, 2020 11:34 am You could do a plain NPS experiment with zero hashtable, just to figure out
what kind of impact memory latencies have on nowadays SF.

--
Srdja
The same speed-up, only at some 15% lower NPS than using hashtable.

Re: What happens with my hyperthreading?

Posted: Fri Aug 07, 2020 1:16 pm
by Laskos
Milos wrote: Fri Aug 07, 2020 12:54 pm
Laskos wrote: Fri Aug 07, 2020 12:37 pm
Milos wrote: Fri Aug 07, 2020 12:14 pm
Laskos wrote: Fri Aug 07, 2020 9:51 am
Milos wrote: Fri Aug 07, 2020 5:50 am
Laskos wrote: Thu Aug 06, 2020 9:26 pm 60% speedup from hyperthreading using SF NNUE at longer TC, pretty crazy. What's that?

4 physical cores, 8 logical

Code: Select all

Games Completed = 100 of 100 (Avg game length = 60.676 sec)
Settings = Gauntlet/128MB/15000ms+250ms/M 700cp for 3 moves, D 120 moves/EPD:C:\LittleBlitzer\2moves_80_100.epd(1749)
Time = 6115 sec elapsed, 0 sec remaining
 1.  SFNNUE 0633 8 threads    	58.0/100	29-13-58  	(L: m=0 t=0 i=0 a=13)	(D: r=31 i=10 f=3 s=0 a=14)	(tpm=436.9 d=24.20 nps=7969609)
 2.  SFNNUE 0633 4 threads    	42.0/100	13-29-58  	(L: m=0 t=0 i=0 a=29)	(D: r=31 i=10 f=3 s=0 a=14)	(tpm=440.3 d=23.83 nps=4991558)
It's pretty obvious. Your cpu (being Haswell) has 2 8-wide FMA instructions per clock cycle, i.e. 2 FMA units per core. Meaning with 2 threads it can run one instruction per thread per clock cycle. By running 2 threads per core, you are able to hide instruction and operand fetch latency while with only 1 thread per core there would be thread stalling and you wouldn't be able to use both FMA units effectively.
Wasn't this valid 3-4-5 years ago too for my CPU? I was always getting a mere 30% from hyperthreading.
You used FMA vector instructions couple a years ago? Really, what for? C'mon at least try to understand what I wrote. I mean what's the purpose if you can't even put the minimum effort?
The fact is, aside SF NNUE, Sf_dev, Komodo have this "new" speed-up. Where did it came from as of now and was not there 2 years ago?
For SF-NNUE it makes total sense for others I have no clue. Looks like numbers are a bit high, but only 30% extra you had before also looks too low. Maybe you didn't use AVX2 based compiles before?
57% speed-up using an old SF_8 binary.

Re: What happens with my hyperthreading?

Posted: Fri Aug 07, 2020 1:28 pm
by smatovic
Hmm, so what's left? Windows SMT and maybe some kind of CPU micro-code update?

--
Srdja

Re: What happens with my hyperthreading?

Posted: Fri Aug 07, 2020 1:42 pm
by towforce
smatovic wrote: Fri Aug 07, 2020 1:28 pm Hmm, so what's left? Windows SMT and maybe some kind of CPU micro-code update?

--
Srdja

Any possibility that before, other processes were consuming threads?

Maybe if the older machine was slower, Windows itself needed more thread time. Or maybe it was a different installation, with more crap (Microsoft or another software company) running under Windows? Maybe a worse virus shield, or more or less anything.

Re: What happens with my hyperthreading?

Posted: Fri Aug 07, 2020 4:42 pm
by Laskos
smatovic wrote: Fri Aug 07, 2020 1:28 pm Hmm, so what's left? Windows SMT and maybe some kind of CPU micro-code update?

--
Srdja
Some nonsense is left. I will restart my PC after I finish today my project.

Re: What happens with my hyperthreading?

Posted: Fri Aug 07, 2020 4:59 pm
by Milos
Laskos wrote: Fri Aug 07, 2020 4:42 pm
smatovic wrote: Fri Aug 07, 2020 1:28 pm Hmm, so what's left? Windows SMT and maybe some kind of CPU micro-code update?

--
Srdja
Some nonsense is left. I will restart my PC after I finish today my project.
Did you check HT off nps numbers are they the same as before or maybe lower?
Maybe something is screwed with your HT off in OS?