]>
git.sesse.net Git - stockfish/log
Marco Costalba [Wed, 21 Jan 2015 10:33:53 +0000 (11:33 +0100)]
Fun with lambdas
Use lambda functions instead of has_positive_value()
and toggle_case()
No functional change.
Marco Costalba [Tue, 20 Jan 2015 21:17:22 +0000 (22:17 +0100)]
Don't use _pext_u64() directly
This intrinsic to call BMI2 PEXT instruction is
defined in immintrin.h. This header should be
included only when USE_PEXT is defined, otherwise
we define _pext_u64 as 0 forcing a nop.
But under some mingw platforms, even if we don't
include the header, immintrin.h gets included
anyhow through an include chain that starts with
STL <algorithm> header. So we end up both defining
_pext_u64 function and at the same time defining
_pext_u64 as 0 leading to a compile error.
The correct solution is of not using _pext_u64 directly.
This patch fixes a compile error with some mingw64
package when compiling with x86-64.
No functional change.
Marco Costalba [Mon, 19 Jan 2015 07:11:43 +0000 (08:11 +0100)]
Fix a MSVC warning at W4
Warning is C4512 (assignment operator could not be generated)
Now, apart the foreign syzygy code, everything compiles
without warnings at warning level 4.
No functional change.
Marco Costalba [Sun, 18 Jan 2015 14:14:05 +0000 (15:14 +0100)]
Fix compile error with MSVC 2013
Without this std::min chokes with windows 'min' macro.
No functional change.
Marco Costalba [Sun, 18 Jan 2015 10:04:51 +0000 (11:04 +0100)]
Fun with initializer lists in UCI::square
No functional change.
Marco Costalba [Sun, 18 Jan 2015 09:41:56 +0000 (10:41 +0100)]
Fix a coverity scan warning
Coverity scan warns about uninitialized 'sf' argument when
calling probe(). Actually it is a false positive because
argument is passed by reference and assigned inside
probe(). Nevertheless it is a hint that fucntion signature
is a bit tricky, so rewrite it in a more conventional way,
assigning 'sf' from probe() return value.
No functional change.
Marco Costalba [Sun, 18 Jan 2015 07:05:05 +0000 (08:05 +0100)]
Add syzygy support
bench:
8080602
Marco Costalba [Sun, 18 Jan 2015 07:00:50 +0000 (08:00 +0100)]
Import C++11 branch
Import C++11 branch from:
https://github.com/mcostalba/Stockfish/tree/c++11
The version imported is teh last one as of today:
https://github.com/mcostalba/Stockfish/commit/
6670e93e50a7a4e739ac2ac8b6026ffa3a12150a
Branch is fully equivalent with master but syzygy
tablebases that are missing (but will be added with
next commit).
bench:
8080602
Marco Costalba [Sat, 17 Jan 2015 09:12:02 +0000 (10:12 +0100)]
Fix syzygy warnings with Intel compiler
Quick hack, a better job would require to
first move all syzygy code up to SF standard.
No functional change.
Marco Costalba [Sat, 17 Jan 2015 21:15:15 +0000 (22:15 +0100)]
Fix some missing rename from previous patch
No functional change.
Marco Costalba [Sat, 17 Jan 2015 08:04:25 +0000 (09:04 +0100)]
Fix a possible overflow in TT resize
On platforms where size_t is 32 bit, we
can have an overflow in this expression:
(mbSize * 1024 * 1024)
Fix it setting max hash size of 2GB on platforms
where size_t is 32 bit.
A small rename while there: now struct Cluster
is definied inside class TranspositionTable so
we should drop the redundant TT prefix.
No functional change.
mstembera [Fri, 16 Jan 2015 19:03:49 +0000 (19:03 +0000)]
Simplify and optimize value extractors
Speed up results by Joona:
gcc-4.7 (1.5%)
gcc-4.8 (0.5%)
gcc-4.9 (1.0%)
Speed up results by mstembera:
gcc 474
p-value: 0.719
gcc 482
p-value: 1
gcc 492
p-value: 0.859
No functional change
Resolves #211
lucasart [Wed, 14 Jan 2015 20:18:41 +0000 (20:18 +0000)]
Enable futility pruning for PV nodes in qsearch
STC:
LLR: 4.20 (-2.94,2.94) [-3.00,1.00]
Total: 85573 W: 17195 L: 17125 D: 51253
LTC:
LLR: 2.94 (-2.94,2.94) [-3.00,1.00]
Total: 43385 W: 7298 L: 7214 D: 28873
Bench:
8080602
Resolves #206
Stefan Geschwentner [Wed, 14 Jan 2015 20:11:33 +0000 (20:11 +0000)]
Enable Futility pruning in PV nodes
STC:
LLR: 2.96 (-2.94,2.94) [-3.00,1.00]
Total: 21553 W: 4342 L: 4221 D: 12990
LTC:
LLR: 2.96 (-2.94,2.94) [-3.00,1.00]
Total: 7675 W: 1351 L: 1209 D: 5115
Bench:
8668014
Resolves #205
hxim [Tue, 13 Jan 2015 21:07:18 +0000 (21:07 +0000)]
Use VALUE_ZERO instead of 0 when comparing with Value
This is the correct practice.
No functional change
Resolves #208
Marco Costalba [Fri, 9 Jan 2015 11:35:44 +0000 (12:35 +0100)]
Assorted headers cleanup
Mostly comments fixing and other small things.
No functional change.
Marco Costalba [Sun, 11 Jan 2015 07:31:21 +0000 (08:31 +0100)]
Fix a crash of syzygy on Android
On Android-ARM current TB code crashes at
random times even in single thread mode.
Reported, debugged, fixed and verified
by Peter Osterlund.
No functional change.
Resolves #201
Stefano80 [Sun, 11 Jan 2015 20:02:41 +0000 (20:02 +0000)]
Higher movetime resolution for benchmarks
Use a millisecond movetime precision for benchmarks
No functional change
Resolves #198
Marco Costalba [Sat, 10 Jan 2015 15:14:37 +0000 (16:14 +0100)]
Fix compile for Android 5
Android 5 can only run position independent executables.
Note that this breaks Android 4.0 and earlier.
See here for more info:
http://stackoverflow.com/questions/
24818902 /running-a-native-library-on-android-l-error-only-position-independent-executab
Thanks to Peter Osterlund for the support.
No functional change
Marco Costalba [Sat, 10 Jan 2015 10:43:28 +0000 (11:43 +0100)]
Update copyright year
No functional change.
Marco Costalba [Wed, 7 Jan 2015 08:09:41 +0000 (09:09 +0100)]
Assorted formatting and comment tweaks in position.h
No functional change.
lucasart [Mon, 5 Jan 2015 22:09:12 +0000 (22:09 +0000)]
Tune null search reduction
STC
LLR: 2.96 (-2.94,2.94) [-0.50,4.50]
Total: 107289 W: 21851 L: 21325 D: 64113
LTC
LLR: 2.96 (-2.94,2.94) [0.00,5.00]
Total: 83837 W: 14378 L: 13916 D: 55543
Bench:
7604776
Resolves #194
Marco Costalba [Sat, 3 Jan 2015 15:39:17 +0000 (16:39 +0100)]
Retire one implementation of pop_lsb()
We have two implementations that are equivalent,
so retire one.
Plus usual tidy up of comments and code reshuffle.
No functional change.
lucasart [Sat, 3 Jan 2015 11:29:00 +0000 (19:29 +0800)]
Remove a useless optimization
This optimization is aimed at old hardware only (withouth popcount), and even on
non popcount compile (ARCH=x86-64), it provides no mesurable speedup:
stat test master diff
mean 2,341,779 2,354,699 -12,920
stdev 12,910 14,770 18,150
speedup -0.55%
P(speedup>0) 23.8%
No functional change.
Resolves #187
Joona Kiiski [Sat, 3 Jan 2015 20:34:20 +0000 (20:34 +0000)]
Smoother king safety
STC:
LLR: 4.03 (-2.94,2.94) [-1.50,4.50]
Total: 35707 W: 7352 L: 7106 D: 21249
LTC:
LLR: 2.95 (-2.94,2.94) [0.00,4.00]
Total: 24563 W: 4330 L: 4095 D: 16138
Bench:
8411409
Resolves #190
Marco Costalba [Sat, 3 Jan 2015 09:51:38 +0000 (10:51 +0100)]
Assorted work in uci.cpp
- Change UCI::value() signature
This function should only return the value,
lowerbound and upperbound info is up to the
caller because it requires external knowledge,
out of the scope of this little helper.
- Retire 'key' command
It is not an UCI command and is absolutely
useless: never used.
- Comments fixing and other trivia
No functional change.
Marco Costalba [Sat, 3 Jan 2015 09:16:10 +0000 (10:16 +0100)]
Fix a silly warning with Intel compiler
Intel compiler cries for an explicit cast
warning #2259: non-pointer conversion from "double" to "int"
may lose significant bits
No functional change.
Marco Costalba [Thu, 1 Jan 2015 09:46:31 +0000 (10:46 +0100)]
Fix comments in thread.cpp
And reshuffle a bit the functions to place
them in a consistent order.
To be on the safe side, patch has been
validated for no regression/crashes with
a small 8K games test with 3 threads:
ELO: 3.98 +-4.4 (95%) LOS: 96.3%
Total: 8388 W: 1500 L: 1404 D: 5484
No functional change.
Marco Costalba [Tue, 30 Dec 2014 09:31:50 +0000 (10:31 +0100)]
Let material probing to access per-thread table
It is up to material (and pawn) table look up
code to know where the per-thread tables are,
so change API to reflect this.
Also some comment fixing while there
No functional change.
Matthew Lai [Fri, 2 Jan 2015 20:18:49 +0000 (20:18 +0000)]
Disable the default copy constructor for Position class
No functional change
Resolved #183
Stefan Geschwentner [Fri, 2 Jan 2015 19:31:33 +0000 (03:31 +0800)]
Big King Safety tuning
All king safety related terms (shelterweakness, stormdanger,
attackunits, ..) was tuned together. Additionally for attack units a
finer granularity (factor 4) is used.
STC
ELO: 9.22 +-3.1 (95%) LOS: 100.0%
Total: 19514 W: 4340 L: 3822 D: 11352
LTC
LLR: 2.96 (-2.94,2.94) [0.00,6.00]
Total: 6399 W: 1192 L: 1056 D: 4151
Bench:
8224782
Resolves #184
Marco Costalba [Wed, 31 Dec 2014 09:41:20 +0000 (10:41 +0100)]
Retire Material::space_weight()
Move all in evaluation.
Simplify the code and concentrate in a single place
all the logic behind space evaluation, making it much
more clear.
Verified also at STC it does not regress due to a possible
slow down:
LLR: 3.91 (-2.94,2.94) [-3.00,1.00]
Total: 65744 W: 13285 L: 13194 D: 39265
No functional change.
Marco Costalba [Sun, 28 Dec 2014 11:34:01 +0000 (12:34 +0100)]
Additional tidy up in timeman.cpp
Fixed some comments and moved/renamed some
variables.
No functional change.
Marco Costalba [Sat, 27 Dec 2014 09:47:21 +0000 (10:47 +0100)]
Use score and value consistently
And other assorted small fixing, code style
tweaks and reshuffles in evaluate.cpp
No functional change.
Arjun Temurnikar [Wed, 24 Dec 2014 03:50:00 +0000 (11:50 +0800)]
Remove some comments in timeman.cpp
Commenst are obsolete now, an updated description
would be quite obscure, so better let the code
to talk and remove them all together.
No functional change.
Marco Costalba [Wed, 24 Dec 2014 10:36:04 +0000 (11:36 +0100)]
Reformat promotion generation
Use the same template of other pawns moves generation,
make the code more uniform, simplify generate_promotions
that has now been renamed.
No functional change (verified also with perft).
Marco Costalba [Sun, 21 Dec 2014 09:52:34 +0000 (10:52 +0100)]
Prefer names to numbers in storm code
Also replaces some tabs with spaces and
change StormDanger order to reflect
ShelterWeakness one.
No functional change.
Joona Kiiski [Sat, 20 Dec 2014 08:51:53 +0000 (08:51 +0000)]
Use "rm -f" instead of "rm" for gcc profiling hack in Makefile
In some UNIX systems "rm" prompts user for confirmation.
However "rm -f" is always a guaranteed forced deletion.
Also move gcc profiling hack under the correct target
No Functional change
Resolves #168
Stefan Geschwentner [Sat, 20 Dec 2014 17:49:56 +0000 (01:49 +0800)]
Big King Safety tuning
ShelterWeakness and Stormdanger array are now indexed additionally by
file pair (a/h,b/g,c/f,d/e). The special case of king blocking a pawn
is incorporated in the StormDanger array. Finally the 93 parameters
are tuned by SPSA on LTC.
STC
ELO: 3.46 +-2.2 (95%) LOS: 99.9%
Total: 40000 W: 8275 L: 7877 D: 23848
LTC
LLR: 2.96 (-2.94,2.94) [0.00,6.00]
Total: 10311 W: 1876 L: 1721 D: 6714
Bench:
9498821
Resolves #163
Marco Costalba [Tue, 16 Dec 2014 07:25:54 +0000 (08:25 +0100)]
Don't account for Tempo in specialized endgames
The evaluation is already done by the specialized
function, don't need to add something elese later.
With this patch following positions are evaluated
correctly as draws:
8/6p1/1Pkp1p1p/2nNn2P/2P1K1P1/8/8/3B4 w - - 7
8/1k4p1/1P1p1p1p/3NnK1P/2P3P1/1n6/4B3/8 w - -
Verified it not regress with an STC test:
LLR: 3.15 (-2.94,2.94) [-3.00,1.00]
Total: 49812 W: 10095 L: 10016 D: 29701
Reported by Arjun Temurnikar.
bench:
8289983
mstembera [Thu, 18 Dec 2014 19:56:00 +0000 (03:56 +0800)]
Change profile-build options to produce 1% to 2% faster executables.
The "@rm ucioption.gc*" line is necessary to avoid a gcc 4.7.x bug.
Confirmed for gcc 4.7.4, 4.8.1, and 4.9.1
Suggested by Kiran Panditrao on fishcooking forum.
https://groups.google.com/forum/?fromgroups=#!topic/fishcooking/AY8gN53nG18
No functional change.
Resolves #160
Marco Costalba [Sun, 14 Dec 2014 08:31:13 +0000 (09:31 +0100)]
Improve comments in UCI
And simplify naming while there.
No functional change.
Resolves #159
Marco Costalba [Sat, 13 Dec 2014 08:27:39 +0000 (09:27 +0100)]
Coding style in TT code
In particular seems more natural to return
bool and TTEntry on the same line, actually
we should pass and return them as a pair,
but due to limitations of C++ and not wanting
to use std::pair this can be an acceptable
compromise.
No functional change.
Resolves #157
Gary Linscott [Sun, 14 Dec 2014 19:45:43 +0000 (14:45 -0500)]
Fix compile for some versions of mingw
The bswap intrinsics are specific to the compiler, not the
host platform.
No functional change.
Resolves #155
mstembera [Sat, 13 Dec 2014 07:16:35 +0000 (07:16 +0000)]
Avoid searching TT twice for the same key/position during probe() and store().
Just keep the pointer and remove code from tt.cpp
STC
LLR: 2.96 (-2.94,2.94) [-1.50,4.50]
Total: 13620 W: 2810 L: 2665 D: 8145
LTC
LLR: 2.97 (-2.94,2.94) [0.00,6.00]
Total: 13021 W: 2238 L: 2073 D: 8710STC http://tests.stockfishchess.org/tests/view/
548436860ebc59331739b90c
STC 4MB
ELO: 2.41 +-2.2 (95%) LOS: 98.6%
Total: 40000 W: 8175 L: 7897 D: 23928
LTC 16MB
ELO: 1.78 +-2.0 (95%) LOS: 96.1%
Total: 39683 W: 6763 L: 6560 D: 26360
Resolves #151
Bench:
8116521
Gary Linscott [Thu, 11 Dec 2014 19:56:24 +0000 (14:56 -0500)]
Only use _ReadWriteBarrier on MSVC
It was causing compile errors when cross-compiling using mingw.
No functional change.
joergoster [Thu, 11 Dec 2014 18:06:03 +0000 (13:06 -0500)]
Halve StormDanger bonus for blocked pawn on A/H file
STC
LLR: 2.95 (-2.94,2.94) [-1.50,4.50]
Total: 3410 W: 758 L: 641 D: 2011
LTC
LLR: 2.95 (-2.94,2.94) [0.00,6.00]
Total: 33225 W: 5708 L: 5445 D: 22072
Bench:
8465811
Resolves #153
Gary Linscott [Thu, 11 Dec 2014 18:03:44 +0000 (13:03 -0500)]
MSVC compiling fixes
No functional change.
Resolves #150
Joona Kiiski [Sun, 7 Dec 2014 19:54:23 +0000 (19:54 +0000)]
Fix profile build for syzygy
Touch source files under syzygy directory to force recompilation
after collecting profile data.
No functional change
Resolves #149
Joona Kiiski [Sun, 7 Dec 2014 09:45:36 +0000 (09:45 +0000)]
Retire 'os' flag from Makefile
Appears to be unused
No functional change
Resolves #147
Marco Costalba [Mon, 8 Dec 2014 07:23:09 +0000 (08:23 +0100)]
Assorted nitpicking code-style
No functional change.
Marco Costalba [Mon, 8 Dec 2014 08:46:21 +0000 (09:46 +0100)]
Clarify when forcing the moves loop
In some cases we want to go direcly to the moves loop
without checking for early return. The patch make this
logic more clear and consistent.
Tested for no regression, passed STC
LLR: 2.96 (-2.94,2.94) [-3.00,1.00]
Total: 25282 W: 5136 L: 5022 D: 15124
and LTC
LLR: 2.95 (-2.94,2.94) [-3.00,1.00]
Total: 72007 W: 12133 L: 12095 D: 47779
bench:
9316798
Ernesto Gatti [Mon, 8 Dec 2014 00:10:57 +0000 (08:10 +0800)]
Simpler PRNG and faster magics search
This patch replaces RKISS by a simpler and faster PRNG, xorshift64* proposed
by S. Vigna (2014). It is extremely simple, has a large enough period for
Stockfish's needs (2^64), requires no warming-up (allowing such code to be
removed), and offers slightly better randomness than MT19937.
Paper: http://xorshift.di.unimi.it/
Reference source code (public domain):
http://xorshift.di.unimi.it/xorshift64star.c
The patch also simplifies how init_magics() searches for magics:
- Old logic: seed the PRNG always with the same seed,
then use optimized bit rotations to tailor the RNG sequence per rank.
- New logic: seed the PRNG with an optimized seed per rank.
This has two advantages:
1. Less code and less computation to perform during magics search (not ROTL).
2. More choices for random sequence tuning. The old logic only let us choose
from 4096 bit rotation pairs. With the new one, we can look for the best seeds
among 2^64 values. Indeed, the set of seeds[][] provided in the patch reduces
the effort needed to find the magics:
64-bit SF:
Old logic -> 5,783,789 rand64() calls needed to find the magics
New logic -> 4,420,086 calls
32-bit SF:
Old logic -> 2,175,518 calls
New logic -> 1,895,955 calls
In the 64-bit case, init_magics() take 25 ms less to complete (Intel Core i5).
Finally, when playing with strength handicap, non-determinism is achieved
by setting the seed of the static RNG only once. Afterwards, there is no need
to skip output values.
The bench only changes because the Zobrist keys are now different (since they
are random numbers straight out of the PRNG).
The RNG seed has been carefully chosen so that the
resulting Zobrist keys are particularly well-behaved:
1. All triplets of XORed keys are unique, implying that it
would take at least 7 keys to find a 64-bit collision
(test suggested by ceebo)
2. All pairs of XORed keys are unique modulo 2^32
3. The cardinality of { (key1 ^ key2) >> 48 } is as close
as possible to the maximum (65536)
Point 2 aims at ensuring a good distribution among the bits
that determine an TT entry's cluster, likewise point 3
among the bits that form the TT entry's key16 inside a
cluster.
Details:
Bitset card(key1^key2)
------ ---------------
RKISS
key16 64894 = 99.020% of theoretical maximum
low18 180117 = 99.293%
low32 305362 = 99.997%
Xorshift64*, old seed
key16 64918 = 99.057%
low18 179994 = 99.225%
low32 305350 = 99.993%
Xorshift64*, new seed
key16 65027 = 99.223%
low18 181118 = 99.845%
low32 305371 = 100.000%
Bench:
9324905
Resolves #148
Gary Linscott [Sun, 7 Dec 2014 23:55:53 +0000 (07:55 +0800)]
Add some tablebase positions to bench
This makes it easier to check for regressions in the tablebase code.
Bench:
9489202
5-man bench:
8943906
Resolves #145
hxim [Sun, 7 Dec 2014 23:53:33 +0000 (07:53 +0800)]
Rename some variables for more clarity.
No functional change.
Resolves #131
Marco Costalba [Sun, 30 Nov 2014 13:59:09 +0000 (14:59 +0100)]
Explicitly pass RootMoves to TB probes
Currently Search::RootMoves is accessed and even
modified by TB probing functions in a hidden
and sneaky way.
This is bad practice and makes the code tricky.
Instead explicily pass the vector as function
argument so to clarify that the vector is modified
inside the functions.
No functional change.
Marco Costalba [Sun, 30 Nov 2014 11:14:14 +0000 (12:14 +0100)]
Move TB stuff under Tablebases namespace
Simplified also some logic while there.
TBLargest needs renaming too, but itis for
a future patch because touches also syzygy
directory stuff.
No functional change.
Marco Costalba [Sun, 30 Nov 2014 07:38:46 +0000 (08:38 +0100)]
Refactor syzygy code in search
Move to SF coding style.
Also skip calculating piece count in search()
when TB are not found (!TBCardinality)
No functional change.
Joona Kiiski [Sun, 30 Nov 2014 21:02:39 +0000 (21:02 +0000)]
Retire support for Haiku installation directory from Makefile
- It is out of the scope of the project.
- It is the responsibility of Haiku package maintainer to
configure this.
No functional change
Resolves #143
Joona Kiiski [Sun, 30 Nov 2014 20:50:01 +0000 (20:50 +0000)]
Retire hackish support for aCC and HP-UX from Makefile
- It is out of scope of the project.
- We have no way to verify that it even works anymore
No functional change
Resolves #142
Marco Costalba [Sun, 30 Nov 2014 20:35:22 +0000 (20:35 +0000)]
Retire total_piece_count()
We really don't need to uglify in this way
our nice count() API with this ad-hoc hack.
So remove the hack and use the already
existing infrastructure.
No functional change.
Resolves #134
hxim [Sat, 29 Nov 2014 09:02:32 +0000 (10:02 +0100)]
Remove CONNECTED_KINGS from Syzygy code
No functional change
Resolves #140
Rodrigo Exterckötter Tjäder [Thu, 27 Nov 2014 18:30:18 +0000 (16:30 -0200)]
Cleaning Syzygy profiling data
Updating the makefile so that the clean and gcc-profile-clean targets also
remove the profiling data files in the syzygy directory.
No functional change.
Resolves #136
Marco Costalba [Wed, 26 Nov 2014 11:56:08 +0000 (12:56 +0100)]
Rewrite TBScore in uci_pv()
Streamline the code and make
it understandable.
No functional change.
Resolves #135
Marco Costalba [Sat, 29 Nov 2014 08:22:25 +0000 (09:22 +0100)]
Retire #ifdef SYZYGY macro
It just clutters the code for no
real reason.
No functional change.
Resolves #139
mstembera [Tue, 25 Nov 2014 23:56:48 +0000 (07:56 +0800)]
Bitbase index() from ADD to OR.
No functional change.
Resolves #132
lucasart [Tue, 25 Nov 2014 23:53:40 +0000 (07:53 +0800)]
Introduce ratio operation
Just like in Physics, the ratio of 2 things in the same unit, should be
without unit.
Example use case:
- Ratio of a Depth by a Depth (eg. ONE_PLY) should be an int.
- Ratio of a Value by a Value (eg. PawnValueEg) should be an int.
Remove a bunch of useless const while there.
No functional change.
Resolves #128
Ronald de Man [Tue, 25 Nov 2014 23:45:28 +0000 (07:45 +0800)]
Syzygy tablebases
Adds support for Syzygy tablebases to Stockfish. See
the Readme for information on using the tablebases.
Tablebase support can be enabled/disabled at the Makefile
level as well, by setting syzygy=yes or syzygy=no.
Big/little endian are both supported.
No functional change (if Tablebases are not used).
Resolves #6
Gary Linscott [Mon, 24 Nov 2014 00:53:00 +0000 (08:53 +0800)]
Fix out-of-bound array access printing ponder move
It is possible that we won't have a ponder move if our PV
is too short. In that case, just don't print a ponder move.
No functional change
Resolves #130
Gary Linscott [Mon, 24 Nov 2014 00:49:53 +0000 (08:49 +0800)]
Fix pondering
The UCI specification states that an engine can never exit the search
while pondering.
No functional change.
Resolves #118
Jonathan Calovski [Fri, 21 Nov 2014 21:46:59 +0000 (05:46 +0800)]
Amend defended
Amend defended to remove now redundant condition.
No functional change.
Resolves #125
Marco Costalba [Thu, 20 Nov 2014 11:13:00 +0000 (12:13 +0100)]
Fix doubled pawns asymmetry
When evaluating double pawns we use always
lsb() to extract the frontmost square.
This breaks evaluation color symmetry as is
possible to verify with an instrumented evaluate()
Value evaluate(const Position& pos) {
Value v = do_evaluate<false>(pos);
Position p = pos;
p.flip();
assert(v == do_evaluate<false>(p));
return v;
}
Passed no regression test:
STC
LLR: 2.96 (-2.94,2.94) [-3.00,1.00]
Total: 21035 W: 4244 L: 4122 D: 12669
LTC
LLR: 2.95 (-2.94,2.94) [-3.00,1.00]
Total: 39839 W: 6662 L: 6572 D: 26605
bench:
8255966
Marco Costalba [Fri, 21 Nov 2014 08:10:52 +0000 (09:10 +0100)]
Further tweak accurate pv
It is a non functional change, but because
we now skip copying of pv[] in SpNode, patch
has been tested for regression with 3 threads:
STC
LLR: 2.96 (-2.94,2.94) [-3.00,1.00]
Total: 54668 W: 9873 L: 9809 D: 34986
No functional change.
hxim [Tue, 18 Nov 2014 22:39:17 +0000 (06:39 +0800)]
Fix some comments
No functional change.
Resolves #123
Gary Linscott [Tue, 18 Nov 2014 22:36:45 +0000 (06:36 +0800)]
Fix fen output for castling rights
This is a regression from
428962a
We have to cast to char here, otherwise the compiler
interprets it as an integer, and writes a number.
No functional change
Resolves #122
Marco Costalba [Tue, 18 Nov 2014 10:57:57 +0000 (11:57 +0100)]
Codying style in accurate PV
This is the first of a patch series to
rearrange and simplify accurate PV.
In this patch there is simple coding
style and reformatting stuff.
Verified with fishtest it does not crash
with MAX_PLY = 8
No functional change.
Marco Costalba [Sun, 16 Nov 2014 15:25:20 +0000 (16:25 +0100)]
Fix a warning on Intel C++
warning #2259: non-pointer conversion from "int" to
"uint8_t={unsigned char}" may lose significant bits
No functional change.
sf-x [Sun, 16 Nov 2014 23:50:33 +0000 (07:50 +0800)]
Use PHASE_MIDGAME in game_phase()
No functional change
Resolves #117
Rodrigo Exterckötter Tjäder [Sun, 16 Nov 2014 23:48:30 +0000 (07:48 +0800)]
Clear token before reading from input
Previously token would keep its value from the previous line when an empty
line was input, leading to unexpected behaviour.
No functional change
Resolves #119
lucasart [Sun, 16 Nov 2014 23:04:58 +0000 (07:04 +0800)]
Half History Max
STC
LLR: 3.35 (-2.94,2.94) [-0.50,3.50]
Total: 17993 W: 3740 L: 3508 D: 10745
LTC
LLR: 3.25 (-2.94,2.94) [0.00,4.00]
Total: 21346 W: 3691 L: 3453 D: 14202
Bench:
7694316
Resolves #120
Marco Costalba [Sat, 15 Nov 2014 04:36:49 +0000 (05:36 +0100)]
Use DEPTH_MAX instead of MAX_PLY
When comparing to a Depth it is more
consistent to use DEPTH_MAX instead
of a int.
This is a subtle difference because we use
ply and depth almost interchangably in SF,
but they are different. FOr counting plies
makes ense to continue using ints, while
for Depth we have our specific enum.
This cleanly fixes a new Clang 3.5 warning:
No functional change.
Gary Linscott [Wed, 12 Nov 2014 21:13:55 +0000 (16:13 -0500)]
100% accurate PV display
This gives SF accurate PVs, such that the evaluation of the leaf node in
the PV matches the score backed up to the root (99% of the time.
q-search will use the value stored in the hash table instead of the eval
value sometimes).
One drawback is that fail-high/low only get a minimal 2 move PV.
It doesn't add any additional overhead to the non-PV codepath except an
extra eight bytes to the SearchStack structure in multi-threaded
searches.
A core part of this is not pruning based on TT score in PV nodes. This
was measured as not being a regression at multiple TCs, except for one
exception, fast TC with huge hash, which is not realistic for longer
searches.
STC - 1 thread, 128 mb hash
ELO: 1.42 +-3.1 (95%) LOS: 81.9%
Total: 20000 W: 4078 L: 3996 D: 11926
STC - 3 thread, 128 mb hash
ELO: -3.60 +-2.9 (95%) LOS: 0.8%
Total: 20000 W: 3575 L: 3782 D: 12643
STC - 3 thread, 8 mb hash
ELO: 0.12 +-2.9 (95%) LOS: 53.3%
Total: 20000 W: 3654 L: 3647 D: 12699
LTC - 3 thread, 32mb hash
ELO: 2.29 +-2.0 (95%) LOS: 98.8%
Total: 35740 W: 5618 L: 5382 D: 24740
Bench:
6984058
Resolves #102
lucasart [Mon, 10 Nov 2014 11:14:16 +0000 (19:14 +0800)]
Use quiet ttMove in qsearch() (
7962287 )
Daniel Jose reported that it was an elo gain in his engine:
http://www.talkchess.com/forum/viewtopic.php?t=54290
STC: Hash=16
LLR: 2.95 (-2.94,2.94) [-3.00,1.00]
Total: 33067 W: 6670 L: 6571 D: 19826
LTC: Hash=64
LLR: 2.96 (-2.94,2.94) [-3.00,1.00]
Total: 41181 W: 7008 L: 6920 D: 27253
And another one to verify no regression with hash pressure:
STC: Hash=4
LLR: 2.96 (-2.94,2.94) [-4.00,0.00]
Total: 25085 W: 5059 L: 4991 D: 15035
Verified that qsearch does not explode after this patch (recapture threshold).
Bench
7962287
Resolves #112
Marco Costalba [Mon, 10 Nov 2014 13:46:05 +0000 (14:46 +0100)]
Use if/else instead of goto
Real men jump/branch by hand...but
we prefer the humble way.
Moved also some uci info code where it
belongs, while there.
No functional change.
Resolves #110
Marco Costalba [Mon, 10 Nov 2014 14:09:36 +0000 (15:09 +0100)]
Use Depth instead of int in search
And make it more ONE_PLY value independent,
although we are not there yet.
No functional change.
Resolves #111
lucasart [Mon, 10 Nov 2014 10:49:13 +0000 (18:49 +0800)]
Profile Build with Hash=16
16MB for 1" searches is more comensurate with the average use case.
And 16 is the default used by stockfish bench, so it makes sense to be
consistent, if only to have the same minimum memory requirement for using
SF and compiling it with PGO.
No functional change.
Resolves #109
lucasart [Sun, 9 Nov 2014 00:45:27 +0000 (08:45 +0800)]
Fix bounds of FutilityMoveCounts
This is a left-over from ONE_PLY == 2.
No functional change.
Resolves #107
Marco Costalba [Sat, 8 Nov 2014 10:39:38 +0000 (11:39 +0100)]
Retire pvMove in search()
Now we can directly replace it with
the definition resulting in simpler
and possibly faster code because
PvNode is evaluated at compile time.
No functional change.
Marco Costalba [Sun, 9 Nov 2014 08:24:06 +0000 (09:24 +0100)]
Assorted code-style triviality
No functional change.
Marco Costalba [Sat, 8 Nov 2014 13:04:14 +0000 (14:04 +0100)]
Introduce distance() and unify some API
Original work by Lucas.
No functional change.
lucasart [Sat, 8 Nov 2014 15:56:51 +0000 (10:56 -0500)]
Codestyle massage Search::init()
* remove some erroneous comments, that were based on the ONE_PLY == 2.
* rename hd to d, because there's no more half-depth in SF.
* rescope variables into the for loops.
* reindent the for loops correctly.
* add a comment to explain the eval improving part (not so obvious to read
this code as array has 4 dimensions).
No functional change.
lucasart [Sat, 8 Nov 2014 15:47:56 +0000 (10:47 -0500)]
Be more optimistic in aspiration window
Be more optimistic wrt search instability, and set the unviolated bound
half window.
STC
LLR: 2.96 (-2.94,2.94) [-1.00,4.00]
Total: 16362 W: 3371 L: 3197 D: 9794
LTC
LLR: 2.94 (-2.94,2.94) [0.00,5.00]
Total: 21666 W: 3780 L: 3569 D: 14317
Bench:
6807896
Resolves #105
lucasart [Fri, 7 Nov 2014 21:40:24 +0000 (21:40 +0000)]
Prune ttMove like any other
This should reduce search inconsistencies, and doesn't seem to have a measurable ELO Impact:
STC with Hash=16
LLR: 2.95 (-2.94,2.94) [-3.00,1.00]
Total: 49264 W: 10076 L: 10007 D: 29181
LTC with Hash=64
LLR: 2.96 (-2.94,2.94) [-3.00,1.00]
Total: 82149 W: 14044 L: 14023 D: 54082
Plus an extra test, to make sure it doesn't regress with strong hash pressure:
STC with Hash=4
LLR: 2.95 (-2.94,2.94) [-4.00,0.00]
Total: 21498 W: 4327 L: 4246 D: 12925
Bench:
7302735
Resolves #100
lucasart [Fri, 7 Nov 2014 19:26:23 +0000 (14:26 -0500)]
Retire CACHE_LINE_ALIGNMENT
Speed tests showed no benefit.
No functional change.
Resolves #97
lucasart [Thu, 6 Nov 2014 18:00:07 +0000 (13:00 -0500)]
Apply King Safety later in the endgame
Idea is to apply king safety later in the endgame. Previously, we didn't
apply KS in a RR vs. Q ending for example, which causes poor play.
Now we calculate king attacks when the attacking side has a queen or more.
STC with 8moves_v3
LLR: 3.06 (-2.94,2.94) [0.00,4.00]
Total: 38481 W: 6228 L: 5952 D: 26301
LTC with 2moves_v1
LLR: 2.95 (-2.94,2.94) [0.00,4.00]
Total: 51053 W: 8670 L: 8353 D: 34030
Bench:
7514010
Resolves #98
mstembera [Sun, 2 Nov 2014 05:10:31 +0000 (22:10 -0700)]
Removing some superfluous extern declarations
No functional change.
Resolves #93
Marco Costalba [Thu, 30 Oct 2014 11:11:20 +0000 (12:11 +0100)]
Assume UCI 'nodes' is int64_t instead of int
UCI specification is not clear on the size of
integers that are exchanged in the protocol, so
instead of a simple int, assume 'nodes' is a
int64_t because we need a bigger size to store
this value in many real cases, especialy with
very long searches.
No functional change.
Resolves #75
Marco Costalba [Sat, 18 Oct 2014 05:44:08 +0000 (07:44 +0200)]
Rearrange check_time()
Remove an ugly workaround for a gcc
warning while there.
No functional change.
Ajith [Tue, 4 Nov 2014 15:40:37 +0000 (23:40 +0800)]
Add bonuses for each threat instead of max threat value.
Use SPSA tuned values for all threat bonuses
STC
LLR: 2.96 (-2.94,2.94) [-1.50,4.50]
Total: 6074 W: 1284 L: 1160 D: 3630
LTC
LLR: 2.97 (-2.94,2.94) [0.00,6.00]
Total: 13563 W: 2402 L: 2232 D: 8929
Bench:
6981908
Resolves #94
mstembera [Sat, 1 Nov 2014 05:48:19 +0000 (22:48 -0700)]
Optimize TranspositionTable::store() and TranspositionTable::probe() for speed.
No functional change.
Resolves #85