1
0
Fork 0
Fork of stockfish for RISC-V https://spacecruft.org/deepcrayon/stockfish
 
 
 
 
Go to file
server 7577e70a4e set date inside machine 2021-11-16 20:03:10 -07:00
.github/workflows Add macOS and windows to CI 2021-07-23 18:16:05 +02:00
cartesi/img set date inside machine 2021-11-16 20:03:10 -07:00
src riscv64 build, disables many tests XXX 2021-11-16 18:21:37 -07:00
tests Add basic github workflow 2021-06-18 22:05:56 +02:00
.gitignore build & run cartesi machine 2021-11-16 18:38:37 -07:00
AUTHORS Simplify Skill implementation 2021-10-31 22:43:38 +01:00
Copying.txt Initial import of Glaurung 2.1 2008-09-01 07:59:13 +02:00
README-upstream.md fork 2021-11-16 18:06:36 -07:00
README.md Store machine state 2021-11-16 20:02:53 -07:00
Top CPU Contributors.txt Update Top CPU Contributors 2021-06-29 10:24:54 +02:00
appveyor.yml Embed default net, and simplify using non-default nets 2020-08-29 21:56:00 +02:00

README.md

Stockfish for Cartesi RISC-V Machine Emulator

This branch contains patchlets to compile a RISC-V 64-bit build of stockfish to run under the Cartesi machine emulator.

Setup Cartesi SDK

Build using Cartesi GCC. I just copied them from the docker build and put them in my path (outside of the docker). It's probably easiest to build in the SDK docker.

git clone --recursive https://github.com/cartesi/machine-emulator-sdk

You should be able to run this command OK before proceeding:

riscv64-cartesi-linux-gnu-gcc --version

Build

Note, the Makefile kludge disables things like "tests".

Run this to build stockfish binary for riscv64 using Cartesi GCC toolchain:

git clone https://spacecruft.org/deepcrayon/stockfish
cd stockfish/src
make -j build ARCH=riscv64 COMP=riscv64-cartesi-linux-gnu-gcc COMPCXX=riscv64-cartesi-linux-gnu-g++

Build Disk Images for Cartesi Emulator

# Go back to top level directory in this git repo:
cd ..

# Copy newly built stockfish for cartesi disk image:
cp -p src/stockfish cartesi/img/stockfish

# Make 64 megabyte ext2 disk image with stockfish and shell script
genext2fs -b 51200 -d cartesi/img cartesi/stockfish.ext2

Run Stockfish in Emulator

To run the disk images, using upstream rootfs:

cartesi-machine								\
	--ram-length=256Mi						\
	--flash-drive=label:stockfish,filename:cartesi/stockfish.ext2	\
	--flash-drive=label:root,filename:/opt/cartesi/share/images/rootfs.ext2	\
	-- /mnt/stockfish/stockfish.sh

Emulator Output

This takes ~3 minutes to run:

         .
        / \
      /    \
\---/---\  /----\
 \       X       \
  \----/  \---/---\
       \    / CARTESI
        \ /   MACHINE
         '


Stockfish running under Cartesi virtual machine

Stockfish 161121 by the Stockfish developers (see AUTHORS file)

option name Debug Log File type string default 
option name Threads type spin default 1 min 1 max 512
option name Hash type spin default 16 min 1 max 33554432
option name Clear Hash type button
option name Ponder type check default false
option name MultiPV type spin default 1 min 1 max 500
option name Skill Level type spin default 20 min 0 max 20
option name Move Overhead type spin default 10 min 0 max 5000
option name Slow Mover type spin default 100 min 10 max 1000
option name nodestime type spin default 0 min 0 max 10000
option name UCI_Chess960 type check default false
option name UCI_AnalyseMode type check default false
option name UCI_LimitStrength type check default false
option name UCI_Elo type spin default 1350 min 1350 max 2850
option name UCI_ShowWDL type check default false
option name SyzygyPath type string default <empty>
option name SyzygyProbeDepth type spin default 1 min 1 max 100
option name Syzygy50MoveRule type check default true
option name SyzygyProbeLimit type spin default 7 min 0 max 7
option name Use NNUE type check default true
option name EvalFile type string default nn-13406b1dcbe0.nnue
uciok

Halted
Cycles: 3142947347

Store Machine State

Instead of fully booting, a RAM image can be loaded and the CPU set to a cycle, such as 3142947347.

cartesi-machine								\
	--max-mcycle=3142947347						\
	--store=cartesi/stockfish-ram					\
	--ram-length=256Mi						\
	--flash-drive=label:stockfish,filename:cartesi/stockfish.ext2	\
	--flash-drive=label:root,filename:/opt/cartesi/share/images/rootfs.ext2	\
	-- /mnt/stockfish/stockfish.sh

TODO

  • Make image of RAM with stockfish already run once and loaded.

  • Fix tests.

Upstream

See:

Cartesi

See:

Copying

Same as upstream Stockfish, GPL v3.

Contact

# y@deepcrayon.fish or jebba in Cartesi/Stockfish discord