Tomasz Sobczyk
127c1f2fe2
Merge branch 'master' into tools
2021-05-24 11:32:58 +02:00
Tomasz Sobczyk
e8d64af123
New NNUE architecture and net
...
Introduces a new NNUE network architecture and associated network parameters,
as obtained by a new pytorch trainer.
The network is already very strong at short TC, without regression at longer TC,
and has potential for further improvements.
https://tests.stockfishchess.org/tests/view/60a159c65085663412d0921d
TC: 10s+0.1s, 1 thread
ELO: 21.74 +-3.4 (95%) LOS: 100.0%
Total: 10000 W: 1559 L: 934 D: 7507
Ptnml(0-2): 38, 701, 2972, 1176, 113
https://tests.stockfishchess.org/tests/view/60a187005085663412d0925b
TC: 60s+0.6s, 1 thread
ELO: 5.85 +-1.7 (95%) LOS: 100.0%
Total: 20000 W: 1381 L: 1044 D: 17575
Ptnml(0-2): 27, 885, 7864, 1172, 52
https://tests.stockfishchess.org/tests/view/60a2beede229097940a03806
TC: 20s+0.2s, 8 threads
LLR: 2.93 (-2.94,2.94) <0.50,3.50>
Total: 34272 W: 1610 L: 1452 D: 31210
Ptnml(0-2): 30, 1285, 14350, 1439, 32
https://tests.stockfishchess.org/tests/view/60a2d687e229097940a03c72
TC: 60s+0.6s, 8 threads
LLR: 2.94 (-2.94,2.94) <-2.50,0.50>
Total: 45544 W: 1262 L: 1214 D: 43068
Ptnml(0-2): 12, 1129, 20442, 1177, 12
The network has been trained (by vondele) using the https://github.com/glinscott/nnue-pytorch/ trainer (started by glinscott),
specifically the branch https://github.com/Sopel97/nnue-pytorch/tree/experiment_56 .
The data used are in 64 billion positions (193GB total) generated and scored with the current master net
d8: https://drive.google.com/file/d/1hOOYSDKgOOp38ZmD0N4DV82TOLHzjUiF/view?usp=sharing
d9: https://drive.google.com/file/d/1VlhnHL8f-20AXhGkILujnNXHwy9T-MQw/view?usp=sharing
d10: https://drive.google.com/file/d/1ZC5upzBYMmMj1gMYCkt6rCxQG0GnO3Kk/view?usp=sharing
fishtest_d9: https://drive.google.com/file/d/1GQHt0oNgKaHazwJFTRbXhlCN3FbUedFq/view?usp=sharing
This network also contains a few architectural changes with respect to the current master:
Size changed from 256x2-32-32-1 to 512x2-16-32-1
~15-20% slower
~2x larger
adds a special path for 16 valued ClippedReLU
fixes affine transform code for 16 inputs/outputs, buy using InputDimensions instead of PaddedInputDimensions
this is safe now because the inputs are processed in groups of 4 in the current affine transform code
The feature set changed from HalfKP to HalfKAv2
Includes information about the kings like HalfKA
Packs king features better, resulting in 8% size reduction compared to HalfKA
The board is flipped for the black's perspective, instead of rotated like in the current master
PSQT values for each feature
the feature transformer now outputs a part that is fowarded directly to the output and allows learning piece values more directly than the previous network architecture. The effect is visible for high imbalance positions, where the current master network outputs evaluations skewed towards zero.
8 PSQT values per feature, chosen based on (popcount(pos.pieces()) - 1) / 4
initialized to classical material values on the start of the training
8 subnetworks (512x2->16->32->1), chosen based on (popcount(pos.pieces()) - 1) / 4
only one subnetwork is evaluated for any position, no or marginal speed loss
A diagram of the network is available: https://user-images.githubusercontent.com/8037982/118656988-553a1700-b7eb-11eb-82ef-56a11cbebbf2.png
A more complete description: https://github.com/glinscott/nnue-pytorch/blob/master/docs/nnue.md
closes https://github.com/official-stockfish/Stockfish/pull/3474
Bench: 3806488
2021-05-18 18:06:23 +02:00
Stéphane Nicolet
f90274d8ce
Small clean-ups
...
- Comment for Countemove pruning -> Continuation history
- Fix comment in input_slice.h
- Shorter lines in Makefile
- Comment for scale factor
- Fix comment for pinners in see_ge()
- Change Thread.id() signature to size_t
- Trailing space in reprosearch.sh
- Add Douglas Matos Gomes to the AUTHORS file
- Introduce comment for undo_null_move()
- Use Stockfish coding style for export_net()
- Change date in AUTHORS file
closes https://github.com/official-stockfish/Stockfish/pull/3416
No functional change
2021-05-17 10:47:14 +02:00
Tomasz Sobczyk
201d324187
Add . as an additional include directory both for .depend and for the build.
2021-05-14 17:45:39 +02:00
Tomasz Sobczyk
8f0dbc9348
Merge remote-tracking branch 'upstream/master' into tools_merge_20210513
2021-05-13 10:53:57 +02:00
EntityFX
b62af7ac1e
E2K: added support for MCST Elbrus 2000 CPU architecture
...
e2k (Elbrus 2000) - this is a VLIW/EPIC architecture,
the like Intel Itanium (IA-64) architecture.
The architecture has half native / half software support
for most Intel/AMD SIMD (e.g. MMX/SSE/SSE2/SSE3/SSSE3/SSE4.1/SSE4.2/AES/AVX/AVX2 & 3DNow!/SSE4a/XOP/FMA4) via intrinsics.
https://en.wikipedia.org/wiki/Elbrus_2000
closes https://github.com/official-stockfish/Stockfish/pull/3425
No functional change
2021-05-11 19:45:14 +02:00
Tomasz Sobczyk
ba32bd5d70
Bring the changes closer to official-stockfish/master
2021-04-19 18:57:21 +02:00
Tomasz Sobczyk
08e255960d
Merge remote-tracking branch 'upstream/master' into data_generation
2021-04-18 19:45:46 +02:00
Tomasz Sobczyk
f1d4c1c896
remove useless stuff
2021-04-18 19:24:23 +02:00
Tomasz Sobczyk
696e849a30
learn -> tools
2021-04-18 19:18:41 +02:00
Tomasz Sobczyk
3101ae7973
remove learn
2021-04-18 19:04:14 +02:00
Tomasz Sobczyk
f28303d214
Allow using Intel SDE for PGO builds.
...
The software development emulator (SDE) allows to run binaries compiled
for architectures not supported by the actual CPU. This is useful to
do PGO builds for newer architectures. The SDE can currently be obtained from
https://software.intel.com/content/www/us/en/develop/articles/intel-software-development-emulator.html
This patch introduces a new optional makefile argument SDE_PATH.
If not empty it should contain the path to the sde executable
closes https://github.com/official-stockfish/Stockfish/pull/3373
No functional change.
2021-03-27 16:56:05 +01:00
Tomasz Sobczyk
0ddad45ab2
Add gather_statistics command that allows gathering statistics from a .bin or .binpack file. Initially only support position count.
2021-03-01 00:36:45 +09:00
Lolligerhans
40cb0f076a
Small trivial clean-ups, February 2021
...
Closes https://github.com/official-stockfish/Stockfish/pull/3329
No functional change
2021-02-16 01:31:42 +01:00
Gian-Carlo Pascutto
550fed3343
Enable New Pass Manager for Clang.
...
It's about 1% speedup for Stockfish.
Result of 100 runs
==================
base (...fish_clang12) = 1946851 +/- 3717
test (./stockfish ) = 1967276 +/- 3408
diff = +20425 +/- 2438
speedup = +0.0105
P(speedup > 0) = 1.0000
Thanks to David Major for making me aware of this part
of LLVM development.
closes https://github.com/official-stockfish/Stockfish/pull/3346
No functional change
2021-02-10 19:54:26 +01:00
Gian-Carlo Pascutto
b15e3b3fa9
Disable ThinLTO when using Clang.
...
Benchmarking with current Clang 12 shows that
and ThinLTO is a pessimization, see issue #3341 .
closes https://github.com/official-stockfish/Stockfish/pull/3345
No functional change.
2021-02-10 19:52:20 +01:00
Andy Pilate
1f87a9eb6c
Fixes FreeBSD compilation when using Clang
...
closes https://github.com/official-stockfish/Stockfish/pull/3342
No functional change
2021-02-10 19:50:44 +01:00
Tomasz Sobczyk
96b377a90a
Add gensfen_nonpv
2020-12-24 21:37:30 +09:00
kennyfrc
f4b4430380
remove unnecessary makefile commands and fix blas on mac
2020-12-13 09:31:52 +09:00
Joost VandeVondele
b49fd3ab30
Add -lstdc++fs to the link line of gcc
...
older versions of gcc (<8.1) need this, even if they accept -std=c++17
with this patch, the code can be run on fishtest again,
at least by the majority of workers (fishtest doesn't require c++17 to be available)
See e.g.
https://tests.stockfishchess.org/tests/view/5fcfbf801ac1691201888235
Bench: 3820648
2020-12-09 08:40:34 +09:00
Kenn Costales
055f907315
Merge branch 'master' into stockfish-nnue-2020-08-30-macos
2020-12-08 22:49:11 +08:00
kennyfrc
bb26ce5aa1
mac specific makefile with compilation instructions
2020-12-08 22:14:18 +08:00
noobpwnftw
0b2ae6cb64
Merge remote-tracking branch 'remotes/official/master' into merge
2020-11-28 06:47:04 +08:00
Tomasz Sobczyk
89294e2e4f
Add transform command. Add transform nudged_static subcommand.
2020-11-27 09:16:22 +09:00
noobpwnftw
c29554a120
Merge remote-tracking branch 'remotes/official/master' into master
...
Bench: 3597730
2020-11-23 04:27:12 +08:00
Tomasz Sobczyk
d4350a16f3
Add representation of an opening book.
2020-11-17 09:43:23 +09:00
Tomasz Sobczyk
c56a4a36eb
Add our own blas-like routines that use stockfish's thread pool for parallelization.
2020-10-29 23:57:51 +09:00
Tomasz Sobczyk
ec9e49e875
Add a HalfKA architecture (a product of K - king, and A - any piece) along with all required infrastructure. HalfKA doesn't discriminate kings compared to HalfKP. Keep old architecture as the default one.
2020-10-29 09:10:01 +09:00
Tomasz Sobczyk
e01397c674
Remove multi_think
2020-10-26 19:40:40 +09:00
Joost VandeVondele
258af8ae44
Add net as dependency of config
...
cleaner output and error message if the server is down and the net is not available.
closes https://github.com/official-stockfish/Stockfish/pull/3188
No functional change
2020-10-22 20:18:12 +02:00
Tomasz Sobczyk
9f87282c6d
Fix net not being downloaded on build. Make PGO build faster by reverting gensfen command change.
2020-09-24 21:59:25 +02:00
noobpwnftw
9827411b7c
Merge remote-tracking branch 'remotes/nodchip/master' into trainer
2020-09-24 21:45:28 +08:00
noobpwnftw
411adab149
Merge remote-tracking branch 'remotes/nodchip/master' into trainer
2020-09-23 18:29:30 +08:00
noobpwnftw
26f63fe741
Merge remote-tracking branch 'remotes/origin/master' into trainer
2020-09-19 03:38:37 +08:00
syzygy1
d86663af14
Improve NDK section in Makefile
...
This PR sets the "comp" variable simply to "clang",
which seems to be more consistent and allows a small simplification.
The PR also moves the section that sets "profile_make" and "profile_use" to after the NDK section,
which ensures that these variables are now set correctly for NDK/clang.
closes https://github.com/official-stockfish/Stockfish/pull/3121
No functional change
2020-09-16 21:00:14 +02:00
Tomasz Sobczyk
89f38c938b
Don't prompt when the training data file doesn't exist when trying to delete it
2020-09-13 13:52:42 +02:00
Tomasz Sobczyk
2e2de7607b
Add extension to the PGO_TRAINING_DATA_FILE so that the generated file name matches the one we try to delete.
2020-09-13 13:47:19 +02:00
Tomasz Sobczyk
e4a4f4001f
parametrize the name of the training data file generated during pgo
2020-09-13 13:44:19 +02:00
Tomasz Sobczyk
9ee8ce67bf
Move removal of generate training data file to profileclean.
2020-09-13 13:42:13 +02:00
Tomasz Sobczyk
4b70f4bf23
Add extra ld flags to the proper variable.
2020-09-13 02:07:29 +02:00
Tomasz Sobczyk
72164ba59c
Add missing -fopenmp LDFLAG
2020-09-13 02:06:33 +02:00
Tomasz Sobczyk
fbae6604b1
Remove LEARNCXXFLAGS, LEARNLDFLAGS, BLASDEFINE, BLASCXXFLAGS, BLASLDFLAGS in favor of directly modifying CXXFLAGS and LDFLAGS.
2020-09-13 00:18:01 +02:00
Tomasz Sobczyk
8d1ad6fbf6
Add a makefile option to enable use of BLAS. Default to "no"
2020-09-12 21:16:27 +02:00
Tomasz Sobczyk
1e2fca4040
Move learn target to build target and profile-learn to profile-build.
2020-09-12 16:23:49 +02:00
Joost VandeVondele
8d499e6efa
Fix flags for dependency generation ( 98f24570ab)
2020-09-12 22:25:36 +09:00
Tomasz Sobczyk
98f24570ab
Add src to include paths, remove non-standard ".." in includes in learn directory.
2020-09-11 21:53:17 +09:00
Tomasz Sobczyk
a059fa86c4
Move sfen_packer to learn.
2020-09-11 21:53:17 +09:00
Tomasz Sobczyk
683c6146ce
Move declarations around and split them.
2020-09-11 21:53:17 +09:00
noobpwnftw
84ba591118
Merge branch 'master' into trainer
2020-09-09 20:19:13 +08:00
noobpwnftw
675d336ebb
Merge branch 'master' into trainer
2020-09-09 16:08:49 +08:00