CPU v. GPU untuk mesin catur

16

GPU lebih baik pada jenis perhitungan tertentu, misalnya menghasilkan bitcoin dan melakukan simulasi iklim.

Apakah mesin catur akan diuntungkan jika dihitung dengan GPU dan bukan CPU?

Mungkin beberapa orang yang berpengetahuan dapat menyoroti perbedaan antara keduanya dan memberi tahu kita apakah GPU cocok untuk jenis perhitungan yang dijalankan oleh mesin catur.

Jessica Ortiz
sumber

Jawaban:

13

EDIT:

Beberapa poin lainnya muncul di http://rybkaforum.net/cgi-bin/rybkaforum/topic_show.pl?tid=32317 .

  • GPU tidak begitu bagus untuk rekursi
  • GPU tidak begitu bagus untuk mengambang
  • GPU mungkin bekerja lebih baik untuk pendekatan pembelajaran mesin baru, tetapi bukan algoritma mesin tradisional

Asli :

@ Maxwell86 telah memberikan tautan dan sumber daya yang sangat baik. Perhatikan mesin catur-zeta. Ini mesin catur GPU. Sayangnya, GPU belum membuktikan kegunaannya dalam pemrograman catur. Faktanya, proyek mesin catur zeta sama sekali tidak berhasil.

GPU bekerja sangat baik pada perhitungan mengambang dan algoritma yang dapat diparalelkan. Ini membutuhkan kemandirian. Tetapi jika kita melihat pohon min-max (atau alpha-beta) yang khas (digunakan oleh setiap mesin catur)

masukkan deskripsi gambar di sini

Cabang kanan tergantung pada cabang kiri. Khususnya, jika kita bisa mendapatkan cutoff (fail-high), kita bahkan tidak perlu mencari node yang tersisa. Sayangnya, ini bukan sesuatu yang dapat dilakukan GPU secara efisien. Dimungkinkan untuk menulis program GPU untuk alpha-beta, tetapi utas GPU (dikenal sebagai kernel) perlu ditunda untuk menunggu. Tidak seperti CPU, GPU kennel tidak bisa hanya beralih ke sesuatu yang lain (sebuah proses yang dikenal sebagai thread-switch atau bahkan proses-switch).

Algoritma dan pengetahuan engine kami yang ada saat ini diturunkan untuk dunia CPU. Seluruh algoritma perlu diselidiki ulang untuk GPU. Sayangnya, tidak banyak minat dan penelitian tentang itu.

Halo Dunia
sumber
Anda tidak perlu membongkar minimax itu sendiri. Ada beberapa subtugas tertentu (misalnya pencarian jalur alpha Botvinnik, hashing board, evaluasi statis, dll) yang sangat cocok untuk GPU. Karena itu, saya tidak memiliki pengetahuan tentang penelitian di bidang ini.
user58697
Benar. Tetapi jika pencarian utama itu sendiri tidak dapat diturunkan, seharusnya tidak ada gunanya untuk membongkar tugas-tugas kecil.
HelloWorld
3
Ini jawaban yang sangat bagus. Di mana di layar saya adalah saklar +3? Saya tidak dapat menemukannya!
thb
7

Saya tidak memiliki pengalaman dengan pemrograman GPU, tetapi, biasanya, GPU sangat efisien dalam menjalankan perintah sederhana secara paralel. Rupanya, ini bukan kasus pohon pencarian yang digunakan untuk mesin catur. Oleh karena itu, GPU kehilangan keunggulan komputasinya dibandingkan CPU.

Tentu saja, ini adalah keadaan pemrograman GPU saat ini untuk mesin catur, tetapi pemrograman GPU relatif baru, jadi mungkin mereka akan menemukan solusi untuk masalah saat ini di masa depan.

Berikut adalah beberapa tautan menarik, terutama blog tentang penerapan mesin catur untuk GPU yang cukup mendalam.

Maxwell86
sumber
1
Anda telah melewatkan: zeta-chess.blogspot.com
HelloWorld
Hal-hal yang baik pada GPU termasuk matematika fraksional, operasi vektor, dan paralelisasi yang membutuhkan sinkronisasi minimal. Mesin catur memiliki yang terakhir tetapi tidak dua yang pertama.
intx13
2

Saya menyelesaikan perjalanan saya saat ini di Zeta v099a, mesin catur gpu eksperimental saya.

https://github.com/smatovic/Zeta

Kesimpulan aktual dari iterasi saat ini adalah, bahwa sebuah mesin sederhana, dengan teknik pemrograman catur standar, dapat diangkut ke OpenCL untuk dijalankan pada gpu, tetapi akan membutuhkan lebih banyak upaya untuk membuat mesin kompetitif dalam hal node yang dihitung per detik ( kecepatan), heuristik (pengetahuan pakar), dan penskalaan (algoritma pencarian paralel).

Computer Chess, sebagai topik ilmu komputer, berkembang selama beberapa dekade, mulai tahun 40-an dan 50-an, dan mencapai satu puncak 1997 dengan pertandingan Deep Blue vs Kapsarow. Saat ini mesin catur disetel dengan memainkan ribuan dan ribuan permainan, jadi untuk membuat mesin bermain catur berjalan di gpu dan untuk mendapatkan mesin bermain catur yang kompetitif berjalan di gpu adalah dua tugas yang berbeda.

smatovic
sumber
0

Saya memiliki beberapa pengalaman dengan pemrograman CUDA dan catur (bukan pemrograman mesin). Pertanyaan ini juga muncul di benak saya beberapa kali. Inilah pendapat saya, saya tidak pernah mempelajarinya.

Yah, pertama, hampir pasti bahwa dengan desain mesin catur saat ini, itu tidak mungkin. Kalau tidak, seseorang hanya akan melakukannya.

Apakah Anda bisa menggunakannya dalam desain yang sama sekali baru, itu pertanyaan yang lebih besar. Tidak ada masalah dengan operasi integer, tetapi jelas ada hal besar yang harus Anda jalankan kode primitif tanpa percabangan serius pada banyak entitas.

Menurut pendapat saya semua perhitungan pohon harus berjalan pada CPU.

Tapi saya bisa membayangkan (saya tidak mengatakan itu mungkin) beberapa fungsi evaluasi parsial (s) yang hanya membuat sebanyak mungkin penilaian pada posisi, untuk memberi CPU lebih banyak waktu, untuk membantunya membangun pohon dengan cara yang lebih baik, katakanlah satu fungsi tersebut dapat menghitung seberapa serius perhitungan harus dilakukan pada setiap posisi.

Anda dapat menghitung jumlah kotak yang diserang, potongan diserang, daya tembak di sekitar raja dan di beberapa subregional di papan, hal-hal terkait struktur gadai, Anda mungkin bisa membuat kode GPU yang dioptimalkan untuk ini. Anda mungkin bisa mendapatkan banyak informasi berguna secara gratis (tanpa waktu CPU, tanpa menunggu CPU), tetapi Anda harus benar-benar jenius untuk menggunakan tenaga kuda penuh GPU modern untuk hal-hal kecil seperti itu.

Ini mungkin bukan hal yang sangat menarik untuk dilakukan untuk menciptakan desain mesin yang sepenuhnya baru untuk mendapatkan katakanlah 30% kecepatan ekstra. Dan untuk mendapatkan katakanlah 20x percepatan pada GPU canggih, Anda harus membuat fungsi evaluasi benar-benar asing.

Dan hal terakhir yang saya lihat adalah masalah. Anda dapat menjalankan satu kode pada CPU tanpa banyak berpikir, tetapi dalam skenario CPU + GPU Anda harus berurusan dengan rasio CPU dan GPU yang sangat berbeda. kecepatan dan jumlah inti. Anda akan membutuhkan kode yang berbeda untuk klaster 16 core dengan GPU lemah daripada pada CPU lambat dengan GPU super cepat untuk menggunakan kapabilitas penuh perangkat keras. Membandingkan CPU dengan GPU dan menjalankan lebih banyak kode pada mesin yang lebih cepat akan diinginkan. Tapi tetap saja, saya pikir Anda tidak akan bisa memberi makan 3000 core beast hanya dengan fungsi evaluasi.

Sunting: Hanya untuk memperjelas, CPU akan secara teratur mengirim susunan posisi GPU untuk melakukan evaluasi parsial. Mungkin itu tidak jelas dari apa yang saya tulis.

Banyak masalah untuk membuat ini berfungsi.

hoacin
sumber
0

Saya hanya melihat manfaat dalam menggunakan mesin catur berbasis GPU dan tidak melihat masalah serius melakukan itu. Mungkin Anda memiliki masalah yang mencoba menggunakan program catur standar, tidak tahu banyak tentang yang lain. Saya baru mulai menulis program catur dari baris pertama, sebagai program berbasis CUDA kedua setelah saya membuat beberapa tes pemrograman pertama pada CUDA tanpa rasa khusus. Segera saya dapat membuat beberapa tes kinerja pertama dan menguji permainan melawan mesin lain. Mungkin selama minggu depan. Saya baru saja mulai membuatnya tetapi saya sudah selesai menyelesaikannya dan sebagian besar fungsi sudah selesai.

Rayjunx
sumber
Google telah membuktikan GPU ideal untuk pembelajaran mesin tetapi GPU tidak baik untuk pemrograman catur tradisional.
HelloWorld