Not logged inCSS-Forum
Forum CSS-Online Help Search Login
CSS-Shop Impressum Datenschutz
Up Topic Hauptforen / CSS-Forum / Beste Thread-Anzahl? Reale Kerne? Oder bei Hyperthreading das Doppelte? Anderes?
- - By Benno Hartwig Date 2020-01-26 20:25
Sorry, falls es doch schon so einen Thread hier gab, aber:

Ist schon mal statistisch belastbar untersucht worden, wie die Spielstärken im Vergleich aussehen, wenn auf einer Maschine mit 4 realen Kernen und Hyperthreading
Stockfish mit 4 Threads
und
Stockfish mit 8 Threads
antritt?
Wer ist tatsächlich (ganz praktisch) erfolgreicher?
Oder wäre vielleicht noch eine andere Threadanzahl die erfolgreichste?

?
Habe ich den Eindruck richtig gewonnen: 8 Threads holen tatsächlich den höchsten Elo-Wert heraus?
Parent - - By Heinz Hagenstein Date 2020-01-26 20:54
Das kann man auf einer Maschine nicht untersuchen,denn wenn ich Hypertreading für eine Engine abschalte kann ich der anderen Engine kein Hyper_T zuweisen.
Ich hoffe ich habe das so richtig verstanden.

Gruß Heinz
Parent - - By Benno Hartwig Date 2020-01-26 21:09
Zunächst mal dachte ich einfach an eine Maschine mit aktiviertem Hyperthreading und 4 Kernen.
Hier kann ich Stockfish mit 4 oder mit 8 Threads laufen lassen.
8 Threads dann ggf. mit etwas höherem nps-Wert, dafür aber ggf. mit größeren Verlusten wegen der doppelt so heftigen Parallelisierung.

Wer ist stärker?

Ich befürchte, der Stärkeunterschied ist so gering, dass nur ein sehr großer Partienumfang hier Antwort geben kann.
Richtig?
Parent - - By Thomas Plaschke Date 2020-01-26 21:26
Es geht auch anders: Man kann Programmen auch explizit Kerne und Ausführungspfade zuweisen, wie bspw. in diesem Beitrag [url=] https://forum.computerschach.de/cgi-bin/mwf/topic_show.pl?pid=114604#pid114604%5b/url%5d gezeigt. Auf die Software, mit der das sehr komfortabel möglich ist, habe ich schon mehrfach hingewiesen. Deswegen spare ich mir den erneuten Hinweis.

Viele Grüße
Th. Plaschke
Parent - - By Reinhold Stibi Date 2020-01-26 21:52 Edited 2020-01-26 22:06
Hyperthreading ist ca. 1/3 eines echten Kernes.

Beispiel: Mein Xeon Computer X5690 hat 12 echte Kerne und 12 Kerne in Hyperthreading.

Insgesamt hat dieser Computer dann die Leistung von 16 echten Kernen.

Nur bei 24 Threads sind die 2 Prozessoren voll ausgelastet und erzeugen viel Hitze
und durch das Hochfahren der Lüfter einen beträchtlichen Lärm.

Bei einem Match mit Lc0 kann ich aber 24 Threads verwenden, da wenn Lc0 rechnet, die CPU fast nichts
zu tun hat und sich damit immer wieder kurzfristig abkühlen kann und die Lüfter dementsprechend
weniger in der Drehzahl hochfahren.

Bei einem Match mit 2 Engines mit CPU Berechnung kann ich natürlich die eine Engine mit 24 Threads spielen lassen
und die andere Engine mit 12 echten Kernen, natürlich mit Ponder off.

Natürlich ist die Engine mit mehr Threads stärker und erfolgreicher als die andere mit weniger Threads.
Wieviel das ist, ist schwer zu sagen; schätze ca. 10 Elo.

Bei Fritz kann ich bei einem Match oder Turnier bei jeder Engine die Threadzahl gesondert einstellen.
Parent - - By Benno Hartwig Date 2020-01-27 07:11

> Hyperthreading ist ca. 1/3 eines echten Kernes.


Das mag hinkommen.
Mein Eindruck ist:
Wenn ich bei einem Thread auf einem Kern 1000 Aktionen/Sekunde erhalte, dann bekomme bei 2 Threads auf dem Kern ca. 1300 Aktionen/Sekunde, aber aufgeteilt eben auf 2 Threads a 650 Aktionen/Sekunde.
De einzelne Thread ist nach meinem Eindruck deutlich schneller, wenn der Kern nur diesen einen Thread zu bedienen hat.
"Gut" kann man sagen. Aber die Engine kann dies nur tatsächlich nur gewinnbringend ernten, wenn sie geschickt genug umgeht mit der nun doppelt so großen Parallelisierung.

"Kernverdopplung bringt so viel wie Geschwindigkeitssteigerung um Faktor 1,7"  hieß es vor einiger Zeit
Aber was bedeutet das nun, wenn der einzelne Kern nur das 0,65-fache seiner 1-Thread-Leistung bringt?
0,65 *1,7=1,1       ok, dann käme eine Steigerung der effektiven Leistung heraus, ca. 10%.

aber 0,65 und 1,7 sind doch recht aus der Luft gegriffen.
Welche Werte sind heute real?

Und habe ich auf eine 4-Kern Hyperthreading-Maschine das stärkste Schach, mit 4 oder mit 8 (oder sonst was) Kernen?
Parent - - By Thomas Plaschke Date 2020-01-27 09:09
Ich habe vor einiger Zeit mit der Abhängigkeit der Spielstärke von der Zahl der Threads bei gleicher Rechentiefe experimentiert. Es zeigte sich, dass bei gleicher Tiefe die Spielstärke mit der Zahl der Threads steigt. Hinter den Satz, dass sich das auch auf die Verwendung von HT-Threads übertragen lässt,  würde ich ein Fragezeichen setzen. HT bringt zunächst nur mehr Knoten pro Sekunde. Eine leichte Spielstärkesteigerung ist bei Stockfish zu beobachten (Wenn ich mich richtig erinnere, innerhalb der Errorbar bei meinen Tests).

Interessant in diesem Zusammenhang vielleich auch https://forum.computerschach.de/cgi-bin/mwf/topic_show.pl?pid=99170#pid99170. Allerdings lief der 2C vs 4C - Vergleich auf einem Desktop-PC und der 2C vs 4T - Vergleich auf einem (schwächeren) Notebook - ohne die unterschiedlichen Leistungen weiter zu berücksichtigen.

Eine weitere Rolle könnte noch der verwendete Prozessor spielen. Anscheinend kommen AMD-Ryzen auf eine etwas höhere Knotenzahl beim Hyperthreading (die Feinheiten des SMT lassen wir besser weg) und wären etwas besser dafür geeignet. Aber dann wird's unübersichtlich.

Viele Grüße
Th. Plaschke
Parent - By Benno Hartwig Date 2020-01-28 08:06 Edited 2020-01-28 08:09

> Es zeigte sich, dass bei gleicher Tiefe die Spielstärke mit der Zahl der Threads steigt.


Das finde ich ausgesprochen interessant (ja, und auch überraschend).

Dass bei größerer Parallelisierung etwas weniger Cuts erfolgen, verstehe ich ja.
Es wird halt immer mal wieder passieren, dass das Wissen für einen beta-Cut einfach nicht da ist (es wird ja noch parallel berechnet).
Dies würde aber nur zu einer gewissen Verlangsamung führen, nie zu geänderten Schlussbewertungen oder anderen Zügen.

Aber wir haben gesehen, und es wurde ja auch schon mehrfach bestätigt, dass die Reproduzierbarkeit von Zügen und Bewertungen verschwindet, wenn man 2 oder mehr Threads nutzt.
Hier ist also ein Einfluss der Parallelisierung nicht nur auf die Geschwindigkeit sondern auch auf die Zugwahl und die Bewertung.
Erstaunlich, aber es ist so! (Versteht jemand und kann wer kurz umreißen, wie dieser Effekt zustand kommt?)
Und es kann wohl auf diesem Wege sogar kommen, dass mit mehr Threads auch eine höhere Spielstärke bei gleicher Tiefe entsteht.

Aber interessant ist das Phänomen allemal, finde ich!


PS:
Um es komplizierter zu machen:
Dies kann bei verschiedenen Engines sogar auch ganz unterschiedlich sein.
Parent - - By Lothar Jung Date 2020-01-27 09:42
Hier eine ausführliche Zusammenstellung von Verweisen zu dem Thema:

https://www.chessprogramming.org/Thread

Bei HT sinkt die Taktgeschwindigkeit aller Kerne.
Für „Saubere Verhältnisse“ würde ich dem Betriebssystem explizit 1 Core zuweisen sowie auch für Lc0, also 1 Kern/2 Threads.
Auch wird in Beiträgen darauf hingewiesen, dass HT Schachanalysen verschlechtert, zwar mehr kN/sec aber weniger Tiefe.

Lothar
Parent - - By Benno Hartwig Date 2020-01-28 08:14

> Für „Saubere Verhältnisse“ würde ich dem Betriebssystem explizit 1 Core zuweisen...


Sauberkeit ist gut.

Angenommen du hat einen Hyperthreading-fähigen Rechner mit vier Kernen und willst Stockfish laufen lassen gegen einen Gegner (eine andere Maschine, einen Menschen)
und du möchtest, dass dein System in dieser Begegnung eine möglichst große Spielstärke entwickelt.
Wie viele Threads würdest du Stockfish dann geben? 3? 4? oder mehr?
Parent - By Lothar Jung Date 2020-01-28 08:56 Edited 2020-01-28 09:43
Bei 4 Kernen wird die Optimierung knapp.
Also mindestens 1 Thread fürs Betriebssystem.

Bei 6/8 und mehr Kernen würde ich 1 Kern nur für Windows explizit zuweisen.

https://praxistipps.chip.de/windows-mit-allen-kernen-starten-so-gehts_30574

https://www.pcwelt.de/ratgeber/Wie-kann-ich-Anwendungen-gezielt-einem-oder-mehreren-CPU-Kernen-zuweisen-Prozessor-1010362.html

Bei Lc0 gegen SF auch einen Kern für Lc0, damit 2 Threads ungehindert arbeiten können.
Bei 8 Kernen also 7 Kerne für SF gegen A/B-Engine und HT off und Ponder on.
Bei SF gegen Lc0 6 Kerne für SF und HT on (also 12 Threads) und Ponder on.
Bei Analysen 7 Kerne und HT off.
Man kann testen, ob 8 Kerne oder 14 Threads (HT on) I’m Ergebnis (Rechentiefe!, nicht kN/sec) besser analysieren.

Geschwindigkeitssteigend ist besonders bei nur 1 Thread wichtig alle unnötigen Hintergrundtasks zu schließen, vgl. Link:

https://praxistipps.chip.de/windows-10-unnoetige-dienste-deaktivieren-das-kann-weg_42790

Wichtig ist auch alle sonst laufenden Programme zu schließen.
Versteckt laufende Programme kann man mit dem Taskmanager schließen.
Bei Tuniere gegen einen Menschen kannst Du machen was Du willst.

Anregungen, Klarstellungen, Kritik und Verbesserungen sind wie immer erwünscht.

Lothar
Parent - By Benno Hartwig Date 2020-01-26 23:19
Thanx,
den Thread ziehe ich mir noch mal rein...
Parent - - By Klaus S. Date 2020-01-26 22:00
Das Programm was Thomas meint heißt Process Lasso: https://bitsum.com/
Parent - - By Reinhold Stibi Date 2020-01-27 08:16
Nachtrag:

Mein Zweitcomputer Ryzen 5 hat 4 echte Kerne und 4 in Hyperthreading.

Bei einem Match kann ich dem Computer je Engine volle Leistung geben (auch bei zwei Engine mit CPU-Berechnung)
da er insgesamt wenig Kerne hat und deshalb die Überhitzungsgefahr viel geringer ist.

Je mehr Kerne ein Computer hat, desto problemmatischer wird es bei Zuschaltung von Hyperthreading mit der Hitzeentwicklung.
Man sollte die volle Leistung dann nur kurzfristig abfahren.

Ob ich mit nur mit vier echten Kerne, oder 8 Threads fahre macht sich schon bemerkbar in der Leistung.
Das kann man gut bei Stellungstests nachprüfen, die mit 8 Threads doch deutlich schneller gelöst werden.

Bei 8 Threads könnte ich mir schon eine Leistungssteigerung von 20 Elo vorstellen.

Je mehr echte Kerne ein Computer hat, desto weniger fallen dann die Hyperthreading Kerne ins Gewicht.
Also bei einem Computer mit 24 oder 36 echten Kernen bringen die zusätzlichen Hyperthreading-Kerne wenig.
Parent - By Lothar Jung Date 2020-01-30 21:49
Ja, das stimmt, siehe Artikel-Link:

https://www.techspot.com/article/1850-how-screwed-is-intel-no-hyper-threading/

Es bringt oft sehr wenig aus mehr Energieverbrauch und manchmal schadet es sogar.

Lothar
Parent - - By Thomas Plaschke Date 2020-02-01 10:14
Ich habe da mal was mit Stockfish 11 laufen lassen:
Code:
   # PLAYER                    :  RATING  ERROR  POINTS  PLAYED   (%)  CFS(%)
   1 Stockfish 11-12 cores     :  3073.3   17.5   120.5     200    60      99
   2 Stockfish 11-8 cores      :  3035.4   16.4   110.0     200    55     100
   3 Stockfish 11-8 threads    :  3000.0    9.0   275.0     600    46      97
   4 Stockfish 11-4 cores      :  2980.6   16.4    94.5     200    47     ---

Den Programmen wurden bestimmte logische Prozessoren zugewiesen (den "cores"-Programmen gerade Prozessornummerierungen und dem "8 threads"-Programm 8 aufeinanderfolgende; die Bereiche haben sich nicht überschnitten). Obwohl die Bedenkzeit mit 60s+0.6s sehr kurz war, dauerte der Lauf anderthalb Tage, weil Partien nicht parallel ausgeführt werden konnten. (Eröffnungen: HERT250; keine Endspieltabellen, außer zur Abschätzung durch Cutechess).

Hättest Du das Ergebnis erwartet?

Viele Grüße
Th. Plaschke
Parent - - By Benno Hartwig Date 2020-02-01 14:31
Vermutlich sehr interessant(!!!), aber ich habe es nicht ganz verstanden.

Du hast eine Hyperthreadingfähige Maschine mit wievielen realen Kernen? mit 8 Kernen?

Sorry, ich habe nicht begriffen, worin der Unterschied zwischen dem 2. und dem 3. besteht.
Nein, ich hatte nicht erwartet, dass 12 Kerne erfolgreicher sind!!! Faszinierend!
Und man schaut dann gespannt darauf, was bei 16 Threads passiert, oder auch bei 14 oder so.
Parent - By Thomas Plaschke Date 2020-02-01 16:35
Die CPU hat 18 HT-Kerne. Für Windows sind das 36 logische Prozessoren. Die logischen Prozessoren 28-35 sind der SF-11 8 threads-Version zugewiesen gewesen. Diese logischen Prozessoren laufen auf 4 Kernen - verwenden also beide Ausführungspfade der belegten Kerne, d.h. diese Engine läuft mit Hyperthreading. Dagegen bekamen die 4, 8 und 12-cores Versionen geradzahlige logische Prozessoren zugewiesen (bspw. 0, 2, 4 und 6 für die 4 cores-Version). Dadurch wird - anders als bei der 8 threads-Version - von den Programmen von jedem genutzten Kern nur ein Ausführungspfad genutzt. Das entspricht der Ausführung ohne HT. Die Bezeichnung "x cores" und "8 threads" sollte diesen Unterschied anzeigen. "8 cores"=8 Kerne (ohne HT), "8 threads"≙4 Kernen mit HT=SF 11 mit 8 Threads.

Ich hoffe, dass mit diesen Erläuterungen das Ergebnis verständlicher geworden ist.

Mit der CPU hätte ich übrigens nur noch bis 14 Kerne testen können. Im Verhältnis zum Aufwand habe ich mir daraus aber keine zusätzlichen Erkenntnisse versprochen.

Viele Grüße
Th. Plaschke
- - By Benno Hartwig Date 2020-01-30 21:10
Ich habe bei sauschnellen 1'+0.5'' einen Test gemacht:
Ein und denselben Stockfish mit 1,2,4 und 8 Threads antreten lassen, ohne Pondern versteht sich.
Das Ganze fand statt auf einem I5 6200U mi 2,3 GHz,

1: Stockfish_20011801_t04 178,0/316
2: Stockfish_20011801_t08 162,5/316
3: Stockfish_20011801_t02 154,5/316
4: Stockfish_20011801_t01 137,0/316

Nach diesem Schnelltest ist am Besten, in dieser Thread-Auswahl so viele Threads wie reale Kerne zu nehmen. Nicht doppelt so viele.
Parent - - By Thomas Plaschke Date 2020-02-01 17:03
Deine CPU hat 2 Kerne mit HT und unter Windows daher 4 logische Prozessoren.

>Nach diesem Schnelltest ist am Besten, in dieser Thread-Auswahl so viele Threads wie reale Kerne zu nehmen.


t04 war doch Sieger nach Punkten. t02 wurde sogar nach t08 erst Dritter. Demnach sollte man SF 11 doch ruhig alle logischen Prozessoren in Beschlag nehmen lassen, oder?

Viele Grüße
Th. Plaschke
Parent - - By Benno Hartwig Date 2020-02-01 20:42
Oh man, du hast total Recht!
Nur 2 reale Kerne!!! (Wieso dachge ich, ich hätte 4? Peinlich!) Aber immerhin Hyperthreading.
Und SF mit 4 Threads war hier schon deutlich erfolgreicher als SF mit nur 2 Threads.

Hmmm...
Ja, ich würde dann auch erwarten wollen, dass bei einem Prozessor mit Hyperthreading
für eine möglichst große Spielstärke gern für die Threads die doppelte Anzahl der realen Kerne genommen werden sollte.
Ok, ob vielleicht lieber einer weniger, wenn sehr viele reale Kerne da sind, lasse ich mal offen.
Parent - By Thomas Plaschke Date 2020-02-01 21:05

> Ok, ob vielleicht lieber einer weniger, wenn sehr viele reale Kerne da sind, lasse ich mal offen.


Wo Du's ansprichst: Immer wieder liest man, dass 1 Kern/1 logischer Prozessor nicht von der Engine genutzt werden darf, damit genug Rechenleistung für das Betriebssystem oder was auch immer in Reserve bleibt. Soweit ich es nachverfolgen kann, braucht das Betriebssystem diese Vorsicht nicht. Bei Engine-Turnieren - bspw. mit cutechess - braucht letzteres immer mal wieder Rechenleistung (Turnierverwaltung, Partieabschätzung usw.). Man kann das schon im Taskmanager sehen. Das würde teilnehmende Engines stören können. Hier dürfte eine Reserve sinnvoll sein. Aber bei der Analyse oder beim Spiel auf Servern: volle Pulle! Mit HT oder ohne, wie man es lieber hat. Die Engines laufen ohnehin nur mit der Priorität "below normal" (bei Arena oder CB) - und das ist auch völlig ausreichend!

Nur, wenn das System schlechter auf Eingaben reagiert, würde ich auf Threads für die Engine verzichten - und darauf achten, dass der PC dann besser läuft.

Viele Grüße
Th. Plaschke
Parent - - By Michael Scheidl Date 2020-02-01 18:07
Im sinne dessen was Thomas schon anmerkte, da dürfte dich die erkenntnis ereilen daß du nur zwei reale kerne hast und nicht vier. Somit ist klar daß acht threads schlecht aussehen, aber mit tatsächlich vier realen kernen zweifle ich nicht daß acht threads besser performen. Ich bemühe mich in bälde einen benchmark anzuhängen (i7 7700 HQ reale 4 cores).
Parent - - By Michael Scheidl Date 2020-02-01 18:40
i7-7700HQ ~3500 GHz
1 GB Hash, F15-GUI
Grundstellung


Analysis by Stockfish 11 64 BMI2: (1 Thread)

1.d4 e6 2.Sc3 d5 3.e4 Lb4 4.exd5 exd5 5.Ld3 Sf6 6.Sge2 0-0 7.0-0 Sc6 8.Te1 h6 9.Lf4 Te8 10.a3 Ld6 11.Dd2 Le6 12.Sb5 Lxf4 13.Dxf4 Te7 14.Sg3 a6 15.Sc3 b5 16.h3 Dd6 17.Dxd6 cxd6 18.Sce2
  +/= (0.59)  Tiefe: 13/24   00:00:00  9kN
  +/= (0.37)  Tiefe: 31/47   00:00:59  90869kN  = 1.540 knps

Analysis by Stockfish 11 64 BMI2: (4 Threads)

1.d4 Sf6 2.c4 e6 3.Sf3 b6 4.g3 La6 5.b3 Lb7 6.Sc3 Lb4 7.Lb2 Se4 8.Dc2 Sxc3 9.Lxc3 Lxc3+ 10.Dxc3 0-0 11.Lg2 d6 12.0-0 Sd7 13.Tad1 f5 14.Sd2 Lxg2 15.Kxg2 Sf6 16.Tc1 a5 17.Tfd1 De7 18.Sf3 Se4 19.De3
  +/= (0.53)  Tiefe: 20/34   00:00:02  12385kN
  +/= (0.36)  Tiefe: 32/52   00:00:58  295MN  = 5.086 knps

Analysis by Stockfish 11 64 BMI2: (8 Threads)

1.e4 e6 2.d4 d5 3.Sd2 c5 4.Sgf3 cxd4 5.exd5 Dxd5 6.Lc4 Dd6 7.0-0 Sf6 8.Sb3 Sc6 9.Sbxd4 Sxd4 10.Dxd4 Dxd4 11.Sxd4 Lc5 12.Td1 Ld7 13.Lf4 Tc8 14.c3 0-0 15.Le2 Tfd8 16.Lf3 Sd5 17.Lg3 La4 18.Td2
  +/= (0.45 ++)  Tiefe: 29/45   00:00:52  383MN
  +/= (0.31)  Tiefe: 30/42   00:01:02  453MN  = 7.306 knps

Von vier auf acht threads sind zwar die nps deutlich gestiegen, aber offenbar hat SF. hier mehr in die breite gerechnet als zuvor, sodaß nur tiefe 30 statt 32 erreicht wurde. Das interpretiere wer wolle vermutlich stellungsspezifisch... ich werde hierzu keine enginematches laufen lassen.
Parent - - By Thomas Plaschke Date 2020-02-01 18:50
Wenn Du Deine Tests mehrmals wiederholen würdest, wären erhebliche Abweichungen zu diesem Ergebnis möglich...

Viele Grüße
Th. Plaschke
Parent - - By Michael Scheidl Date 2020-02-02 10:09 Upvotes 1
1.d4 d5 2.Sf3 e6 3.c4 c5 4.cxd5 exd5 5.Lg5 Le7 6.Lxe7 Dxe7 7.dxc5 Sf6 8.Sc3 Dxc5 9.e3 0-0 10.Ld3 Db6 11.Db3 Dxb3 12.axb3 Sc6 13.0-0 Lg4 14.Le2 Tad8 15.Tfd1 Tfe8 16.Sd4 Lxe2
  +/= (0.50 ++)  Tiefe: 28/40   00:00:33  52187kN
  +/= (0.60)  Tiefe: 30/43   00:00:55  87437kN  1T 1.590 knps

1.e4 c5 2.Sc3 Sc6 3.Sf3 e6 4.d4 cxd4 5.Sxd4 Sf6 6.Le2 d5 7.0-0 Le7 8.exd5 exd5 9.Lf3 0-0 10.h3 Te8 11.Lf4 Le6 12.Te1 Ld6 13.Lxd6 Dxd6 14.Scb5 Db8 15.Sxe6 Txe6 16.c3 a6 17.Txe6 fxe6 18.Sd4
  +/= (0.43)  Tiefe: 28/47   00:00:29  150MN
  = (0.23 --)  Tiefe: 31/44   00:00:57  299MN  4T 5.246 knps

1.d4 e6 2.c4 Sf6 3.Sc3 Lb4 4.e3 0-0 5.Ld3 d5 6.Sf3 b6 7.0-0 dxc4 8.Lxc4 c5 9.a3 Lxc3 10.bxc3 Lb7 11.De2 Sbd7 12.Lb2 Dc7 13.Ld3 Le4 14.Lxe4 Sxe4 15.c4 Tfe8 16.Tfd1 Tad8 17.Tac1 h6 18.dxc5 Sexc5 19.Dc2
  +/= (0.42)  Tiefe: 25/41   00:00:12  94176kN
  +/= (0.36)  Tiefe: 30/44   00:01:02  482MN  8T 7.774 knps

Diesmal ohne ROG Gaming Center im hintergrund etwas, aber nicht dramatisch schneller. Aber drei andere Eröffnungen! SF11 zeigt sich abwechslungsfreudig.
Parent - - By Klaus S. Date 2020-02-02 13:11
Hallo Michael,

an den unterschiedlichen Knotenzahlen (1. und 2. Versuch 1Thread) sieht man dass du die
Hashtables nicht gelöscht hast, bzw. dazwischen keine andere Engine geladen hattest.  
(Gleicher Effekt wie Hash löschen)

1. 00:00:59  90869kN  = 1.540 knps
2. 00:00:55  87437kN  1T 1.590 knps

Auf die knps hat das aber wohl keine Auswirkungen.

Hier meine Versuche auf i7 6700:

1core 1.Lauf: (3.9GHz)
00:00:51 93248kN   >  1828 kN/s
00:00:56 102MN     >  1821 kN/s

2.Lauf:
00:00:51 93248kN   >  1828 kN/s
00:00:56 102MN     >  1821 kN/s

Kurze Änderung auf höhere Threads und dann zurück auf 1 Thread gewährleistet
auch die Reproduzierbarkeit.
Parent - By Michael Scheidl Date 2020-02-02 15:48
Doch oja, ich hab die HT dazwischen gelöscht und zuvor lief jeweils SF11 gar nicht. Der Systemzustand war jedoch wie gesagt nicht ganz derselbe. Gestern hatte das ROG Gaming Center eine - obzwar sicherlich geringe - Hintergrundaktivität bewirkt, aber lief heute nicht. Über eine (Nicht-)Reproduzierbarkeit mache ich mir eh keine Sorgen mehr...
Parent - By Benno Hartwig Date 2020-02-01 23:13 Edited 2020-02-01 23:16
Ich hatte SF mit 5 Threads der Runde hinzugefügt (dachte ja an 4 reale Kerne).
Nun ist das auch durch, und ich poste das Ergebnis hier auch.
5 Threads auf einer 2-Kern-Maschine, das Ergebnis ist erwartungsgemäß schlechter als mit 4 Kernen, aber besser als mit 8.

   Motor                  Punkte  
1: Stockfish_20011801_t04 234,0/422
2: Stockfish_20011801_t05 220,0/422
3: Stockfish_20011801_t08 212,0/422
4: Stockfish_20011801_t02 206,0/423
5: Stockfish_20011801_t01 184,0/423


PS:
Und den Wert für "SF mit 3 Threads"  liefere ich noch nach.
- By Benno Hartwig Date 2020-02-04 19:46
Un die Runde vollständig zu haben, kommt hier auch noch das 3-Thread-Resultat
Es pass schon gut ins Bild, denke ich.

4: Stockfish_20011801_t08 268,5/535
2: Stockfish_20011801_t05 278,5/535
1: Stockfish_20011801_t04 291,5/535
3: Stockfish_20011801_t03 274,5/535
5: Stockfish_20011801_t02 261,5/535
6: Stockfish_20011801_t01 230,5/535
- - By Benno Hartwig Date 2020-02-06 21:00
Mit demselben Feld auf derselben Maschine habe ich jetzt noch mal einen anderen Test gemacht.
Diesmal habe ich vorgegeben, dass immer genau 20 Plys tief gesucht werden soll.
War doch schon häufiger der Eindruck entstanden, dass auch bei gleicher Tiefe die Spielstärke zunimmt, wenn mehr Threads genutzt werden.

Ich war dann aber doch sehr überrascht, wie sehr deutlich und wie wunderschön in Reihe diese Spielstärkeunterschiede auftraten!!!

1: Stockfish_20011801_t08 115,5/200
2: Stockfish_20011801_t05 113,5/200
3: Stockfish_20011801_t04 105,5/200
4: Stockfish_20011801_t03  97,5/200
5: Stockfish_20011801_t02  94,5/200
6: Stockfish_20011801_t01  73,5/200


Sehr deutlich kräftiger unterschiedlich als von mir erwartet waren die Erfolge, die die Engines hier einfuhren!!!

Ich hatte dabei auch überhaupt nicht den Eindruck, dass mehr Threads dann auch weniger Zeitverbrauch bedeuteten.
Oftmals hatte die 8-Thread-Engine deutlich mehr Zeit verbraucht als Gegner mit viel weniger Threads.
Und die 1-Thread-Engine verbrauchte so manches Mal besonders wenig Zeit.
Ich glaube, das verdient aber noch einmal eine eigene Betrachtung.

PS:
Ich glaubte mal, bei mehr Threads werden eben Rechnungen parallel aus geführt (-> viel schneller) aber manche beta-Cuts sind dann ggf. nicht möglich (weil die benötigte Info einfach noch nicht da ist, -> etwas langsamer)
Aber die tatsächlichen Auswirkungen sind wohl ganz anders: nicht wirklich schneller, aber bei gleicher Tiefe deutlich stärker.

PPS:
Der Unterschied von 1 Thread zu 2 Threads ist so stark, dass interessant sein kann, auch auf einer Engine mit nur 1 Kern 2 Threads zu benutzen. Es käme auf einen Test an.
Parent - - By Thomas Plaschke Date 2020-02-06 21:31
8 Threads auf einer 2 core HT-Maschine brauchen bestimmt deutlich länger. Interessante Idee, auf einem Prozessor, der es eigentlich nicht unterstützt, so viele Threads laufen zu lassen. Bleiben eigentlich die nps konstant, wenn mehr Threads laufen als die CPU kann?
Letztlich kommt es auf die Abhängigkeit der Spielstärke von der Bedenkzeit an. Da war die 4 Thread-Engine die Stärkste, oder?

Viele Grüße
Th. Plaschke
Parent - By Benno Hartwig Date 2020-02-07 07:07
4 Threads, ja, das war bei vorgegebener Zeitlimitierung die stärkste Einstellung.

Hier ging es mir nur darum einen Blick zu werfen auf das Verhalten bei mehreren Threads, welches eben einfach so sehr deutlich anders ist, als ich es erwartet hatte.
Und ich habe im Moment keine Vorstellung davon, wie dies, und dann in dieser Deutlichkeit(!!!), zustande kommt.
- By Benno Hartwig Date 2020-02-09 08:06
Den Versuch habe ich inzwischen auf einem anderen Notebook wiederholt (1m+0.5s).
Diesmal ein I7-8559U mit realen 4 Kernen und Hyperthreading.
Und das Ergebnis ist nun auch erwartungsgemäß:
Am erfolgreichsten war die 8-Thread-Variante des Stockfish

1: Stockfish_t08 226,5/401
2: Stockfish_t07 215,5/401
3: Stockfish_t09 209,0/401
4: Stockfish_t04 205,0/401
5: Stockfish_t02 188,5/401
6: Stockfish_t01 158,5/401

Ich habe hier auch mal 7 und 9 Threads mitlaufen lassen.
"Gut" waren sie auch, aber 8 Threads war die erfolgreichste Variante.
Up Topic Hauptforen / CSS-Forum / Beste Thread-Anzahl? Reale Kerne? Oder bei Hyperthreading das Doppelte? Anderes?

Powered by mwForum 2.29.3 © 1999-2014 Markus Wichitill