|
From: | Øystein Johansen |
Subject: | Re: [Bug-gnubg] Simple multi-threading... Cache |
Date: | Mon, 22 Jan 2007 22:35:21 +0100 |
User-agent: | Thunderbird 1.5.0.9 (Windows/20061207) |
Jonathan Kinsey wrote:
After some further testing, I was getting some small differences in the results. I found the global eval cache needed to be protected to stop multiple accesses (from different threads), but am still getting differences. Does anyone know if adding positions to the cache from multiple threads (i.e. further ahead in the game), could cause differences in the final results?
It shouldn't as far as I can understand. However I'm not sure I've thought this through.... What happens on collisions? Can it be that a collision causes a bad evaluation. Yes, that might cause some problems.....
I may need to have a separate cache for each thread, but this would probably lead to many positions being evaluated more than once?
Sounds like a bad idea to me...
I'm not sure exactly how the cache works so any thoughts would be helpful!
It's simply a hash table of evaluations. Each new evaluation is stored in table and each call to EvaluatePositionCubeful4() (or something like that) looks up the table and takes the values from the table if it's there instead of reevaluating. The keys to the evaluations is the position it self (of course) and the evaluation parameters/settings.
-Øystein
[Prev in Thread] | Current Thread | [Next in Thread] |