I've recently been upgrading my family of UCT robots for non-go games, but thought I'd report a few things for "general knowledge and expectations". This UCT system is written in java, and runs on standard PC hardware with multiple processor cores.
The system typically uses a fairly small tree and a relatively long random playout tail, and is not especially optimized for speed. Only the tree-descent and backtrack-update phases have thread synchronization issues. I found simple threading had a pretty sharp knee in performance at 4 threads. In other words, 2 3 and 4 threads improved the overall amount of work done more or less linearly to 3.5x, speed improvements fell off rapidly for more threads. I've also been comparing "blitz" play which creates a copy of the board at top level, and starts each descent with a copy of the board; compared with "unwinding" play where every move is explicitly unwound. Of course, the complexity of the unwinding varies a lot from game to game, but I found that "unwind" is always faster, an average 1/3 faster across several games. So if the complexity of unwinding your data structures is not too great, it's worthwhile. _______________________________________________ Computer-go mailing list [email protected] http://dvandva.org/cgi-bin/mailman/listinfo/computer-go
