Mam pewne doświadczenie z CUDA i programowaniem szachowym (nie programowaniem silnika). To pytanie również przyszło mi do głowy wiele razy. Oto moja opinia, nigdy tego nie studiowałem.
Po pierwsze, jest praktycznie pewne, że przy obecnej konstrukcji silników szachowych jest to niemożliwe. W przeciwnym razie ktoś po prostu to zrobiłby.
Czy można go użyć w zupełnie nowym designie, to większe pytanie. Nie ma problemu z operacjami na liczbach całkowitych, ale najwyraźniej jest ogromna rzecz, że musisz uruchomić prymitywny kod bez poważnego rozgałęzienia wielu jednostek.
Moim zdaniem wszystkie obliczenia drzewa powinny działać na procesorze.
Ale mogę sobie wyobrazić (nie mówię, że jest to możliwe) niektóre funkcje częściowej oceny, które po prostu dokonują jak największej liczby ocen pozycji, aby dać CPU więcej czasu, aby pomóc mu zbudować drzewo w lepszy sposób, powiedzmy jedna taka funkcja mogłaby obliczyć, jak poważne należy wykonać obliczenia dla każdej pozycji.
Możesz obliczyć liczbę zaatakowanych kwadratów, zaatakowane kawałki, siłę ognia wokół królów, aw niektórych podregionach na pokładzie, rzeczy związane ze strukturą pionków, prawdopodobnie możesz dla nich zrobić kod zoptymalizowany pod kątem GPU. Prawdopodobnie możesz uzyskać wiele przydatnych informacji za darmo (bez czasu procesora, bez czekania na procesor), ale musiałbyś być geniuszem, aby wykorzystać pełną moc nowoczesnych GPU do tak małych rzeczy.
Prawdopodobnie nie jest zbyt interesująca rzecz, aby stworzyć zupełnie nową konstrukcję silników, aby uzyskać powiedzmy 30% dodatkową prędkość. Aby powiedzieć, że powiedzmy 20-krotne przyspieszenie najnowocześniejszych układów GPU, musiałbyś sprawić, by funkcje oceny były naprawdę obce.
I ostatnia rzecz w tym, co uważam za problem. Możesz uruchamiać jeden kod na CPU bez większego zastanowienia, ale w scenariuszu CPU + GPU musiałbyś radzić sobie z naprawdę różnymi stosunkami CPU i GPU. prędkości i liczba rdzeni. Potrzebny byłby inny kod dla 16-rdzeniowego klastra ze słabym GPU niż na wolnym CPU z superszybkim GPU, aby móc korzystać z pełnych możliwości sprzętu. Pożądane byłoby porównywanie procesora z GPU, a następnie uruchamianie większej ilości kodu na szybszej maszynie. Ale nadal myślę, że nie zbliżysz się do karmienia 3000 rdzeni bestii tylko za pomocą funkcji oceny.
Edycja: Żeby było jasne, procesor regularnie wysyła tablice GPU pozycji w celu dokonania częściowej oceny. Może nie było to jasne z tego, co napisałem.
Wiele problemów, aby to zadziałało.