|
| void | hash_code_init (void) |
| | Initialize global hash code data. More...
|
| |
| void | hash_move_init (void) |
| | Initialize global hash move data. More...
|
| |
| void | hash_init (HashTable *hash_table, const unsigned long long size) |
| | Initialise the hashtable. More...
|
| |
| void | hash_cleanup (HashTable *hash_table) |
| | Clear the hashtable. More...
|
| |
| void | hash_clear (HashTable *hash_table) |
| | Clear the hashtable. More...
|
| |
| void | hash_free (HashTable *hash_table) |
| | Free the hashtable. More...
|
| |
| unsigned int | writeable_level (HashData *data) |
| | make a level from date, cost, depth & selectivity. More...
|
| |
| static void | data_update (HashData *data, const int cost, const int alpha, const int beta, const int score, const int move) |
| | update an hash table item. More...
|
| |
| static void | data_upgrade (HashData *data, const int depth, const int selectivity, const int cost, const int alpha, const int beta, const int score, const int move) |
| | Upgrade an hash table data item. More...
|
| |
| static void | data_new (HashData *data, const int date, const int depth, const int selectivity, const int cost, const int alpha, const int beta, const int score, const int move) |
| | Set an hash table data item. More...
|
| |
| static void | hash_new (Hash *hash, HashLock *lock, const Board *board, const int date, const int depth, const int selectivity, const int cost, const int alpha, const int beta, const int score, const int move) |
| | Initialize a new hash table item. More...
|
| |
| static void | hash_set (Hash *hash, HashLock *lock, const Board *board, const int date, const int depth, const int selectivity, const int cost, const int lower, const int upper, const int move) |
| | Set a new hash table item. More...
|
| |
| static bool | hash_update (Hash *hash, HashLock *lock, const Board *board, const int date, const int depth, const int selectivity, const int cost, const int alpha, const int beta, const int score, const int move) |
| | update the hash entry More...
|
| |
| static bool | hash_replace (Hash *hash, HashLock *lock, const Board *board, const int date, const int depth, const int selectivity, const int cost, const int alpha, const int beta, const int score, const int move) |
| | replace the hash entry. More...
|
| |
| static bool | hash_reset (Hash *hash, HashLock *lock, const Board *board, const int date, const int depth, const int selectivity, const int lower, const int upper, const int move) |
| | Reset an hash entry from new data values. More...
|
| |
| void | hash_feed (HashTable *hash_table, const Board *board, const unsigned long long hash_code, const int depth, const int selectivity, const int lower, const int upper, const int move) |
| | feed hash table (from Cassio). More...
|
| |
| void | hash_store (HashTable *hash_table, const Board *board, const unsigned long long hash_code, const int depth, const int selectivity, const int cost, const int alpha, const int beta, const int score, const int move) |
| | Store an hashtable item. More...
|
| |
| void | hash_force (HashTable *hash_table, const Board *board, const unsigned long long hash_code, const int depth, const int selectivity, const int cost, const int alpha, const int beta, const int score, const int move) |
| | Store an hashtable item. More...
|
| |
| bool | hash_get (HashTable *hash_table, const Board *board, const unsigned long long hash_code, HashData *data) |
| | Find an hash table entry according to the evaluated board hash codes. More...
|
| |
Lock-free transposition table.
Locked transposition table.
The hash table is an efficient memory system to remember the previously analysed positions and re-use the collected data when needed. The hash table contains entries of analysed data where the board is uniquely identified through a 64-bit key and the results of the recorded analysis are two score bounds, the level of the analysis and the best move found. The implementation is now a multi-way hashtable. It both tries to keep the deepest records and to always add the latest one. The following implementation may suffer from hash collision: two different positions may share the same hashcode. Fortunately, this is very unprobable with hascode on 64 bits, and, thanks to alphabeta robustness, it propagates even less often to the root. When doing parallel search with a shared hashtable, a lockless implementation [1] detects & eliminates concurrency collisions without much performance impact.
[1] http://www.cis.uab.edu/hyatt/hashing.html
- Date
- 1998 - 2012
- Author
- Richard Delorme
- Version
- 4.4
The hash table is an efficient memory system to remember the previously analysed positions and re-use the collected data when needed. The hash table contains entries of analysed data where the board is uniquely identified through a 64-bit key and the results of the recorded analysis are two score bounds, the level of the analysis and the best move found. The implementation is now a multi-way hashtable. It both tries to keep the deepest records and to always add the latest one. The following implementation may suffer from hash collision: two different positions may share the same hashcode. Fortunately, this is very improbable with hascode on 64 bits, and, thanks to alphabeta robustness, it propagates even less often to the root. When doing parallel search with a shared hashtable, a locked implementation avoid concurrency collisions.
- Date
- 1998 - 2012
- Author
- Richard Delorme
- Version
- 4.4
The hash table is an efficient memory system to remember the previously analysed positions and re-use the collected data when needed. The hash table contains entries of analysed data where the board is stored and the results of the recorded analysis are two score bounds, the level of the analysis and the best move found. The implementation is now a multi-way (or bucket based) hashtable. It both tries to keep the deepest records and to always add the latest one. The following implementation store the whole board to avoid collision. When doing parallel search with a shared hashtable, a locked implementation avoid concurrency collisions.
- Date
- 1998 - 2017
- Author
- Richard Delorme
- Version
- 4.4