CPU проти GPU для шахових двигунів


16

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

Чи отримали б користь шахові двигуни, якби вони розраховувались із графічними процесорами замість процесорів?

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

Відповіді:


13

Редагувати:

Кілька інших питань, порушених у http://rybkaforum.net/cgi-bin/rybkaforum/topic_show.pl?tid=32317 .

  • GPU не дуже хороший для рекурсії
  • GPU не дуже хороший для плавання
  • Графічний процесор може працювати краще для нового підходу до машинного навчання, але не для традиційних алгоритмів двигуна

Оригінал :

@ Maxwell86 вже дав чудові посилання та ресурси. Зверніть увагу на зета-шаховий двигун. Це шаховий двигун GPU. На жаль, GPU не довів свою корисність у шаховому програмуванні. Насправді проект з шахматного двигуна «зета» пішов абсолютно нікуди.

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

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

Права гілка залежить від лівої гілки. Зокрема, якщо ми можемо отримати обріз (відмову), нам навіть не потрібно буде шукати інші вузли. На жаль, це не те, що GPU може зробити ефективно. Можна створити програму GPU для альфа-бета, але потоки GPU (відомі як ядра) потрібно буде призупинити, щоб почекати. На відміну від процесора, розплідник GPU не може просто перейти на щось інше (процес, відомий як потоковий перемикач або навіть процес-перемикач).

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


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

Правда. Але якщо основний пошук сам не може бути завантажений, не має сенсу завантажувати невеликі завдання.
HelloWorld

3
Це відмінна відповідь. Де на моєму екрані перемикач +3? Я не можу його знайти!
вт

7

Я не маю досвіду програмування GPU, але, як правило, графічні процесори дуже ефективні у виконанні простих команд паралельним способом. Мабуть, це не стосується дерева пошуку, яке використовується для шахових двигунів. Тому GPU втрачає свою обчислювальну перевагу перед процесором.

Звичайно, це сучасний стан програмування GPU для шахових двигунів, але програмування GPU є відносно новим, тому, можливо, вони знайдуть рішення для поточних проблем у майбутньому.

Ось пара цікавих посилань, особливо блог про реалізацію шахового двигуна для GPU є досить проникливим.


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


2

Я закінчив свій поточний пробіг на Zeta v099a, моєму експериментальному шаховому двигуні gpu.

https://github.com/smatovic/Zeta

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

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


0

Я маю певний досвід роботи з CUDA та шаховим програмуванням (не програмуванням двигуна). Це питання також мені спадало на думку багато разів. Ось моя думка, я цього ніколи не вивчав.

Ну, по-перше, практично впевнено, що при сучасній конструкції шахових двигунів це неможливо. Інакше хтось просто зробив би це.

Чи зможете ви використовувати його в абсолютно новому дизайні, це питання більше. Немає проблем з цілими операціями, але очевидно, що величезна річ, що ви повинні запустити примітивний код без серйозних розгалужень на багатьох об'єктах.

На мою думку, всі розрахунки з дерева повинні працювати на процесорі.

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

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

Мабуть, не дуже цікава річ зробити для створення абсолютно нового дизайну двигунів, щоб, скажімо, на 30% перевищили швидкість. І щоб сказати, що скажемо, 20-кратне прискорення на сучасних графічних процесорах, вам доведеться зробити функції оцінки справді чужими.

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

Редагування: Просто для того, щоб зрозуміти, CPU регулярно надсилатиме масиви позицій GPU для часткових оцінок. Можливо, це було не ясно з того, що я написав.

Багато проблем, щоб зробити цю роботу.


0

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


Google виявив, що GPU ідеально підходить для машинного навчання, але GPU не підходить для традиційного шахового програмування.
HelloWorld
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.