Dmitry Denisenko wrote:
I'm a graduate student taking a course in parallel computer architecture
and programming and I'm looking for a program to parallelize. I noticed
that making GNU Go thread-safe is on your wish list. Have there been
previous attempts at making it parallel?
Not quite, but in that direction. There's an old branch to allow working
with multiple boards at once, which would be a step towards parallelization.
Are there any obvious reasons why it might be very hard (e.g. very large
> number of static variables in the program) or nobody just had time to
do it?
Yes, there are lots of global and static variables, reading caches that
should be shared between threads somehow, and of course the fact that
there is a single global board state. Moreover it's not at all clear
what tasks should be parallelized and how.
However, there's a strong trend towards using Monte-Carlo simulations in
computer go, which is a technique where parallelization is reasonably
straightforward and clearly beneficial. This has not been included in
GNU Go yet, but you can get an idea how it may look from
http://trac.gnugo.org/gnugo/ticket/150
There a different (simpler) board representation is used, which is
designed from the start as a self-contained struct and all functions are
intended to be thread-safe. Parallelization should probably be done with
a shared UCT tree and a number of working threads to play out
simulations from the leaves of the tree.
/Gunnar
_______________________________________________
gnugo-devel mailing list
gnugo-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/gnugo-devel