io-chess
UCI chess engine
Loading...
Searching...
No Matches
FeatureExtractor.hpp
Go to the documentation of this file.
1
5#pragma once
6#include "chess.hpp"
7#include <array>
8#include <cstdint>
9
10struct alignas(64) ChessInput {
11 // [Input 1] Board: 32 planes of 8x8 (Categorical: 0 or 255, or continuous
12 // [last two planes]) Structure: 32 x 64 bytes = 2048 bytes
13 uint8_t layers[32][64];
14
15 // [Input 2] Global: 16 scalars (Normalized Floats)
16 // Structure: 16 x 4 bytes = 64 bytes (aligned)
17 float global[16];
18};
19
21public:
22 static constexpr int NUM_SQUARES = 64;
23
24 // --- Sparse Layer Indices (0 to 31) ---
25 // Maps to ChessInput.sparse[index]
69
70 // --- Global Indices (0 to 14) ---
71 // Maps to ChessInput.global[index]
73 // Material Configuration (Normalized)
84
85 // Castling Rights
90
91 // Game Phase (0.0 = Opening, 1.0 = Deep Endgame)
93 };
94
95 // High-performance extraction directly into the struct
96 static void fill_input(const chess::Board &board, ChessInput &out);
97
98private:
99 // Internal logic for dense map generation (Chebyshev distance)
100 // Implementation is hidden in .cpp to keep header clean
101 static void init_tables();
102};
Definition FeatureExtractor.hpp:20
static constexpr int NUM_SQUARES
Definition FeatureExtractor.hpp:22
static void init_tables()
GlobalIndices
Definition FeatureExtractor.hpp:72
@ THEM_MAT_ROOK
Definition FeatureExtractor.hpp:81
@ THEM_MAT_QUEEN
Definition FeatureExtractor.hpp:83
@ US_MAT_KNIGHT
Definition FeatureExtractor.hpp:76
@ US_MAT_QUEEN
Definition FeatureExtractor.hpp:82
@ THEM_OOO
Definition FeatureExtractor.hpp:89
@ THEM_OO
Definition FeatureExtractor.hpp:88
@ THEM_MAT_KNIGHT
Definition FeatureExtractor.hpp:77
@ US_MAT_BISHOP
Definition FeatureExtractor.hpp:78
@ US_MAT_PAWN
Definition FeatureExtractor.hpp:74
@ US_OOO
Definition FeatureExtractor.hpp:87
@ US_MAT_ROOK
Definition FeatureExtractor.hpp:80
@ PHASE
Definition FeatureExtractor.hpp:92
@ THEM_MAT_PAWN
Definition FeatureExtractor.hpp:75
@ US_OO
Definition FeatureExtractor.hpp:86
@ THEM_MAT_BISHOP
Definition FeatureExtractor.hpp:79
LayerIndices
Definition FeatureExtractor.hpp:26
@ US_MOVE_ROOK
Definition FeatureExtractor.hpp:45
@ US_THREATS
Definition FeatureExtractor.hpp:56
@ THEM_MOVE_BISHOP
Definition FeatureExtractor.hpp:50
@ US_MOVE_KNIGHT
Definition FeatureExtractor.hpp:43
@ THEM_MOVE_QUEEN
Definition FeatureExtractor.hpp:52
@ US_KING_DIST
Definition FeatureExtractor.hpp:66
@ THEM_MOVE_KNIGHT
Definition FeatureExtractor.hpp:49
@ THEM_PAWN
Definition FeatureExtractor.hpp:34
@ US_MOVE_KING
Definition FeatureExtractor.hpp:47
@ US_KING
Definition FeatureExtractor.hpp:33
@ THEM_DEFENDED
Definition FeatureExtractor.hpp:63
@ THEM_MOVE_ROOK
Definition FeatureExtractor.hpp:51
@ THEM_BISHOP
Definition FeatureExtractor.hpp:36
@ US_ROOK
Definition FeatureExtractor.hpp:31
@ THEM_KING
Definition FeatureExtractor.hpp:39
@ THEM_MOVE_KING
Definition FeatureExtractor.hpp:53
@ THEM_CHECKS
Definition FeatureExtractor.hpp:59
@ US_QUEEN
Definition FeatureExtractor.hpp:32
@ US_MOVE_BISHOP
Definition FeatureExtractor.hpp:44
@ THEM_KNIGHT
Definition FeatureExtractor.hpp:35
@ US_MOVE_PAWN
Definition FeatureExtractor.hpp:42
@ THEM_MOVE_PAWN
Definition FeatureExtractor.hpp:48
@ US_MOVE_QUEEN
Definition FeatureExtractor.hpp:46
@ US_BISHOP
Definition FeatureExtractor.hpp:30
@ THEM_THREATS
Definition FeatureExtractor.hpp:57
@ US_KNIGHT
Definition FeatureExtractor.hpp:29
@ THEM_KING_DIST
Definition FeatureExtractor.hpp:67
@ THEM_ROOK
Definition FeatureExtractor.hpp:37
@ US_PAWN
Definition FeatureExtractor.hpp:28
@ US_DEFENDED
Definition FeatureExtractor.hpp:62
@ THEM_QUEEN
Definition FeatureExtractor.hpp:38
@ US_CHECKS
Definition FeatureExtractor.hpp:58
static void fill_input(const chess::Board &board, ChessInput &out)
Definition FeatureExtractor.cpp:352
Definition FeatureExtractor.hpp:10
uint8_t layers[32][64]
Definition FeatureExtractor.hpp:13
float global[16]
Definition FeatureExtractor.hpp:17