
Zitat von
Hartmut
Nö, das ist nur die nackte ungeschminkte Wahrheit. Ein normales Schachprogramm, ganz egal ob es jetzt BruteForce oder selektiv rechnet, ob es Multiprozessorfähig ist oder nicht, arbeitet letztlich linear bzw. sequentiell. Die Nutzung mehrerer Kerne ist nur eine sehr eingeschränkte partielle Parallelität.
Ein neuronales Netz ist dem natürlichen neuronalen Netz nachgebildet, wie es auch beim Menschen vorhanden ist und dieses ist eben zur massiven parallelen Verarbeitung fähig (kann jeder den es interessiert in entsprechender Fachliteratur oder bei Wikipedia nachlesen). Die Nutzung einer Grafikkarte die genau das macht, ist also nahezu ein Muss und hat nichts mit schlechter Programmierung zu tun.
Schlechte Programmierung wäre genau das was sound67 verlangt, nämlich Leela wie jedes andere Programm "nur" auf dem Prozessor rechnen zu lassen. Das würde der kompletten Basis des neuronalen Netzes widersprechen. Du würdest dann verlangen, dass eine eigentlich parallele Informationsverarbeitung linear abgewickelt wird. Um es vereinfacht auszudrücken: Genauso könntest Du verlangen, dass bei Windstärke 10 ein Windrad genausoviel Strom erzeugt wie 1000 Windräder (Ist ja trotzdem Windstärke 10) oder dass ein Dach voller Sonnenkollektoren genausoviel Energie liefert wenn du alle Kollektoren bis auf einen abdeckst. (Ist ja dieselbe Sonne). Funktioniert auch nicht. Diese Beispiele sind zwar nicht ganz vergleichbar, treffen aber im wesentlichen den Punkt.
Das ist alles korrekt, aber unvollständig. Ganz wichtig ist noch, daß die Abarbeitung der neuronalen Netze große Fließkomma Matrizen-Multiplikationen erfordern. Und das ist genau das, was für die Polygonrotationen und Perspektivberechnungen in modernen 3D-Videospielen ebenfalls erforderlich ist. Weswegen Grafikkarten die ideale Hardwarebasis für Neuronale Netze sind, denn die Grafikkarten sind dafür konstruiert.
Ganz im Gegensatz zu klassischen Schachprogrammen, die ausschließlich mit Integerzahlen und Bitverschiebungsoperationen auskommen. Was wiederum die große Stärke von CPUs ist. Während jedwede Fließkommaoperationen auf CPU nur sehr umständlich, d.h. mit vielen Rechenzyklen, d.h. sehr langsam, simuliert werden muß. Jeder, der schon mal eine Zeile programmiert hat, weiß deshalb, daß man Fließkommazahlen im Programm nur benutzt, wenn es gar nicht anders geht.
Lc0 auf der GPU laufen zu lassen ist also keine schlechte Programmierung, sondern genau das Gegenteil: es wäre ausgesprochen schlechte Programmierung, lc0 auf einer CPU laufen zu lassen. Und ausgesprochen schlechte Programmierung, ein klassisches Schachprogramm auf einer GPU laufen zu lassen.