I haven't implemented this successfully, so I probably shouldn't be
giving advice to anyone, but what I was trying to do when we stopped
developing dimwit was the following:
 * When a thread enters a node of the UCT tree, increment the number
of losses (This will discourage other threads from entering the same
branch).
 * When you want find out if the playout was actually a win or a loss,
increment the wins counter and decrement the losses counter.

All the manipulations can be done without locks with a tiny little bit
of assembly or with intrinsic functions.

If you need details, I can try to get you sample code for Mac OS X or
Linux (both on x86).

Álvaro.


On Mon, Apr 13, 2009 at 6:08 PM, Rémi Coulom <remi.cou...@univ-lille3.fr> wrote:
> Michael Williams wrote:
>>
>> What tricks are people doing to minimize the performance degradation due
>> to multiple threads contending for access to the tree (in MCTS)?  Do you
>> only lock a portion of the tree?  How would that work?
>>
>> _______________________________________________
>> computer-go mailing list
>> computer-go@computer-go.org
>> http://www.computer-go.org/mailman/listinfo/computer-go/
>
> If you are motivated, you can try a completely lockless solution:
> http://computer-go.org/pipermail/computer-go/2008-March/014537.html
> It scales well up to 16 cores:
> http://computer-go.org/pipermail/computer-go/2008-March/014547.html
>
> Using a single global lock is really very inefficient, especially for 9x9 or
> if you have many cores.
>
> Rémi
> _______________________________________________
> computer-go mailing list
> computer-go@computer-go.org
> http://www.computer-go.org/mailman/listinfo/computer-go/
>
_______________________________________________
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/

Reply via email to