Jag har lite erfarenhet av CUDA och schackprogrammering (inte motorprogrammering). Denna fråga kom också till mig många gånger. Här är min åsikt, jag har aldrig studerat detta.
Nåväl, först är det nästan säkert att det med nuvarande design av schackmotorer är omöjligt. Annars skulle någon helt enkelt göra det.
Om du skulle kunna använda den i helt ny design är det en större fråga. Det finns inga problem med heltalsåtgärder, men det finns helt klart en enorm sak att du måste köra primitiv kod utan någon seriös förgrening på många enheter.
Enligt min mening bör alla trädberäkningar köras på CPU.
Men jag kan föreställa mig (jag säger inte att det är möjligt) några partiell utvärderingsfunktioner som bara gör så mycket utvärderingar på positioner som möjligt, för att ge CPU mer tid, för att hjälpa honom att bygga trädet i en bättre sätt, låt oss säga att en sådan funktion kan beräkna hur seriös beräkning ska göras på varje position.
Du kan beräkna antalet attackerade rutor, bitar attackerade, eldkraft runt kungar och i vissa underregioner ombord, bonde struktur relaterade saker kan du förmodligen göra GPU-optimerad kod för dessa. Du kan antagligen få en hel del användbar information gratis (ingen CPU-tid, ingen CPU väntar), men du måste vara riktigt geni för att använda full hästkrafter av moderna GPU för sådana små saker.
Det är förmodligen inte särskilt intressant att göra för att skapa helt ny design av motorer för att få låt oss säga 30% extra hastighet. Och för att låta oss säga 20x hastighet på toppmoderna GPU: er måste du göra utvärderingsfunktioner riktigt främmande.
Och det sista på det jag ser är ett problem. Du kan köra en kod på CPU med inte så många tankar, men i CPU + GPU-scenariot måste du hantera riktigt olika förhållanden mellan CPU och GPU. hastigheter och kärnantal. Du behöver annan kod för 16-kärnkluster med svag GPU än på långsam CPU med supersnabb GPU för att använda alla hårdvarufunktioner. Att jämföra CPU mot GPU och sedan köra mer kod på den snabbare maskinen skulle vara önskvärt. Men ändå tror jag att du inte kommer nära att mata 3000 kärnor bara med utvärderingsfunktion (er).
Redigera: Bara för att göra saker tydliga skulle CPU regelbundet skicka GPU-arrays av positioner för att göra partiella utvärderingar . Kanske var det inte klart från vad jag skrev.
Många problem för att detta ska fungera.