|
From: | Gunnar Farnebäck |
Subject: | Re: [gnugo-devel] Making GNU Go take advantage of multiple processors. |
Date: | Tue, 23 Oct 2007 19:00:09 +0200 |
User-agent: | Mozilla-Thunderbird 2.0.0.6 (X11/20071008) |
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.
> number of static variables in the program) or nobody just had time to do it?Are there any obvious reasons why it might be very hard (e.g. very large
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
[Prev in Thread] | Current Thread | [Next in Thread] |