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

3945 commits

Author SHA1 Message Date
Marco Costalba
7a600ed986 Unify set_factors()
This is needed for future work.
2016-04-29 07:37:56 +02:00
Marco Costalba
8ed3859aad Explicit size calculation
Remove the involved size[] array to get the
sizes from setup_pairs().

Now code it is more self-documenting because each
table is associated with its clear size.
2016-04-28 17:57:00 +02:00
Marco Costalba
a0d7801405 Use some more loops in WDLEntry::init
And remove a lot of code.
2016-04-28 16:13:15 +02:00
Marco Costalba
bfa2d923a7 Fix a compile issue with mingw 5.3 2016-04-28 14:04:29 +02:00
Marco Costalba
9cf110a2ae Get rid of PairsData allocation kludge
Currently we malloc a single memory
chunk in which we shuffle all kind of
different stuff in a very tricky way,
for instance see PairsData::base[1]
that is a hack used as a pointer to
data instead of an actual array (no
wonder C++ compiler complains!).

This patch rewrites all this in a way
to avoid hacky allocations and instead
to rely on the standard containers to
do their job.

This is the base for future work.
2016-04-28 13:59:09 +02:00
Marco Costalba
efc8557b2d Further cleanup of init stuff
Let WDL and DTZ init to be in sync as
much as possible.
2016-04-27 18:02:44 +02:00
Marco Costalba
48ef73fc6c Further cleanup init() functions 2016-04-27 14:33:03 +02:00
lucasart
369c7f416f Better document Binomial[]
Now, Binomial[k][n] = Bin(k, n), instead of Binomial[k-1][n] = Bin(k, n).

Better document the Pascal triangle:
* Sum the above and the one to the left of it.
* Values outside the triangle are zero. This was not checked for k=n previously,
and the code implicitly relied on zero initialization of Binomial[]. That
reliance was made more confusing by the initial assignment before the loop.

No functional change.
2016-04-27 20:00:36 +08:00
Marco Costalba
f83a6f54e4 Retire subfactor()
Directly lookup in Binomial[] table.
2016-04-27 09:16:12 +02:00
Marco Costalba
145c9d943b Improve TBFile API
Do more work inside TBFile::map() and
simplify the init functions.
2016-04-27 09:01:08 +02:00
Marco Costalba
0fcc2addd1 First attempt at WDLEntry::init()
Still a lot to do...
2016-04-26 20:45:51 +02:00
Marco Costalba
e480cc108a Rearrange DTZ struct
Redefine some fields in a more consistent way.
2016-04-26 18:13:31 +02:00
Marco Costalba
91b9463ec3 Inline a bunch of single-use functions
This is a first step to cleanup that part of
initialization code.

Apparently init functions are harder to read now,
but this is only temporary: this is a prerequisite
for future work.

As a side benefit we can now get rid of the ancillary
struct and define them directly in teh main ones, even
using anonymous structs!
2016-04-26 17:53:19 +02:00
Marco Costalba
d91b6f9a17 Remove pointer usage in init() members
Now that these functions are struct
members, we don't need to use pointers
anymore.
2016-04-26 14:21:02 +02:00
lucasart
a9abb35c9c Constructed objects must be destructible
Pointer members of WDLEntry and DTZEntry must be null, so they can be freed.

Whether unmap() behaves like free() and tolerates a NULL pointer (treated as
no-op) is unclear. Better safe than sorry, so test data before calling unmap().

Simplify hasUniquePieces calculation while at it.

No functional change.
2016-04-26 13:46:14 +02:00
Marco Costalba
578e94629b Add DTZEntry constructor
And sync WDL and DTZ initializations
2016-04-26 12:09:37 +02:00
Marco Costalba
3104915cd1 Add WDLEntry constructor 2016-04-26 09:58:13 +02:00
Marco Costalba
bb9d42f425 Rename structs
Use a more consistent naming convention
2016-04-26 09:27:37 +02:00
Marco Costalba
9e24e68419 Add struct destructors
Avoid explicitly freeing the objects.

Because d'tor involves file unmapping, some
care must be taken to avoid accidentaly destroy
the object (even temporarly), for instance when
reordering the list.

As a side effect, we can now restore the original
main.cpp, fully in sync with master branch.
2016-04-26 09:13:27 +02:00
Marco Costalba
c7c4ab8186 Get rid of DTZEntryList
It is just an intermediate struct, use DTZEntry directly.

This allow us to remove a malloc ad simplify freeing.

Confirmed with Valgrind there are no memory leaks.
2016-04-25 14:43:28 +02:00
Marco Costalba
d3f748c285 Get rid of wild struct aliasing casting
Super big patch that completely rewrite
data layout to avoid casting of pointer
back and forth different structs.

Unfortunatly it is not possible to write
the patch in small steps because all the
data structs where deeply mixed and once
you touch one part you need to chaneg also
the others.

Functionality s unchanged and this is already
a big success, now we have a proper base above
which to di further clean up work.

Verified with Valgrind there are no memory leaks.
2016-04-25 10:43:57 +02:00
Marco Costalba
10b11da913 Restore back DTZ_list size limit
We will remove it when we will have
a better understanding of the code base,
for now just stick to the original
functionality.
2016-04-25 09:01:33 +02:00
Marco Costalba
4119955044 Get rid of get_key()
And also of namespace Zobrist: there is no more need
for TB code to look at Position's internals.
2016-04-24 21:46:06 +02:00
Marco Costalba
fe6ba8d805 Retire load_dtz_table() 2016-04-24 20:49:07 +02:00
Marco Costalba
637f5b5ecb Convert DTZ_table to a std::list
Because it is used as a list, with a LRU
replacement policy and LRU enries order.

Also drop the hardcoded limit on max 64 entries.
2016-04-24 18:50:06 +02:00
Marco Costalba
216e8cc195 Get rid of fixed size array
Use std::deque instead because it preserves references
to its elements when resizing (std::vector does not).

DTZ_table is still an array because it seems its size
is fixed and does not depend on TB exsisting files.
2016-04-24 14:33:41 +02:00
Marco Costalba
1a8e0416bb Document encode_piece
Retire Flipdiag[] while there
2016-04-24 14:07:13 +02:00
Marco Costalba
39e4398133 Retire probe_dtz() from Tablebases
It is not needed in SF.
2016-04-24 12:40:29 +02:00
Marco Costalba
7aeef7285f Sync with master 2016-04-24 11:55:44 +02:00
Marco Costalba
9bf2a9f842 Add a FIXME on the odd probe_ab()
Given a position probe_ab() does a kind of qsearch,
but instead of evaluating the position at the begin,
through a table look up, it performs a depth-first
search and only at the end checks for current position
score.
2016-04-24 11:47:59 +02:00
lucasart
d434fc465b Use Square instead of int
No functional change.
2016-04-24 07:41:21 +02:00
lucasart
3771db79eb Use File instead of int
No functional change.
2016-04-24 07:41:21 +02:00
lucasart
eb484823d7 Document enc_type
No functional change.
2016-04-24 07:41:21 +02:00
VoyagerOne
e082112cfe Use FMHs to assist with LMR formula.
STC:
LLR: 2.99 (-2.94,2.94) [0.00,5.00]
Total: 52232 W: 9654 L: 9304 D: 33274

LTC:
LLR: 2.97 (-2.94,2.94) [0.00,5.00]
Total: 115988 W: 15550 L: 15049 D: 85389

Bench: 7890808

Resolves #651
2016-04-24 01:00:58 +01:00
erbsenzaehler
4048bae47b Use -O3 for all compilers (including ICC)
There seems to be no benefit from using -fast over -O3 with icc.
So use -O3 everywhere.

No functional change

Resolves #652
2016-04-24 00:55:56 +01:00
Marco Costalba
63b39c5bff Use SF Position to calculate material key
Don't reinvent the wheel.

Also clarify that init_tb it is used to
populate TBHash: rename it in proper way.
2016-04-23 23:05:22 +02:00
Marco Costalba
024fec7a2b Drop another couple of define
And simplify file name extarction function
2016-04-23 13:14:24 +02:00
Marco Costalba
a14fa77ede Free Tablebases before to exit
Fix valgrind errors.
2016-04-23 12:20:07 +02:00
Marco Costalba
7bc5946fc9 Clean up decompress_pairs
Also replace platform specific byte swap with
a software version. Amazingly it seems it is
even faster now!

Also removing the templatized form does not slow down.
2016-04-23 11:52:51 +02:00
DU-jdto
c737062436 Remove some pointless micro-optimizations
Seems to give around 1% speed-up for CPUs with popcnt support.
Seems to give a very minor speed-up for CPUs without popcnt.

No functional change

Resolves #646
2016-04-23 02:04:28 +01:00
Marco Costalba
5414eaba35 Introduce WDLScore
Start to add some type safety above naked int

Improve code self-documenting readibility as well.
2016-04-22 09:23:36 +02:00
Marco Costalba
54d0cf1f89 Assorted cleanup 2016-04-22 08:39:13 +02:00
lucasart
b82f6dabcc Assorted cleanup
No functional change.
2016-04-22 10:20:37 +08:00
Marco Costalba
c6e96881ca Cleanup probe_wdl_table()
Memory barrier is totally unused inside a locked scope.
2016-04-21 22:23:34 +02:00
Marco Costalba
1073ffb26a Hash rewrite 2016-04-21 22:11:25 +02:00
Marco Costalba
8db35c8a5f Rework hash table access 2016-04-21 22:01:11 +02:00
Marco Costalba
b4985de966 Assorted formatting 2016-04-21 22:01:10 +02:00
lucasart
f4c930e038 Additional work in init_tb()
* document 0x38

* remove useless enc_type

For whatever reason (?), syzygy tables have the information to play a stupid
chess variant that (apparently) can result in having only 1 King on the board
instead of 2. Obviously, we do not care about this "game" which is neither
Chess, nor Chess960, so get rid of that useless code.

No functional change.
2016-04-21 22:00:39 +02:00
Marco Costalba
6b5a350bc3 Merge cpp files
* Properly include tbcore.cpp

* Merge *cpp files

* Additional reshuffle and consolidation

* Cosmetic touch

- run: astyle -A3 -s4 -f -xn -xc -xl *.cpp *.h. Mainly this breaks blocks (if,
  do, while, for etc.)

- remove static_cast<>: inconsistently used, and ugly. Prefer C-style cast.
  Eventually, the code will be rewritten so that less casting is needed...

No functional change.
2016-04-21 06:40:27 +02:00
Marco Costalba
8a3569f667 Platform agnostic file functions (#643)
Platform agnostic file functions

Reduce the platform specific code to bare minimum
and localize all in a single place.
2016-04-20 15:12:32 +02:00