> The problem is that a single MC run takes about 1/5 of a millisecond,
> so it's not worth the overhead of putting it off into another thread.
Creating a thread for each MC simulation is clearly very costy.
> I need some way to tell a thread to do many runs, then somehow
> incorporate the multiple runs back into my search tree. I believe
> others are already doing this and I'm curious how.
Yes we do that in MoGo.
I try to explain the algorithm here:
3 methods:
DescendTheTreeUsingUCT
MCSimulation
UpdateTheTree
At the beginning of a genmove, we create n threads (n==nbProcessors), then
each thread calls the method "think" which is:
think {
while (time left) {
mutex.lock()
DescendTheTreeUsingUCT
mutex.unlock()
MCSimulation
mutex.lock()
UpdateTheTree
mutex.unlock()
}
}
Each thread has his own data for all except tree (for exemple we keep the
current sequence, ...).
Is it cleared that way ?
_______________________________________________
computer-go mailing list
[email protected]
http://www.computer-go.org/mailman/listinfo/computer-go/