Ich habe einige Erfahrungen mit CUDA und Schachprogrammierung (keine Engine-Programmierung). Diese Frage kam mir auch oft in den Sinn. Hier ist meine Meinung, ich habe das nie studiert.
Zunächst ist es so gut wie sicher, dass es mit dem aktuellen Design der Schachengines unmöglich ist. Sonst würde es einfach jemand machen.
Ob Sie es in einem völlig neuen Design verwenden können, ist eine größere Frage. Es gibt kein Problem mit Ganzzahloperationen, aber es ist klar, dass Sie primitiven Code ohne ernsthafte Verzweigung auf vielen Entitäten ausführen müssen.
Meiner Meinung nach sollten alle Baumberechnungen auf CPU laufen.
Aber ich kann mir vorstellen (ich sage nicht, dass es möglich ist), dass einige Teilauswertungsfunktionen so viele Auswertungen wie möglich an Positionen vornehmen, um der CPU mehr Zeit zu geben und ihm zu helfen, den Baum auf eine bessere Art und Weise zu bauen, sagen wir Eine solche Funktion könnte berechnen, wie ernsthaft die Berechnung für jede Position sein sollte.
Sie können die Anzahl der angegriffenen Quadrate, der angegriffenen Teile, der Feuerkraft um Könige und in einigen Teilregionen an Bord von Dingen, die mit der Bauernstruktur zu tun haben, berechnen. Sie könnten wahrscheinlich GPU-optimierten Code für diese machen. Sie können wahrscheinlich kostenlos eine Menge nützlicher Informationen erhalten (keine CPU-Zeit, kein Warten auf die CPU), aber Sie müssten wirklich genial sein, um die volle Leistung moderner GPUs für solche kleinen Dinge zu nutzen.
Es ist wahrscheinlich nicht sehr interessant, ein komplett neues Motordesign zu entwickeln, um etwa 30% mehr Geschwindigkeit zu erreichen. Und um beispielsweise die Geschwindigkeit der GPUs auf dem neuesten Stand der Technik um das 20-fache zu steigern, müssten Evaluierungsfunktionen wirklich fremd sein.
Und als letztes sehe ich hier ein Problem. Sie können einen Code auf der CPU ausführen, ohne viele Überlegungen anzustellen, aber in einem CPU + GPU-Szenario müssten Sie mit wirklich unterschiedlichen Verhältnissen von CPU und GPU umgehen. Geschwindigkeiten und Kernzahlen. Sie benötigen für 16-Kerne-Cluster mit schwacher GPU einen anderen Code als für langsame CPUs mit superschneller GPU, um alle Hardwarefunktionen nutzen zu können. Ein Benchmarking von CPU und GPU und die Ausführung von mehr Code auf dem schnelleren Computer wäre wünschenswert. Aber trotzdem denke ich, dass Sie nicht annähernd 3000 Kerne nur mit Auswertungsfunktion (en) füttern können.
Bearbeiten: Um die Dinge klarer zu machen, schickte die CPU regelmäßig GPU-Arrays mit Positionen, um teilweise Auswertungen vorzunehmen. Vielleicht war das nicht klar aus dem, was ich geschrieben habe.
Viele Probleme, um diese Arbeit zu machen.