У меня есть некоторый опыт работы с CUDA и шахматным программированием (не программирование движка). Этот вопрос также приходил мне в голову много раз. Вот мое мнение, я никогда не изучал это.
Ну, во-первых, практически уверен, что при нынешнем дизайне шахматных движков это невозможно. В противном случае кто-то просто сделает это.
Можете ли вы использовать его в совершенно новом дизайне, это более важный вопрос. Там нет проблем с целочисленными операциями, но очевидно, что есть огромная вещь, что вы должны запускать примитивный код без серьезных ветвлений на многих объектах.
На мой взгляд, все расчеты дерева должны выполняться на CPU.
Но я могу представить (я не говорю, что это возможно) некоторые функции частичной оценки, которые просто делают как можно больше оценок по позициям, чтобы дать процессору больше времени, чтобы помочь ему построить дерево лучше, скажем так одна такая функция может вычислять, насколько серьезным должен быть расчет для каждой позиции.
Вы можете рассчитать количество атакованных квадратов, количество атакованных фигур, огневую мощь вокруг королей и в некоторых субрегионах, связанных с пешечной структурой, вы, вероятно, могли бы сделать для них код, оптимизированный для GPU. Вы, вероятно, можете получить много полезной информации бесплатно (без процессорного времени, без процессорного ожидания), но вы должны быть настоящим гением, чтобы использовать всю мощь современных графических процессоров для таких мелких вещей.
Вероятно, это не очень интересная вещь, чтобы создать совершенно новый дизайн двигателей, чтобы получить, скажем, 30% дополнительной скорости. И скажем, в 20 раз быстрее современных графических процессоров, вы должны сделать функции оценки действительно чуждыми.
И последнее, что я считаю проблемой. Вы можете запустить один код на CPU, не задумываясь, но в сценарии CPU + GPU вам придется иметь дело с действительно разными соотношениями CPU и GPU. скорости и количество ядер. Вам потребуется другой код для 16-ядерного кластера со слабым GPU, чем на медленном CPU с супер быстрым GPU, чтобы использовать все аппаратные возможности. Было бы желательно сравнить процессор с GPU, а затем запустить больше кода на более быстрой машине. Но, тем не менее, я думаю, вы не приблизитесь к тому, чтобы кормить 3000 ядерных животных только с помощью функции оценки.
Редактировать: просто чтобы прояснить ситуацию, CPU будет регулярно посылать массивы позиций GPU для частичной оценки. Может быть, это не было ясно из того, что я написал.
Много проблем, чтобы сделать эту работу.