Skip to content

87flowers/Rose

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

163 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🌹 Rose

Rose is an experimental classical chess and chess960 engine. Most notably, Rose was the first engine to utilise SIMD-accelerated attack tables.

Rose makes heavy use of SIMD; it relies on AVX512 for performance. Performance on other microarchitectures is not a focus of this project.

Rose is capable of communicating over both the Universal Chess Interface (UCI) protocol and the Chess Engine Communication Protocol (CECP/Xboard), although UCI is the preferred protocol.

The Rose project prides itself in only using original self-generated training data for its neural networks.

Releases

For official releases, please visit: https://github.com/87flowers/Rose/releases

We recommend using the AVX512 build for your operating system if you have a CPU that supports it, as this would be the fastest. You can get a speed comparison by running bench on each downloaded executable.

Building Rose

Building requires Make and a C++26 compiler. Clang is the recommended compiler, and GCC support is not guaranteed.

Run the command

make

in the root directory to build a ./rose executable. The current network will be automatically downloaded.

If you are building on Windows, using MSYS2 (UCRT64) is recommended. Rose is regularly tested to build with the mingw-w64-ucrt-x86_64-clang, mingw-w64-ucrt-x86_64-git, and mingw-w64-ucrt-x86_64-lld packages installed.

Non-standard UCI commands

  • wait: Waits for the current search to complete before continuing.
  • bench: Runs a search benchmark on a built-in list of positions, to provide a search fingerprint.
  • perft <depth>: Counts all leaf nodes to the specified depth from the current position.
  • moves [<move>]*: Make the specified list of moves on the current position.
  • d: Print the current position as an ASCII board.
  • getposition: Print the current position as a UCI command.
  • dumpposition: Dumps internal position structure information.
  • hashstack: Prints the current hash stack, which is used for repetition detection.
  • xboard: Switch to CECP mode.

Non-standard Xboard commands

  • wait: Waits for the current search to complete before continuing.
  • getposition: Print the current position as a UCI command.
  • dumpposition: Dumps internal position structure information.
  • hashstack: Prints the current hash stack, which is used for repetition detection.
  • uci: Switch to UCI mode.

Acknowledgements

  • Members of the Stockfish, Engine Programming, and Alpha-Beta discords, for being a helpful and fun community to be a part of.
  • The many public available open-source chess engines.
  • Authors of Yukari, for ideas, hardware, and support.
  • Authors of Reckless, pawnocchio, viridithas, Stormphrax, Soul, Clockwork, and many others.
  • jw1912 for bullet, used to train the NNUE networks.
  • The excellent {fmt} library, used in this project.

License

This project is licensed under the GNU Affero General Public License version 3. See the LICENSE file for more information.

About

An Experimental UCI Chess Engine

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors