Author: Tony Werten
Date: 23:49:27 12/03/03
Go up one level in this thread
On December 03, 2003 at 11:14:24, Robert Hyatt wrote: >On December 03, 2003 at 03:05:03, Tony Werten wrote: > >>On December 02, 2003 at 04:19:24, Gian-Carlo Pascutto wrote: >> >>>On December 01, 2003 at 02:41:28, Tony Werten wrote: >>> >>>>When my masterthread is spinning, waiting for results from it's workers >threads, how do I keep it from burning CPU time ? >>> >>>Turn it into a worker thread. >> >>Brilliant ! >> >>And then not having a masterthread hand out moves, but have the worker threads >>pick moves themselves from "some global structure" ? > >:) > >That is why Crafty always starts exactly N-1 threads on an N processor box. >The original thread plus the new N-1 are just enough to keep all 4 >processors busy. The data structures are a bit messy, because you reach >a point where there are no more moves at some point, and processors have >to go to work somewhere else as they finish. And the _original_ process >has to be the one to "return" if you are using are using a recursive search, >of course. > >But I do that and it has worked just fine for years. So I do want to do it the CRafty way :) > >> >>And then have only the "master thread" return a score in the search (upwards >>that is) and have the worker just "disconnect" and reconnect at another movelist >>in the global structure ? > >Yes... >I call those "reconnects" "split points". > >> >>I think I'm starting to see the picture now. >> >>A "master" thread filling an array index by depth wich contains all the moves >>from that depth and a flag SHAREABLE (or not). Then the workers pick moves ( >>preferably as high as possible) and post result ( if important) > >I would not go with the global stuff. You have to stop and think why. IE >at ply=5, two processors split. No problem. But now processor 1 wants >to split at ply=7 with processor 3, while processor 2 wants to split at >ply=7 with processor 4. note that 1 and 2 are the ones splitting at ply=5. I almost had it. Shouldn't I prefer to let 3 and 4 join the splitting at depth 5 ? > >A global structure will not allow that. Yes, I see that. When processor 1 and 2 have just picked the last 2 moves, 3 and 4 will have to split somewhere else. OTOH Maybe I should get it to work at a dual first ( wich would allow me to use a global struct ) and use to knowledge I get from that to later make a N processor version. BTW what do you do when the master can't find a move in the list anymore, because the workers are searching the last moves ? I was thinking about keeping it simple, kicking one of the workers off a move and hoping the hashtable will keep me from wasting too much nodes in the "research". Tony > > >> >>Tony >> >>> >>>-- >>>GCP
This page took 0 seconds to execute
Last modified: Thu, 15 Apr 21 08:11:13 -0700
Current Computer Chess Club Forums at Talkchess. This site by Sean Mintz.