CPU v. GPU для шахматных движков

16

Графические процессоры лучше подходят для определенных типов вычислений, например, для генерации биткойнов и моделирования климата.

Будут ли полезны шахматные движки, если они рассчитываются с графическими процессорами вместо процессоров?

Может быть, какой-нибудь знающий человек сможет выделить различия между ними и проинформировать нас о том, подходят ли графические процессоры (не) к типу вычислений, которые выполняют шахматные движки.

Джессика Ортис
источник

Ответы:

13

РЕДАКТИРОВАТЬ:

Несколько других вопросов, поднятых в http://rybkaforum.net/cgi-bin/rybkaforum/topic_show.pl?tid=32317 .

  • GPU не так хорош для рекурсии
  • GPU не так хорош для плавания
  • GPU может работать лучше для нового подхода к машинному обучению, но не для традиционных алгоритмов движка

Оригинал :

@ Maxwell86 уже дал отличные ссылки и ресурсы. Обратите внимание на дзета-шахматный движок. Это шахматный движок GPU. К сожалению, GPU не доказал свою полезность в шахматном программировании. На самом деле, проект «Дзета-шахматный движок» никуда не дел

GPU очень хорошо работает на плавающих вычислениях и алгоритмах, которые могут быть параллельными. Это требует независимости. Но если мы посмотрим на типичное дерево мин-макс (или альфа-бета) (используемое каждым шахматным движком)

введите описание изображения здесь

Правая ветвь зависит от левой ветки. В частности, если мы сможем получить обрезку (с высоким уровнем отказа), нам даже не нужно будет искать оставшиеся узлы. К сожалению, это не то, что GPU может сделать эффективно. Можно написать программу для GPU для альфа-бета, но потоки GPU (известные как ядра) должны быть приостановлены, чтобы ждать. В отличие от CPU, питомник GPU не может просто переключиться на что-то другое (процесс, известный как переключение потоков или даже переключение процессов).

Наш существующий алгоритм и знания движка были получены для мира процессоров. Весь алгоритм должен быть повторно исследован для GPU. К сожалению, нет большого интереса и исследований по этому вопросу.

Привет, мир
источник
Вам не нужно разгружать сам минимакс. Существуют определенные подзадачи (например, поиск альфа-пути Ботвинника, хеширование платы, статическая оценка и т. Д.), Которые очень хорошо подходят для графического процессора. Тем не менее, я не знаю каких-либо исследований в этой области.
user58697
Правда. Но если сам основной поиск не может быть выгружен, не должно быть смысла выгружать небольшие задачи.
HelloWorld,
3
Это отличный ответ. Где на моем экране переключатель +3? Я не могу найти это!
THB
7

У меня нет опыта программирования на GPU, но, как правило, GPU очень эффективны при параллельном выполнении простых команд. По-видимому, это не относится к дереву поиска, которое используется для шахматных движков. Поэтому графический процессор теряет свои вычислительные преимущества перед центральным процессором.

Конечно, это текущее состояние программирования на GPU для шахматных движков, но программирование на GPU является относительно новым, поэтому, возможно, они найдут решения текущих проблем в будущем.

Вот несколько интересных ссылок, особенно блог о реализации шахматного движка для GPU довольно проницательный.

Maxwell86
источник
1
Вы пропустили: zeta-chess.blogspot.com
HelloWorld
Вещи, к которым хорошо относятся графические процессоры, включают дробную математику, векторные операции и распараллеливание, требующие минимальной синхронизации. Шахматные двигатели имеют последний, но не первые два.
intx13
5

Проект LC0 (Leela Chess Zero), адаптация AlphaZero для шахмат с открытым исходным кодом, демонстрирует преимущества gpus, производительности с плавающей запятой и пропускной способности памяти, используемой в больших нейронных сетях.

http://lczero.org/

https://en.wikipedia.org/wiki/AlphaZero

https://groups.google.com/forum/#!forum/lczero

fishy123
источник
2

Я закончил мой текущий пробег на Zeta v099a, моем экспериментальном движке GPU.

https://github.com/smatovic/Zeta

Фактический вывод текущей итерации заключается в том, что простой движок со стандартными методами шахматного программирования можно перенести в OpenCL для запуска на графическом процессоре, но потребуется больше усилий, чтобы сделать движок конкурентоспособным с точки зрения вычисляемых узлов в секунду ( скорость), эвристика (экспертные знания) и масштабирование (алгоритм параллельного поиска).

Компьютерные шахматы, как тема компьютерных наук, развивались десятилетиями, начиная с 40-х и 50-х годов, и достигли пика 1997 года в матче Deep Blue против Kapsarow. В настоящее время шахматные движки настраиваются, играя в тысячи и тысячи игр, поэтому запустить движок для игры в шахматы на графическом процессоре и получить конкурентоспособный движок для игры в шахматы на графическом процессоре - две разные задачи.

smatovic
источник
0

У меня есть некоторый опыт работы с CUDA и шахматным программированием (не программирование движка). Этот вопрос также приходил мне в голову много раз. Вот мое мнение, я никогда не изучал это.

Ну, во-первых, практически уверен, что при нынешнем дизайне шахматных движков это невозможно. В противном случае кто-то просто сделает это.

Можете ли вы использовать его в совершенно новом дизайне, это более важный вопрос. Там нет проблем с целочисленными операциями, но очевидно, что есть огромная вещь, что вы должны запускать примитивный код без серьезных ветвлений на многих объектах.

На мой взгляд, все расчеты дерева должны выполняться на CPU.

Но я могу представить (я не говорю, что это возможно) некоторые функции частичной оценки, которые просто делают как можно больше оценок по позициям, чтобы дать процессору больше времени, чтобы помочь ему построить дерево лучше, скажем так одна такая функция может вычислять, насколько серьезным должен быть расчет для каждой позиции.

Вы можете рассчитать количество атакованных квадратов, количество атакованных фигур, огневую мощь вокруг королей и в некоторых субрегионах, связанных с пешечной структурой, вы, вероятно, могли бы сделать для них код, оптимизированный для GPU. Вы, вероятно, можете получить много полезной информации бесплатно (без процессорного времени, без процессорного ожидания), но вы должны быть настоящим гением, чтобы использовать всю мощь современных графических процессоров для таких мелких вещей.

Вероятно, это не очень интересная вещь, чтобы создать совершенно новый дизайн двигателей, чтобы получить, скажем, 30% дополнительной скорости. И скажем, в 20 раз быстрее современных графических процессоров, вы должны сделать функции оценки действительно чуждыми.

И последнее, что я считаю проблемой. Вы можете запустить один код на CPU, не задумываясь, но в сценарии CPU + GPU вам придется иметь дело с действительно разными соотношениями CPU и GPU. скорости и количество ядер. Вам потребуется другой код для 16-ядерного кластера со слабым GPU, чем на медленном CPU с супер быстрым GPU, чтобы использовать все аппаратные возможности. Было бы желательно сравнить процессор с GPU, а затем запустить больше кода на более быстрой машине. Но, тем не менее, я думаю, вы не приблизитесь к тому, чтобы кормить 3000 ядерных животных только с помощью функции оценки.

Редактировать: просто чтобы прояснить ситуацию, CPU будет регулярно посылать массивы позиций GPU для частичной оценки. Может быть, это не было ясно из того, что я написал.

Много проблем, чтобы сделать эту работу.

hoacin
источник
0

Я вижу только преимущества в использовании шахматного движка на основе графического процессора и не вижу в этом серьезных проблем. Может быть, у вас есть эти проблемы, попробуйте использовать стандартную шахматную программу, не слишком много знаете о других. Я только начинаю писать шахматную программу с первой строки, как вторую программу, основанную на CUDA, после того, как я провожу первые тесты программирования на CUDA без особого смысла. Вскоре я могу сделать несколько первых тестов производительности и протестировать игры с другими движками. Может быть, на следующей неделе. Я только начинаю создавать его, но я уже близок к его завершению, и большинство функций уже завершено.

Rayjunx
источник
Google доказал, что GPU идеально подходит для машинного обучения, но GPU не подходит для традиционного шахматного программирования.
HelloWorld