1
0
Fork 0
mirror of https://github.com/sockspls/badfish synced 2025-04-30 00:33:09 +00:00
Commit graph

3945 commits

Author SHA1 Message Date
Marco Costalba
976581339f Document sympat
Assorted renaming and reformat while there.

Hopefully it is more clear now!
2016-05-14 11:56:25 +02:00
Marco Costalba
a6ede54d59 Document Huffman decode 2016-05-14 10:46:30 +02:00
Marco Costalba
04f94b1538 Get rid of idxbits
Use indexSpan instead. This could be a teoretical
slwo down becuae we repalce some shifts by divide
and modulo, but this should not be measurable and
instead the code is more understandable now. This
is a big plus becuase this part of code is complex.
2016-05-14 08:20:20 +02:00
Marco Costalba
c0476e12db Start documenting decompress_pairs
Documenta and rename this difficult part
of the code. Still lot to do.
2016-05-14 08:08:28 +02:00
Marco Costalba
61a27cdadd Move set_map out of structs
To be aligned to other helper functions. Also
better document where DTZEntry is needed.
2016-05-13 18:40:58 +02:00
Marco Costalba
ee5aac2abc Always compute hasUniquePieces
Now that is part of the common fields, it
is natural always setthis memeber, even if
for pawns is not used.
2016-05-13 14:35:32 +02:00
Marco Costalba
018d907d74 Further merge enty init
And use references instead of pointers
2016-05-13 14:24:30 +02:00
Marco Costalba
9acb2b4b61 Merge Entry init functions 2016-05-13 13:31:12 +02:00
Stéphane Nicolet
16c603ce9b Double pawn simplification
Try doubled pawn simplification, with psq
table compensation.

STC:
LLR: 2.95 (-2.94,2.94) [-3.00,1.00]
Total: 36094 W: 6558 L: 6463 D: 23073

LTC:
LLR: 2.94 (-2.94,2.94) [-3.00,1.00]
Total: 102352 W: 13417 L: 13404 D: 75531

Bench: 8716243
2016-05-13 13:01:59 +02:00
Marco Costalba
a357b70f6a Move hasUniquePieces to common fields
This allow to greatly simplify the code
and remove some SFINAE trick that now
is no more needed.
2016-05-11 00:14:47 +02:00
Marco Costalba
b13dd6c333 Retire 'symmetric'
And make explicit that WDLEntry and the corresponding
DTZEntry have the same principal key.
2016-05-10 18:56:42 +02:00
loco-loco
969982406c Merge good and bad quiets
STC:
LLR: 2.95 (-2.94,2.94) [-3.00,1.00]
Total: 58613 W: 10779 L: 10723 D: 37111

LTC:
LLR: 2.95 (-2.94,2.94) [-3.00,1.00]
Total: 33608 W: 4539 L: 4436 D: 24633

Bench: 9441294
2016-05-10 18:15:16 +02:00
Marco Costalba
72bb4695d1 Fix an issue with pawn ordering
A subtle one because at leat 3 leading pawns
are needed to uncover this bug.

Found by stuwph
2016-05-10 17:52:15 +02:00
Marco Costalba
2681419141 Assorted small stuff 2016-05-09 16:12:53 +02:00
Marco Costalba
56d1bef249 Don't need to order pawns a second time 2016-05-09 10:58:56 +02:00
Marco Costalba
12c3e394e7 Retire Flap[] table
Just use the equivalent Ptwist[], renamed in
MapToEdges[] to indicate that gives highest
score to pawns near the edge and then, as
second order, to bottom rank squares.
2016-05-09 08:48:30 +02:00
Marco Costalba
410fa6c74a Compute also remaining tables 2016-05-08 21:31:43 +02:00
Marco Costalba
e01cdac536 Workaround broken MSVC zero-init 2016-05-08 19:07:29 +02:00
Marco Costalba
695eb4222a Fix a compile error with MSVC 2013 2016-05-08 17:52:51 +02:00
Marco Costalba
7a01beb441 Fix a warning with MSVC 2015 2016-05-08 17:39:59 +02:00
Marco Costalba
8d2eb34944 Fix DTZTable key check
We currently check onnly first key, while
we shoudl check both, as confirmed by
author on talkchess:

http://www.talkchess.com/forum/viewtopic.php?t=59947&start=30

This bug fix do not change functionality, we simply
find earlier the DTZ entry instead of reload it.
2016-05-08 15:03:13 +02:00
Marco Costalba
8baa476390 Compute also MapB1H1H7[] and MapA1D1D4[] 2016-05-08 14:49:05 +02:00
Marco Costalba
6f11b0438d Compute KK_idx[] at init time 2016-05-08 14:13:22 +02:00
Marco Costalba
f68df60fe5 Correctly handle shared 'ready' flag
Avoid ' double-checked locking' issue.
2016-05-08 12:51:01 +02:00
Marco Costalba
79051949ca Better clarify DTZEntry keys
Calrify that DTZ entry is initialized with
the same color of the corresponding WDL
entry.
2016-05-08 12:28:50 +02:00
Marco Costalba
875441db2b Use natural types for structs
Aslo changed PairsData::factor to uint64_t to
be aligned with recent fix 16019f47c8
2016-05-08 11:35:12 +02:00
Marco Costalba
9c35466295 Better document encoding 2016-05-08 10:03:53 +02:00
Marco Costalba
2a48e7a69c Simplify encoding of remaining pieces 2016-05-07 09:53:16 +02:00
Alain SAVARD
4b9ed6566a Unsafe checks
Introducing a new multi-purpose penalty related to King safety, which
includes all kind of potential checks (from unsafe or unavailable
squares currently occupied by some other piece)

This will indirectly detect and reward some pins, discovered checks, and
motifs such as square vacation, or rook behind its pawn and aligned with
King (example Black Rg8, g7 against Kg1),
and penalize some pawn blockers (if they move, it allows a discovered
check by the pawn).

And since it looks also at protected squares, it detects some potential
defense overloading.

Finally, the rook contact checks had been removed some time ago. This
test will give a small bonus for them, as well as for bishop contact
checks.

Passed STC
http://tests.stockfishchess.org/tests/view/5729ec740ebc59301a354b36
LLR: 2.94 (-2.94,2.94) [0.00,5.00]
Total: 13306 W: 2477 L: 2296 D: 8533

and LTC
http://tests.stockfishchess.org/tests/view/572a5be00ebc59301a354b65
LLR: 2.97 (-2.94,2.94) [0.00,5.00]
Total: 20369 W: 2750 L: 2565 D: 15054

bench: 9298175
2016-05-06 20:04:57 +02:00
Marco Costalba
24338c2c66 Some cleanup after previous big patch 2016-05-06 13:59:13 +02:00
Marco Costalba
6a260a7d66 Move all under probe_table()
Still some clean up to do but mainly
it is finished and it works!
2016-05-06 10:17:01 +02:00
Marco Costalba
7dd6e34c10 Call decompress_pairs() from within probe_table() 2016-05-06 09:11:35 +02:00
Marco Costalba
8abce63f34 Add pawns to encode_position() 2016-05-05 22:10:22 +02:00
Marco Costalba
16019f47c8 Fix a subtle overflow issue
Found by stuwph on 6-men TB.
2016-05-05 18:05:49 +02:00
Marco Costalba
5e4cd3fc0d Retire __popcnt64 intrinsic
Just use _mm_popcnt_u64() that is available
both for MSVC abd Intel compiler.

Verified on MSVC that the produced assembly
has the hardware 'popcnt' instruction.

No functional change.
2016-05-05 09:09:07 +02:00
VoyagerOne
5486911e01 Simplify History LMR Formula
STC:
LLR: 2.95 (-2.94,2.94) [-3.00,1.00]
Total: 41713 W: 7589 L: 7504 D: 26620

LTC:
LLR: 2.95 (-2.94,2.94) [-3.00,1.00]
Total: 41353 W: 5484 L: 5391 D: 30478

Bench: 8946983
2016-05-05 08:53:50 +02:00
Marco Costalba
e3cb2659f9 Retire some support tables
And rename MapB1D1D3[] to MapA1D1D4[] because
it is used to map piece on diagonal too when
we don't apply the 3-pieces encoding.
2016-05-03 16:48:25 +02:00
Marco Costalba
d9ec75a2ca Fully document piece enccoding
Use the original Ronald de Man explanations
on talkchess.
2016-05-03 07:03:08 +02:00
Marco Costalba
3487eb9f9e Fix a warning with MSVC
Introduced by 2dd24dc4e6 ("Use popcount intrinsic with Intel")

No functional change.
2016-05-01 15:10:33 +02:00
joergoster
dc0030de4f Fix LazySMP when searching to a fixed depth.
Currently, helper threads will only search up to the
specified depth limit. Now let them search until the
main thread has finished the specified depth.

On the other hand, we don't want to pick a thread with
a higher search depth.

This may be considered cheating. ;-)

No functional change.
2016-05-01 14:30:50 +02:00
erbsenzaehler
2dd24dc4e6 Use popcount intrinsic with Interl compiler
It seems that icc used our fallback version of popcount.
Now use intrinsics.

icc version 16.0.2 (gcc version 5.3.0 compatibility)
bmi2 compile
uname -r 4.5.1-1-ARCH

20xbench gives a nice speedup
./stockfish-icc-master 2161515 +- 34462
./stockfish-icc-sse42 2260857 +- 50349
2016-05-01 14:18:16 +02:00
Krgp
8f934dff9a Remove useless -mbmi flag in Makefile
I could not find anything documented that is necessary that prepending -mbmi to -mbmi2 gives some benefit.
Instead at
https://gcc.gnu.org/onlinedocs/gcc/x86-Built-in-Functions.html#x86-Built-in-Functions

The following built-in functions are available when -mbmi is used. All of them generate the machine instruction that is part of the name.
unsigned int __builtin_ia32_bextr_u32(unsigned int, unsigned int);
unsigned long long __builtin_ia32_bextr_u64 (unsigned long long, unsigned long long);

The following built-in functions are available when -mbmi2 is used. All of them generate the machine instruction that is part of the name.
unsigned int _bzhi_u32 (unsigned int, unsigned int)
unsigned int _pdep_u32 (unsigned int, unsigned int)
unsigned int _pext_u32 (unsigned int, unsigned int)
unsigned long long _bzhi_u64 (unsigned long long, unsigned long long)
unsigned long long _pdep_u64 (unsigned long long, unsigned long long)
unsigned long long _pext_u64 (unsigned long long, unsigned long long)

and at
https://gcc.gnu.org/ml/gcc/2014-02/msg00204.html

( "... The real optimization comes from being able to use pext
(parallel bit extract), which can implement several bextr expressions in
parallel.")

Apart from that we don't use all -msse -msse2 -msse3 -msse4.2 etc. but just -msse3 (or -msse4.2) only.

As regards to the speedup within noise level - this pull request is actually reversal of mcostalba#198 wherein prepending -mbmi to -mbmi2 was claimed to be 0.3% faster and here (removing -mbmi) gives 0.4% speed gain.
2016-05-01 14:11:28 +02:00
Marco Costalba
b20c26ad3b Better document set_sizes
In particular clarify the data layout.

Remove a bunch of useless casts while
there.
2016-05-01 13:20:31 +02:00
Marco Costalba
3328ab35bf Move some common fields under precomp 2016-05-01 09:53:28 +02:00
Stéphane Nicolet
2694ef23c3 Isolated pawn simplification
STC:
LLR: 2.95 (-2.94,2.94) [-3.00,1.00]
Total: 117822 W: 21697 L: 21744 D: 74381

LTC:
LLR: 2.95 (-2.94,2.94) [-3.00,1.00]
Total: 92307 W: 12330 L: 12305 D: 67672

Bench: 8813983

Resolves #659
2016-04-30 22:23:22 +01:00
Marco Costalba
5cbbeaf28e Better document init() 2016-04-30 10:58:44 +02:00
Marco Costalba
6a802b2473 Rewrite number conversion functions 2016-04-30 07:55:33 +02:00
Marco Costalba
e4045c312b Unify set_norms() 2016-04-29 18:41:46 +02:00
Marco Costalba
431767b592 Merge DTZ initializations
I have also found a simpler way to avoid some
template gymnic.
2016-04-29 17:53:04 +02:00
Marco Costalba
ef69f37f82 Merge WDL initializations
Same initialization logic for both
pawns and pieces.

The advantage of this patch is that we reduce
redundancy and get a single (source) code path
for both cases. This is easier to understand
and to mantain.

Note: This patch makes use of some advanced template
techniques like SFINAE, decltype and the new function
declaration syntax (with trailing return type). This
is not just a show-off, but it is really needed in
this case.
2016-04-29 09:37:36 +02:00