GPU在某些類型的計算中表現更好,例如
象棋引擎如果使用GPU而不是CPU進行計算,將會受益嗎?
也許某些有知識的人可以強調兩者之間的區別並啟發我們GPU是否(不適合)國際象棋引擎執行的計算類型。
GPU在某些類型的計算中表現更好,例如
象棋引擎如果使用GPU而不是CPU進行計算,將會受益嗎?
也許某些有知識的人可以強調兩者之間的區別並啟發我們GPU是否(不適合)國際象棋引擎執行的計算類型。
編輯:
在 http://rybkaforum.net/cgi-bin/rybkaforum/topic_show.pl?tid=32317。
原始:
@ Maxwell86已經提供了出色的鏈接和資源。注意zeta-chess引擎。這是GPU國際象棋引擎。不幸的是,GPU尚未在國際象棋編程中證明其有用性。實際上,zeta象棋引擎項目完全沒有進展。
GPU在可並行計算的浮動計算和算法上效果很好。這需要獨立性。但是,如果我們查看典型的最小-最大(或alpha-beta)樹(每個像棋引擎使用的樹)
右分支取決於左分支。特別是,如果我們可以得到一個截止(高失敗),我們甚至不需要搜索其餘節點。不幸的是,這不是GPU可以有效完成的事情。可以為alpha-beta編寫GPU程序,但是需要暫停GPU線程(稱為內核)以等待。與CPU不同,GPU內核不能只切換到其他東西(稱為線程切換甚至是進程切換的進程)。
我們現有的算法和引擎知識是針對CPU領域而衍生的。整個算法將需要針對GPU進行重新研究。不幸的是,對此並沒有太多興趣和研究。
我沒有進行GPU編程的經驗,但是通常,GPU在並行執行簡單命令方面非常高效。顯然,用於國際象棋引擎的搜索樹不是這種情況。因此,GPU失去了其與CPU相比的計算優勢。
當然,這是國際象棋引擎的GPU編程的當前狀態,但是GPU編程相對較新,因此也許他們會找到解決方案。
這裡有幾個有趣的鏈接,尤其是有關為GPU實現國際象棋引擎的博客很有見地。
LC0(Leela Chess Zero)項目是AlphaZero的國際象棋開源改編版,顯示了在大型神經網絡中使用gpus,浮點性能和內存帶寬的好處。
我已經完成了我的實驗性gpu國際象棋引擎Zeta v099a的當前運行。
https://github.com/smatovic/Zeta
當前迭代的實際結論是,可以將具有標準國際象棋編程技術的簡單引擎移植到OpenCL上,使其在gpu上運行,但是要使引擎在每秒計算節點數(速度)方面更具競爭力,將需要付出更多的努力。 ),啟發式(專家知識)和縮放(並行搜索算法)。
計算機國際象棋作為計算機科學的一個主題,經過幾十年的發展,始於40年代和50年代,並在1997年的DeepBlue vs. Kapsarow比賽中達到頂峰。如今,通過玩成千上萬的遊戲來調整國際象棋引擎,因此要在gpu上運行國際象棋引擎和在gpu上運行具有競爭力的國際象棋引擎是兩個不同的任務。
我對CUDA和國際象棋編程(不是引擎編程)有一些經驗。我也多次想到這個問題。這是我的看法,我從沒有研究過。
首先,可以肯定的是,對於當前的國際象棋引擎設計,這是不可能的。否則,有人會簡單地做到這一點。
是否可以在全新的設計中使用它,這是一個更大的問題。整數運算沒有問題,但是很明顯,有很多事情必須運行原始代碼,並且不能在許多實體上進行嚴重分支。
我認為所有樹計算都應該在CPU上運行。
但是我可以想像(我不說有可能)一些局部評估函數可以對位置進行盡可能多的評估,從而給CPU更多的時間,以幫助他更好地構建樹可以這樣說,一個這樣的函數可以計算出每個位置上應該進行的認真計算。事情,您可能可以為這些做GPU優化的代碼。您可能可以免費獲得許多有用的信息(沒有CPU時間,沒有CPU等待),但是您必須是真正的天才,才能將現代GPU的全部功能用於如此小的事情。
創建全新的發動機設計以使速度提高30%可能不是一件很有趣的事情。而且,要想使先進的GPU的速度提高20倍,您就必須使評估功能真正與眾不同。
關於這件事的最後一件事我認為是一個問題。您可以花很多時間在CPU上運行一個代碼,但是在CPU + GPU場景中,您將不得不處理不同比例的CPU和GPU。速度和核心數。要使用硬件的全部功能,對於具有弱GPU的16核群集,您將需要與在具有超快速GPU的慢速CPU上需要不同的代碼。最好對CPU和GPU進行基準測試,然後在更快的計算機上運行更多代碼。但是,我仍然認為,僅憑評估功能,您將無法接近餵食3000核的野獸。 。也許從我寫的內容來看還不清楚。
要使這項工作可行,有很多問題。
我只看到使用基於GPU的國際象棋引擎的好處,並且看不到任何嚴重的問題。也許您有嘗試使用標準國際象棋程序的問題,但對其他問題知之甚少。我剛開始從第一行開始編寫象棋程序,這是我在沒有特殊感覺的情況下在CUDA上進行了一些首次編程測試後,作為第二個基於CUDA的程序編寫的。很快,我可以進行一些首次性能測試,並針對其他引擎測試遊戲。也許在下週。我只是開始創建它,但是我已經關閉它了,大多數功能已經完成了。