leesongun/othello-nnue
A NNUE Othello engine
This is Zig port of Othello move generator.
.
├── engine # Engine code
├── game # Othello implementation
│ ├── amd64 # AMD64-specific codes
│ └── arm64 # ARM64-specific codes
├── game # Othello implementation
├── perf # Benchmark tests
├── training # NNUE training
├── tui # Othello on terminal
├── build.zig # build file
└── readme.md
We implement Kogge-Stone Algorithm for move generation. It should compile to vector instructions.
On x86-64-v3 processors we implement PDEP/PEXT bitboard using 16.5KiB of LUT, which would fit in the L1D cache. We are working to reduce LUT further without harming performance.
Name | Type | Size |
---|---|---|
index |
[64][4]u16 |
0.5KiB |
mask |
[64][4][2]u64 |
4KiB |
result |
[0x3000]u8 |
12KiB |
On ARM processors we implement Hyperbola Quintessence using rbit instruction and 2KiB of LUT.
Name | Type | Size |
---|---|---|
mask |
[64][4]u64 |
2KiB |
We train an improved version of AlphaZero, which generates game for NNUE training data.