Tenho alguma experiência com programação CUDA e xadrez (não com programação de motores). Esta pergunta também me veio à mente muitas vezes. Aqui está a minha opinião, eu nunca estudei isso.
Bem, primeiro, é praticamente certo que, com o design atual dos motores de xadrez, é impossível. Caso contrário, alguém simplesmente faria isso.
Se você pode usá-lo em um design completamente novo, essa é uma questão maior. Não há problema com operações inteiras, mas claramente existe uma grande coisa que você deve executar código primitivo sem ramificação séria em muitas entidades.
Na minha opinião, todos os cálculos em árvore devem ser executados na CPU.
Mas posso imaginar (não digo que seja possível) algumas funções parciais de avaliação que apenas fazem o máximo possível de avaliações nas posições, para dar mais tempo à CPU, para ajudá-lo a construir a árvore de uma maneira melhor, digamos uma dessas funções poderia calcular a gravidade do cálculo em cada posição.
Você pode calcular o número de quadrados atacados, peças atacadas, poder de fogo em torno dos reis e, em algumas sub-regiões a bordo, coisas relacionadas à estrutura dos peões, provavelmente você pode criar um código otimizado para GPU. Provavelmente, você pode obter muitas informações úteis de graça (sem tempo de CPU, sem espera de CPU), mas seria preciso ser um verdadeiro gênio para usar toda a potência das GPUs modernas para coisas tão pequenas.
Provavelmente não é uma coisa muito interessante a fazer para criar um design completamente novo de motores para obter, digamos, 30% de velocidade extra. E, digamos que a aceleração 20x em GPUs de última geração, você teria que tornar as funções de avaliação realmente estranhas.
E a última coisa sobre isso é o que vejo como um problema. Você pode executar um código na CPU sem pensar muito, mas no cenário CPU + GPU você teria que lidar com proporções realmente diferentes de CPU e GPU. velocidades e contagens principais. Você precisaria de código diferente para o cluster de 16 núcleos com GPU fraca do que na CPU lenta com GPU super rápida para usar todos os recursos de hardware. Seria desejável fazer benchmarking de CPU vs. GPU e, em seguida, executar mais código na máquina mais rápida. Mas ainda assim, acho que você não chegará nem perto de alimentar uma besta de 3000 núcleos apenas com funções de avaliação.
Edit: Apenas para esclarecer, a CPU envia regularmente matrizes de GPU de posições para fazer avaliações parciais. Talvez isso não estivesse claro pelo que escrevi.
Muitos problemas para fazer isso funcionar.