Not logged inCSS-Forum
Forum CSS-Online Help Search Login
CSS-Shop Impressum Datenschutz
Up Topic Hauptforen / CSS-Forum / Schlechtwetterprogramm
- - By Roland Riener Date 2026-03-26 15:31
Hallo miteinander,

Finde diese skurrile Aufgabe recht unterhaltsam zum Nachspielen. Die Engines lösen unterschiedlich: Huntsman, Sting Black Hole und auch Rems zeigen flott #17, während andere zumindest den MV Modus benötigen.

M.A. Zinar, 2008, Gewinn



Grüße, Roland
Parent - - By Peter Martan Date 2026-03-26 18:00 Edited 2026-03-26 18:40 Upvotes 2
Außer den von dir genannten hätte ich unter denen, die das im Handumdrehen bis zum #17 durchrechnen, noch Crystal, CorChess, ShashChess und seinen kleinen HCE- Bruder Alexander  anzubieten. Bei ShashChess scheinen in den wenigen Versuchen, die ich nur gemacht habe, wieder die Full depth threads zu helfen, damit's besonders schnell geht. Dazu, weil's im anderen Thread Thema war, hätte ich noch an Info nachzureichen (hab' Andrea Manzo schon vor einer Weile gefragt, wollte dann aber den schon übervollen Thread nicht wieder aufwärmen), dass die FDTs einfach nur die LMRs abdrehen in den zugewiesenen Threads.
Die Studie ist nicht auf YACPDB aber natürlich schon in der HHdb.
Parent - By Roland Riener Date 2026-03-26 21:35
Peter schrieb:
Zitat:
Außer den von dir genannten hätte ich unter denen, die das im Handumdrehen bis zum #17 durchrechnen, noch Crystal, CorChess, ShashChess und seinen kleinen HCE- Bruder Alexander  anzubieten.

Nachträglich ist mir noch Critter mit schneller Lösung im Normalmodus aufgefallen:

5n1n/1p1p1pPp/1P1P1P1P/8/8/pp6/krpP1P2/qbK5 w - - 0 1
Analysis by OpenCritter v1.1.37:

1.gxf8S Sg6 2.Sxg6 hxg6 3.h7 g5 4.h8S g4 5.Sg6 fxg6 6.f7 g5 7.f8S g3 8.fxg3 g4 9.Se6 dxe6 10.d7 e5 11.d8S e4 12.Sc6 bxc6 13.b7 c5 14.b8S e3 15.dxe3 c4 16.Sc6 c3 17.Sb4#
  Weiß setzt Matt. 
  +- (#17)  Tiefe: 28/48   00:00:06  77486kN
Parent - - By Max Siegfried Date 2026-03-26 19:21
Für die Analyse echter Partien spricht nichts gegen MultiPV. Das verwenden alle Profis also kann man genauso gut die Engines mit MultiPV testen.
Was alle wollen ist eine möglichst tagesaktuelle Stockfish Dev. Kopie also möglichst die gleiche Spielstärke und zusätzlich möglichst viele Analyseeinstellmöglichkeiten.
So analysiert man mit Stockfishs Spielstärke aber die Analyse ist den Gegebenheiten angepasst.
Ein kleiner Nachteil ist, dass man ggf. etwas länger pro Zug warten muss, aber die Resultate sind das warten wert.
Meines Wissen nach kommt da nur ShashChess ran.

Ich verwende nicht grundlos Full Depth Threads.
Weiß zufällig jemand ob FDT immer der ersten besten Variante angehört bei MultiPV = 4 oder ob FDT immer hin und her springt oder ob FDT immer zur aktuell besten Variante springt?
Außerdem wäre interessant zu wissen was passiert, wenn man MultiPV = 4 und FDT = 4 verwenden und ShashChess z.B. 16 Kerne zur Verfügung hat.
Wird dann an 4 Varianten mit FDT = 4 CPU Kernen gerechnet und die restlichen 12 Kerne verteilen sich gleichmäßig @3 Kerne pro Variante und würde die Engine nicht somit gleichzeitig mit und ohne FDT die Varianten analysieren?

Ich überlege gerade ob ich mir anstatt dem Macbook M6 mit 20 Kernen @ 5 GHz Ende des Jahres nicht doch lieber das Mac Studio mit 40 CPU Kernen holen sollte?
Das würde deutlich mehr Einstellmöglichkeiten und Tests erlauben, FDT = 40 ist für Analysen vielleicht besser geeignet. Wer braucht schon eine Engine die heutzutage noch irgendetwas abschneidet?
Andererseits stört mich die RAM Knappheit. Der M3 ULTRA Chip (2x MAX Chip verbunden) war bis vor kurzem noch mit 512 GB RAM verfügbar. Das bedeutet auch das 256 GB RAM beim M3 MAX Chip im Macbook möglich wären.
Jetzt haben eigentlich alle darauf gewartet dass das Macbook M5 MAX mit 256 GB RAM erscheint und der Mac Studio mit 1024 GB RAM. Nur können wir bei der Krise davon ausgehen das der Mac Studio M5 ULTRA mit viel Glück seine 512 GB RAM erhält, was mir zu wenig ist und das MacBook M5 ULTRA ggf. seine 256 GB RAM.
Parent - - By Peter Martan Date 2026-03-26 19:32 Upvotes 1
Max Siegfried schrieb:

Ich verwende nicht grundlos Full Depth Threads.
Weiß zufällig jemand...


Warum schaust du dir nicht einfach den Code an?
Parent - - By Reinhold Stibi Date 2026-03-26 20:52
5n1n/1p1p1pPp/1P1P1P1P/8/8/pp6/krpP1P2/qbK5 w - - 0 1

Analysis by ShashChess 34.1 avx512 nnue HT: mit schnellem MiniPC ca.12000 kN/s aus der Grundstellung

1.gxf8S Sg6 2.Sxg6 hxg6 3.f4 g5 4.fxg5
  = (0.00)  Tiefe: 107/8   00:00:00  2378kN

1.gxf8S Sg6 2.Sxg6 hxg6 3.h7 g5 4.h8S g4 5.Sg6 fxg6 6.f7 g5 7.f8S g3 8.fxg3 g4 9.Se6 dxe6 10.d7 e5 11.d8S e4 12.Sc6 bxc6 13.b7 e3 14.dxe3 c5 15.b8S c4 16.Sa6 c3 17.Sb4#
  +- (#17)  Tiefe: 108/34   00:00:00  2778kN

Parent - By Peter Martan Date 2026-03-26 21:03 Edited 2026-03-26 21:17
Mit Alexander geht das aber auch single thread in 0"(357msec):

Alexander 8.2 GoldDigger by the Alexander developers (see AUTHORS file)
Avatar file name is empty. Skipping loading.
position fen 5n1n/1p1p1pPp/1P1P1P1P/8/8/pp6/krpP1P2/qbK5 w - - 0 1
setoption name Hash value 256
go mate 17
...
info depth 64 seldepth 34 multipv 1 score mate 17 wdl 1000 0 0 nodes 720269 nps 2017560 hashfull 12 tbhits 0 time 357 pv g7f8n h8g6 f8g6 h7g6 h6h7 g6g5 h7h8n g5g4 h8g6 f7g6 f6f7 g4g3 f2g3 g6g5 f7f8n g5g4 f8e6 d7e6 d6d7 e6e5 d7d8n e5e4 d8c6 b7c6 b6b7 e4e3 d2e3 c6c5 b7b8n c5c4 b8a6 c4c3 a6b4
bestmove g7f8n ponder h8g6

Und das war sogar nur ein schwacher Laptop- Thread von 1.3 GHz
Parent - - By Thomas Zipproth Date 2026-03-26 21:25
Peter Martan schrieb:

Warum schaust du dir nicht einfach den Code an?


Oder im AI Zeitalter einfach ein LLM fragen, z.B. Gemini?

Die FDT (Full Depth Threads) verhalten sich im MultiPV-Betrieb strukturell exakt so wie die normalen Threads, nur dass sie eine andere Such-Charakteristik haben. Im C++ Code von ShashChess lässt sich das gut an der Methode iterative_deepening() und der internen fullSearch-Variable ablesen.

1. Springt FDT immer zur ersten besten Variante oder hin und her?
Weder noch. In Stockfish-Derivaten (und somit auch ShashChess) iteriert jeder einzelne Thread in einer eigenen Schleife über alle eingestellten MultiPV-Linien (for (pvIdx = 0; pvIdx < multiPV; ++pvIdx)).
Ein FDT-Thread springt also nicht dynamisch zu der Variante, die gerade overall als die "beste" gilt. Stattdessen arbeitet er für seine aktuelle Suchtiefe stur PV1 ab, dann PV2, dann PV3, etc. – genau wie ein normaler Thread. Der einzige Unterschied: Bei den FDT-Threads ist intern das Flag fullSearch = true gesetzt. Dadurch überspringt der Thread im Suchbaum per goto-Befehl harte Pruning- und Reduction-Schritte (wie Null Move Pruning oder Late Move Reductions) und rechnet den Ast "Brute Force" durch.

2. Was passiert bei 16 Kernen, MultiPV = 4 und FDT = 4?
Es gibt keine feste Zuordnung im Sinne von "Kern 1 bis 4 machen nur Variante 1". Die Arbeitsverteilung läuft komplett asynchron über das sogenannte Lazy SMP.
Es passiert Folgendes:

-  12 Threads suchen "normal" (mit extremem Pruning, kommen dadurch sehr tief).
-  4 Threads suchen im FDT-Modus (Brute-Force, weniger tief, aber ohne Blinde Flecken).
Alle 16 Threads berechnen alle 4 Varianten.

Jeder der 16 Threads schaut sich PV1, PV2, PV3 und PV4 an. Sie tauschen ihre Erkenntnisse aber permanent über die gemeinsame Hashtabelle (Transposition Table / TT) aus. Wenn ein FDT-Thread bei Variante 2 eine Taktik findet, die ein normaler Thread durch Pruning weggeschnitten hätte, landet dieser genaue Wert (Bound/Score) in der TT. Kommt nun ein normaler Thread an dieselbe Stellung, sieht er den TT-Eintrag des FDT-Threads, bekommt einen "Fail High" oder "Fail Low" und korrigiert sofort seine Hauptlinie.

Fazit:
Deine Vermutung am Ende trifft zu. Die Engine analysiert die Varianten tatsächlich gleichzeitig mit und ohne FDT. Die normalen Threads rasen in die Tiefe und bauen den Hauptbaum auf, während die FDT-Threads im Hintergrund auf allen 4 MultiPV-Linien wie eine "taktische Versicherung" arbeiten und die flacheren Ebenen komplett lückenlos absichern.
Parent - - By Peter Martan Date 2026-03-26 21:33 Edited 2026-03-26 22:02
Thomas Zipproth schrieb:

Peter Martan schrieb:

Warum schaust du dir nicht einfach den Code an?

Oder im AI Zeitalter einfach ein LLM fragen, z.B. Gemini?

Danke für den Vorschlag, Thomas, aber ich hab' als BI (biologische Intelligenz) in dem Fall ja Andrea Manzo

Und wenn die AI von brute force schreibt, meint sie damit halt offenbar auch nicht das, was die meisten Schachprogrammierer darunter wörtlich verstehen würden, laut Andrea (daher auch der Name full depth), ist der wesentliche Unterschied, dass keine LMRs stattfinden. Wenn du "komplett lückenlos" schreibst, erwartest du dir auch eher zuviel in Hinblick auf das, was brute force machen würde und was die FDT- Option macht.
Du brauchst hingegen doch wirklich keine AI- Unterstützung, um das, was im Code steht, selbst zu verstehen. Schau mal rein, vielleicht erklärt mir Andrea auch noch einmal extra, inwieweit MPV allein auch schon weniger LMRs auf die zu primaries erhobenen Varianten anwendet, ich hab' ihn in der Sache allerdings eh damals schon unnötig gelöchert, weil er's ja wirklich ordentlich auch nur anhand von Code- Sniplets erklären kann, und die sind mir einfach zu hoch, von Max hingegen hätte ich mir doch wirklich erwartet, wenn er schon schreibt, "dass er nicht grundlos FDT verwendet", nur mit dem einzig wahren Grund zufrieden wäre, der da halt in der Kenntnis und dem Verständnis des enstsprechenden Codes bestünde. Ich bin ja zufrieden, wenn  ich sehe, wie sich welche Einstellung auf den Output in welcher Stellung auswirkt

Und ich sehe halt schon, wenn ich mir Output single thread mit FDT=1 und FDT=0 anschaue, dass der Unterschied nicht so groß ist, wie er sein müsste, wäre es wirklich brute force, was da gerechnet würde. Wie ich im anderen Thread schon schrieb, für mich ist das näher an der default- Suche als an brute force, nämlich bei der einen auf einem einzelnen thread (also deterministisch) laufenden einzelnen primary (MultiPV=1) variant, von der ich auch weiß, dass sie keine anderen Suchparameter in der Berechnung verwendet, als die zu primaries erhobenen MultiPrimaryVariants,
so what?
https://forum.computerschach.de/cgi-bin/mwf/topic_show.pl?pid=178334#pid178334
Peter Martan schrieb:

Also, das noch nachzutragen, single thread (avx512- compile, 4.3GHz, 1G Hash, Variety Psychological, Capablanca- Option, SyzygyProbeLimit=0):

6rk/2q4p/Rpbp4/4p3/1BPpPp1P/5Nb1/4Q1B1/6K1 b - - 0 1

Analysis by ShashChess 41.1 GoldDigger:

37...h6 38.Ta1 Ld7 39.Da2 Lg4 40.Da3 Lxf3 41.Dxf3
  Die Stellung ist ausgeglichen. 
  = (0.10)  Tiefe: 10/18   00:00:00
...
37...Tg7 38.Dd3 Dd8 39.h5 h6 40.Ta2 Kg8 41.Kf1 Le8 42.Da3 Dc8 43.Lxd6 Dxc4+ 44.Kg1 Lxh5 45.Td2 Lxf3 46.Lxf3 De6 47.Da2 Lh4+ 48.Kf1 Dxa2 49.Txa2 Lf6 50.Tb2 Kh7 51.Txb6 d3 52.Lc5 Tc7
  Weiß steht besser. 
  +/- (0.88)  Tiefe: 26/48   00:00:14  22169kN
37...Le8
  Weiß steht besser. 
  +/- (0.81 ++) Tiefe: 27/40   00:00:15  23655kN
...
37...Le8
  Weiß steht etwas besser. 
  +/= (0.63 ++)  Tiefe: 27/52   00:00:15  24875kN
37...Le8 38.Ta8 Dc6 39.Td8 Dc7 40.Txd6 Lh5 41.Td5 Tg6 42.Df1 Lxf3 43.Dxf3 Lxh4 44.Dh3 f3 45.Dxf3 Dxc4 46.La3 Da2 47.Ld6 Db1+ 48.Kh2 Lg3+ 49.Dxg3 Txg3 50.Lxe5+ Kg8 51.Lxg3 Db2 52.Tg5+ Kh8
  Weiß steht etwas besser. 
  +/= (0.62)  Tiefe: 27/59   00:00:16  25421kN
...
37...Le8 38.Ta8 Dc6 39.Ta7 Lh5 40.Dd3 Lxf3 41.Dxf3 Lxh4 42.Kh1 De8 43.Dh3 Dg6 44.Lxd6 Dxd6 45.Dxh4 Tg7 46.Ta8+ Tg8 47.Txg8+ Kxg8 48.Lf3 d3 49.Dg4+ Kf7 50.Df5+ Kg7 51.Dc8 d2 52.Db7+ Kf8 53.Dd5 Dxd5 54.cxd5 b5 55.Ld1
  Weiß steht etwas besser. 
  +/= (0.39 --)  Tiefe: 30/54   00:00:21  34445kN
...
37...Le8 38.Ta8 Dc6 39.Ta7 Lh5 40.Dd3 Lxf3 41.Dxf3 Lxh4 42.Kh1 De8 43.Dh3 Dg6 44.Lxd6 Dxd6 45.Dxh4 Dg6 46.Dh3 h5 47.Te7 Dg5 48.Te6 d3 49.Txb6 d2 50.Td6 Dg4 51.Txd2 f3 52.Dxf3
  Weiß steht etwas besser. 
  +/= (0.38 ++)  Tiefe: 32/39   00:00:41  68373kN
...
37...Le8 38.Da2 Dc6 39.Db2 Lh5 40.Sxd4 De8 41.Ta3 Lxh4 42.Sf5 Lf6 43.Kf1 Lg4 44.Sh6 f3 45.Sxg8 fxg2+ 46.Kg1 Dxg8 47.Da2 Kg7 48.Lxd6 De6 49.Lb4 h5 50.Dc2 Df7 51.Ld6 Kg8 52.Ta8+ Kg7 53.Dd3 Kh7 54.Tf8 Dg6
  Die Stellung ist ausgeglichen. 
  = (0.02 ++)  Tiefe: 37/52   00:02:15  227MN
...
37...Le8 38.Da2 Dc6 39.Db2 Lh5 40.Sxd4 De8 41.Ta3 Lxh4 42.Sf5 Lf6 43.Kf1 Lg4 44.Df2 Dh5 45.Le1 h6 46.Ld2 Kh7 47.Le1
  Die Stellung ist ausgeglichen. 
  = (0.00)  Tiefe: 38/63   00:02:39  263MN

Single thread FDT=1, sonst alles gleich

6rk/2q4p/Rpbp4/4p3/1BPpPp1P/5Nb1/4Q1B1/6K1 b - - 0 1

Analysis by ShashChess 41.1 GoldDigger:

37...h6 38.Kh1 Db7
  Die Stellung ist ausgeglichen. 
  = (0.00)  Tiefe: 10/15   00:00:00
...
37...h6 38.Da2
  Weiß steht etwas besser. 
  +/= (0.68 --)  Tiefe: 25/48   00:00:08  12814kN
37...Tg6
  Weiß steht etwas besser. 
  +/= (0.68 ++)  Tiefe: 25/48   00:00:08  13607kN
37...Tg6 38.h5 Tg8 39.Dd3 h6 40.Ta2 Dd7 41.Kf1 Te8 42.Ta3 Tg8 43.Ta6 Dc7 44.Lh3 Lxe4 45.Dxe4 Dxc4+ 46.Kg2 Le1+ 47.Kh2 Lg3+ 48.Kh1 Dxa6 49.Lxd6 Da1+ 50.Sg1 f3 51.Le7 f2 52.Lf6+ Tg7 53.Lxg7+ Kxg7 54.Dg6+ Kf8 55.Dd6+ Kg7
  Weiß steht besser. 
  +/- (0.73)  Tiefe: 25/48   00:00:09  14719kN
...
37...Tg7 38.Dd3 Dd8 39.h5 Lh4 40.h6 Tg4 41.De2 Lf6 42.Sxd4 Txg2+ 43.Dxg2 exd4 44.Kf1 Dg8 45.Txb6 Dxg2+ 46.Kxg2 Lxe4+ 47.Kf1 Kg8 48.Txd6 Kf7 49.c5 Le5 50.Td7+ Kg6 51.Te7 Kf6 52.c6 Lxc6 53.Tg7
  Weiß steht besser. 
  +/- (0.94 --)  Tiefe: 32/63   00:01:35  150MN
...
37...Le8 38.Ta8 Dc6 39.Ta7 Lh5 40.Dd3 Lxf3 41.Dxf3 Lxh4 42.Kh1 De8 43.Dh3 Dg6 44.Lxd6 Dxd6 45.Dxh4 Tg7 46.Ta8+ Tg8 47.Txg8+ Kxg8 48.Dg5+ Kf7 49.Df5+ Kg7 50.Lf3 d3 51.Dg5+ Kf8 52.Lh5 d2 53.Df5+ Kg7 54.Df7+ Kh8 55.Ld1
  Weiß steht etwas besser. 
  +/= (0.44)  Tiefe: 35/67   00:03:24  315MN
...
37...Le8 38.Ta8 Dc6 39.Ta7 Lh5 40.Dd3 Lxf3 41.Dxf3 Lxh4 42.Kh1 De8 43.Dh3 Dg6 44.Lxd6 Dxd6 45.Dxh4 Dg6 46.Dh3 Td8 47.Tc7 d3 48.Tc8 De8 49.Txd8 Dxd8 50.Lf3 d2 51.Ld1 Dd4 52.Dc8+ Kg7 53.Db7+ Kf6 54.Dd5 Dxd5
  Weiß hat minimalen Vorteil. 
  = (0.30 ++)  Tiefe: 37/64   00:04:10  383MN
...
37...Le8 38.Da2 Dc6 39.Db2 Lh5 40.Sxd4 De8 41.Ta3 Lxh4 42.Sf5 Lf6 43.Df2 f3 44.Txf3 Lxf3 45.Dxf3 Da4 46.Sxd6 Tg6 47.Le1 Da1 48.Dc3 Da2 49.Lf2 De2 50.Da1 h5 51.Df1 Df3 52.Lxb6 Txg2+ 53.Dxg2 Dd1+ 54.Kh2 Dxd6 55.c5 Dd7 56.De2 Kg7 57.Dc2 Dc6 58.Dg2+ Kh7 59.Df2 De6
  Die Stellung ist ausgeglichen. 
  = (0.16 ++)  Tiefe: 40/68   00:05:52  536MN

Eigentlich auch immer noch ganz gut für single thread, halt etwas langsamer, was man aber jedenfalls gut sieht, wenn man sich den time to depth- Verlauf anschaut, von brute force ist das ungefähr gleich weit entfernt wie von der default- Suche, würde ich sagen.

Oder (natürlich auch etwas vereinfachend, weil ohne den entsprechenden Code zu zitieren) kurz gesagt: no LMRs im FDT- Fall, je nach Stellung bremst das mal etwas mehr und mal etwas weniger (je nachdem, wieviel die LMRs eben im einzelnen Spielbaum der einzelnen Stellung ausmachen), aber brute force hätte unmöglich diese time to depth bei dieser Stellung, (man kann sich's ja z.B auch bei der Grundstellung anschauen, die hat noch weniger forcierte Abspiele als Walters Teststellung, da müsste der Unterschied zu brute force noch krasser sein, ist er aber mit FDT=1 single thread relativ zu FDT=0 auch nicht) oder siehst du das anders?
Parent - - By Thomas Zipproth Date 2026-03-26 22:10
Hallo Peter,
stimmt, "brute force" könnte mißverständlich sein.

Die AI hat das geschrieben, weil es der Entwickler selbst so in der github Page so beschreibt:

Full depth threads
Integer, Default: 0, Min: 0, Max: 512 The number of settled threads to use for a full depth brute force search. If the number is greater than threads number, all threads are for full depth brute force search.

Full depth threads schneidet wohl Late Move Reductions sowie andere pruning Techniken ab.
Insofern bleibt wahrscheinlich fast reines NegaMax/PVS + Ruhesuche übrig, wodurch taktisch weniger übersehen wird.
Parent - By Peter Martan Date 2026-03-26 22:22 Edited 2026-03-26 22:43
D'accord, die Stelle der FDT- Beschreibung auf der hp ist eben auch vereinfachend, weil ohne Zitate der entsprechenden Code- Sniplets. Hättest du Gemini nach denen gefragt, hättest du wahrscheinlich eh auch die direkt bekommen, dazu hingegen würdest du aber Gemini wieder nicht gebraucht haben, der (Code) steht ja auch auf denselben github- sites wie die (zwangsläufig irgendwie vereinfachenden) verbalen Beschreibungen. Naja, ich müsste die entsprechenden Stellen im Code überhaupt erst mal finden, vielleicht lasse ich sie mir auch mal von Gemini raussuchen, aber da würde ich mich halt auch wieder eher auf die Hilfe von Andrea oder Leuten wie dir verlassen, oder ich mach's wie Max Siegfried, "weiß zufällig jemand"...

Wie auch immer, der Witz ist ja der: wenn ich wissen will, wie der Code (so gut ich ihn auch kennen und verstehen mag) sich auf welche Stellung bei welchem Setting auf welcher Hardware auswirkt, muss ich mir erst wieder die einzelne Stellung anschauen und den Output, und den muss ich dann halt auch erst mal dahingehend lesen und verstehen können, was der Unterschied zwischen dem einen und dem anderen Setting ist, und wo der Zufall wieviel Rolle spielt, wenn ich's nicht nur single thread probiere.
Just my two cents.
Up Topic Hauptforen / CSS-Forum / Schlechtwetterprogramm

Powered by mwForum 2.29.3 © 1999-2014 Markus Wichitill