Most know I play the guitar (hardly professionally, but I enjoy playing). One of my guitar heros, Chet Atkins, was once asked "how does one become a player with your skill level?" He replied, "Practice and perseverance is the way I teach others to play. Overnight stardom is another way, but I don't know how to teach that..."Daniel Shawul wrote:Well it is a bottleneck from the perspective of asynchoronous search which has none of that.
I am using large split depths for the cluster search (d = 8 - 12) due to huge communication
over head. For a d=12 I see only a few splits in a 5 min search and if i don't split enough
it won't scale well. May be I am barking on the wrong tree here as the cause of all this the slow network.
Synchronization is a price paid for low search overhead. The question is if this price is paid too early ?
Here is what the APHID authors say about this. Not everyone could agree about it but it was atleast
enlightening to have another view point besides the regular serial alpha-beta .This class of algorithms can not achieve a linear speedup primarily due to synchronization overhead;
the search tree may have thousands of synchronization points and there are numberous occasions where
the processes are starved for work. The algorithms have low search overhead , but his is primarily due
to the implementation of a globally shared transposition tableI agree it is doable. Infact it is done but I just can't figure out a simple way to do it.Oh, I know exactly how "easy" it is Smile
I have to admit that I so far have failed in making my own cluster design simple and elegant.
What's the problem here? You can protect against the spurious message and ignore it in the slave. This kind of asynchronicity (lets call it "in transit") is quite manageable and won't kill speedups.
If the master gets the result from the slave, it *will* know whether it already sent the HELP to the slave or not, and adjust accordingly.
The problem is the owner of that node has to keep old information while it is searching elsewhere.
Then it has to decide if it has to temprarily pause what is doing now and finish the old split point.
Or continue searching what it does now and go back and finish the split block afterwards.
This is the kind of thing that smells like Italian spaghetti
But anyway thank you all for sharing your experiences. Now I will have to go back and fix the thing
to get some scaling from it because at its current state it is just junk code.
cheers
Moral... this is not a quick and easy thing to do, otherwise it would already be in the "solved" column of computer chess problems. It is not going to be solved quickly. It is not going to be solved "simply" either, any more than a traditional YBW search that works reasonably well is "simple".