SkillAgentSearch skills...

Smallbrain

A UCI chess engine written in C++

Install / Use

/learn @Disservin/Smallbrain
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

Smallbrain

History

During the pandemic I rediscovered chess and played a lot of games with my friends.<br> Then I started to program my first engine python-smallbrain in python, with the help of python-chess.<br>

I quickly realized how slow python is for chess engine programming, so I started to learn C++.<br> My first try was cppsmallbrain, though after some time I found the code very buggy and ugly.<br> So I started Smallbrain from scratch, during that time, I also joined Stockfish development. <br>

After some time I began implementing a NNUE into Smallbrain, with the help of Luecx from Koivisto.<br> As of now Smallbrain has a NNUE trained on 1 billion depth 9 + depth 7 + 150 million depth 9 DFRC fens generated with the built in data generator and using CudAD trainer to ultimately train the network.

News

The latest development versions support FRC/DFRC.

Compile

Compile it using the Makefile

make -j
.\smallbrain.exe bench

compare the Bench with the Bench in the commit messages, they should be the same.

or download the latest the latest executable directly over Github. <br> At the bottom you should be able to find multiple different compiles, choose one that doesnt crash.

Ordered by performance you should try x86-64-avx2 first then x86-64-modern and at last x86-64. If you want maximum performance you should compile Smallbrain yourself.

Elo

CCRL 40/2 FRC

| Name | Elo | + | - | | --------------------- | ---- | --- | --- | | Smallbrain 7.0 | 3537 | +13 | −13 | | Smallbrain dev-221204 | 3435 | +15 | −15 |

CCRL 40/15

| Name | Elo | + | - | | -------------------------- | ---- | --- | --- | | Smallbrain 7.0 64-bit 4CPU | 3374 | +20 | −20 | | Smallbrain 7.0 64-bit | 3309 | +15 | −15 | | Smallbrain 6.0 4CPU | 3307 | +23 | −23 | | Smallbrain 6.0 | 3227 | +23 | −23 | | Smallbrain 5.0 4CPU | 3211 | +23 | −23 | | Smallbrain 5.0 | 3137 | +20 | −20 | | Smallbrain 4.0 | 2978 | +25 | −25 | | Smallbrain 2.0 | 2277 | +28 | −29 | | Smallbrain 1.1 | 2224 | +29 | −30 |

CCRL Blitz 2'+1" (Blitz)

| Name | Elo | + | - | | -------------------------- | ---- | --- | --- | | Smallbrain 7.0 64-bit 8CPU | 3581 | +30 | −29 | | Smallbrain 7.0 64-bit | 3433 | +14 | −14 | | Smallbrain 6.0 | 3336 | +17 | −17 | | Smallbrain 5.0 | 3199 | +18 | −18 | | Smallbrain 4.0 | 3005 | +18 | −18 | | Smallbrain 3.0 | 2921 | +20 | −20 | | Smallbrain 1.1 | 2174 | +20 | −20 |

Stefan Pohl Computer Chess

| no | Program | Elo | + | - | Games | Score | Av.Op. | Draws | | --- | ------------------- | ---- | --- | --- | ----- | ----- | ------ | ----- | | 32 | Smallbrain 7.0 avx2 | 3445 | 6 | 6 | 10000 | 46.7% | 3469 | 63.0% | | 34 | Smallbrain 6.0 avx2 | 3345 | 7 | 7 | 9000 | 52.1% | 3331 | 49.9% |

CEGT

| no | Program | Elo | + | - | Games | Score | Av.Op. | Draws | | --- | ------------------------- | ---- | --- | --- | ----- | ----- | ------ | ----- | | 217 | Smallbrain 7.0 x64 1CPU | 3296 | 14 | 14 | 1596 | 50.7% | 3291 | 63.4% | | 271 | Smallbrain 6.0NN x64 1CPU | 3203 | 16 | 16 | 1300 | 42.8% | 3258 | 51.2% |

UCI settings

  • Hash The size of the hash table in MB.
  • Threads The number of threads used for search.
  • EvalFile The neural net used for the evaluation, currently only default.nnue exist.
  • SyzygyPath Path to the syzygy files.
  • UCI_ShowWDL Shows the WDL score in the UCI info.
  • UCI_Chess960 Enables Chess960 support.

Engine specific uci commands

  • go perft <depth> calculates perft from a set position up to depth.
  • print prints the current board
  • eval prints the evaluation of the board.

CLI commands

  • bench Starts the bench.
  • perft fen=<fen> depth=<depth> fen and depth are optional.
  • -eval fen=<fen>
  • -version/--version/--v/-v Prints the version.
  • -see Calculates the static exchange evaluation of the current position.
  • -generate Starts the data generation.
  • -tests Starts the tests.

Features

  • Evaluation
    • As of v6.0 the NNUE training dataset was regenerated using depth 9 selfplay games + random 8 piece combinations.

Datageneration

  • Starts the data generation.

    -generate
    
  • Specify the number of threads to use. default: 1

    threads=<int>
    
  • If you want to start from a book instead of using random playout. default: ""

    book=<path/to/book>
    
  • Path to TB, only used for adjudication. default: ""

    tb=<path/to/tb>
    
  • Analysis depth, values between 7-9 are good. default: 7

    depth=<int>
    
  • Analysis nodes, values between 2500-10000 are good. default: 0

    nodes=<int>
    
  • The amount of hash in MB. This gets multiplied by the number of threads. default: 16

    hash=<int>
    
  • Example:

.\smallbrain.exe -generate threads=30 book=E:\Github\Smallbrain\src\data\DFRC_openings.epd tb=E:/Chess/345
.\smallbrain.exe -generate threads=30 depth=7 hash=256 tb=F:\syzygy_5\3-4-5
.\smallbrain.exe -generate threads=30 depth=9 tb=H:/Chess/345
.\smallbrain.exe -generate threads=30 nodes=5000 tb=H:/Chess/345

Acknowledgements

I'd also like to thank the following people for their help and support:

  • A big thanks to Luecx for his amazing CudAd trainer and his help with the NNUE implementation.
  • Andrew Grant for the OpenBench platform https://github.com/AndyGrant/OpenBench
  • Morgan Houppin, author of Stash https://github.com/mhouppin/stash-bot for his debug sessions.
  • Various other people from Stockfish discord for their help.
  • Chess.com for their Smallbrain inclusion in the Computer Chess Championship (CCC)
  • TCEC for their Smallbrain invitation.

Engines

The following engines have taught me a lot about chess programming and I'd like to thank their authors for their work:

Tools

Included: The following parts of the code are from other projects, I'd like to thank their authors for their work and their respective licenses remain the same:

External:

View on GitHub
GitHub Stars65
CategoryDevelopment
Updated1mo ago
Forks9

Languages

C++

Security Score

100/100

Audited on Feb 22, 2026

No findings