-
Notifications
You must be signed in to change notification settings - Fork 1
/
TODO
45 lines (33 loc) · 1.73 KB
/
TODO
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
TODO
====
Backlog for v1.1:
=================
- add UCI "SyzygyPath" option (if string, enable TB, otherwise don't)
option name SyzygyPath type string default <empty>
- implement TB::init(path) and TB::probeWDL()
- test some score with some FEN positions
- book
- Stockfish 15+ depth=40 multipv=10
- built-in vs. external
- Stockfish/src/book.py - depth=40 multipv=10
- format: r3k2r/p1ppqpb1/bn2pnp1/3PN3/1p2P3/2N2Q1p/PPPBBPPP/R3K2R w KQkq - d5e6 456 e2a6 -201 ...
Backlog for v2.0:
=================
- Try dperft() with async for each move. How much faster? Does it count the total no. of nodes?
- Pondering
- https://web.archive.org/web/20071027053527/http://www.brucemo.com/compchess/programming/pondering.htm
- use async to ponder (make move and search infinite to fill the cache)
- lazy SMP: try with thread_local (minimum modifications). Otherwise:
- call search() with async Threads-1 times
- half of the threads use depth, half use depth+1
- Each thread needs its own copy of modifiable structures (pv_table, followPV, allowNull, killers, history)
- Position should be encapsulated into pos Struct, cannot share one global set of variables: bit boards, fifty, ply, occupancies, sideToMove, castling, castling_rights, etc
- Modify saveBoard() and takeBack() to update own copies of pos Struct
- Start by testing all “reentrant changes” with only the main thread. Make it work. Measure performance.
- Then start to add threads.
- thread_local for variables used by all search threads
Backlog for v3.0:
=================
- Update NNUE to SFNNv5 architecture
- Use incremental / accumulator for performance (~20% faster)
- More up-to-date library? --> https://github.com/jdart1/nnue