Add basic github workflow move to github actions to replace travis CI. First version, testing on linux using gcc and clang. gcc build with sanitizers and valgrind. No functional change
Allow for VNNI256 compilation with g++-8 explicitly pass needed -mavx512f -mavx512bw flags closes https://github.com/official-stockfish/Stockfish/pull/3061 No functional change
Support VNNI on 256bit vectors due to downclocking on current chips (tested up to cascade lake) supporting avx512 and vnni512, it is better to use avx2 or vnni256 in multithreaded (in particular hyperthreaded) engine use. In single threaded use, the picture is different. gcc compilation for vnni256 requires a toolchain for gcc >= 9. closes https://github.com/official-stockfish/Stockfish/pull/3038 No functional change
Update Makefile for macOS Changes to deal with compilation (particularly profile-build) on macOS. (1) The default toolchain has gcc masquerading as clang, the previous Makefile was not picking up the required changes to the different profiling tools. (2) The previous Makefile test for gccisclang occurred before a potential overwrite of CXX by COMPCXX (3) llvm-profdata no longer runs as a command on macOS and instead is invoked by ``xcrun llvm-profdata`` (4) Needs to support use of true gcc using e.g. ``make build ... COMPCXX=g++-10`` (5) enable profile-build in travis for macOS closes https://github.com/official-stockfish/Stockfish/pull/3043 No functional change
Expanded support for x86-32 architectures. add new ARCH targets x86-32-sse41-popcnt > x86 32-bit with sse41 and popcnt support x86-32-sse2 > x86 32-bit with sse2 support x86-32 > x86 32-bit generic (with mmx and sse support) retire x86-32-old (use general-32) closes https://github.com/official-stockfish/Stockfish/pull/3022 No functional change.
Add further targets to travis testing general-32, general-64 and help closes https://github.com/official-stockfish/Stockfish/pull/3014 No functional change
This commit enables a mixed bench, to improve CI and allow for PGO (profile-build) of the NNUE part of the code. Joint work gvreuls / vondele * Download the default NNUE net in AppVeyor * Download net in travis CI `make net` * Adjust tests to cover more archs, speedup instrumented testing * Introduce 'mixed' bench as default, with further options: classical, NNUE, mixed. mixed (default) and NNUE require the default net to be present, which can be obtained with ``` make net ``` Further examples (first is equivalent to `./stockfish bench`): ``` ./stockfish bench 16 1 13 default depth mixed ./stockfish bench 16 1 13 default depth classical ./stockfish bench 16 1 13 default depth NNUE ``` The net is now downloaded automatically if needed for `profile-build` (usual `build` works fine without net present) PGO gives a nice speedup on fishtest: passed STC: LLR: 2.93 (-2.94,2.94) {-0.50,1.50} Total: 3360 W: 469 L: 343 D: 2548 Ptnml(0-2): 20, 246, 1030, 356, 28 https://tests.stockfishchess.org/tests/view/5f31b5499081672066537569 passed LTC: LLR: 2.97 (-2.94,2.94) {0.25,1.75} Total: 8824 W: 609 L: 502 D: 7713 Ptnml(0-2): 8, 430, 3438, 519, 17 https://tests.stockfishchess.org/tests/view/5f31c87b908167206653757c closes https://github.com/official-stockfish/Stockfish/pull/2931 fixes https://github.com/official-stockfish/Stockfish/issues/2907 requires fishtest updates before commit Bench: 4290577
Add NNUE evaluation This patch ports the efficiently updatable neural network (NNUE) evaluation to Stockfish. Both the NNUE and the classical evaluations are available, and can be used to assign a value to a position that is later used in alpha-beta (PVS) search to find the best move. The classical evaluation computes this value as a function of various chess concepts, handcrafted by experts, tested and tuned using fishtest. The NNUE evaluation computes this value with a neural network based on basic inputs. The network is optimized and trained on the evalutions of millions of positions at moderate search depth. The NNUE evaluation was first introduced in shogi, and ported to Stockfish afterward. It can be evaluated efficiently on CPUs, and exploits the fact that only parts of the neural network need to be updated after a typical chess move. [The nodchip repository](https://github.com/nodchip/Stockfish) provides additional tools to train and develop the NNUE networks. This patch is the result of contributions of various authors, from various communities, including: nodchip, ynasu87, yaneurao (initial port and NNUE authors), domschl, FireFather, rqs, xXH4CKST3RXx, tttak, zz4032, joergoster, mstembera, nguyenpham, erbsenzaehler, dorzechowski, and vondele. This new evaluation needed various changes to fishtest and the corresponding infrastructure, for which tomtor, ppigazzini, noobpwnftw, daylen, and vondele are gratefully acknowledged. The first networks have been provided by gekkehenker and sergiovieri, with the latter net (nn-97f742aaefcd.nnue) being the current default. The evaluation function can be selected at run time with the `Use NNUE` (true/false) UCI option, provided the `EvalFile` option points the the network file (depending on the GUI, with full path). The performance of the NNUE evaluation relative to the classical evaluation depends somewhat on the hardware, and is expected to improve quickly, but is currently on > 80 Elo on fishtest: 60000 @ 10+0.1 th 1 https://tests.stockfishchess.org/tests/view/5f28fe6ea5abc164f05e4c4c ELO: 92.77 +-2.1 (95%) LOS: 100.0% Total: 60000 W: 24193 L: 8543 D: 27264 Ptnml(0-2): 609, 3850, 9708, 10948, 4885 40000 @ 20+0.2 th 8 https://tests.stockfishchess.org/tests/view/5f290229a5abc164f05e4c58 ELO: 89.47 +-2.0 (95%) LOS: 100.0% Total: 40000 W: 12756 L: 2677 D: 24567 Ptnml(0-2): 74, 1583, 8550, 7776, 2017 At the same time, the impact on the classical evaluation remains minimal, causing no significant regression: sprt @ 10+0.1 th 1 https://tests.stockfishchess.org/tests/view/5f2906a2a5abc164f05e4c5b LLR: 2.94 (-2.94,2.94) {-6.00,-4.00} Total: 34936 W: 6502 L: 6825 D: 21609 Ptnml(0-2): 571, 4082, 8434, 3861, 520 sprt @ 60+0.6 th 1 https://tests.stockfishchess.org/tests/view/5f2906cfa5abc164f05e4c5d LLR: 2.93 (-2.94,2.94) {-6.00,-4.00} Total: 10088 W: 1232 L: 1265 D: 7591 Ptnml(0-2): 49, 914, 3170, 843, 68 The needed networks can be found at https://tests.stockfishchess.org/nns It is recommended to use the default one as indicated by the `EvalFile` UCI option. Guidelines for testing new nets can be found at https://github.com/glinscott/fishtest/wiki/Creating-my-first-test#nnue-net-tests Integration has been discussed in various issues: https://github.com/official-stockfish/Stockfish/issues/2823 https://github.com/official-stockfish/Stockfish/issues/2728 The integration branch will be closed after the merge: https://github.com/official-stockfish/Stockfish/pull/2825 https://github.com/official-stockfish/Stockfish/tree/nnue-player-wip closes https://github.com/official-stockfish/Stockfish/pull/2912 This will be an exciting time for computer chess, looking forward to seeing the evolution of this approach. Bench: 4746616
Improve CI testing also enable CXXFLAGS="-D_GLIBCXX_DEBUG" in CI. closes https://github.com/official-stockfish/Stockfish/pull/2692 No functional change.
The sudo tag is deprecated in Travis CI Reported by Christian Clauss. Thanks! No functional change
Eliminate ONE_PLY Simplification that eliminates ONE_PLY, based on a suggestion in the forum that support for fractional plies has never been used, and @mcostalba's openness to the idea of eliminating it. We lose a little bit of type safety by making Depth an integer, but in return we simplify the code in search.cpp quite significantly. No functional change ------------------------------------------ The argument favoring eliminating ONE_PLY: * The term “ONE_PLY” comes up in a lot of forum posts (474 to date) https://groups.google.com/forum/?fromgroups=#!searchin/fishcooking/ONE_PLY%7Csort:relevance * There is occasionally a commit that breaks invariance of the code with respect to ONE_PLY https://groups.google.com/forum/?fromgroups=#!searchin/fishcooking/ONE_PLY%7Csort:date/fishcooking/ZIPdYj6k0fk/KdNGcPWeBgAJ * To prevent such commits, there is a Travis CI hack that doubles ONE_PLY and rechecks bench * Sustaining ONE_PLY has, alas, not resulted in any improvements to the engine, despite many individuals testing many experiments over 5 years. The strongest argument in favor of preserving ONE_PLY comes from @locutus: “If we use par example ONE_PLY=256 the parameter space is increases by the factor 256. So it seems very unlikely that the optimal setting is in the subspace of ONE_PLY=1.” There is a strong theoretical impediment to fractional depth systems: the transposition table uses depth to determine when a stored result is good enough to supply an answer for a current search. If you have fractional depths, then different pathways to the position can be at fractionally different depths. In the end, there are three separate times when a proposal to remove ONE_PLY was defeated by the suggestion to “give it a few more months.” So… it seems like time to remove this distraction from the community. See the pull request here: https://github.com/official-stockfish/Stockfish/pull/2289
Fix sed for OS X (#2080) The sed command is a bit different in Mac OS X (why not!). The ‘-i’ option required a parameter to tell what extension to add for the backup file. To fix it, just add extension for backup file, for example ‘.bak’ Fix broken Trevis CI test No functional change.
Make ONE_PLY value independent again And a Trevis CI test to catch future issues. No functional change.
Small improvements to the CI infrastructure - avoid inlining for the debug testing so that suppressions work - provide more output for triggered errors No functional change.
Update our continuous integration machinery (#1889) * Update our continuous integration machinery Ubuntu 16.04 can now be used with travis. Updating all the other stuff when there. Invoking the lld linker seems to save 5 minutes with clang on linux. No functional change. * fix
Integrate syzygy in automated testing (v2). Extends valgrind/sanitizer testing to cover syzygy code. The script downloads 4 man syzygy as needed. The time needed for the additional testing is small (in fact hard to see a difference compared to the large fluctuations in testing time in travis). Possible follow-ups: * include more TB sensitive positions in bench. * include the test script of recent commit "Refactor tbprobe.cpp". * verify unchanged bench with TB (with a long run). * make the TB part of the continuation integration tests optional. Closes https://github.com/official-stockfish/Stockfish/pull/1518 and https://github.com/official-stockfish/Stockfish/pull/1490 No functional change.
Update travis CI to g++7 Use newer g++ 7 instead of 6 in travis CI tests. No functional change.
More robust bench extraction Allow travis.yml to recognize a variety of bench formats in commit messages, for instance: Bench: 5023593. (really). bench: 5023593 (it was 1234567) bench : 5023593 (blah blah) Bench:5023593 Bench: 5023593. 567 something (1234567) 563 No functional change.
Enable LTO for clang Enable link-time optimization in the Makefile when compiling with clang. Also update travis.yml to use clang++-5.0 and llvm-5.0-dev. No functional change.
Travis CI: Make all warnings into errors Compile with -Werror flag. To make debugging easier also show compile ourput. This flag is enabled only in Travis CI, not in the shipped Makefile becuase we can't test on every possible platform.