ScorpioScorpioNNUE

Home * Engines * Scorpio

[ Scorpio [1] Scorpio,

a sophisticated open source chess engine by Daniel Shawul, written in C++ and compliant to the Chess Engine Communication Protocol with builds running under Windows and Linux. Scorpio participated at the CCT9, CCT11 and CCT12 online tournaments, and played the ICT 2007 over the board. It is base of Daniel’s general game playing engine Nebiyu, able to play Chess variants, Checkers, Reversi, Go and Amazons [2].

Board Representation

Scorpio combines Bitboards with a 0x88 board representation, and the coordinate transformation in scanning bits along with the lookup of the De Bruijn multiplication. The “unique” 64-bit routine was generated with the help of the De Bruijn Sequence Generator passing Daniel’s birth date [3] . Magic bitboard implementation by Pradu Kannan [4] . Thanks for the acknowledgment of both!

Scorpio performs a distributed search [5] [6] around an iterative depth-first search framework [7] :

Scorpio uses a decentralized approach ([p2p](https://en.wikipedia.org/wiki/Peer-to-peer)) where neither [memory](Memory "Memory") nor jobs are centralized. Each host could have multiple processors in which case [shared memory search](Parallel_Search "Parallel Search") (centralized search with [threads](Thread "Thread")) will be used. One processor per node will be started by [mpirun](https://en.wikipedia.org/wiki/Message_Passing_Interface), then each [process](Process "Process") at each node will create enough threads to engage all its processors. 

MCTS

Scorpio 2.7.9, released in December 2017, optionally features a Monte-Carlo Tree Search (MCTS) [8]. Scorpio 2.8 in February 2018, MCTS with alpha-beta rollouts as suggested Bojun Huang [9]. The parallel search for MCTS uses virtual loss to distribute work among threads in standard MCTS rollouts, and ABDADA like BUSY flag for alpha-beta rollouts. ABDADA and parallel MCTS from the Go world are very similar in nature [10].

Evaluation

Scorpio’s evaluation includes following features and techniques [11] :

Bitbases

see main article Scorpio Bitbases

Scorpio has its own endgame bitbase format, which might be probed by other programs via a shared library egbbdll.

ScorpioNN

The neural network version of Scorpio 2.9.0 (2019) works using egbbdll shared library [12] that provides neural network inference via TensorFlow and/or TensorRT [13] backends [14].

ScorpioNNUE

With the the advent of NNUE and its huge success in Stockfish NNUE, CFish NNUE and other engines, Daniel Shawul added NNUE support à la CFish into his egbbdll probing library [15] [16], and reported more than 400 Elo out of his implementation with a shared library with Scorpio 3.0.9 [17].

See also

Dedicated Namesake

Forum Posts

2005 …

2010 …

2015 …

2018

2019

2020 …

Re: will Tcec allow Stockfish with a Leela net to play? by Daniel Shawul, CCC, June 18, 2021

Chess Engine

Misc

feat. Beb Guérin and Claude Delcloo

References

  1. Scorpio symbol, Book of Hours, the Falstof Master, Bodleian Library, Oxford, Scorpio (astrology) from Wikipedia
  2. Scorpio Chess and Nebiyu Alien
  3. Scorpio/scorpio.h at master · dshawul/Scorpio · GitHub
  4. Scorpio/magics.cpp at master · dshawul/Scorpio · GitHub
  5. Scorpio/parallel.cpp at master · dshawul/Scorpio · GitHub
  6. asynchronous search by Daniel Shawul, CCC, April 6, 2010
  7. Scorpio/search.cpp at master · dshawul/Scorpio · GitHub
  8. Scorpio 2.7.9 by Daniel Shawul, CCC, December 16, 2017
  9. Bojun Huang (2015). Pruning Game Tree by Rollouts. AAAI
  10. Scorpio 2.8 by Daniel Shawul, CCC, February 10, 2018
  11. Scorpio/eval.cpp at master · dshawul/Scorpio · GitHub
  12. GitHub - dshawul/egbbdll: Probing code for scorpio bitbases
  13. NVIDIA TensorRT | NVIDIA Developer
  14. GitHub - dshawul/Scorpio: Scorpio chess engine - Neural Networks (NNs)
  15. Re: Hacking around CFish NNUE by Daniel Shawul, CCC, October 15, 2020
  16. GitHub - dshawul/nnue-probe
  17. Re: How to scale stockfish NNUE score? by Daniel Shawul, CCC, October 17, 2020

Up one level