Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: Chess program improvement project (copy at Winboard::Programming)

Author: Stuart Cracraft

Date: 16:03:36 03/07/06

Go up one level in this thread


On March 07, 2006 at 02:21:07, Gerd Isenberg wrote:

>On March 07, 2006 at 00:01:31, Stuart Cracraft wrote:
>
>>On March 06, 2006 at 23:55:17, Dann Corbit wrote:
>>
>>>On March 06, 2006 at 23:39:36, Stuart Cracraft wrote:
>>>
>>>>On March 06, 2006 at 22:47:18, Dann Corbit wrote:
>>>>
>>>>>On March 06, 2006 at 22:13:56, Stuart Cracraft wrote:
>>>>>[snip]
>>>>>>Discouraging Dan. Discouraging.
>>>>>
>>>>>Suppose that you are 3 lines away from approximately the same result.
>>>>>
>>>>>BTW, I have had a crafty version score 300/300 with the same time controls.
>>>>>
>>>>>The only difficult problem in this set is WAC.230.
>>>>>
>>>>>I think that WAC is a great set to start working with on a chess engine.
>>>>>After a few months you are going to graduate to something tougher.
>>>>>
>>>>>I guess that there is some simple bug that is costing you 80% or more of the
>>>>>misses.
>>>>>
>>>>>It sounds like an advanced engine from the things I have read so far.
>>>>>
>>>>>I think I saw a list of the missed problems by your program.  I guess that I may
>>>>>see a theme problem when I go over them.
>>>>
>>>>Thanks - I look forward to those comments at your availability.
>>>>
>>>>I reran the whole 300 suite at 10 seconds each this evening,
>>>>due to Bob's comment, and pulled the failed 29 (Bob failed 9
>>>>I believe.)
>>>>
>>>>Then I reran against just my 29 and found that only 24 failed the
>>>>second time, at the same time control.
>>>>
>>>>This tells me that there is something about the test that is not
>>>>reproducible, based on either the ordering of the tests in the suite
>>>>or aspects being carried from test position to test position (hash
>>>>tables, history heuristic, etc.) I am not sure what it is.
>>>>
>>>>To test this theory, I took the 29 that failed of which only 24 failed
>>>>the second time and reversed them so that the last came first and retested.
>>>>This time 4 of the 29 were solved instead of 5. This difference of one is
>>>>too small to claim an ordering result for just 29 position sample size.
>>>>
>>>>Still this indicates that instead of failing 29 I am failing 24-25
>>>>and I am not sure what would cause it. Before every iterative deepening
>>>>ply 1 search, I clear out the history heuristic table, the hash tables,
>>>>and the principal variation arrays.
>>>>
>>>>Still that is only 4-5 more leaving 24-25 left, arguably 15-16 if one
>>>>wants to aspire as high as Crafty.
>>>>
>>>>I am at a total roadblock on the subject. As I mentioned, I will be
>>>>putting money where my mouth is and making a signficant donation to
>>>>the board sponsors for guidance to a solution of gaining say another
>>>>10 right above my current 271 at 10 seconds. (Hopefully that's legal
>>>>here.)
>>>
>>>This sounds like a bug.
>>>If you analyze a new position, you should definitely clear the hash table
>>>between analysis runs.
>>
>>** I do. I also start by initializing the random number generator identically
>>each time.
>>
>>  If the results are not exactly the same time after time,
>>>then there is a bug (unless you introduce randomness or use floating point for
>>>your eval or other odd things like that).
>>
>>** I do use floating point for the evaluation. This is a relic of something
>>** that can be pulled out of the program if it is a really bad thing. Bob
>>** has said it is due to floating points always being off.
>>
>
>Floats just for eval or also all bounds and scores backed up to the root?
>SSE floats or doubles under w64 are quite efficient, for instance you (or your
>compiler) can work with vectors of four floats per instruction.
>Is your nullwindow {alfa, alfa+1.0} or something like {alfa, alfa+1.0e-10}?

They're all doubles and for everything that would normally be an int.

This is handled with a typedef and could fairly easily be an int with
some additional ifdefd code for %d as opposed to %f.

My null window is always -alpha-1,-alpha.

If you think double is severely affecting reproducibility or putting
bugs in that could cause a performance-hurting issue, I can make it
int.

Stuart



This page took 0 seconds to execute

Last modified: Thu, 15 Apr 21 08:11:13 -0700

Current Computer Chess Club Forums at Talkchess. This site by Sean Mintz.