After watching this presentation[1] by Brian Goetz, in which he discusses the fork-join framework and how it is intended to be used I was left with a major question. Around the end of the talk he said and I quote

"...fork-join can be used for game-tree exploration..."

while the slides actually had
-Move generation
-Alpha-beta
...
....

As soon as I saw/heard that I almost fell of my chair!!! He caught me completely by surprise simply because I've given this quite a bit of though myself... NOw, I'm not implying that I am nowhere near as smart or informed as he is but the 'objection' I have is pretty simple. I already have a parallel minimax (some of you have actually helped) so I know how that's done and it wasn't too hard because minimax is exhaustive search. No heuristics whatsoever...as long as you work with immutable data-structures God is on your side and all is well!

HOWEVER, as soon as you introduce heuristics (even simplistic like alpha-beta pruning) you 've lost the ability to split the work in pieces. You've suddenly introduced coordination which only makes sense in a serial fashion. Since pruning a particular branch of the game-tree requires knowing how the previous branch did how can you ever fork? What if these 2 branches are on separate threads? How can you ever do that without locking?

I am very excited that someone like Brian Goetz is claiming something like this even though I don't understand how such an inherently serial process could be efficiently forked.

Can anyone help?


 [1] http://www.infoq.com/presentations/brian-goetz-concurrent-parallel

Jim

--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en

Reply via email to