Starfive VisonFive2(RISC-V SBC) で遊ぶ – その3 やねうら王を動かしてみた

RISC-V, VisionFive-2

debianが普通に動くようになったので、やねうら王を動かしてみました。VisionFive2のGUIは遅いので、将棋所は手元のM1 Macbook Air で動かして、リモートでやねうら王を動かします。






RISC-Vでコンパイルするための変更点

yaneurao/YaneuraOu: YaneuraOu is the World’s Strongest Shogi engine(AI player) , WCSC29 1st winner , educational and USI compliant engine.から やねうら王をダウンロードして、source/Makefile を変更。

TARGET_CPUをOTHERにして、コンパイルオプションに -march=rv64imafdc を追加しただけです。これだけで動きました。すばらしいな やねうら王。

— a/source/Makefile
+++ b/source/Makefile
@@ -52,7 +52,7 @@ YO_CLUSTER = OFF
# — Intel/AMD系 (x86/x64 Platform)
#TARGET_CPU = AVX512VNNI
#TARGET_CPU = AVX512
-TARGET_CPU = AVX2
+#TARGET_CPU = AVX2
#TARGET_CPU = SSE42
#TARGET_CPU = SSE41
#TARGET_CPU = SSSE3
@@ -63,7 +63,7 @@ TARGET_CPU = AVX2
#TARGET_CPU = ZEN2
#TARGET_CPU = ZEN3
# — ARMとか
-#TARGET_CPU = OTHER
+TARGET_CPU = OTHER
#TARGET_CPU = GRAVITON2
#TARGET_CPU = WASM

@@ -587,7 +587,7 @@ else ifeq ($(TARGET_CPU),APPLEM1)
else ifeq ($(TARGET_CPU),WASM)

else ifeq ($(TARGET_CPU),OTHER)
– CPPFLAGS += -DNO_SSE
+ CPPFLAGS += -DNO_SSE -march=rv64imafdc

endif


ベンチマーク

やねうら王ベンチマークを実行してみました。71Knps。手元のM1だと  4Mnps-4.7Mnpsぐらい出るので桁違いに遅いです。そもそも早いCPUではないのと、CPUに合わせた最適化をしてないのでこんなもんでしょう。

$ ./source/YaneuraOu-by-gcc
bench 128 4 19
info string EvalDirectory = /home2/shin/YaneuraOu/eval
info string loading eval file : eval/nn.bin

info string USI_Hash : Start clearing with 4 threads , Hash size = 128[MB]
info string USI_Hash : Finish clearing.
Benchmark
hash : 128
threads : 4
limit : time 19
sfen : default

Position: 1/4
(中略)
===========================
Total time (ms) : 76178
Nodes searched : 5454137
Nodes_searched/second : 71597
Nodes searched (main thread) : 1374014
Nodes searched/second(main thread) : 18036
===========================
The bench command has completed.


対局するには

リモートのやねうら王を起動するだけのshell scriptを書いて、将棋所のエンジンとしてこのスクリプトを登録するだけです。簡単。

#!/bin/sh

/usr/bin/ssh XXXXXXXX@starfive.local '(cd YaneuraOu; source/YaneuraOu-by-gcc)’



遅いと言っても、私の棋力では手も足もでません。とほほ。



続く。

リンク

RISC-V, VisionFive-2

Posted by ず@沖縄