Pondering and 64bit numbers
Posted: 28 Jun 2006, 15:45
Hi,
A couple of quick questions..
1.
For the new version of Lime (UCI), I have implemented pondering. It works fine in the Fritz GUI, and under Arena, but when using Polyglot + winboard, I get a terrible delay when the pondering is cancelled, either with a miss or a hit, and the normal search restarted. This causes the engine to use three seconds more each move than intended. I tried the 'SyncStop' workaround from the readme, but no difference. Is this normal, or is it just Lime?
2.
To make my opening books, I wrote a couple of functions - one to strip a pgn file into the following format...
e2e4e7e5g1f3b8c6f1b5
d2d4d7d5g1f3c7c5
etc...
The second function then converts all of these positions into hash keys, and writes the move that follows. The keys and move are written to a text file.
When playing, Lime needs to comare its hash key, 64 bit, with the list of keys in the text file.
E.g
In text file..
471941866 g1f3
Then, I assign a pointer to the number part of the line '471941866'
and compare the two using the following:
My question is with the atol() function - is it ok to use this function for converting the text numbers into 'longs'? The __int64 is 'long long'.
The proper way to do this is using binary files, I imagine, but I just can't understand how they work (yet!). More reading of the textbooks required.
Thank you in advance for your replies,
Richard
A couple of quick questions..
1.
For the new version of Lime (UCI), I have implemented pondering. It works fine in the Fritz GUI, and under Arena, but when using Polyglot + winboard, I get a terrible delay when the pondering is cancelled, either with a miss or a hit, and the normal search restarted. This causes the engine to use three seconds more each move than intended. I tried the 'SyncStop' workaround from the readme, but no difference. Is this normal, or is it just Lime?
2.
To make my opening books, I wrote a couple of functions - one to strip a pgn file into the following format...
e2e4e7e5g1f3b8c6f1b5
d2d4d7d5g1f3c7c5
etc...
The second function then converts all of these positions into hash keys, and writes the move that follows. The keys and move are written to a text file.
When playing, Lime needs to comare its hash key, 64 bit, with the list of keys in the text file.
E.g
In text file..
471941866 g1f3
Then, I assign a pointer to the number part of the line '471941866'
and compare the two using the following:
- Code: Select all
unsigned __int64 tkey
tkey = atol(temp);
if (tkey == game->hashkey)
{//--found a match, store g1f3 as a possible book move--//}
My question is with the atol() function - is it ok to use this function for converting the text numbers into 'longs'? The __int64 is 'long long'.
The proper way to do this is using binary files, I imagine, but I just can't understand how they work (yet!). More reading of the textbooks required.
Thank you in advance for your replies,
Richard