CPU v. GPU cho động cơ cờ vua


16

GPU tốt hơn ở một số loại tính toán nhất định, ví dụ như tạo ra bitcoin và thực hiện mô phỏng khí hậu.

Động cơ cờ vua sẽ có lợi nếu họ tính toán với GPU thay vì CPU?

Có lẽ một số người am hiểu có thể làm nổi bật sự khác biệt giữa hai người và khai sáng cho chúng ta xem liệu GPU có (không) phù hợp với loại tính toán mà động cơ cờ vua thực hiện hay không.

Câu trả lời:


13

BIÊN TẬP:

Vài điểm khác lớn lên ở http://rybkaforum.net/cgi-bin/rybkaforum/topic_show.pl?tid=32317 .

  • GPU không tốt cho đệ quy
  • GPU không tốt cho nổi
  • GPU có thể hoạt động tốt hơn cho phương pháp học máy mới, nhưng không phải là thuật toán động cơ truyền thống

Bản gốc :

@ Maxwell86 đã cung cấp các liên kết và tài nguyên tuyệt vời. Hãy chú ý đến động cơ zeta-cờ vua. Đó là một công cụ cờ vua GPU. Thật không may, GPU đã không chứng minh được tính hữu dụng của nó trong lập trình cờ vua. Trong thực tế, dự án động cơ cờ vua zeta hoàn toàn không đi đến đâu.

GPU hoạt động rất tốt trên các tính toán nổi và thuật toán có thể song song. Điều này đòi hỏi sự độc lập. Nhưng nếu chúng ta nhìn vào một cây min-max (hoặc alpha-beta) điển hình (được sử dụng bởi mọi động cơ cờ vua)

nhập mô tả hình ảnh ở đây

Nhánh phải phụ thuộc vào nhánh trái. Đặc biệt, nếu chúng ta có thể bị cắt (không thành công), chúng ta thậm chí sẽ không cần tìm kiếm các nút còn lại. Thật không may, đây không phải là điều mà GPU có thể làm một cách hiệu quả. Có thể viết chương trình GPU cho alpha-beta, nhưng các luồng GPU (được gọi là hạt nhân) sẽ cần phải tạm dừng để chờ. Không giống như CPU, kennel GPU không thể chuyển sang thứ khác (một quá trình được gọi là chuyển đổi luồng hoặc thậm chí chuyển đổi quy trình).

Thuật toán và kiến ​​thức động cơ hiện có của chúng tôi được lấy từ thế giới CPU. Toàn bộ thuật toán sẽ cần được tái đầu tư cho GPU. Thật không may, không có nhiều quan tâm và nghiên cứu về nó.


Bạn không phải giảm tải minimax. Có một số nhiệm vụ nhất định (ví dụ: tìm đường dẫn alpha của Botvinnik, băm bảng, đánh giá tĩnh, v.v.) rất phù hợp với GPU. Điều đó nói rằng, tôi không có kiến ​​thức về bất kỳ nghiên cứu trong lĩnh vực này.
dùng58697

Thật. Nhưng nếu bản thân tìm kiếm chính không thể được giảm tải, sẽ không có điểm nào để giảm tải cho các tác vụ nhỏ.
SmallChess

3
Đây là một câu trả lời tuyệt vời. Trường hợp trên màn hình của tôi là công tắc +3? Tôi không thể tìm thấy nó!
thb

7

Tôi không có kinh nghiệm về lập trình GPU, nhưng, thông thường, GPU rất hiệu quả trong việc thực hiện các lệnh đơn giản theo cách song song. Rõ ràng, đây không phải là trường hợp cho cây tìm kiếm được sử dụng cho động cơ cờ vua. Do đó, GPU mất lợi thế tính toán so với CPU.

Tất nhiên, đây là trạng thái lập trình GPU hiện tại cho các công cụ cờ vua, nhưng lập trình GPU còn khá mới, vì vậy có thể họ sẽ tìm giải pháp cho các vấn đề hiện tại trong tương lai.

Dưới đây là một vài liên kết thú vị, đặc biệt là blog về việc triển khai một công cụ cờ vua cho GPU khá sâu sắc.


1
Bạn đã bỏ lỡ: zeta-chess.blogspot.com
SmallChess

Những thứ GPU rất tốt bao gồm toán học phân số, hoạt động véc tơ và song song hóa đòi hỏi phải đồng bộ hóa tối thiểu. Động cơ cờ vua có cái cuối cùng nhưng không phải cái đầu tiên.
intx13


2

Tôi đã hoàn thành việc chạy hiện tại của mình trên Zeta v099a, công cụ chơi cờ gpu thử nghiệm của tôi.

https://github.com/smatovic/Zeta

Kết luận thực tế của phép lặp hiện tại là, một động cơ đơn giản, với các kỹ thuật lập trình cờ tiêu chuẩn, có thể được chuyển sang OpenCL để chạy trên gpu, nhưng sẽ mất nhiều nỗ lực hơn để khiến động cơ cạnh tranh về các nút được tính toán mỗi giây ( tốc độ), heuristic (kiến thức chuyên môn) và nhân rộng (thuật toán tìm kiếm song song).

Computer Chess, với tư cách là một chủ đề khoa học máy tính, đã phát triển qua nhiều thập kỷ, bắt đầu từ những năm 40 và 50, và đạt đến một đỉnh cao năm 1997 với trận đấu Deep Blue vs Kapsarow. Ngày nay các công cụ cờ vua được điều chỉnh bằng cách chơi hàng ngàn và hàng ngàn trò chơi, vì vậy để có được một công cụ chơi cờ chạy trên gpu và để có một công cụ chơi cờ cạnh tranh chạy trên gpu là hai nhiệm vụ khác nhau.


0

Tôi đã có một số kinh nghiệm với CUDA và lập trình cờ vua (không phải lập trình động cơ). Câu hỏi này cũng đến với tôi nhiều lần. Đây là ý kiến ​​của tôi, tôi không bao giờ nghiên cứu điều này.

Chà, đầu tiên, gần như chắc chắn rằng với thiết kế hiện tại của động cơ cờ vua, điều đó là không thể. Nếu không thì ai đó sẽ làm điều đó.

Cho dù bạn có thể sử dụng nó trong thiết kế hoàn toàn mới, đó là một câu hỏi lớn hơn. Không có vấn đề gì với các hoạt động số nguyên, nhưng rõ ràng có một điều rất lớn là bạn phải chạy mã nguyên thủy mà không phân nhánh nghiêm trọng trên nhiều thực thể.

Theo tôi tất cả các tính toán cây nên chạy trên CPU.

Nhưng tôi có thể tưởng tượng (tôi không nói là có thể) một số chức năng đánh giá một phần chỉ thực hiện càng nhiều đánh giá về các vị trí càng tốt, để cho CPU có thêm thời gian, để giúp anh ta xây dựng cây theo cách tốt hơn, giả sử một chức năng như vậy có thể tính toán mức độ nghiêm trọng nên được thực hiện trên mỗi vị trí.

Bạn có thể tính toán số lượng hình vuông bị tấn công, mảnh bị tấn công, hỏa lực xung quanh các vị vua và trong một số tiểu vùng trên tàu, những thứ liên quan đến cấu trúc cầm đồ, bạn có thể tạo mã tối ưu hóa GPU cho những thứ này. Bạn có thể có thể nhận được rất nhiều thông tin hữu ích miễn phí (không mất thời gian CPU, không phải chờ CPU), nhưng bạn sẽ phải là thiên tài thực sự để sử dụng toàn bộ mã lực của GPU hiện đại cho những việc nhỏ như vậy.

Có lẽ không phải là điều rất thú vị để tạo ra thiết kế động cơ hoàn toàn mới để có được tốc độ tăng thêm 30%. Và để có thể nói tốc độ tăng gấp 20 lần trên các GPU hiện đại, bạn sẽ phải làm cho các chức năng đánh giá thực sự xa lạ.

Và điều cuối cùng về điều này tôi thấy là một vấn đề. Bạn có thể chạy một mã trên CPU mà không cần suy nghĩ nhiều, nhưng trong kịch bản CPU + GPU, bạn sẽ phải đối phó với các tỷ lệ CPU và GPU thực sự khác nhau. tốc độ và số lượng cốt lõi. Bạn sẽ cần mã khác nhau cho cụm 16 lõi có GPU yếu hơn so với CPU chậm với GPU siêu nhanh để sử dụng toàn bộ khả năng của phần cứng. CPU điểm chuẩn so với GPU và sau đó chạy nhiều mã hơn trên máy nhanh hơn sẽ là điều mong muốn. Tuy nhiên, tôi nghĩ rằng bạn sẽ không thể tiếp cận được việc nuôi 3000 con thú chỉ bằng chức năng đánh giá.

Chỉnh sửa: Chỉ để làm cho mọi thứ rõ ràng, CPU sẽ thường xuyên gửi các mảng vị trí GPU để đánh giá một phần. Có lẽ điều đó không rõ ràng từ những gì tôi đã viết.

Nhiều vấn đề để làm cho công việc này.


0

Tôi chỉ thấy lợi ích khi sử dụng công cụ cờ dựa trên GPU và không thấy bất kỳ vấn đề nghiêm trọng nào khi làm điều đó. Có thể bạn gặp vấn đề đó khi thử sử dụng một chương trình cờ tiêu chuẩn, không biết nhiều về những người khác. Tôi chỉ bắt đầu viết một chương trình cờ vua từ dòng đầu tiên, như là một chương trình dựa trên CUDA thứ hai sau khi tôi thực hiện một số thử nghiệm lập trình đầu tiên trên CUDA mà không có ý nghĩa cụ thể. Tôi sẽ sớm thực hiện một số thử nghiệm hiệu suất đầu tiên và thử nghiệm các trò chơi với các động cơ khác. Có thể trong tuần tới. Tôi chỉ bắt đầu tạo nó nhưng tôi đã hoàn thành nó và hầu hết các chức năng đã hoàn thành.


Google đã chứng minh GPU lý tưởng cho việc học máy nhưng GPU không tốt cho lập trình cờ truyền thống.
SmallChess
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.