CPU v. GPU สำหรับเครื่องมือหมากรุก


16

GPU นั้นดีกว่าในการคำนวณบางประเภทเช่นการสร้างบิตคอยน์และการจำลองสภาพภูมิอากาศ

เอ็นจิ้นหมากรุกจะได้รับประโยชน์หรือไม่หากคำนวณด้วย GPU แทนที่จะเป็น CPU

บางทีคนที่มีความรู้บางคนสามารถเน้นความแตกต่างระหว่างสองคนและให้ความรู้แก่เราว่า GPU นั้นเหมาะสำหรับประเภทการคำนวณที่หมากรุกเอ็นจิ้นทำงานหรือไม่

คำตอบ:


13

แก้ไข:

จุดอื่น ๆ ไม่กี่ยกขึ้นในhttp://rybkaforum.net/cgi-bin/rybkaforum/topic_show.pl?tid=32317

  • GPU ไม่ดีสำหรับการเรียกซ้ำ
  • GPU ไม่ดีสำหรับการลอย
  • GPU อาจทำงานได้ดีขึ้นสำหรับวิธีการเรียนรู้ของเครื่องใหม่ แต่ไม่ใช่อัลกอริทึมของเครื่องมือแบบดั้งเดิม

ต้นฉบับ :

@ Maxwell86 ได้ให้การเชื่อมโยงและแหล่งข้อมูลที่ยอดเยี่ยมแล้ว ใส่ใจกับเครื่องมือซีตาหมากรุก มันเป็นเอ็นจิ้นหมากรุกของ GPU น่าเสียดายที่ GPU ไม่ได้พิสูจน์ว่ามีประโยชน์ในการเขียนโปรแกรมหมากรุก ในความเป็นจริงแล้วโปรเจ็คหมากรุกซีตาไม่ได้มีอยู่จริง

GPU ทำงานได้ดีมากในการคำนวณแบบลอยตัวและอัลกอริทึมที่สามารถขนานกันได้ สิ่งนี้ต้องการอิสรภาพ แต่ถ้าเราดูแผนผัง min-max (หรือ alpha-beta) โดยทั่วไป (ใช้โดยเครื่องมือหมากรุกทุกตัว)

ป้อนคำอธิบายรูปภาพที่นี่

สาขาที่เหมาะสมขึ้นอยู่กับสาขาด้านซ้าย โดยเฉพาะอย่างยิ่งถ้าเราสามารถรับการตัด (ล้มเหลวสูง) เราไม่จำเป็นต้องค้นหาโหนดที่เหลือ น่าเสียดายที่นี่ไม่ใช่สิ่งที่ GPU สามารถทำได้อย่างมีประสิทธิภาพ เป็นไปได้ที่จะเขียนโปรแกรม GPU สำหรับอัลฟ่าเบต้า แต่เธรด GPU (ที่รู้จักกันในชื่อเมล็ด) จะต้องหยุดชั่วคราวเพื่อรอ ซึ่งแตกต่างจากซีพียู, GPU GPU ไม่สามารถเปลี่ยนเป็นอย่างอื่นได้ (กระบวนการที่เรียกว่า thread-switch หรือแม้แต่ process-switch)

อัลกอริทึมและความรู้ด้านเครื่องยนต์ที่มีอยู่ของเรานั้นได้รับมาสำหรับโลก CPU อัลกอริทึมทั้งหมดจะต้องได้รับการทดสอบใหม่สำหรับ GPU น่าเสียดายที่ไม่มีความสนใจและการวิจัยเกี่ยวกับมัน


คุณไม่จำเป็นต้องถ่ายมินิแม็กซ์ออกเอง มีงานย่อยบางอย่าง (เช่นการค้นหาเส้นทางของ Botvinnik, กระดานแฮช, การประเมินแบบคงที่ ฯลฯ ) ซึ่งเหมาะมากสำหรับ GPU ที่กล่าวว่าฉันไม่มีความรู้เกี่ยวกับการวิจัยในด้านนี้
user58697

จริง แต่ถ้าการค้นหาหลักนั้นไม่สามารถถ่ายออกมาได้ก็ไม่น่าที่จะมีงานเล็ก ๆ ออกไป
HelloWorld

3
นี่คือคำตอบที่ยอดเยี่ยม สวิตช์ +3 อยู่ที่ไหนบนหน้าจอ ฉันหามันไม่เจอ!
บาท

7

ฉันไม่มีประสบการณ์เกี่ยวกับการเขียนโปรแกรม GPU แต่โดยทั่วไป GPU มีประสิทธิภาพมากในการดำเนินการคำสั่งง่ายๆในแบบคู่ขนาน เห็นได้ชัดว่านี่ไม่ใช่กรณีของแผนภูมิการค้นหาที่ใช้สำหรับเครื่องมือหมากรุก ดังนั้น GPU จึงสูญเสียความได้เปรียบในการคำนวณเหนือ CPU

แน่นอนนี่คือสถานะปัจจุบันของการเขียนโปรแกรม GPU สำหรับเครื่องมือหมากรุก แต่การเขียนโปรแกรม GPU ค่อนข้างใหม่ดังนั้นพวกเขาอาจจะหาวิธีแก้ไขปัญหาปัจจุบันในอนาคต

นี่คือลิงค์เชื่อมโยงที่น่าสนใจโดยเฉพาะบล็อกเกี่ยวกับการนำเครื่องมือหมากรุกมาใช้สำหรับ GPU นั้นค่อนข้างลึกซึ้ง


1
คุณพลาด: zeta-chess.blogspot.com
HelloWorld

สิ่งที่ GPUs ทำได้ดีนั้นประกอบไปด้วยคณิตศาสตร์เศษส่วนการดำเนินงานเวกเตอร์และการขนานที่ต้องการการซิงโครไนซ์น้อยที่สุด เอ็นจิ้นหมากรุกมีอันสุดท้าย แต่ไม่ใช่สองอันแรก
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 vs. Kapsarow ทุกวันนี้เอ็นจิ้นหมากรุกได้รับการปรับจูนด้วยการเล่นเกมเป็นพัน ๆ เกมดังนั้นเพื่อให้เอ็นจิ้นการเล่นหมากรุกทำงานบน GPU และเพื่อให้ได้หมากรุกที่มีการแข่งขันกัน


0

ฉันเคยมีประสบการณ์เกี่ยวกับการเขียนโปรแกรม CUDA และหมากรุก (ไม่ใช่การเขียนโปรแกรม) คำถามนี้ก็มาถึงใจฉันหลายครั้ง นี่คือความคิดเห็นของฉันฉันไม่เคยศึกษาเรื่องนี้เลย

ก่อนอื่นมันค่อนข้างแน่นอนว่าด้วยการออกแบบเครื่องมือหมากรุกในปัจจุบันมันเป็นไปไม่ได้ ไม่เช่นนั้นบางคนก็แค่ทำ

ไม่ว่าคุณจะสามารถใช้มันในการออกแบบใหม่ได้หรือไม่นั่นเป็นคำถามที่ใหญ่กว่า ไม่มีปัญหากับการดำเนินการจำนวนเต็ม แต่ชัดเจนว่ามีสิ่งใหญ่ที่คุณต้องเรียกใช้โค้ดดั้งเดิมโดยไม่มีการแยกสาขาที่ร้ายแรงในเอนทิตีหลายแห่ง

ในความคิดของฉันการคำนวณแบบทรีควรรันบน CPU

แต่ฉันสามารถจินตนาการได้ (ฉันไม่ได้บอกว่าเป็นไปได้) ฟังก์ชั่นการประเมินผลบางส่วนที่เพิ่งประเมินตำแหน่งมากที่สุดเท่าที่จะเป็นไปได้เพื่อให้ CPU มีเวลามากขึ้นเพื่อช่วยเขาสร้างต้นไม้ในวิธีที่ดีกว่า หนึ่งฟังก์ชั่นดังกล่าวสามารถคำนวณว่าควรคำนวณอย่างจริงจังในแต่ละตำแหน่ง

คุณสามารถคำนวณจำนวนสี่เหลี่ยมที่ถูกโจมตีชิ้นส่วนที่ถูกโจมตีอาวุธรอบตัวและในบางส่วนย่อยบนกระดานโครงสร้างสิ่งจำนำที่เกี่ยวข้องคุณอาจสร้างโค้ด GPU ที่เหมาะสมสำหรับสิ่งเหล่านี้ คุณอาจได้รับข้อมูลที่เป็นประโยชน์มากมายฟรี (ไม่มีเวลา CPU, ไม่ต้องรอ CPU) แต่คุณต้องเป็นอัจฉริยะที่แท้จริงเพื่อใช้แรงม้าเต็มรูปแบบของ GPU สมัยใหม่สำหรับสิ่งเล็ก ๆ น้อย ๆ

อาจไม่น่าสนใจมากนักที่จะสร้างการออกแบบใหม่ของเครื่องยนต์เพื่อให้ได้ความเร็วที่เพิ่มขึ้น 30% และเพื่อให้สมมุติว่าการเร่งความเร็ว 20x สำหรับ GPU ที่ทันสมัยคุณจะต้องทำให้ฟังก์ชั่นการประเมินผลนั้นเป็นคนต่างด้าวจริงๆ

และสิ่งสุดท้ายที่ฉันเห็นว่าเป็นปัญหา คุณสามารถเรียกใช้รหัสเดียวบน CPU ด้วยความคิดไม่มาก แต่ในสถานการณ์ CPU + GPU คุณจะต้องจัดการกับอัตราส่วนที่แตกต่างกันของ CPU และ GPU ความเร็วและจำนวนหลัก คุณจะต้องใช้รหัสที่แตกต่างกันสำหรับ 16 คอร์คลัสเตอร์ที่มี GPU ที่อ่อนแอกว่าบน CPU ที่ช้าด้วย GPU ที่เร็วที่สุดเพื่อใช้ความสามารถของฮาร์ดแวร์อย่างเต็มรูปแบบ การเปรียบเทียบเบนช์มาร์กกับ GPU และจากนั้นรันโค้ดเพิ่มเติมบนเครื่องที่เร็วกว่าจะเป็นที่ต้องการ แต่ถึงกระนั้นฉันคิดว่าคุณจะได้ใกล้ชิดกับการให้อาหารสัตว์ 3000 แกนเพียงแค่ฟังก์ชั่นการประเมินผล

แก้ไข: เพื่อทำให้สิ่งต่าง ๆ ชัดเจน CPU จะส่งตำแหน่งอาร์เรย์ของ GPU เป็นประจำเพื่อทำการประเมินบางส่วน อาจไม่ชัดเจนจากสิ่งที่ฉันเขียน

ปัญหามากมายที่ทำให้งานนี้


0

ฉันเห็นประโยชน์เพียงอย่างเดียวในการใช้เอ็นจิ้นหมากรุกที่ใช้ GPU และไม่เห็นปัญหาร้ายแรงในการทำเช่นนั้น บางทีคุณอาจมีปัญหาที่ลองใช้โปรแกรมหมากรุกมาตรฐานไม่รู้เรื่องอื่น ๆ ฉันเพิ่งเริ่มเขียนโปรแกรมหมากรุกจากบรรทัดแรกเป็นโปรแกรมที่ใช้ CUDA ครั้งที่สองหลังจากที่ฉันทำการทดสอบการเขียนโปรแกรมครั้งแรกใน CUDA โดยไม่ต้องใช้เฉพาะ ในไม่ช้าฉันสามารถทำการทดสอบประสิทธิภาพครั้งแรกและทดสอบเกมกับเอนจินอื่น ๆ อาจจะในช่วงสัปดาห์หน้า ฉันเพิ่งเริ่มสร้าง แต่ฉันใกล้เสร็จแล้วและฟังก์ชั่นส่วนใหญ่เสร็จแล้ว


Google ได้พิสูจน์แล้วว่า GPU เหมาะสำหรับการเรียนรู้ของเครื่อง แต่ GPU ไม่ดีสำหรับการเขียนโปรแกรมหมากรุกแบบดั้งเดิม
HelloWorld
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.