Pingu is a command-line program - in order to interact with other engines or people it is recommended to use a suitable GUI e.g. cutechess.
When running Pingu in the command line, type 'help' for a list of available commands.
Pingu accepts many of the usual UCI commands (go/stop/position etc.) and it has some additional custom commands.
| Version | CCRL Blitz | CCRL 40/15 |
|---|---|---|
| 5.0.0 | - | 3186 |
| 4.0.0 | 2997 | 3019 |
| 3.0.0 | - | 2820 |
| 2.0.0 | 2527 | 2614 |
| 1.0.0 | 2158 | - |
More information on CCRL.
- Staged move generation
- Bitboard representation
- Plain magic bitboards
- Root search
- PV move
- Others ordered by descending subtree size
- Main search
- Hash move
- Good captures + promotions
- Killers
- Bad captures
- Quiet moves
- Quiescence search
- Good captures + promotions
- Check evasions
- Winning captures ordered by MVV/LVA
- Losing captures ordered by static exchange evaluation
- Quiet moves ordered by history, counter moves history and piece square tables
- Root search
- Iterative deepening
- Aspiration windows
- Principal variation search
- Main search
- Fail-soft alpha-beta
- Principal variation search
- Reverse futility pruning
- Null move pruning
- Internal iterative reduction
- Late move reductions
- Futility pruning
- Late move pruning
- Repetition detection
- Transposition tables
- Always replace
- Depth-preferred
- Quiescence search
- Fail-soft alpha-beta
- Stand-pat
- Forward prune SEE < 0
- Basic time management
- Parallel search with Lazy SMP algorithm
NNUE with HalfKA feature set and subnetworks indexed by piece count.
Architecture: 2 x (45056 -> 32) -> 1
Trained with PyTorch and a custom dataloader written in C++ (source code in /nnue).
Final model uses quantized weights and AVX2 intrinsics for optimal performance.
All NNUE versions of Pingu were trained with the engine's own self-play data. The process is described in nnue.md, and more recently in nnue_2.md and nnue_3.md.
Early HCE versions of Pingu were Texel-tuned using self-play data from Ethereal, obtained from this forum post. The process is described in evaluation_tuning.md.
Chess Programming Wiki for its useful resources.
CCRL for testing Pingu.