Not logged inCSS-Forum
Forum CSS-Online Help Search Login
CSS-Shop Impressum Datenschutz
Up Topic Hauptforen / CSS-Forum / Hyperthreading noch mal
1 2 Previous Next  
- - By Benno Hartwig Date 2014-07-27 21:12 Edited 2014-07-27 21:17
Weil ich mir irgendwie immer noch nicht darüber klar war, wie viele Threads ich auf einem System mit Hyperthreading einsetzen sollte, habe ich auf meinem Notebook mit
i3-2377M mit 1,50 GHz, 4GB, Windows7-64bit (also nur 2 reale Kerne, Hyperthreading bietet dann aber logische 4 Kerne an)
jeweils 1000 Partien unter Arena spielen lassen bei 1min + 0,5sec, natürlich gleiches Buch:

Stockfish_14061621           4cpu vs. 2cpu:     548,5 zu 451,5
Stockfish profitiert also recht stark davon, wenn er die 4 virtuellen Kerne nutzen kann.
Vor Kurzem hatte ich noch vermutet, dass das nicht so wäre. Asche auf mein Haupt.

Houdini_4_AQ_x64B          4cpu vs. 2cpu:     487,0 zu 513,0
Houdini fing also mit den Hyperthreading-Kernen nichts Vernünftiges an.
Er scheint sogar eher ein wenig stärker zu sein, wenn er sich auf die realen 2 Kerne beschränken darf!

Ich fand das erstaunlich!
Und ich fänd' es wahnsinnig interessant, wenn jemand mit einem i7 so was wiederholen könnte mit "4Thread vs. 8Thread"-Begegnungen.
Hat jemand Lust?
Bitte erst mal ähnlich kurze Zeiten. (Jeder Durchgang dauert dann nur ein paar Tage)
Ggf. kann es bei deutlich längeren Zeiten ja auch anders aussehen.

Benno
Parent - By Hauke Lutz Date 2014-07-27 21:55
Das Ergebnis ist interessant, jedoch befürchte ich das hierzu Partien zwischen 2 Baugleichen PCs erforderlich sind um reproduzierbare Ergebnisse liefern zu können.

Gruß
Hauke
Parent - - By Dirk Triebel Date 2014-07-27 23:36 Edited 2014-07-27 23:38
Hallo,

ich denke das ist eine ziemlich "wackelige" Nummer. Wenn man mit weniger Kernen rechnen lässt schaltet der Turboboost willkürlich ein u übertaktet die Frequenz, wenn bestimmte Bedingungen gegeben sind. Genauso deaktiviert er sich dann auch mal wieder. Ob und wie er bei den kurzen Bedenkzeiten überhaupt gleichmäßig takten kann, weiß ich nicht. Daher sind meiner Ansicht nach Parieauswertungen dieser Art mit HT Aktivierung sehr wackelig. Wenn man mit allen logischen Kernen rechnet übertaktet er jedoch nicht. Der einen engine liegt wahrscheinlich die Hochtaktung mehr als der anderen. Theoretisch müsste H4 bei Dir bei 2 CPU dann auch schneller auf Tiefe kommen als mit 4 CPU - das könnte man ja beispielsweise in der Ausgangsstellung mal ermitteln.

Gruß,
Dirk
Parent - - By Benno Hartwig Date 2014-07-28 10:38 Edited 2014-07-28 10:49

> ich denke das ist eine ziemlich "wackelige" Nummer. Wenn man mit weniger Kernen rechnen lässt schaltet der Turboboost willkürlich ein


Weil mein i3 nur 2 Kerne hat, vermute ich, dass der Prozessor bei 2 und bei 4 Threads so heftig am Werlkeln ist, dass kein Turbo zum Einsatz kommt.
Aber wie dem auch sei: Mir geht es einfach um die Frage:
"Ich habe einen Prozessor XYZ. Wie viele Threads soll ich einsetzen, damit das Enginespiel möglichst stark wird?"
Für meinen schlappen i3, und viel interessanter natürlich: für einen aktuellen i7.
Und eben ggf. auch unterschiedlich für verschiedene Engines.
Mein Houdini-Ergebnis ist ggf. nicht sehr ausdrucksstark, das für Stockfish halte ich schon für deutlich. Und der Unterschied überrascht mich.

> Theoretisch müsste H4 bei Dir bei 2 CPU dann auch schneller auf Tiefe kommen als mit 4 CPU...


Ich werde mal einen Blick drauf werfen.
Weil die Ergebnisse bei mehr 1 Thread nicht mehr gut reproduzierbar sind, bei gleicher Tiefe also unterschiedliche Züge, Werte und deutlich unterschiedliche Zeiten herauskommen, muss ich da schon etliche Durchläufe machen und mitteln.
Ist eigentlich die Zugqualität(!) bei 1, 2 oder 4 Threads im Mittel bei gleicher Tiefe gleich gut? 

Benno
Parent - - By Jörg Oster Date 2014-07-28 11:39
Benno Hartwig schrieb:

Weil mein i3 nur 2 Kerne hat, vermute ich, dass der Prozessor bei 2 und bei 4 Threads so heftig am Werlkeln ist, dass kein Turbo zum Einsatz kommt.
Aber wie dem auch sei: Mir geht es einfach um die Frage:
"Ich habe einen Prozessor XYZ. Wie viele Threads soll ich einsetzen, damit das Enginespiel möglichst stark wird?"


Grundsätzlich nur soviele wie physikalisch vorhandene Cores zur Verfügung stehen!
Ich kann mich an keine anderslautende Empfehlung eines Engine-Programmieres erinnern.
Ich verstehe auch nicht, warum das so schwer zu akzeptieren ist, zumal diese Empfehlung von Leuten stammt, die Ahnung haben.

Selbsverständlich muss für jedes seriöse Testen Turbo-Boost bei Intel-CPUs und das Äquivalent bei AMD-CPUs deaktiviert werden.
Wie will man sonst sicher stellen, dass alle Engines die gleiche Rechenpower zur Verfügung haben?
(Für die Analyse mit einer Engine trifft das natürlich nicht zu!)

Benno Hartwig schrieb:

Für meinen schlappen i3, und viel interessanter natürlich: für einen aktuellen i7.
Und eben ggf. auch unterschiedlich für verschiedene Engines.
Mein Houdini-Ergebnis ist ggf. nicht sehr ausdrucksstark, das für Stockfish halte ich schon für deutlich. Und der Unterschied überrascht mich.

Ich werde mal einen Blick drauf werfen.
Weil die Ergebnisse bei mehr 1 Thread nicht mehr gut reproduzierbar sind, bei gleicher Tiefe also unterschiedliche Züge, Werte und deutlich unterschiedliche Zeiten herauskommen, muss ich da schon etliche Durchläufe machen und mitteln.
Ist eigentlich die Zugqualität(!) bei 1, 2 oder 4 Threads im Mittel bei gleicher Tiefe gleich gut? 

Benno
Parent - By Benno Hartwig Date 2014-07-28 13:08 Edited 2014-07-28 13:38

> Grundsätzlich nur soviele wie physikalisch vorhandene Cores zur Verfügung stehen!
> Ich kann mich an keine anderslautende Empfehlung eines Engine-Programmieres erinnern.
> Ich verstehe auch nicht, warum das so schwer zu akzeptieren ist, zumal diese Empfehlung von Leuten stammt, die Ahnung haben.


Weil praktische Erfahrungen bei immerhin 1000 Partien dieser Ansicht widersprechen?
Wie z.B. mein Test mit Stockfish 2threads vs. 4threads, bei dem sich eine Überlegenheit von immerhin 36 ELO andeutet für die Version, die mit der doppelten Thread-Anzahl antritt.
Natürlich bieten 1000 Partien hier nicht Sicherheit. Ob sich dies auf einen aktuellen i7 4threads vs. 8threads bestätigt, fänd ich darum ja auch gerade so interessant.
Solch ein Testergebnis fänd ich im Moment weit spannender als die ansonsten geschätzten Aussagen der Engineprogrammierer.

> Selbsverständlich muss für jedes seriöse Testen Turbo-Boost bei Intel-CPUs und das Äquivalent bei AMD-CPUs deaktiviert werden.


Nein, das hängt von der Fragestellung ab.
Wenn ich wissen will, wie auf meinem Rechner eine Engine maximale Stärke erreicht, dann deaktiviere ich Turbo-Boost sicher nicht.
Und darum geht es mir ja gerade. Hier allerdings speziell um die Thread-Anzahl.

> Wie will man sonst sicher stellen, dass alle Engines die gleiche Rechenpower zur Verfügung haben?


Jede Engine bekommt den Prozessor, so wie er ist. Mit allen Features.

Mir ging es auch nicht um den Spielstärkevergleich zweier verschiedener Engines als mehr um die optimale Einstellung zum Betrieb einer Engine.
- Wie sollte ich Stockfish betreiben?
- Wie sollte ich Komodo betreiben?
- Wie sollte ich Houdini betreiben?
wenn jeweils eine maximale Spielstärke dabei herausspringen soll (für den Maschinenraum, für Partieanalysen, für...)

Benno
Parent - By Frank Brenner Date 2014-07-29 13:26 Edited 2014-07-29 13:30

>Ich kann mich an keine anderslautende Empfehlung eines Engine-Programmieres erinnern. Ich verstehe auch nicht, warum das so schwer zu akzeptieren ist, zumal diese Empfehlung von Leuten stammt, die Ahnung haben.


Nicht jeder der am Framework mitarbeitet hat Ahnung.

Und überhaupt hängt dies spezifisch von der jeweiligen Engine und spezfiisch von der Cpu ab.

Pauschale aussagen kann man hier nicht tätigen. Das Hyperthreading wurde vermutlich von intel von generation zu generation hier und da verbessert.

Frühere aussagen - auch von Kompetenten personen - sind also grundsätzlich stets neu zu hinterfragen, wenn eine neue cpu generation oder eine neue Engine das Licht der Welt erblickt.

Bennos tests sind sehr gut und vielversprechend für den Angang jedoch müssen noch mehr Tests gemacht werden bevor man eine sichere Auskunft zu Stockfish 5 (oder neuer) und Intel-haswell, Ivy Bridge bzw Sandy Bridge geben kann.
Parent - By Michael Scheidl Date 2014-07-28 11:39 Edited 2014-07-28 11:41
Ich hab einen Dualcore i5-3210M und hatte voriges Jahr dreierlei Arten von Tests - die evtl. als zu wenig umfangreich betrachtet wurden - mit diversen Engines und Stellungen gemacht: Time to Depth, Testsuite lösen, Knotenleistung. Nahezu immer, und im Gesamtschnitt immer deutlich, waren die Ergebnisse mit 4 Threads besser als mit 2, wenngleich in jeweils unterschiedlichem Ausmaß.

http://forum.computerschach.de/cgi-bin/mwf/topic_show.pl?tid=5540

(Im Verlauf des Threads stehen einige Erweiterungen des Startpositings bzw. weitere Ergebnisse.)

Ich habe allerdings von diversen vorgeschlagenen Verbesserungen der Vorgangsweise keinen Gebrauch gemacht, z.B. Einzelmessungen nicht mehrmals wiederholt, weil ich schon nach meiner "Ho-ruck-Methode" ganz meiner Meinung war.

Ob ich punktuell nachgeschaut habe wie sich die Taktfrequenzen der Cores jeweils verhalten haben, hab ich ehrlich gesagt vergessen, aber wenn ja muß es "unauffällig" gewesen sein da ich es sonst erwähnt hätte.

Das ganze ist aber wohl nicht allgemeingültig, vielleicht nicht einmal für die ganze i5-Familie von CPUs, zumindest nicht genau. Das sollte wirklich am Besten für jedes individuelle System mit den vorgestellten Möglichkeiten gemessen werden, jeweils mit dem Aufwand den man selber für nötig hält. Mehr Stellungen und/oder Engines, Wiederholungen zur Absicherung, usw.usf.

Was ich nicht gemacht habe, aber sicherlich sehr aussagekräftig ist, wären bzw. sind Partiespieltests nach Ranglistenmethodik zwecks Elodifferenzen. Falls man es ganz genau wissen will oder sich vergewissern will, ob y Threads nun auch tatsächlich stärker spielen als x Threads, nicht nur schneller sind (falls sie es sind).
Parent - - By Thomas Plaschke Date 2014-07-28 12:08
Benno Hartwig schrieb:
...
Stockfish_14061621           4cpu vs. 2cpu:     548,5 zu 451,5
...
Houdini_4_AQ_x64B          4cpu vs. 2cpu:     487,0 zu 513,0
...
Wie wurde sicher gestellt, dass die "2cpu"-Version auch wirklich 2 Kerne bekommt und seine 2 Threads nicht auf dem gleichen Core laufen?
Ich verwende dazu die Software "Process Lasso", die anhand des Namens der exe-Datei die Cores zuweisen kann. Jedenfalls reicht allein das Einstellen von 2 Threads in den Engine-Optionen nicht aus, um eine Aufteilung zu erreichen, die eine Differenzierung von Thread-Leistung und Core-Leistung erlaubt.

Ich habe das auf einem i3-3227U (2 cores + HT) mit einer anderen Stockfish-Developement-Version kurz angetestet. Die Test(-Mittelspiel-)stellung war aus einem anderen Beitrag hier im Forum.
4 Threads ca. 2.300 kN/s, 2 Threads auf 2 Cores ca. 1.850 kN/s. Tiefenfortschritt nach einer Minute ca. 26 Halbzüge. Allerdings auch Ausreißer bis 2 Minuten (die 2-Threads-auf-2-Cores-Version). Genereller Eindruck ist aber, dass 2 cores zuverlässiger Tiefe gewinnen. Insoweit deckt sich dieser "Test" mit meinen bisher gemachten HT-Erfahrungen. Die obigen Ergebnisse finde ich deswegen recht überraschend und gehe davon aus, dass lediglich die Thread-Anzahl in den Engine-Optionen eingestellt wurden.
- Zwei Gegentests habe ich auch noch stichprobenartig gemacht
1.  Die 2 Cores-Version wurde auf 2 Threads auf 1 Core geändert. Knotenleistung kaum 1.100 kN/s. Der 26. Halbzug wurde regelmäßig erst (deutlich) nach 1 Minute absolviert.
2. Die 2 Threads-Version wurde ohne explizite Zuweisung auf einzelne Cores getestet (Windows übernimmt dann die Zuweisung). Die Knotenleistung sinkt auf ca. 1.550 kN/s. Zum Fortschritt der Rechentiefe kann ich aber von keinem Unterschied berichten. Die Ergebnisse liegen zu dicht an denen von 2Cores-2Threads und 2Cores-4Threads. Aber im obigen 1.000-Partien-Test sieht es so aus als hätte die 2 Threads-Version mit einem Holzschwert gekämpft.

Viele Grüße
Th. Plaschke
Parent - - By Benno Hartwig Date 2014-07-28 16:12

> Wie wurde sicher gestellt, dass die "2cpu"-Version auch wirklich 2 Kerne bekommt und seine 2 Threads nicht auf dem gleichen Core laufen?


Besonderes zu solcher Sicherstellung habe ich nicht durchgeführt.
Ich habe einer Engine einfach 2 und der andere 4 Threads gegeben. Friss oder stirb.
Ganz so, wie es wohl viele (die meisten?) machen würden, wenn sie die Engine für eine Analyse oder ein Maschinenraumspiel nutzen möchten.

Aber du hast schon recht, besser wäre, ich würde explizit reale Kerne zuweisen können.
Ich finde auch interessant, dass stabile und 'lausige' 50% CPU-Last angezeigt werden, wenn auf meiner Hyperthreading-2-Kern-Maschine mit 2 Threads gerechnet wird. Es sieht wirklich so aus, als würde ein Teil des Prozessors sich dann langweilen, nicht mitmachen.
Das sieht bei Houdini aber genau so aus, nur eben mit doch ganz anderen Ergebnissen aus den 1000 Partien.

Benno
Parent - - By Hauke Lutz Date 2014-07-28 18:10
Deswegen muss um einen Vergleich machen zu können, müssen die Bedingungen meines Postings von 2014-07-27 21:55 gegeben sein.

Hauke Lutz schrieb:

Das Ergebnis ist interessant, jedoch befürchte ich das hierzu Partien zwischen 2 Baugleichen PCs erforderlich sind um reproduzierbare Ergebnisse liefern zu können.


Gruß
Hauke
Parent - - By Benno Hartwig Date 2014-07-28 19:53
Wenn nicht gepondert wird, warum hältst du dann 2 baugleiche Rechner für erforderlich?
In welchem Sinne wären ansonsten die  Wahrscheinlichkeiten für Sieg, remis und Niederlage verändert und warum?
Benno
Parent - - By Hauke Lutz Date 2014-07-28 21:03 Edited 2014-07-28 21:08
Es würde so zu dem Effekt kommen, dass es nur ein Vergleich von der Kernverdopplung virtueller Kerner kommt und nicht getestet wird ob ein 4-Kerner mit 8 virtuellen Recheneinheiten der Rechenpower 4x 4,5 GHz besser ist als 4 echte Kerne mit der Rechenpower 4x 4,5 GHz.

Dies kann jeder der HT-fähige Hardware hat selber beobachten, wenn eine Engine rechnet und der Ressourcenmonitor geöffnet ist.
Dort wird jede virtuelle CPU aufgeführt und ein Liniendiagramm gibt die Auslastung gegen die Zeit wieder.
Wer es unkomplizierter prüfen möchte, kann den Fritz-Benchmark mit 4 und 8 Threads machen und wird bei 8 Threads über 85% mehr Knoten als bei 4 Threads feststellen.

Gruß
Hauke
Parent - - By Benno Hartwig Date 2014-07-28 21:46

> Es würde so zu dem Effekt kommen, dass es nur ein Vergleich von der Kernverdopplung virtueller Kerner kommt und nicht getestet wird ob ein 4-Kerner mit 8 virtuellen > Recheneinheiten der Rechenpower 4x 4,5 GHz besser ist als 4 echte Kerne mit der Rechenpower 4x 4,5 GHz.


Stimmt, ich teste nicht, ob Hyperthreading mit Threads==doppelte_Kernzahl besser ist als kein-Hyperthreading mit Threads==Kernzahl.
behauptete ich aber auch nicht.

Ich gehe von einem Rechner mit Hyperthreading aus und frage, welche Threadzahl ist bei gegebener Kernzahl ideal.
Da sehe ich tatsächlich kein Problem bei Durchführung auf einem Rechner.
(Außer dass eventuell (oder eben auch gar nicht) der Turbo-Boost durch die vielen Kerne gebremst wird, worunter immer wieder auch die Engine mit wenigen Kernen leidet. Ich vermute (mehr nicht) aber, dass der eh gebremst ist, wenn die Threadzahl mindestens der Kernzahl entspricht, so dass hier kein Problem entsteht.)

Benno
Parent - By Hauke Lutz Date 2014-07-28 23:56
Das hatte ich dann wohl falsch verstanden. So ein Test wäre natürlich machbar.
Ich würde jedoch Grundsätzlich den Turbo-Boost einfach deaktivieren, oder umgehen, indem das System entsprechend übertaktet wird, um eine Verzehrung durch die"ungleichmässige" mehr Leistung zu vermeiden.

Gruß
Hauke
Parent - - By Thomas Müller Date 2014-07-28 18:23
aber das wurde doch schon gemacht....
http://www.fastgm.de/threads1.html

und wenn nur EINE engine geladen ist, ja dann voll pulle auch mit HT von mir aus.
Aber ich habe jetzt nicht alles in dem thread gelesen und du willst was anderes testen

gruß
thomas
Parent - - By Heinz Hagenstein Date 2014-07-28 19:42
Ich bin oft bei Let s Check um mein Buch zu verbessern,wenn ich mit der Analyse anfange gibt mir Let s Check eine Leistungszahl aus.

Bei meinen Quad mit HT gleich 8 Thread bekomme ich eine Leistungszahl von 95 was immer das bedeutet.Der Task Manager zeigt 100% an.

Bei Einstellung von 4 Thread ist die Leistungszahl 121. Der Task Manager zeigt nur 50%an.

Jetzt habe ich aus der Grundstellung bis Tiefe 30 rechnen lassen,mit 8 Threads,die Zeit 2m 30s,

mit 4 Threads 2m 8s.

Gruß Heinz
Parent - By Benno Hartwig Date 2014-07-28 19:59
Knotenzahlen, "Leistungszahlen", (schwankende) Zeiten für Erreichen von Tiefen.
Alles gut und schön.
Aber ich würde den Erfolg halt gern auch mal in erzielten ELO-Ratings in vielen gewonnenen Partien wiederfinden.
Benno
Parent - - By Benno Hartwig Date 2014-07-28 19:45 Edited 2014-07-28 19:49

> aber das wurde doch schon gemacht....


Ich habe nicht den Eindruck, dass da getestet wurde, wie sich die Engine verhält, wenn ihr dank Hyperthreading doppelt so viele Threads anvertraut werden wie reale Kerne tatsächlich vorhanden sind.
Das ist aber die Frage, die hinter meinem Posting steckt:
Wenn ich maximale Spielstärke auf einem Hyperthreading-Rechner haben will, muss ich dann "Threads=Kerne" setzen oder lieber "Threads=2 * Kerne"?
Und mir scheint, dass das von Engine zu Engine unterschiedlich ist.

Benno
Parent - - By Thomas Müller Date 2014-07-28 19:53
neee HT hat Andreas da nicht getestet da er einen AMD hat.
Ich kanns auch nicht.
Aber bei testläufen ist HT schlecht für die vergleiche.
Ich vermute auch, dass jede engine da etwas anders scored mit HT.

gruß
thomas
Parent - - By Benno Hartwig Date 2014-07-28 20:10

> Aber bei testläufen ist HT schlecht für die vergleiche.


Warum?

Außerdem:
Ich denke mal, auf vielen Rechnern mit aktuellem Intel-Prozessor ist Hyperthreading aktiv.
Und damit hantiert dann das System, ob du willst oder nicht.
Und dann musst du entscheiden, welche Threads-Wert du für den hältst, der die Spielstärke maximiert.
Wenn du's nicht machst, verlierst du ggf. einfach Stärke, bei Analysen, im Maschinenraum...

Benno
Parent - - By Thomas Müller Date 2014-07-28 20:25
Benno Hartwig schrieb:

Warum?


weil die HT-cores wie Thomas Plaschke oben schrieb unterschiedlich skalieren zu den nicht HT-cores.
Und wenn jemand eine liste erstellt oder ein testlauf mit allen 4 cores (HT & non-HT) gleichzeitig laufen lässt, es nicht passt. Es wird unsicher.
Für analysen oder maschinenraum vermutlich egal, da würde ich HT nehmen.
Ansonsten würde ich allen zu AMD raten weil dann würde HT bei intel ja gar nichts bringen für computerschach oder ?!?!

gruß
thomas
Parent - - By Benno Hartwig Date 2014-07-28 21:38 Edited 2014-07-28 21:52

> Und wenn jemand eine liste erstellt oder ein testlauf mit allen 4 cores (HT & non-HT) gleichzeitig laufen lässt...


Wie ich es verstehe, geht das so nicht. HT ist auf dem Rechner doch entweder aktiv oder nicht. Und dann für jedes Programm.
Und wenn es aktiv ist (bei aktuellen Intelprozessoren wohl fast immer der Fall, oder?), dann leben damit alle Engines und du kannst nur noch die Zahl der Threads einstellen.
So ist es doch, oder übersah ich da was?
Benno
Parent - - By Thomas Müller Date 2014-07-28 21:47
Ja so ist es. Da ist automatisch HT an.
Da hilft nur von Hand zuweisen.
Vielleicht postet jemand mit Intel was genaueres dazu. Hab ja keinen...
Parent - By Ingo B. Date 2014-07-29 07:04
Thomas Müller schrieb:

Ja so ist es. Da ist automatisch HT an.
Da hilft nur von Hand zuweisen.
Vielleicht postet jemand mit Intel was genaueres dazu. Hab ja keinen...


Jein.
Sofern Benno mit W7 oder höher gearbeitet hat, war das schon in Ordnung. Linux, W7+ (und Ponder OFF) vergibt immer erst echte, physische Cores. Wenn er also halbe gegen volle Threadzahl bei einem Rechner mit HT-ON getestet hat ist das ordentlich gelaufen.
(... sofern er den Turbo, wenn vorhanden, ausgeschaltet hatte. Nach dem Ergebniss hatte er das, oder der Rechner hat kein Turbo)
Bei XP war das noch anders, das hat einfach vergeben wie es kam, da waren die Ergebnisse etwas "dubios". Oben beschriebene Klimmzüge mit Lasso und Threads zuweisen sind ab W7+ nicht mehr nötig.

Was ich nicht weiß ist, ob bei diesen kurzen Bedenkzeiten wirklich alle HT Threads schon "arbeitslos" sind, wenn er von 4 auf 2 umschaltet, oder ob evtl. Restarbeiten (Speicher aufräumen ...) nicht doch noch signifikant (bezogen auf die Zeit) ins Gewicht fallen ...

Fakt ist, das das Intel HT mit jeder Generation immer besser geworden ist. Nach dem was ich lese, glaube ich auch, das HT auf aktuellen CPUs keinen Schaden mehr anrichtet - wenn ich es vorsichtig ausdrücke.

Nicht vergessen sollte man, dass es noch einen Unterschied zw. einer Threaded und einer Process Implementierung gibt ... letztere ist wohl effektiver, aber selten zu finden. Wenn man eine Threaded und eine Process Version, jeweils mit 4 Kernen, auf einer Maschine die auch echte 4 Kerne hat laufen läßt, ist die Process Version wohl effektiver. Was passiert wenn man solche Enignes in einer HT Umgebung mischt weiß allein der ... und dann spielt zufälllig eine gute Threaded gegen eine schlechte Process Implementierung und verfälscht die Ergebnisse ... Aber ehe ich mir da mit weiter den Mund verbrenne sollen sie da lieber Profis zu äussern.

Gruß
Ingo
Parent - - By Thomas Plaschke Date 2014-07-28 23:08
Benno Hartwig schrieb:
...
Und damit [=Hyperthreading] hantiert dann das System, ob du willst oder nicht.
...
Es sei denn, ich stelle HT im BIOS ab oder weise Prozessorkerne explizit zu. Wie schon gepostet: Dafür gibt es Software.
Benno Hartwig schrieb:
...
Und dann musst du entscheiden, welche Threads-Wert du für den hältst, der die Spielstärke maximiert.
...
Ich habe HT-Erfahrung mit Pentium 4, Atom-Prozessor und Ivy-Bridge i3 gesammelt. Für mich bleibt HT ein schlechter Kompromiss für Schachprogramme. Ein Prozessor, der 2 cores mit HT hat, stellt sich dem Betriebssystem so vor, als könnte er mit 4 Prozessoren parallel arbeiten. Tatsächlich hat er aber nur 2 Prozessoren/cores in denen jeweils viele Prozessor-Komponenten doppelt vorhanden sind. Dadurch gibt es in jedem core 2 Arbeitspfade, die immer nur dann arbeiten können, wenn der andere Pfad auf Ergebnisse/Daten wartet (Andere essentielle Komponente sind ja nur einmal ausgeführt). Deswegen bringen bei einem Schachprogramm 2 Threads auf einem und demselben core mit HT regelmäßig nichts.

Auf meinem Netbook-AtomProzessor (1 core und HT) war Crafty mit 70% höherer Knotenleistung Spitzenreiter. Auch Rybka 3 kam in ähnliche Regionen. Bei anderen Programmen lag der Zuwachs bei 30-40%. Da muss man schon überlegen, ob man in der Knotenleistung eine Qualität an sich sieht. - Ich tu's nicht. Hätte ich die Wahl zwischen einem Prozessor mit 4 cores à 3 GHz oder einem single-core Prozessor mit 12 GHz, würde ich für Schach aus grundsätzlichen Erwägungen letzteren wählen.

Thomas Müller schrieb:
...
Ansonsten würde ich allen zu AMD raten weil dann würde HT bei intel ja gar nichts bringen für computerschach oder ?!?!
...
Unter den oben genannten Aspekten würde ich sagen: Ja. Wären da nicht andere Probleme. Soweit ich weß, sind die AMD-Kerne echte Kerne. Allerdings müssen sich wohl jeweils 2 Kerne eine Fließkommaeinheit und vielleicht noch andere Komponenten teilen (bspw. Caches). Letztlich kommt bei den Intel-Prozessoren wohl mehr Leistung raus. Außerdem ist die thermische Verlustleistung erheblich höher. - Einen Silent-PC zu bauen, fällt mit den High-End AMD-Prozessoren vermutlich bedeutend schwerer.

Viele Grüße
Th. Plaschke
Parent - - By Benno Hartwig Date 2014-07-29 08:10

> Es sei denn, ich stelle HT im BIOS ab oder weise Prozessorkerne explizit zu. Wie schon gepostet: Dafür gibt es Software.


Stimmt. Ob eine Engine stärker läuft bei abgeschaltete HT oder mit HT, jeweils mit einer dafür optimalen Thread-Zahl, ist eine sehr interessante Frage, der ich mit meinem Test allerdings überhaupt nicht auf den Grund ging. Sorry. Da wären dann die 2 baugleichen Rechner erforderlich. Habe ich nicht.

Wenn auf meinem i3 (2 reale, 4 Hyperthread-'Kerne') nur ein Thread läuft, dann werden mir nur 25% CPU-Last angezeigt.
Arbeitet dann eigentlich ein realer Kern einigermaßen voll? Ich befürchte eher, der arbeitet nur ungefähr zu Hälfte. Ist das richtig?
Wäre 1 Thread bei abgeschaltetem HT schneller?
Asche auf mein Haupt, ich hatte bei einem ersten Versuch im BIOS des Rechners die Stelle nicht gefunden, wo ich ggf. HT (testweise) abschalten kann.

Benno
Parent - - By Thomas Plaschke Date 2014-07-29 11:18
Benno Hartwig schrieb:
...
Arbeitet dann eigentlich ein realer Kern einigermaßen voll? Ich befürchte eher, der arbeitet nur ungefähr zu Hälfte. Ist das richtig?
Wäre 1 Thread bei abgeschaltetem HT schneller?
...
Frage 1: Nein. Frage 2: Nein. Frage 3: Nein.
Im Ernst: Mit dem Taskmanager kann man auch die Verteilung der Rechenleistung auf die einzelnen logischen Prozessoren erkennen. Durch Ausprobieren bin ich zu der Erkenntnis gekommen, dass die logischen Prozessoren 0 und 1 zum ersten physikalischen Prozessorkern gehören, die log. Proz. 2 und 3 zum zweiten und so fort. Vermutlich wird diese Reihenfolge vom Betriebssystem festgelegt. Unter Linux oder MacOS kann das anders sein. Ich weiß es nicht.
Wenn der Taskmanager auf einem Rechner mit 4 logischen Prozessoren 25% Auslastung anzeigt, läuft mit ziemlicher Sicherheit nur ein (voll ausgelasteter) Thread.
Warum der Thread dann nicht nur auf einem log. Proz. läuft? Die Zuteilung übernimmt das Betriebssystem. Und wenn man sich ansieht, wie viele Programme/Dienste/Prozesse auf einem Computer (selbst bei einem C64) gleichzeitig laufen, wird klar, dass die exklusive Nutzung eines (logischen) Prozessors nur durch ein Programm ein ziemlicher Luxus wäre und auf single-Proz-Rechnern die Wirkung eines Programmabsturzes hat (Schon mal im Taskmanager ein Programm auf Prioritätsstufe Echtzeit gestellt?    ).

Übrigens scheint es egal zu sein, ob ein Single-Thread-Programm auf einem bestimmten Prozessor läuft oder auf allen nur teilweise.
Antwort auf die Fragen 1 und 2 also: Nein, der Job wird auf die gerade freien Prozessorressourcen verteilt.
Zu Frage 3: mMn ist es für ein single-threaded-laufendes Programm (bspw. Komodo 5) unerheblich, ob HT aktiviert ist. Es entsteht ja keine Situation, in der das Programm parallel (und auf einem Core) ausgeführt wird.

Die von Ingo B. beschriebene Aufteilung zunächst auf physikalische Prozessoren (Muss man dafür das BS vielleicht besonders konfigurieren?) habe ich ausdrücklich nicht beobachten können. Sollte damit gemeint sein, dass die 2 Threads eines Programms automatisch auf die logischen Prozessoren 0 oder 1 - für Thread 1 - sowie 2 oder 3 - für Thread 2 - verteilt werden, müsste ich dem im Hinblick auf die Anzeige des Taskmanagers für Windows 7 und Windows 8.1 gründlich widersprechen, wenn damit impliziert sein soll, dass die Threads dann auch ausschließlich auf diesen logischen Prozessoren oder physikalischen Cores weiterlaufen.
Für Windows 8.1 und meine i3-CPU bleibe ich auch bei meiner Aussage, dass es unter Leistungsgesichtspunkten besser ist, nicht mehr Threads als (physikalische) Cores vorhanden sind zu nutzen und diese Threads explizit verschiedenen physikalischen Cores zuzuweisen, weil Windows die Threads sonst durch alle logischen Prozessoren bedienen lässt. - Eben noch einmal mit Rybka 3 (nutzt bekanntlich Prozesse und nicht Threads) geprüft, dass mit 4 logischen Prozessoren langsamer (=weniger Knoten) läuft als mit 2 logischen Prozessoren auf verschiedenen Cores. (Rybka 3 läuft mit 2 Prozessen ohne explizite Zuteilung von logischen Prozessoren unterschiedlicher Cores auch erkennbar langsamer als mit.)

Viele Grüße
Th. Plaschke
Parent - - By Ingo B. Date 2014-07-29 11:57
Thomas Plaschke schrieb:

...
Die von Ingo B. beschriebene Aufteilung zunächst auf physikalische Prozessoren (Muss man dafür das BS vielleicht besonders konfigurieren?) habe ich ausdrücklich nicht beobachten können. Sollte damit gemeint sein, dass die 2 Threads eines Programms automatisch auf die logischen Prozessoren 0 oder 1 - für Thread 1 - sowie 2 oder 3 - für Thread 2 - verteilt werden, müsste ich dem im Hinblick auf die Anzeige des Taskmanagers für Windows 7 und Windows 8.1 gründlich widersprechen, wenn damit impliziert sein soll, dass die Threads dann auch ausschließlich auf diesen logischen Prozessoren oder physikalischen Cores weiterlaufen....


Wiedersprechen kannst du natürlich, aber testen ist besser: Wenn du einfach mal eine CPU mit 2 "echten" und 2 HT Kernen nimmst (bei der HT eingeschaltet ist - oder 4 + 4 oder 1 +1), dann eine Engine alleine mit einem Threads laufen läßt (ein paar Minuten, gerne auch mehrmals), dir die Knoten notierst, dann ins Bios gehst, HT ausschaltest und obigen Test wiederholst, wirst du feststellen, das die erreichten Knoten sich de Fakto nicht unterscheiden*. Das OS (W7+/Linux) bevorzugt automatisch ECHTE Kerne.
Zumindest war das bei meinem i7 920 so, seit dem habe ich obigen Test nicht mehr durchgeführt - allerdings gehe ich davon aus das es nicht schlechter geworden ist.
Mit XP meinte ich übrigens XP64 was ein Server 2003 war. Da war das übrigens anders, das hat damals zwar immer zuerst einen echten KErn benutzt, danach aber duchaus mal einen echten und einen HT Thread wenn man zwei Threads einer Engine benutzt hat. Bei einem 920 mit 8 möglichen Threads hat XP64einer Engine mit 4 Threads manchmal 2 Echte und 2 HT Threads oder 4 Echte oder auch 3 + 1 gegeben - das gab interessante Effekte, bis ich HT abgeschaltet habe (dann konnte ich auch höher OC).

Ich kann das heute nicht mehr wiederholen, da ich keine HT CPU mehr habe (ausser einen ATOM 330 mit Linux), aber wie gesagt, verschlechtert hat sich das wahrscheinlich nicht.

Gruß
Ingo

* Extrem niedrige einstellige % Schwankungen aus anderen Gründen sind immer mal möglich. Die leigen allerdings weit unterhalb des möglichen "Verlustes" eines HT gegenüber einem "vollen" Kern.
Parent - - By Ingo B. Date 2014-07-29 12:28
Noch eine interessante Sache.

Wenn du auf einem 2 + 2 System 4 mal eine Single engine startest, solltest du 4 mal die gleiche Knotenzahl bekommen weil dann der Scheduler die 4 Engines auf den CPUs hin und her schiebt. Nimmst du nur eine Engine passiert aber obiges Szenario.

Interessant, schade das ich das nicht mehr nachprüfen kann ...

Gruß
Ingo
Parent - - By Benno Hartwig Date 2014-07-29 13:18

> Wenn du auf einem 2 + 2 System 4 mal eine Single engine startest, solltest du 4 mal die gleiche Knotenzahl bekommen...


Kann ich mal testen.
Mich interessiert dann auch, wie es bei 3 gestarteten 1-Thread-Engines aussieht.
Ist dann zu erwarten, dass alle ungefähr gleich schnell sind?
Oder sollte eine (besonders glückliche) Engine dabei sein, die deutlich schneller ist als die anderen beiden?

Benno
Parent - - By Dirk Triebel Date 2014-07-29 13:51 Edited 2014-07-29 14:00
Servus,

ich kann die Sache von Ingo oben bestätigen, jedoch nur wenn ich mit den physikalischen Kernen rechne (und HT aktiv ist). Die Knotenzahlen sind bei mir dann identisch.

Wenn ich die HT Threads mit dazu nehme, z.b. bei 4 + 4 jede engine mit 1 thread rechnen lasse gab es bei mir damals Probleme und die Knoten waren nicht gleichmäßig verteilt. Sprich eine engine hat in gleicher STellung mit mehr und die andere mit weniger Knoten gerechnet (die zuletz zugeteilte weniger). Aber vielleicht wurde das auch bei den neuen Prozessoren angepasst u die Zuteilung verbessert, dass müsste man mal testen.

Das würde die These belegen, dass 1. ein Kern zugewiesen wurde am Anfang und 2. die Zuweisung zuerst mit realen Kernen gewährleistet wird.

Noch eine Sache zum Turbo Boost. Soweit ich weiß, wird bei Intel das turbo boost gleichmäßig auf alle Kerne verteilt. Bei AMD soll das wohl nicht der Fall sein. Und das turbo boost läuft nur, wenn nicht die gesamte Prozessorleistung (z.B. 8threads bei I7) ausgelastet sind - dafür ist es ja gemacht um die Reserven zu mobilisieren. Ab bestimmter Temp. und anderen Parametern die ich nicht weiiß schaltet es dann auch wieder ab, das ist das Problem.

Gruß,
Dirk
Parent - By Ingo B. Date 2014-07-29 15:13
Dirk Triebel schrieb:

ich kann die Sache von Ingo oben bestätigen, jedoch nur wenn ich mit den physikalischen Kernen rechne (und HT aktiv ist). Die Knotenzahlen sind bei mir dann identisch.


Yup, so soll es sein.

Dirk Triebel schrieb:

Wenn ich die HT Threads mit dazu nehme, z.b. bei 4 + 4 jede engine mit 1 thread rechnen lasse gab es bei mir damals Probleme und die Knoten waren nicht gleichmäßig verteilt. Sprich eine engine hat in gleicher STellung mit mehr und die andere mit weniger Knoten gerechnet (die zuletz zugeteilte weniger). Aber vielleicht wurde das auch bei den neuen Prozessoren angepasst u die Zuteilung verbessert, dass müsste man mal testen.


Das spricht dafür das dein Prozess Scheduler nicht gleichmäßig verteilt hat und am Schluß, bei den "langsamen" Engines die "HT-Kerne" in gebrauch kamen. Ein bisschen seltsam, aber in sich logisch. (Selbst in diesem Fall wäre Bennos ursprünglicher Testaufbau korrekt).

Dirk Triebel schrieb:

Das würde die These belegen, dass 1. ein Kern zugewiesen wurde am Anfang und 2. die Zuweisung zuerst mit realen Kernen gewährleistet wird.


Yup.

Das mit den 3 Thread bei 2 echten und 2 HT Kernen wäre noch mit einer modernen CPU und W7, beeeser W8.1, interessant (Scheduler). Das sollte halbwegs gleich verteilt werden, aber eben einer der drei gleichzeitigen Engines langsamer als eine wirklich einzelne Engine sein.

Dieser ganze Heckmeck ist der Grund, warum ich schon seit i7-920 keine Intel HT CPU mehr gekauft habe. Ich schalte sie sowieso ab, weil man nie ganz sicher sein kann was gerade los ist und ich mehr OC Potential habe und dann kann ich gleich die billigere CPU ohne HT nehmen ...

Gruß
Ingo
Parent - - By Thomas Plaschke Date 2014-07-29 14:19
Ingo B. schrieb:
...
Wiedersprechen kannst du natürlich, aber testen ist besser: Wenn du einfach mal eine CPU mit 2 "echten" und 2 HT Kernen nimmst (bei der HT eingeschaltet ist - oder 4 + 4 oder 1 +1), dann eine Engine alleine mit einem Threads laufen läßt (ein paar Minuten, gerne auch mehrmals), dir die Knoten notierst, dann ins Bios gehst, HT ausschaltest und obigen Test wiederholst, wirst du feststellen, das die erreichten Knoten sich de Fakto nicht unterscheiden*. Das OS (W7+/Linux) bevorzugt automatisch ECHTE Kerne.
...
Ich widerspreche, weil ich getestet habe. Zur Testmethodik. Ich habe die Engines nur eine Minute lang laufen lassen. Und halte das für vertretbar, wenn der Unterschied bereits im 2-stelligen Prozentbereich liegt. Da teste ich lieber 5 mal eine Minute statt einmal 5 Minuten. - Es geht ja nur um die CPU-Leistung im Parallelbetrieb und nicht um Erkenntnisse über die Schachengines.

Den gewünschten Test kann ich, so wie die Testbedingungen dazu hergestellt werden sollen, nicht durchführen. Der i3 ist in einem Windows 8.1-Subnotebook, das keinen Zugang zum BIOS erlaubt. - Ätzend!

Eine Nachfrage: Mir ist der Begriff "echter" Kern oder "voller" (=vollwertiger?) Kern im Zusammenhang mit HT nicht geläufig.   Was ist darunter zu verstehen?

Viele Grüße
Th. Plaschke
Parent - - By Ingo B. Date 2014-07-29 15:05
Thomas Plaschke schrieb:

...Ich widerspreche, weil ich getestet habe. ...


Ok, das wiederspricht zwar auch dem was Dirk T. oben auch getestet hat (und dem was man erwarten würde), aber einer von euch beiden hat Unrecht. Ich würde nicht auf Dirk tippen . Nachdem du aber ein NB hast bei dem sich HT nicht wirklich abschalten läßt würde mich das auch nicht mehr wundern (brings zurück zum Händler!)

Was du aber testen kannst ist: EINEN K5 mit 512 MB Hash starte, 1 min warten, Knoten notieren. Rechner neu starten, gleichzeitig 4 mal K5 mit 512 MB Hash starten, 1 min warten Knoten notieren. Deine Knoten für die 4 x K5 MÜSSEN niedriger sein als für den einen K5 ist das der Fall bestätigt das eher meine Darstellung, ist das nicht der Fall hat deine CPU kein HT sondern echte (!) Kerne . Vielleicht hast du ja ein NB mit einem echten i5 und nicht der Notebook Variante - und vielleicht kannst du deswegen kein HT ausschalten und vielleicht hast du dann einfach Glück gehabt (oder Pech, wegen dem Energieverbrauch) ...


Eine Nachfrage: Mir ist der Begriff "echter" Kern oder "voller" (=vollwertiger?) Kern im Zusammenhang mit HT nicht geläufig.   Was ist darunter zu verstehen?


Nun ja, sollte eigentlich fast selbsterklärend sein. Bei Intel hat du volle Leistung auf einem Kern (vollwertig). Kommtt HT hinzu kann so flapsig von einem nicht vollwertigen Kern sprechen, weil dieser eben nicht die gleiche Leistung bringt wie der "echte".

Gruß
Ingo
Parent - - By Thomas Plaschke Date 2014-07-29 21:16
Also das wird mir jetzt zu viel Schreiberei.

Ich habe einen i3 im Subnotebook und einen i5 im Desktop-PC. Ich weiß das.

Um noch mal auf den Punkt zu kommen: Ich habe versucht zu erklären, warum der Einsatz von HT heikel  ist und sogar die Knotenleistung sinken kann.

Den zuletzt angeregten Test, führe ich nicht durch, weil ich auch genau das beschriebene Ergebnisse erwarten würde.

Statt dessen habe ich Komodo 5 2x laufen lassen (Komodo 5 A und B = K5A und K5B) und jeder Instanz unterschiedliche logische Prozessoren zugewiesen. Gleiche Teststellung wie in einem meiner vorigen Beiträge. Genommen wurde die Knotenleistung zum 21. Halbzug (nach ca. 1 Minute). Jeder Test lief unter Arena 3.5 3mal. Den mittleren Wert habe ich verwendet. Die Zuweisung der logischen Prozessoren erfolgte mittels Taskmanager. Die Zuordnung "t01 + t23" bedeutet, dass der einen Engine die logischen Prozessoren 0 und 1 und der anderen die logischen Prozessoren 2 und 3 zugewiesen wurden. Ab Test 7 eine einzelne Engine zum Vergleich. Gezeigt werden soll, welchen Einfluss HT auf die Rechenleistung von Threads hat.

   Zuordnung     Werte in kN/s   Bemerkung
   log. Proz.     K5A   K5B

1. t0-3+t0-3      669   669      Keine explizite Zuweisung auf log. Proz.
2. t01 + t23      770   767      Die Engines liefen auf den log. Proz. ihres "eigenen" Cores.
3. t0  +  t2      763   765      Jede Engine lief nur auf einem log. Proz. eines Cores.
4. t1  +  t3      764   766      Jede Engine lief nur auf einem log. Proz. eines Cores. Wie bei 3., aber auf dem anderen log. Proz.
5. t02 + t13      628   626      Jede Engine lief auf den log. Proz. beider Cores. Die Engines teilten sich also anders als bei 2. jeweils einen Core mit der anderen Engine.
6. t0  +  t1      275   276      Die Engines nutzten jeweils eine logische CPU des gleichen Cores. Sozusagen der Stresstest für HT.
7. t13            772   ---      Die Engine nutzt jeweils 1 log. CPU beider Cores. Vgl. mit 5. K5B.
8. t12            766   ---      Die Engine nutzt jeweils 1 log. CPU beider Cores.
9. t03            770   ---      Die Engine nutzt jeweils 1 log. CPU beider Cores.
10. t23           771   ---      Die Engine nutzt beide log. CPU eines Cores.
11. t2            765   ---      Engine auf nur einer log. CPU. Verwendet wird eine log. CPU des 2. Cores um dem möglichen Einwand, der 1. Core werde vom Betriebssystem häufiger/stärker ausgelastet zu begegnen.
12. t0-3          769   ---      Normalbetrieb. Programm läuft auf allen log. CPUs.


Die Szenarien der Tests 1, 5 und 6 zeigen, wo das Problem der Verwendung von HT ist. Bei diesen Tests konnte es passieren, dass die andere log. CPU, auf der die andere Engine lief, Wartepflichten auslöste. Resultat: weniger Knoten.
Die Tests sagen nichts über die Auswirkung auf multithreaded laufende Engines. Ev. kann der Suchalgorithmus die Einbußen kompensieren. Das könnte man an der Rechentiefe ablesen oder an der Lösegeschwindigkeit für eindeutige Testpositionen. Oder man lässt zigtausend Partien absolvieren und rätselt über das Ergebnis. (Ich weiß, das war gemein, Benno!) Ich werde das eine nicht tun und das andere nicht wieder.

So, aber genug jetzt. Ich schalte erst mal ab.

Viele Grüße
Th. Plaschke

P.S.1: Übrigens gibt es laut Wikipedia Turbo-Boost erst ab i5 bzw. i7. Der i3 von Benno Hartwig und der meinige haben kein Turbo-Boost (siehe Artikel und Feature-Liste der Intel-Prozessoren).
P.S.2: Die obigen Tests zeigen auch, dass es keine "echten" Kerne gibt (der Umkehrschluss, der mich bei diesem Begriff irritiert, ist, dass es dann auch "unechte" Kerne geben müsste). Die log. CPUs (so werden sie, glaube ich, im Windows 8-Taskmanager bezeichnet) sind völlig gleichwertig (s. Test 3 und 4). Es spielt nur eine Rolle, zu welchem Core sie gehören.
Parent - By Dirk Triebel Date 2014-07-30 00:09
Hallo,

Dein Test verblüfft mich und kann ich mit dem I7 nicht bestätigen. Allerdings hab ich auch nicht explizit zugeteilt so wie du. Vielleicht liegt es ja gerade an der Zuteilung, die er dann nicht mehr kompensieren kann. Ich denke nicht, dass das OS im Normalbetrieb solche Zuteilungen machen würden wie du sie geschaffen hast, oder hast Du das schon mal beobachtet? Wenn das so wäre müssten ja immer unterschiedliche Testergebnisse u extreme Streuungen herauskommen im Normalbetrieb. Ich kann das auch nach mehreren Tests hintereinander nicht vom I7 sagen. Beim I3 weiß ich net.

Gruß,
Dirk
Parent - - By Dirk Triebel Date 2014-07-29 23:11 Edited 2014-07-29 23:23
Anbei auch nochmal 2 Testreihen von mir um die Behauptungen zu belegen. Getestet wurde von Ausgangsstellung je 1min, Hash immer 512Mb; Test Gui Shredder classic 4; System wurde nach jedem Test neu gestartet; Angaben in [KN/s]

1. CPU I7-2670 QM 2,2Ghz (Windows7) mit HT u Turboboost aktiv:

1 thread pro engine u eine engine nacheinander geladen (nach jeweils Neustart)

Komodo 7a = 1026
Stockfish 5= 1225
Houdini 4 = 1808

1 thread pro engine u 4 engine geladen (also 4 threads parallel genutzt)

Komodo 7a = 815
                    800
                     812
                    796
Stockfish 5= 960
                     960
                     959
                     956
Houdini 4 = 1384
                   1378
                   1381
                    1382
-->sehr genau Ergebnisse!!!

1 thread pro engine u 8 engine geladen (also 8 threads parallel genutzt), nur mit Komodo repräsentativ getestet-->hier sieht man dann leichte Abweichungen:

Komodo 7a = 591
                    587
                    586
                    582
                    576
                    584
                    579
                    566
-->hier ein paar Ausreißer!!!

4 thread pro engine u 1 engine geladen (um Benno seine Thesen zu belegen (allerdings für meinen I7):
Komodo 7a = 3521

8 thread pro engine u 1 engine geladen
Komodo 7a = 4737

2. Rechner CPU I7-4700 MQ 2,4Ghz (Windows8.1) mit HT u Turboboost aktiv (die gleichen Tests):

1 thread pro engine u eine engine geladen

Komodo 7a = 1338
Stockfish 5= 1575
Houdini 4 = 2341

1 thread pro engine u 4 engine geladen (also 4 threads parallel genutzt)

Komodo 7a =993
                   1001
                   1009
                   1005

Stockfish 5= 1205
                    1197
                    1195
                    1201
 
Houdini 4 = 1733
                  1750
                  1773
                  1737
-->ebenso sehr genau Ergebnisse!!!

1 thread pro engine u 8 engine geladen (also 8 threads parallel genutzt), nur mit Komodo repräsentativ getestet:

Komodo 7a = 676
                    683
                    690
                    690
                    687
                    686
                    681
                    681 
--->erstaunlich genau mit W8.1!!!

4 thread pro engine u 1 engine geladen (um Benno seine Thesen zu belegen (allerdings für meinen I7):
Komodo 7a = 4346

8 thread pro engine u 1 engine geladen
Komodo 7a = 5325

Fazit: These bestätigt bei HT on und Benutzung 4threads sehr genaue Ergebnisse (sogar mit Turbo boost on (da es sich auf alle Kerne gleichmäßig verteilt)). Bei W8.1 Zuteilung noch ein bisschen besser als bei W7.
Beim Test von 4threads gegen 8 threads sind die 8 threads bei beiden Systemen eindeutig stärker.

P.s: sorry für die schiefen Zeilen, ist schon spät.

Gruß,
Dirk
Parent - - By Thomas Plaschke Date 2014-07-30 02:20
Das scheint sich ja mit meinen Erfahrungen zu decken.

Hat die Engine freie Wahl (1 Engine), bringt sie die höchste Leistung. Gibt es Konkurrenz (4 Engines), mit denen sie sich die Ressourcen teilen muss, gibt's einen Leistungseinbruch. Beim i7 vermutlich deswegen relativ höher, weil die Engines zwar rechnerisch auch 2 log. CPUs zur Verfügung haben wie beim i3. Die Wahrscheinlichkeit ist aber geringer, dass eine Engine immer nur auf einem Core, ungestört von anderen Engines, läuft. Mit 8 Engines dann der Einbruch. Immerhin noch mehr als die Hälfte der ursprünglichen Leistung.

Wenn ich einen Test anregen dürfte: Was kommt heraus, wenn der Test mit den 4 Komodo 7a-Engines wiederholt wird? Dieses Mal aber mit Zuordnung der Engines auf einen Core. Also Engine 1 auf die log. CPUs 0 und 1 und so fort.
Ich würde für den i7-4700 ca. 1.250 kN/s erwarten.
Auf meinem i5 war das der relative Leistungsabfall (ca. 6%) von Stockfish 5 als einziger Engine zu 4x Stockfish 5 (1.740 zu 1.635 kN/s).

Viele Grüße
Th. Plaschke
Parent - - By Ingo B. Date 2014-07-30 06:54
Thomas Plaschke schrieb:

....
Wenn ich einen Test anregen dürfte: Was kommt heraus, wenn der Test mit den 4 Komodo 7a-Engines wiederholt wird? Dieses Mal aber mit Zuordnung der Engines auf einen Core. Also Engine 1 auf die log. CPUs 0 und 1 und so fort.
...


Wie viele Knoten herauskommen kann ich nicht sagen, aber er sollte mit seinen 8 "logischen" Kernen 4 schnelle und 4 langsame Komodos bekommen. Bei Nichtzuweisung der Kerne, was eher Praxistauglich ist, macht das OS einen Mischbetrieb und alle fallen ab. Bei Zuweisung sollte er 4 Enignes mit (fast) Originalgeschwindigkeit und 4 Engines unter der Geschwindigkeit des Mischbetriebs bekommen.
Die Kerne sind nicht gleichwertig (auch wenn das OS das mit seinen Prozentzuteilungen behauptet)!

Gruß
Ingo
Parent - - By ? Date 2014-07-30 10:48
Meine Antwort richtete sich an Dirk Triebel. Die Anregung eines weiteren Tests auch, weil er durch seine Vorarbeit ja bereits eine "normierte Testplattform" hat.
Ingo B. schrieb:
...
Wie viele Knoten herauskommen kann ich nicht sagen, aber er sollte mit seinen 8 "logischen" Kernen 4 schnelle und 4 langsame Komodos bekommen.
...
Tut mir leid, wenn der nicht zutreffende Eindruck entstanden ist, dass ich danach gefragt habe.

Ingo B. schrieb:
...
Bei Nichtzuweisung der Kerne, was eher Praxistauglich ist, macht das OS einen Mischbetrieb und alle fallen ab.
...
Das würde ich auch erwarten.

Ingo B. schrieb:
...
Bei Zuweisung sollte er 4 Enignes mit (fast) Originalgeschwindigkeit und 4 Engines unter der Geschwindigkeit des Mischbetriebs bekommen.
...
Das zu klären, regte ich einen weiteren Test an. Unsere Erwartungen bezüglich der Knotenleistung decken sich.

Ingo B. schrieb:
...
Die Kerne sind nicht gleichwertig (auch wenn das OS das mit seinen Prozentzuteilungen behauptet)!
...
Wo kann man das nachlesen? Ich habe mir gestern fast einen Wolf gegoogelt, um Informationen dazu zu bekommen. Und zumindest beim i3 gibt es keinen erkennbaren Unterschied zwischen den beiden Ausführungspfaden eines Cores.

Viele Grüße
Th. Plaschke
Parent - - By Ingo B. Date 2014-07-30 12:18
[quote="?"]
...
Ingo B. schrieb:
...
Die Kerne sind nicht gleichwertig (auch wenn das OS das mit seinen Prozentzuteilungen behauptet)!
...
Wo kann man das nachlesen? Ich habe mir gestern fast einen Wolf gegoogelt, um Informationen dazu zu bekommen. Und zumindest beim i3 gibt es keinen erkennbaren Unterschied zwischen den beiden Ausführungspfaden eines Cores.
...


Das ist glaube ich der Punkt an dem wir aneinander Vorbeireden. Wenn du mir im obigen praktisch überall zustimmst, liegt für mich die "Ungleichheit" offensichtlich auf der Hand. Da verstehe ich nicht was man da nachlesen will, insbesondere weil Dirk die Ungleichheit in seinen Ergebnissen schon stehen hat ...?

... und was die "Ausführungspfaden eines Cores" betrifft: Der i3 hat auch nur echte Kerne und kein HT (wenn ich die richtigen Spezifikationsseiten aufgerufen habe), wir vergleichen aber doch CPUs mit echten und HT Kernen. Der i3 ist da aussen vor.

Gruß
Ingo
Parent - - By Thomas Plaschke Date 2014-07-30 14:36
Zu meinem i3-3227U: Das Ergebnis zu Nr. 5 und besonders zu Nr. 6 meiner "Test-Suite" kann ich nicht anders erklären als durch negative Auswirkungen von HT.
Ich habe die Tests 5 und 6 deswegen noch mal wiederholt.

Während Nr. 5 (die Engines teilten sich jeweils einen Core mit der anderen Engine) das Wertepaar 624 und 622 ergab und damit das gestrige Ergebnis bestätigte, wich das Ergebnis zu Nr. 6 (die Engines nutzten jeweils eine logische CPU des gleichen Cores) drastisch ab: 482 und 485 lauten die neuen Werte (Was ich da gestern gemessen habe, ist mir schleierhaft.). Die heutigen Werte liegen relativ auch näher an den von Dirk Triebel in seinem HT-Stresstest ermittelten Werten (ca. 62% zu ca. 57% und 51%). Fallen aber immer noch deutlich gegenüber allen anderen Testkonfigurationen ab.

Was sonst als HT kann dafür die Erklärung sein? Das gleiche Phänomen (Einbruch der Rechenleistung bei Nutzung aller logischen CPUs) hat Dirk Triebel auf seinen i7-Rechnern ähnlich beobachtet und hier dokumentiert. Bei meinem i5-3570K (4 Kerne, kein HT) tritt ein ähnliches Verhalten nicht auf.

Ich würde aufgrund dieser Sachlage beim Einsatz von HT für die jeweilige Engine prüfen, ob ihre Spielstärke von den durch HT zusätzlich möglichen Threads wirklich profitiert.

Viele Grüße
Th. Plaschke

P.S.: Laut Intel hat mein i3-3227U 2 Kerne mit HT und kein Turbo-Boost. Laut ark.intel.com und der Wikipedia-Liste der Intel-Core-i-Prozessoren haben alle i3 aller Intel-Prozessor-Generationen (jetzt die 4.) HT.
Parent - - By Ingo B. Date 2014-07-30 16:19
Thomas Plaschke schrieb:

...Das gleiche Phänomen (Einbruch der Rechenleistung bei Nutzung aller logischen CPUs) hat Dirk Triebel auf seinen i7-Rechnern ähnlich beobachtet und hier dokumentiert.


Dann sind die Kerne also nicht gleichwertig ...

Thomas Plaschke schrieb:

Bei meinem i5-3570K (4 Kerne, kein HT) tritt ein ähnliches Verhalten nicht auf.


Kein HT ... logisch ...

Thomas Plaschke schrieb:

Ich würde aufgrund dieser Sachlage beim Einsatz von HT für die jeweilige Engine prüfen, ob ihre Spielstärke von den durch HT zusätzlich möglichen Threads wirklich profitiert.


Genau das war die Frage. Lt. Bennos Test profitiert Stockfish aber Houdini nicht. Ich selber glaube es hängt auch ein wenig an der Implementation, im ganzen ist es mit einer modernen CPU wohl ein Nullsummenspiel bei verwendung aller Kerne. Für Singletest ist es immer noch eine mehr als fragwürdige Lösung!

Thomas Plaschke schrieb:

P.S.: Laut Intel hat mein i3-3227U 2 Kerne HT. Laut ark.intel.com und der Wikipedia-Liste der Intel-Core-i-Prozessoren haben alle i3 aller Intel-Prozessor-Generationen (jetzt die 4.) HT.


Stimmt, da habe ich wohl wass falsch gelesen. Ein starkes Stück von Intel finde ich allerdings, das Sie unter dem Namen i3 CPUs mit 2 Kernen und 4 Threads verkaufen - unter dem Namen i5 auch (Mobile Varianten). Da soll man noch durchblicken! (AMDs Namenskonventionen sind aber keinen Deut besser!)

Gruß
Ingo
Parent - By Thomas Plaschke Date 2014-07-30 18:33
Das Missverständnis in Bezug auf "gleichwertig" scheint sich jetzt aufzulösen.

Ich interpretierte den Begriff aus technischer Sicht. Ein i7 stellt 8, technisch gleich ausgeführte Ausführungspfade (Intel sagt Threads dazu - kann verwirren, den jetzt geht's erst mal nur um die Hardware), die à 2 Stück auf 4 Kerne verteilt sind zur Verfügung. Ein i3 bringt 4 à 2 auf 2 Cores.

Für den optimalen Einsatz der Software ist aber nicht egal, auf welchen Hardware-Threads die (Software-)Threads laufen. Insoweit sind nicht alle Ausführungspfade/Hardware-Threads/log. CPUs gleichwertig. Punkt.

Ich glaube, jetzt haben wir's, oder?

Viele Grüße
Th. Plaschke

P.S.: Auf den HT-i5 wäre ich beinahe rein gefallen. "Prima, wie im Desktop-PC: kein HT", dachte ich! Aber dann ... Und i7 mit 2 Cores und 4 Threads gibt's auch noch!
Parent - - By Dirk Triebel Date 2014-07-30 20:55 Edited 2014-07-30 21:13
Hallo Thomas,

ich denke es geht nicht darum nachzuweisen ob bei gewissen Konstellationen (also dein nicht praxisbezogener Test) HT Einfluss auf Rechenergebnisse hat , die Du im Grunde auch schon belegt hast. Die Prozessorarchitektur ist so komplex, das im Netz auch nichts exakt zu finden. Daher sollte man die Prozesse für die Anwendungen nicht explizit zuweisen und das System das machen lassen, da dann gute Ergebnisse rauskommen (zumindest ab W7).

Für mich waren 2 Dinge zu testen:

1. ob die Knotenleistungen stabil bleiben für mehere engines - wurde bewiesen bis 4 CPUs parallel (siehe 1. Test von mir)

2. ob (und worum es in dem Thread ja geht) Benno seine Behauptung/ These stimmt. Ich habe gerad noch mal Tiefenmessungen bis 25 von Ausgangsstellung mit den 2 Rechnern gemacht und der engine Komodo 7a mit 4 u 8 CPU mit erstaunlichen Ergebnissen:

1. CPU I7-2670 QM 2,2Ghz (Windows7) mit HT u Turboboost aktiv:

4CPU Zeit = 8:28 min
8CPU Zeit = 11:18 min

2. Rechner CPU I7-4700 MQ 2,4Ghz (Windows8.1) mit HT u Turboboost aktiv (die gleichen Tests):
4CPU Zeit = 5:39 min
8CPU Zeit = 5:31 min

Vielleicht teste ich das noch mal für andere engines. Aber es ist zu erkennen, das es jeder für sich testen muss und mehr Knoten nicht autom. mehr Tiefe bedeuten. Mich hat das Ergebnis bei beiden überrascht. Aber die Taktfrequenz scheint hier doch besser für Tiefe zu sein (in Form des Turboboosts).

Noch eine Sache zur Zuteilung. Ich habe mal geschaut welche Threads gerade im Einsatz waren bei Zuteilung verschiedener CPUs:

1. CPU I7-2670 QM 2,2Ghz (Windows7) mit HT u Turboboost aktiv:

bei 1CPU -->4 threads im Einsatz
bei 2CPU -->5 threads im Einsatz
bei 4CPU --> 8 threads im Einsatz

2. Rechner CPU I7-4700 MQ 2,4Ghz (Windows8.1) mit HT u Turboboost aktiv (die gleichen Tests):

bei 1CPU -->8 threads im Einsatz
bei 2CPU -->8 threads im Einsatz
bei 4CPU --> 8 threads im Einsatz

Man kann hier deutlich sehen, warum bei Win8 die Verteilung der Prozessorleistung exakter ist. Ebenso ist das auch die Erklärung für Deine schwankenden Ergebnisse.

Gruß,
Dirk
Parent - - By Ingo B. Date 2014-07-30 21:22
Dirk Triebel schrieb:

...
1. CPU I7-2670 QM 2,2Ghz (Windows7) mit HT u Turboboost aktiv:

4CPU Zeit = 8:28 min
8CPU Zeit = 11:18 min

2. Rechner CPU I7-4700 MQ 2,4Ghz (Windows8.1) mit HT u Turboboost aktiv (die gleichen Tests):
4CPU Zeit = 5:39 min
8CPU Zeit = 5:31 min
...


Oh je, Oh je ....

Jeden dieser Tests darft du mindests 10 mal wiederholen und du wirst 10 verschiedene Ergebnisse bekommen. Diese Ergebnisse kannst du Mitteln, dan hast du EIN Ergebniss für EINE Stellung mit EINER Engine. Die nächste Stellung kann anders aussehen und für die nächste Engien wieder anders ... da kommst du vom 100sten ins 1000ste ...
Dazu kommt noch, das K7a wohl eine andere Parallelimplementierung nutzt als andere, wieder ein Faktor der das Ergebniss ... zumindest sehr schwer bewerten läßt.

Kurz, was du jetzt testen willst ist TtD (time to depth) erschwert durch eine ungewöhnliche Engine + HT. Vergiss es!

Viel Spaß trotzdem
Ingo
Parent - By Dirk Triebel Date 2014-07-30 21:47
Du hast wahrscheinlich recht Ingo und das hab ich befürchtet, aber dachte schon bei den selben Bedingungen sollte das System u die Engine schon annährend das gleiche machen. Natürlich kann es bei ner anderen engine wieder anders sein.

hmm, dann probiere ich noch mal mit Stockfish und Houdini und schau mal was rauskommt.

Danke nochmal für deinen Tipp!

Gruß,
Dirk
Parent - By Ingo B. Date 2014-07-30 06:48
Dirk Triebel schrieb:

....
Fazit: These bestätigt bei HT on und Benutzung 4threads sehr genaue Ergebnisse (sogar mit Turbo boost on (da es sich auf alle Kerne gleichmäßig verteilt)). Bei W8.1 Zuteilung noch ein bisschen besser als bei W7.
...


... und es bestätigt das die (in deinem Fall 8) logischen CPUs eben NICHT völlig gleichwertig sind!

Da sich deine Erkenntniss mit meiner und dem i920 deckt, gehe ich davon aus das Thomas entweder etwas falsch macht oder wir aneinander vorbeireden.

Dirk Triebel schrieb:

....
Bei W8.1 Zuteilung noch ein bisschen besser als bei W7.
...


Ja, der Scheduler ist da wohl verbessert worden. (OT, die neuen AMDs laufen mit W8.1 auch etwas besser)

Dirk Triebel schrieb:

....
Beim Test von 4threads gegen 8 threads sind die 8 threads bei beiden Systemen eindeutig stärker.
...


Wenn du mit stärker meinst, das du höhere Knotenzahlen erreichst stimmt das. Ob die TTD (Time to Depth) wirklich besser ist ist die Frage ... allerdings hat Bennos Originaltest wohl eine Tendenz dahin. Ich schrieb es schon oben, mit einer modernen HT-CPU schadet es wohl nicht mehr. Zu mehr will ich mich noch nicht hinreißen lassen.
Für meine Tests, in denen ich viele Singleengines gegeneinander spielen lasse, ist HT jedenfalls auch heute noch völlig ungeeignet - aber so einen Quatsch macht man ja auch nicht

Gruß
Ingo
Parent - - By Benno Hartwig Date 2014-07-30 22:47

> Kommt HT hinzu kann so flapsig von einem nicht vollwertigen Kern sprechen


Das klingt so, als hätte man dann einen "guten" und einen "schlechteren" Kern.
Werden daraus nicht eher zwei schlechtere, die zusammen eben mehr Power bringen als ein Kern ohne HT?
Und: wenn nur einer dieser HT-Kerne arbeitet, ist das dann nicht immer noch ein eher "schlechter" Kern?

Benno
Up Topic Hauptforen / CSS-Forum / Hyperthreading noch mal
1 2 Previous Next  

Powered by mwForum 2.29.3 © 1999-2014 Markus Wichitill