]>
git.sesse.net Git - stockfish/log
Marco Costalba [Sun, 9 Jun 2013 11:43:30 +0000 (13:43 +0200)]
Zobrist::init() should be Position::init()
No functional change.
Marco Costalba [Sun, 9 Jun 2013 11:05:41 +0000 (13:05 +0200)]
Convert pieceSquareTable to 3 dimensions
No functional change.
Marco Costalba [Sun, 9 Jun 2013 10:56:05 +0000 (12:56 +0200)]
More consistent 'piece' variable naming
No functional change.
Marco Costalba [Sun, 9 Jun 2013 10:43:12 +0000 (12:43 +0200)]
Introduce operator~(Piece c)
Small syntactic sugar to reverse piece color.
No functional change.
Marco Costalba [Sun, 9 Jun 2013 10:24:43 +0000 (12:24 +0200)]
Retire psq_delta()
No functional change.
Marco Costalba [Sun, 9 Jun 2013 09:52:39 +0000 (11:52 +0200)]
Use alpha instead of beta-1
It is more directly related to a fail-low.
No functional change.
Marco Costalba [Sun, 9 Jun 2013 08:58:24 +0000 (10:58 +0200)]
Fix incorrect 'ss' pointer in early stop check
The exclusion search used to verify one move is much
better than other shall be called with 'ss' and not
'ss+1'
No functional change.
Dariusz Orzechowski [Tue, 4 Jun 2013 21:52:00 +0000 (23:52 +0200)]
Fix a typo
No functional change.
Marco Costalba [Sat, 8 Jun 2013 08:35:35 +0000 (10:35 +0200)]
Fix search log when using skills
In case of we pick a sub-optimal move be
sure to print this, and not the best one
on seach log file.
Bug spotted by Guenther Demetz.
No functional change.
Marco Costalba [Sat, 1 Jun 2013 13:45:46 +0000 (15:45 +0200)]
Fix a crash when 'go' multiple times
Search is started after setting a position and
issuing UCI 'go' command. Then if we stop the search
and call 'go' again without setting a new position it
is assumed that the previous setup is preserved, but
this is not the case because what happens is that
SetupStates is reset to NULL, leading to a crash as
soon as RootPos.is_draw() is called because st->previous
is now stale.
UCI protocol is not very clear about requiring that a
position is setup always before launching a search,
so here we easy the life of GUI developers assuming
that the current state is preserved after returning
from a 'stop' command.
Bug reported by Gregor Cramer.
No functional change.
Marco Costalba [Sat, 1 Jun 2013 09:48:38 +0000 (11:48 +0200)]
Assorted renaming in evaluation
And some reshuffle too.
No functional change.
jundery [Thu, 30 May 2013 03:07:24 +0000 (21:07 -0600)]
Passed pawn tuning
A small number of tests with simulated
annealing at 15s indicated these values
may be better
And this is verified at long 60+0.05 TC
LLR: 2.95 (-2.94,2.94)
Total: 40658 W: 7821 L: 7501 D: 25336
bench:
4931544
Marco Costalba [Mon, 27 May 2013 15:42:52 +0000 (17:42 +0200)]
Shrink engine UCI name
Some GUI have problems with long names.
Reported by George Speight.
No functional change.
Marco Costalba [Sat, 25 May 2013 11:14:41 +0000 (13:14 +0200)]
Add Pawn Structure also to polyglot.ini
No functional change.
Marco Costalba [Sat, 25 May 2013 10:18:58 +0000 (12:18 +0200)]
Re-add "Pawn Structure" UCI option
And reshuffle the code to not special case
this parameter.
No functional change.
Marco Costalba [Sat, 25 May 2013 09:57:18 +0000 (11:57 +0200)]
More uniform tracing code
No functional change.
Uri Blass [Tue, 21 May 2013 22:58:52 +0000 (01:58 +0300)]
Bunch of 3 small patches
This patch is the sum of:
- Grainsize of 4 instead of 8
- Removing "depth < DEPTH_ZERO"
- Change DEPTH_QS_RECAPTURES = -5 to -7
All the patches individually failed to pass SPRT but scored
around 50%.
Together they pass easily short TC:
LLR: 2.96 (-2.94,2.94)
Total: 4429 W: 964 L: 844 D: 2621
And with some difficult long TC of 60+0.05:
LLR: 2.95 (-2.94,2.94)
Total: 64133 W: 11968 L: 11532 D: 40633
bench:
4821467
Marco Costalba [Sun, 19 May 2013 20:00:49 +0000 (22:00 +0200)]
Microptimize MoveList loop
Add MOVE_NONE at the tail, this allows to loop
across MoveList checking for *it != MOVE_NONE,
and because *it is used imediately after compiler
is able to reuse it.
With this small patch perft speed increased of 3%
And it is also a semplification !
No functional change.
Marco Costalba [Sat, 18 May 2013 10:49:31 +0000 (12:49 +0200)]
Delay killers[] initialization
Most of the time we cut-off earlier, at captures, so this
results in useless work.
There is a small functionality change becuase 'ss' can change
from MovePicker c'tor to when killers are tried due, for
instance, to singular search.
bench:
4603795
Marco Costalba [Sun, 19 May 2013 19:32:52 +0000 (21:32 +0200)]
Reduce countermoves less in LMR
Passed SPRT for both short TC 15+0.05:
LLR: 2.95 (-2.94,2.94)
Total: 17724 W: 3756 L: 3598 D: 10370
And long TC 60+0.05:
LLR: 2.95 (-2.94,2.94)
Total: 22672 W: 4232 L: 4011 D: 14429
bench:
4418832
Marco Costalba [Sun, 19 May 2013 11:28:25 +0000 (13:28 +0200)]
Mimic an iterator for looping across MoveList
Seems more conventional.
No functional change.
Joona Kiiski [Wed, 15 May 2013 19:31:45 +0000 (20:31 +0100)]
Use two counter moves instead of one
Very good at long 60"+0.05 TC
LLR: 2.95 (-2.94,2.94)
Total: 5954 W: 1151 L: 1016 D: 3787
[edit: slightly changed form original patch to avoid useless loop
across killers when killer is MOVE_NONE]
bench:
4327405
Marco Costalba [Wed, 15 May 2013 18:35:54 +0000 (20:35 +0200)]
Rename Refutation to Countermove
Use proper naming according to:
http://chessprogramming.wikispaces.com/Countermove+Heuristic
The name of this idea is "Countermove Heuristic" and was
first introduced by Jos Uiterwijk in 1992
No functional change.
Uri Blass [Tue, 14 May 2013 22:19:51 +0000 (23:19 +0100)]
Increased mobility array
Performed more or less well at short TC
LLR: 2.95 (-2.94,2.94)
Total: 50517 W: 9815 L: 9574 D: 31128
And a bit better at long TC
LLR: 2.96 (-2.94,2.94)
Total: 15564 W: 2805 L: 2624 D: 10135
bench:
4375253
Marco Costalba [Tue, 14 May 2013 22:06:11 +0000 (00:06 +0200)]
Revert trapped rook bug fix
It seems that do not limiting checking the
trapped rook only on rank 1 improves the
score.
At long TC
LLR: 2.97 (-2.94,2.94)
Total: 6581 W: 1346 L: 1204 D: 4031
bench:
4985012
Gary Linscott [Mon, 13 May 2013 19:04:18 +0000 (12:04 -0700)]
Minor bugfixes to refutation table
Don't update refutation table in case of
previous move is MOVE_NULL or MOVE_NONE
and don't try refutation if is already
a killer move.
Pass both short TC
LLR: 2.96 (-2.94,2.94)
Total: 4310 W: 953 L: 869 D: 2488
And long one
LLR: 2.95 (-2.94,2.94)
Total: 6707 W: 1254 L: 1184 D: 4269
bench:
4785954
Marco Costalba [Mon, 13 May 2013 18:07:10 +0000 (20:07 +0200)]
Reformat previous patch
No functional change.
Joona Kiiski [Sun, 12 May 2013 20:23:29 +0000 (21:23 +0100)]
Enable refuation table
Very good result both at short TC 15+0.05
LLR: 2.95 (-2.94,2.94)
Total: 2803 W: 596 L: 483 D: 1724
And at long TC 60+0.05
LLR: 2.95 (-2.94,2.94)
Total: 2862 W: 548 L: 431 D: 1883
bench:
4329221
Joona Kiiski [Sun, 12 May 2013 20:21:46 +0000 (21:21 +0100)]
Simple always overwrite Refutation table
Marco Costalba [Sat, 11 May 2013 09:32:34 +0000 (11:32 +0200)]
Use Them instead of ~Us
Unortunatly we have no guarantee that the call to
operator~(Color c) is resolved at compile time.
Perhaps the solution would be to use C++11 const_expr,
but for now simply use the good old-style ternary operator
that works as expected.
No functional change.
Marco Costalba [Sat, 11 May 2013 07:29:02 +0000 (09:29 +0200)]
Some code reformat in evaluate_pieces
No functional change.
Marco Costalba [Wed, 8 May 2013 21:06:21 +0000 (23:06 +0200)]
Simplify previous patch
No functional change.
Marco Costalba [Wed, 8 May 2013 21:02:08 +0000 (23:02 +0200)]
Merge 'passed_pawns' tweaks
Good at both short and long TC
15+0.05
LLR: 2.96 (-2.94,2.94)
Total: 28220 W: 5531 L: 5349 D: 17340
TC 60+0.05
LLR: 2.95 (-2.94,2.94)
Total: 12612 W: 2221 L: 2057 D: 8334
bench:
4857939
Reuven Peleg [Sun, 5 May 2013 19:39:06 +0000 (22:39 +0300)]
Avoid explicit bitwise operators
No functional change.
Signed-off-by: Marco Costalba <mcostalba@gmail.com>
jundery [Sun, 5 May 2013 17:12:04 +0000 (11:12 -0600)]
Passed pawn eval
Use a stepped function to evaluate bonuses and add the bonus to the
middle game
bench:
4857939
Marco Costalba [Sun, 5 May 2013 11:43:26 +0000 (13:43 +0200)]
Merge increased 'movecount' pruning
Good at both short and long TC
15+0.05
LLR: 2.95 (-2.94,2.94)
Total: 13814 W: 2731 L: 2588 D: 8495
TC 60+0.05
LLR: 2.95 (-2.94,2.94)
Total: 18013 W: 3136 L: 2946 D: 11931
bench:
4306557
Marco Costalba [Sat, 4 May 2013 10:27:19 +0000 (12:27 +0200)]
Simplify previous condition
No functional change.
Marco Costalba [Sat, 4 May 2013 10:18:18 +0000 (12:18 +0200)]
Fix trapped rook condition
A rook is trapped if on rank 1 as is the king.
Currently the condition aloows for the rook
to be also in front of the pawns as long
as king is on first rank.
Verified with short TC test:
LLR: -1.71 (-2.94,2.94)
Total: 23234 W: 4317 L: 4317 D: 14600
Here what it counts is that after 23K games
result is equal.
bench:
4696542
Marco Costalba [Sat, 4 May 2013 09:42:34 +0000 (11:42 +0200)]
Further simplify previous patch
No functional change.
homoSapiensSapiens [Fri, 3 May 2013 11:01:41 +0000 (14:01 +0300)]
Merge some conditions
No functional change.
Signed-off-by: Marco Costalba <mcostalba@gmail.com>
Marco Costalba [Fri, 3 May 2013 13:21:23 +0000 (15:21 +0200)]
Drop some redundant defined(_WIN64)
When it is already defined(_WIN32).
According to Microsoft documentation:
http://msdn.microsoft.com/en-us/library/b0084kay.aspx
_WIN32 Defined for applications for Win32 and Win64. Always defined.
_WIN64 Defined for applications for Win64.
Patch suggested by Joona.
No functional change.
Marco Costalba [Fri, 3 May 2013 08:25:25 +0000 (10:25 +0200)]
Print time and node count before search ends
This info is normally printed together with
PV info in uci_pv() but when search is stopped,
for instance when max search time is reached,
uci_pv is not called and we miss this bits.
Suggested by gravy_train
No functional change.
Marco Costalba [Fri, 3 May 2013 08:10:08 +0000 (10:10 +0200)]
Merge mobility area tweak
A nice improvment.
Was good at 15+0.05
LLR: 2.96 (-2.94,2.94)
Total: 10731 W: 2176 L: 2040 D: 6515
And at 60"+0.05
LLR: 2.96 (-2.94,2.94)
Total: 10601 W: 1968 L: 1810 D: 6823
bench:
4676606
Gary Linscott [Thu, 2 May 2013 18:37:55 +0000 (14:37 -0400)]
Fix rounding issue
Gary Linscott [Thu, 2 May 2013 13:47:34 +0000 (09:47 -0400)]
More aggressive move count pruning
Marco Costalba [Thu, 2 May 2013 07:35:52 +0000 (09:35 +0200)]
Another take at TT alignment
This time revert to original version but using
uintptr_t instead of size_t
Suggested by Lucas.
No functional change.
Marco Costalba [Wed, 1 May 2013 20:55:23 +0000 (22:55 +0200)]
Re-add "Cache line aligned TT"
But this time do not play with pointers, in
particular do not assume that size_t is an
unsigned type of the same width as pointers.
This code should be fully portable.
No functional change.
jhellis3 [Wed, 1 May 2013 07:37:50 +0000 (02:37 -0500)]
Tweak Mobility Area
Only consider pawns and the king as restricting.
Marco Costalba [Tue, 30 Apr 2013 18:00:05 +0000 (20:00 +0200)]
Restore development version
No functional change.
Marco Costalba [Sun, 28 Apr 2013 22:59:57 +0000 (00:59 +0200)]
Stockfish 3
Stockfish bench signature is:
4176431
Marco Costalba [Tue, 30 Apr 2013 06:08:54 +0000 (08:08 +0200)]
Revert "Cache line aligned TT"
This reverts commit
083fe5812485597e13943b690cc24a8f25c0d140
It seems to break Android build
No functional change.
Marco Costalba [Sun, 28 Apr 2013 22:54:08 +0000 (00:54 +0200)]
Temporary revert "Expose EvalInfo struct to search"
It is not needed for the release and introduces
a slowdown, although very small.
Probably it will be readded after the release.
No functional change.
Marco Costalba [Sat, 27 Apr 2013 11:07:12 +0000 (13:07 +0200)]
Fix a 'value > VALUE_INFINITE' assert
This fixes an assert while testing with debug on.
Assert was due to static null pruning returning value
eval - futility_margin(depth, (ss-1)->futilityMoveCount)
That was sometimes higher than VALUE_INFINITE triggering
an assert at the caller site.
Because eval con be equal to ttValue and anyhow is read from
TT that can be corrupted in SMP case, we need to sanity
check it before to use.
bench:
4176431
Marco Costalba [Fri, 26 Apr 2013 16:45:54 +0000 (18:45 +0200)]
Cache line aligned TT
Let TT clusters (16*4=64 bytes) to hold on a singe cache line.
This avoids the need for the double prefetch.
Original patches by Lucas and Jean-Francois that has also tested
on his AMD FX:
BIG HASHTABLE
./stockfish bench 1024 1 18 > /dev/null
Before:
1437642 nps
1426519 nps
1438493 nps
After:
1474482 nps
1476375 nps
1475877 nps
SMALL HASHTABLE
./stockfish bench 128 1 18 > /dev/null
Before:
1435207 nps
1435586 nps
1433741 nps
After:
1479143 nps
1471042 nps
1472286 nps
No functional change.
Marco Costalba [Fri, 26 Apr 2013 10:12:53 +0000 (12:12 +0200)]
Fix a crash introduced few days ago
Crash is due to uninitialized ss->futilityMoveCount that
when happens to be negative, yields to an out of range
access in futility_margin().
Bug is subtle because it shows itself only in SMP case.
Indeed in single thread mode we only use the
Stack ss[MAX_PLY_PLUS_2];
Allocated at the begin of id_loop() and due to pure
(bad) luck, it happens that for all the MAX_PLY_PLUS_2
elements, ss[i].futilityMoveCount >= 0
Note that the patch does not prevent futilityMoveCount
to be overwritten after, for instance singular search
or null verification, but to keep things readable and
because the effect is almost unmeasurable, we here
prefer a slightly incorrect but simpler patch.
bench:
4311634
Marco Costalba [Thu, 25 Apr 2013 19:51:05 +0000 (21:51 +0200)]
Store Eval::Info in Search::Stack
Instead of a pointer. This should fix the issue of
remaining with a stale pointer when for instance calling
IID, but also null search verification, singular search
and razoring where we call search with the same ss
pointer. In this case ss->ei is overwritten in the
search() call and upon returning remains stale.
This patch could have a performance hit because Eval::Info
is big (176 bytes) and during splitting we copy 4 ss entries.
On the good side, this patch is a clean solution.
Proposed by Gary.
No functional change.
Marco Costalba [Thu, 25 Apr 2013 10:43:55 +0000 (12:43 +0200)]
Expose EvalInfo struct to search
Allow to use EvalInfo struct, populated by
evaluation(), in search.
In particular we allocate Eval::Info on the stack
and pass a pointer to this to evaluate().
Also add to Search::Stack a pointer to Eval::Info,
this allows to reference eval info of previous/next
nodes.
WARNING: Eval::Info is NOT initialized and is populated
by evaluate(), only if the latter is called, and this
does not happen in all the code paths, so care should be
taken when accessing this struct.
No functional change.
Ryan Schmitt [Thu, 11 Apr 2013 02:17:13 +0000 (19:17 -0700)]
Increase rook/queen on 7th bonus
Shows an increase at 15+0.05
LLR: 3.01 (-2.94,2.94)
Total: 20450 W: 4091 L: 3927 D: 12432
And at 60+0.05
LLR: 2.97 (-2.94,2.94)
Total: 61432 W: 10849 L: 10441 D: 40142
bench:
4493356
Signed-off-by: Marco Costalba <mcostalba@gmail.com>
Marco Costalba [Thu, 25 Apr 2013 09:39:06 +0000 (11:39 +0200)]
Merge Joona's increased static null pruning
The idea is to fail high more easily in static
null test if in the parent node we are already
very deep in the move list, so the propability
to fail high there is very low.
[edit: I have slightly changed the functionality
moving
ss->futilityMoveCount = moveCount;
At the end of the pruning code, this should not affect
ELO in anyway, but makes code more natural and logic]
Test with SPRT is good at 15+0.05
LLR: 2.96 (-2.94,2.94)
Total: 50653 W: 10024 L: 9780 D: 30849
And at 60+0.05
LLR: 2.97 (-2.94,2.94)
Total: 40799 W: 7227 L: 6921 D: 26651
bench:
4530093
Marco Costalba [Thu, 25 Apr 2013 08:56:56 +0000 (10:56 +0200)]
Fix cpu_count() on some platforms
When we use sysconf(_SC_NPROCESSORS_ONLN) to get number of
cores, we have to include sysconf library that is unistd.h
Sometimes it happens to work just becuase unistd.h indirectly
included by some other libraries, but not always.
Reported and fixed by Eyal BD
No functional change.
Joona Kiiski [Tue, 23 Apr 2013 06:26:36 +0000 (07:26 +0100)]
Fix potential overflow
Joona Kiiski [Sun, 21 Apr 2013 13:53:27 +0000 (14:53 +0100)]
More aggressive post-futility pruning
Marco Costalba [Fri, 19 Apr 2013 07:41:28 +0000 (09:41 +0200)]
Skip a couple of popcount in previous patch
And some little tidy up
No functional change.
Marco Costalba [Fri, 19 Apr 2013 07:31:18 +0000 (09:31 +0200)]
Merge Joona's bishop+pawn tweak
The idea is to penalize a bishop in case of
its pawns are on the same colored squares.
Good at short 15"+0.05 TC
LLR: 2.95 (-2.94,2.94)
Total: 4252 W: 925 L: 806 D: 2521
And at longer 60"+0.05 TC
LLR: 2.95 (-2.94,2.94)
Total: 15006 W: 2743 L: 2564 D: 9699
bench:
5274705
Joona Kiiski [Wed, 17 Apr 2013 06:58:59 +0000 (07:58 +0100)]
Try more aggressive version
Joona Kiiski [Tue, 16 Apr 2013 20:20:31 +0000 (21:20 +0100)]
Give a small penalty for bishop for each pawn on the same colored square
Marco Costalba [Sun, 14 Apr 2013 21:29:00 +0000 (23:29 +0200)]
Skip a redundant check
Spotted by Joona
No functional change.
Marco Costalba [Wed, 10 Apr 2013 20:23:48 +0000 (22:23 +0200)]
De-templetize Position::is_draw()
Now that we always check for repetition we don't
need a template anymore.
No functional change.
Joona Kiiski [Wed, 10 Apr 2013 20:19:21 +0000 (22:19 +0200)]
Always check repetition
It seems stronger both at fast 15+0.05 TC with fixed game number test:
ELO: 2.74 +-2.7 (95%) LOS: 97.6%
Total: 24000 W: 4698 L: 4509 D: 14793
And also at long 60+0.05 TC with SPRT
LLR: 3.05 (-2.94,2.94)
Total: 38986 W: 6845 L: 6547 D: 25594
bench:
5157061
Marco Costalba [Tue, 9 Apr 2013 21:18:28 +0000 (23:18 +0200)]
Simplify and speed up previous patch
Use an optinal argument instead of a template
parameter. Interestingly, not only is simpler,
but also faster, perhaps due to less L1 instruction
cache pressure because we don't duplicate the very
used SEE code path.
No functional change.
Joona Kiiski [Tue, 9 Apr 2013 08:20:10 +0000 (09:20 +0100)]
Document asymmetric SEE pruning trick
Here are the tests:
sprt @ 60+0.05
ELO: 3.53 +-2.8 (95%) LOS: 99.3%
Total: 18794 W: 3098 L: 2907 D: 12789
16000 @ 60+0.05
ELO: 1.39 +-3.1 (95%) LOS: 81.0%
Total: 16000 W: 2689 L: 2625 D: 10686
16000 @ 15+0.05
ELO: 2.82 +-3.3 (95%) LOS: 95.1%
Total: 16000 W: 3148 L: 3018 D: 9834
No functional change
Signature:
4969307
Joona Kiiski [Sun, 7 Apr 2013 08:23:52 +0000 (09:23 +0100)]
Don't treat king safety differently in AnalysisMode
Rationale:
- Current settings seem to make engine *significantly* weaker in analysis mode.
- In practice this setting only has effect when king safety scores are high.
- Even in analysis mode its far more important to know if one side is getting mated,
rather than get evaluation correct with 1cp accuracy.
No functional change
Marco Costalba [Sun, 7 Apr 2013 08:55:10 +0000 (10:55 +0200)]
Rescale UCI parameters to 100
And correspondingly modify internal ones
to compensate it.
No functional change.
Marco Costalba [Fri, 5 Apr 2013 15:42:15 +0000 (17:42 +0200)]
Tweak some UCI parameters
According to Jean-Paul this setup should be stronger
than default.
And SPRT test seems to confirm it:
At fast TC 15"+0.05
ELO: 3.33 +-2.7 (95%) LOS: 99.2%
Total: 25866 W: 5461 L: 5213 D: 15192
At longer TC 60"+0.05
ELO: 7.27 +-5.0 (95%) LOS: 99.8%
Total: 6544 W: 1212 L: 1075 D: 4257
bench:
5473339
Signed-off-by: Marco Costalba <mcostalba@gmail.com>
Marco Costalba [Sun, 7 Apr 2013 08:25:21 +0000 (10:25 +0200)]
Re-add 'Cowardice' and 'Aggressiveness' UCI options
I have lost my bet with Jean-Paul, so now I re-add
the two options...and I am glad of it :-)
No functional change.
Marco Costalba [Thu, 4 Apr 2013 19:53:59 +0000 (21:53 +0200)]
Increase null verification threshold to 12 plies
Increasing depth limit to 10 plies seems stronger
after 16K games at 15"+0.05 (ELO: +3.56) and also
repeating the test at 60"+0.05 TC:
ELO: 2.08 +-3.1 (95%) LOS: 90.9%
Total: 16000 W: 2641 L: 2545 D: 10814
Moreover setting the limit to 12 is proved stronger
then limit set to 10 by direct SPRT test at 15"+0.05:
ELO: 2.56 +-2.0 (95%) LOS: 99.5%
Total: 46568 W: 9240 L: 8897 D: 28431
So we directly set the limit to 12, the strongest setup.
bench:
4361224
Joona Kiiski [Sat, 30 Mar 2013 20:01:49 +0000 (20:01 +0000)]
Make use of asymmetric SEE
Joona Kiiski [Sat, 30 Mar 2013 19:59:34 +0000 (19:59 +0000)]
Fix a silly bug
Joona Kiiski [Sat, 30 Mar 2013 19:49:49 +0000 (19:49 +0000)]
Introduce asymmetric SEE.
No functional change
Marco Costalba [Fri, 5 Apr 2013 14:56:01 +0000 (16:56 +0200)]
Lower minimum allowed TT size to 1 MB
Setting a very low TT size could be used
for some specific testing.
No functional change.
Marco Costalba [Fri, 5 Apr 2013 06:56:22 +0000 (08:56 +0200)]
Revert "Double Impact of Gain tables"
This reverts commit
36c82b751ce227c05bfb
Seems a regression against 2.3.1 tested with 20K games at 60"+0.05
With patch applied
ELO: 15.44 +-2.8 (95%) LOS: 100.0%
Total: 20000 W: 3928 L: 3040 D: 13032
Without patch applied
ELO: 18.76 +-2.8 (95%) LOS: 100.0%
Total: 20000 W: 3903 L: 2824 D: 13273
bench:
4781239
Hiraoka Takuya [Thu, 4 Apr 2013 17:31:31 +0000 (02:31 +0900)]
Don't early stop if we have a mated score
No functional change.
Joona Kiiski [Sun, 31 Mar 2013 17:35:45 +0000 (18:35 +0100)]
Double Impact of Gain tables
Very unorthodox idea.
After 16000 games at 60"+0.05
ELO: 3.14 +-3.4 (95%) LOS: 96.6%
Total: 13407 W: 2278 L: 2157 D: 8972
bench:
4705335
Marco Costalba [Fri, 29 Mar 2013 21:55:07 +0000 (22:55 +0100)]
Set IID half way between d/2 and d-4
Master IID formula is depth / 2
Previous patch is depth - 4 * ONE_PLY
This one is the middle way:
(dept/2 + depth-4*ONE_PLY)/2 -> depth-2*ONE_PLY-depth/4
After 16000 games at 60+0.05 th 1
ELO: 4.08 +-3.1 (95%) LOS: 99.5%
Total: 16000 W: 2742 L: 2554 D: 10704
bench:
4781239
Marco Costalba [Fri, 29 Mar 2013 21:50:04 +0000 (22:50 +0100)]
Merge branch 'master' into increase_iid
Marco Costalba [Mon, 25 Mar 2013 19:04:49 +0000 (20:04 +0100)]
Raise Min Split Depth
Raise the limit to 12 so to allow people to test
on many cores machines.
Suggested by Gary and Martin.
No functional change.
Marco Costalba [Fri, 22 Mar 2013 08:52:41 +0000 (09:52 +0100)]
Update bestValue when futility pruning (2)
Same idea of
5af8179647b9e80353c
in qsearch() but applied to search()
After 15500 games at 15+0.05
ELO: 4.48 +-3.4 (95%) LOS: 99.5%
Total: 15500 W: 3061 L: 2861 D: 9578
bench:
4985829
Joona Kiiski [Fri, 22 Mar 2013 07:54:03 +0000 (08:54 +0100)]
Fix bogus mate scores in some positions
Always before pruning the move, it's important to check that:
bestValue > VALUE_MATED_IN_MAX_PLY
See example position:
8/2p1p3/P1NpP3/3k4/1P1BN3/2P1P3/2Q5/6K1 w - - 0 1
http://support.stockfishchess.org/discussions/problems/268-wrong-declaring-a-forced-mate-in-3-moves
This problem was present in 2.3.1, then it was fixed by my patch.
After 24000 games at 15+0.05
ELO: 2.40 +-4.4 (95%) LOS: 95.7%
Total: 24000 W: 4774 L: 4608 D: 14618
bench:
4465997
jundery [Thu, 21 Mar 2013 05:07:25 +0000 (23:07 -0600)]
Use ALL_PIECES value to reference attackedBy
No functional change
Marco Costalba [Fri, 22 Mar 2013 19:57:31 +0000 (20:57 +0100)]
Increase non-PV IID search depth
bench:
5146380
Marco Costalba [Tue, 19 Mar 2013 18:08:00 +0000 (19:08 +0100)]
Better document bitbase loop
Thanks to Lucas to spot the weak comment and
to Jundery to suggest a better one.
No functional change.
Gary Linscott [Mon, 18 Mar 2013 15:35:19 +0000 (11:35 -0400)]
Add KNPKB endgame
In a game vs Junior, SF had the option to trade into a winning
pawn endgame, and failed to do so. PGN at bottom.
This FEN was one key position: 8/2Nb1k2/6pp/4Pp2/5K1P/5PP1/8/8 w - - 5 62.
SF master chooses h5 here, with a fail high, which goes into the drawn KNPKB
ending. With the patch, SF correctly chooses Ke3, which maintains chances to win.
[Event "nTCEC - Stage 2a - Season 1"]
[Site "http://www.tcec-chess.net"]
[Date "2013.03.05"]
[Round "11.3"]
[White "Stockfish 210213"]
[Black "Junior 13.3"]
[Result "1/2-1/2"]
[Variant "normal"]
1. d4 f5 2. g3 Nf6 3. Bg2 e6 4. c4 d5 5. Nh3 c6 6. O-O Bd6 7. Bf4 Be7 8. Nd2 O-O
9. Qb3 a5 10. Rfd1 Ne4 11. Be3 Nd7 12. Nf4 Ndf6 13. f3 a4 14. Qc2 Nxd2 15. Bxd2
dxc4 16. Qxc4 b5 17. Qc3 Qb6 18. Rac1 e5 19. Nd3 exd4 20. Qxc6 Qxc6 21. Rxc6
Bd7 22. Rcc1 Be6 23. Bb4 Rae8 24. Bxe7 Rxe7 25. Nb4 Bc4 26. Bf1 Rd7 27. Rd2 Re8
28. Rcd1 Rc7 29. Ra1 Rd8 30. Rc1 Rdd7 31. Rcd1 Re7 32. Ra1 Nd5 33. Nc2 Ne3
34. Nxd4 Bxa2 35. Nxb5 Rc5 36. Nd4 Bf7 37. Kf2 g6 38. Rd3 Nxf1 39. Kxf1 Rc4
40. b3 axb3 41. Nxb3 Kf8 42. Rd8+ Re8 43. Rxe8+ Bxe8 44. Kf2 Ke7 45. Ra7+ Bd7
46. Ke1 Rc3 47. Rb7 Rc2 48. Kd1 Rc4 49. Kd2 Kd6 50. Kd3 Rc7 51. Rxc7 Kxc7
52. Kd4 Kd6 53. Nc5 Bb5 54. e4 Be2 55. e5+ Ke7 56. Ke3 Bd1 57. Kf4 h6 58. h3
Kf7 59. h4 Bc2 60. Na6 Ba4 61. Nc7 Bd7 62. h5 g5+ 63. Ke3 Ba4 64. f4 Bd1
65. fxg5 hxg5 66. h6 Kg6 67. e6 f4+ 68. gxf4 gxf4+ 69. Kxf4 Bh5 70. Ke5 Kh7
71. Kf6 Kxh6 72. Na6 Bg4 73. e7 Bh5 74. Nc7 Bg6 75. Nd5 Be8 76. Ne3 Kh7 77. Nc4
Kh6 78. Nd2 Kh5 79. Nf3 Kg4 80. Nd4 Bh5 81. Ne6 Be8 82. Nc5 Kf3 83. Kf5 Ke3
84. Ke5 Ke2 85. Kf4 Kd2 86. Ne4+ Kd3 87. Ke5 Ke3 88. Nf6 Bf7 89. Nd5+ Kf3
90. Kf5 Ke2 91. Ke4 Be8 92. Nc3+ Kd2 93. Kd4 Kc2 94. Nd5 Kd1 95. Nf6 Bf7
96. Ne4 Be8 97. Ke3 Kc2 98. Nd6 Bd7 99. Kd4 Kd1 100. Kd3 Ba4 101. Nc4 Bb5
102. Kc3 Be8 103. Nb2+ Ke1 104. Kd3 Kf2 105. Nd1+ 1/2-1/2
No functional change (just because bench does not change)
Marco Costalba [Sat, 16 Mar 2013 10:20:03 +0000 (11:20 +0100)]
Further increase SEE prune depth
After 16000 games at 60+0.05
ELO: 2.89 +-5.4 (95%) LOS: 96.5%
Total: 16000 W: 2775 L: 2642 D: 10583
bench:
5442365
Marco Costalba [Sat, 16 Mar 2013 10:08:02 +0000 (11:08 +0100)]
Revert "Check for easy move just once"
This reverts commit
a24da071f0d6128c633febab7df55f14475217c3
Seems a regression when tested against 2.3.1
With this patch, have after 20000 games at 60+0.05, we have
ELO: 13.42 +-4.8 (95%) LOS: 100.0%
Total: 20000 W: 3746 L: 2974 D: 13280
Instead with the patch reverted:
ELO: 16.62 +-4.8 (95%) LOS: 100.0%
Total: 20000 W: 3816 L: 2860 D: 13324
Although we are within error bounds here we take the conservative
approach of not introducing changes that are not proved stronger
It doesn't mean that the change shall be weaker, simply that we
don't want to take any risk.
No functional change.
RyanTaker [Wed, 13 Mar 2013 23:23:29 +0000 (16:23 -0700)]
Improved Readability of Material
This is a non-functional change that simply changes the look
of the code to help clarity.
No functional change.
jundery [Mon, 11 Mar 2013 14:18:15 +0000 (08:18 -0600)]
Do more work between prefetch and querying transposition table
More time to load the cache line before access
No functional change.
Gary Linscott [Sun, 10 Mar 2013 09:06:39 +0000 (10:06 +0100)]
Check for easy move just once
Here the rational seems to be that if after one try easy
move detection fails then the easy move is not so easy :-)
After 15563 games at 60+0.05
ELO: 3.04 +-5.5 (95%) LOS: 97.0%
Total: 15563 W: 2664 L: 2528 D: 10371
No functional change.
Gary Linscott [Mon, 4 Mar 2013 15:36:10 +0000 (10:36 -0500)]
Be more aggressive on trying to finish iterations
Increase MaxRatio to use more time when in trouble.
After 16000 games at 60+0.05
ELO: 4.89 +-5.4 (95%) LOS: 99.9%
Total: 16000 W: 2700 L: 2475 D: 10825
No functional change.
Marco Costalba [Mon, 4 Mar 2013 08:38:58 +0000 (09:38 +0100)]
Increase see prune depth
This seems good at short TC controls.
After 10000 games at 20+0.05
ELO: 9.56 +-6.8 (95%) LOS: 100.0%
Total: 10000 W: 1949 L: 1674 D: 6377
Testing at long TC and regression testing is still
ongoing. So this is a bit speculative commit and
could be reverted in the future.
Also re-testing at long TC the SEE pruning in PV nodes
seems less effective (perhaps even a regression, but
still ongoing) so disabled for now.
bench:
4968764
Marco Costalba [Mon, 4 Mar 2013 08:28:21 +0000 (09:28 +0100)]
Revert "Store moves sent with "position" UCI command"
This reverts commit
0d68b523a390e2f5c37f211316869d798e852289 .
After easy move semplification this machinery is not
needed anymore (because of we don't need to know if a
root move is a recapture)
No functional change.