題:
適用於國際象棋引擎的CPU v.GPU
Jessica Ortiz
2015-07-19 01:16:08 UTC
view on stackexchange narkive permalink

GPU在某些類型的計算中表現更好,例如

象棋引擎如果使用GPU而不是CPU進行計算,將會受益嗎?

也許某些有知識的人可以強調兩者之間的區別並啟發我們GPU是否(不適合)國際象棋引擎執行的計算類型。

六 答案:
SmallChess
2015-07-20 06:40:17 UTC
view on stackexchange narkive permalink

編輯:

http://rybkaforum.net/cgi-bin/rybkaforum/topic_show.pl?tid=32317

  • GPU不適用於遞歸
  • GPU不適用於浮動
  • GPU可能對新的機器學習方法更好,但不是傳統的引擎算法

原始

@ Maxwell86已經提供了出色的鏈接和資源。注意zeta-chess引擎。這是GPU國際象棋引擎。不幸的是,GPU尚未在國際象棋編程中證明其有用性。實際上,zeta象棋引擎項目完全沒有進展。

GPU在可並行計算的浮動計算和算法上效果很好。這需要獨立性。但是,如果我們查看典型的最小-最大(或alpha-beta)樹(每個像棋引擎使用的樹)

enter image description here

右分支取決於左分支。特別是,如果我們可以得到一個截止(高失敗),我們甚至不需要搜索其餘節點。不幸的是,這不是GPU可以有效完成的事情。可以為alpha-beta編寫GPU程序,但是需要暫停GPU線程(稱為內核)以等待。與CPU不同,GPU內核不能只切換到其他東西(稱為線程切換甚至是進程切換的進程)。

我們現有的算法和引擎知識是針對CPU領域而衍生的。整個算法將需要針對GPU進行重新研究。不幸的是,對此並沒有太多興趣和研究。

您不必卸載minimax本身。有一些非常適合GPU的子任務(例如Botvinnik的alpha路徑查找,木板哈希,靜態評估等)。就是說,我對這方面的研究一無所知。
真正。但是,如果不能卸載主要搜索本身,那麼就沒有必要卸載這些小任務。
這是一個很好的答案。 +3開關在屏幕上哪裡?我找不到!
Maxwell86
2015-07-19 14:15:02 UTC
view on stackexchange narkive permalink

我沒有進行GPU編程的經驗,但是通常,GPU在並行執行簡單命令方面非常高效。顯然,用於國際象棋引擎的搜索樹不是這種情況。因此,GPU失去了其與CPU相比的計算優勢。

當然,這是國際象棋引擎的GPU編程的當前狀態,但是GPU編程相對較新,因此也許他們會找到解決方案。

這裡有幾個有趣的鏈接,尤其是有關為GPU實現國際象棋引擎的博客很有見地。

您已經錯過了:http://zeta-chess.blogspot.com
GPU擅長的領域包括分數數學,向量運算和需要最少同步的並行化。國際象棋引擎有最後一個,但沒有前兩個。
fishy123
2018-04-24 15:03:02 UTC
view on stackexchange narkive permalink

LC0(Leela Chess Zero)項目是AlphaZero的國際象棋開源改編版,顯示了在大型神經網絡中使用gpus,浮點性能和內存帶寬的好處。

http ://lczero.org/

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

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

smatovic
2017-04-22 15:48:27 UTC
view on stackexchange narkive permalink

我已經完成了我的實驗性gpu國際象棋引擎Zeta v099a的當前運行。

https://github.com/smatovic/Zeta

當前迭代的實際結論是,可以將具有標準國際象棋編程技術的簡單引擎移植到OpenCL上,使其在gpu上運行,但是要使引擎在每秒計算節點數(速度)方面更具競爭力,將需要付出更多的努力。 ),啟發式(專家知識)和縮放(並行搜索算法)。

計算機國際象棋作為計算機科學的一個主題,經過幾十年的發展,始於40年代和50年代,並在1997年的DeepBlue vs. Kapsarow比賽中達到頂峰。如今,通過玩成千上萬的遊戲來調整國際象棋引擎,因此要在gpu上運行國際象棋引擎和在gpu上運行具有競爭力的國際象棋引擎是兩個不同的任務。

hoacin
2016-11-22 23:17:59 UTC
view on stackexchange narkive permalink

我對CUDA和國際象棋編程(不是引擎編程)有一些經驗。我也多次想到這個問題。這是我的看法,我從沒有研究過。

首先,可以肯定的是,對於當前的國際象棋引擎設計,這是不可能的。否則,有人會簡單地做到這一點。

是否可以在全新的設計中使用它,這是一個更大的問題。整數運算沒有問題,但是很明顯,有很多事情必須運行原始代碼,並且不能在許多實體上進行嚴重分支。

我認為所有樹計算都應該在CPU上運行。

但是我可以想像(我不說有可能)一些局部評估函數可以對位置進行盡可能多的評估,從而給CPU更多的時間,以幫助他更好地構建樹可以這樣說,一個這樣的函數可以計算出每個位置上應該進行的認真計算。事情,您可能可以為這些做GPU優化的代碼。您可能可以免費獲得許多有用的信息(沒有CPU時間,沒有CPU等待),但是您必須是真正的天才,才能將現代GPU的全部功能用於如此小的事情。

創建全新的發動機設計以使速度提高30%可能不是一件很有趣的事情。而且,要想使先進的GPU的速度提高20倍,您就必須使評估功能真正與眾不同。

關於這件事的最後一件事我認為是一個問題。您可以花很多時間在CPU上運行一個代碼,但是在CPU + GPU場景中,您將不得不處理不同比例的CPU和GPU。速度和核心數。要使用硬件的全部功能,對於具有弱GPU的16核群集,您將需要與在具有超快速GPU的慢速CPU上需要不同的代碼。最好對CPU和GPU進行基準測試,然後在更快的計算機上運行更多代碼。但是,我仍然認為,僅憑評估功能,您將無法接近餵食3000核的野獸。 。也許從我寫的內容來看還不清楚。

要使這項工作可行,有很多問題。

Rayjunx
2018-05-04 23:21:46 UTC
view on stackexchange narkive permalink

我只看到使用基於GPU的國際象棋引擎的好處,並且看不到任何嚴重的問題。也許您有嘗試使用標準國際象棋程序的問題,但對其他問題知之甚少。我剛開始從第一行開始編寫象棋程序,這是我在沒有特殊感覺的情況下在CUDA上進行了一些首次編程測試後,作為第二個基於CUDA的程序編寫的。很快,我可以進行一些首次性能測試,並針對其他引擎測試遊戲。也許在下週。我只是開始創建它,但是我已經關閉它了,大多數功能已經完成了。

Google已證明GPU非常適合用於機器學習,但GPU不適用於傳統的象棋編程。


該問答將自動從英語翻譯而來。原始內容可在stackexchange上找到,我們感謝它分發的cc by-sa 3.0許可。
Loading...