Hello Martin!
fierz wrote:I just ordered a dual core machine today
Congratulations!
1) I know there are different concepts for multiprocessor engines (YBWC, DTS, etc). I'm looking for the simplest one, because I'm basically a lazy person. What would that be? I am not looking for a solution that scales well up to 1000s of CPUs, just something for the near future which is duals and quads (IMO).
I would recommend YBWC, which works fine with up to 4 CPUs, and which doesn't require you to do any major changes to your existing search. Implementing a dual-CPU version of YBWC is easy and fun, a general N-CPU version is trickier, but still not too bad.
2) after giving an answer to 1), would you know of a good description of how to implement it? and available online?
I learned most of what I needed from chapter 3 in
Valavan Manohararajah's thesis. There are also a few open source chess programs you can look at: Crafty, Scorpio and Glaurung all do parallel search. Crafty and Glaurung both use something similar to YBWC, I am not sure what Scorpio does.
I also have a simplified and thoroughly lobotomized Glaurung version called
Viper which is meant to be an instructional example for parallel search beginners. My goal is to make it the "TSCP of parallel search", but unfortunately I am still quite far from achieving this goal. The current version is still far too complicated, and suffers from too few comments.
Of course there might also be some nice parallel checkers programs you can study, but you probably know more about that than I do.
3) My program plays checkers, not chess, and that means that I typically only have 10 moves or so instead of ~40 like in chess. Does that change your answer to 1)?
Probably not.
4) My program uses MTD(f) instead of PVS - does that change your answer to 1)?
I don't think so. Actually I think implementing a parallel search with MTD(f) should be slightly easier, because you never have to adjust alpha or beta and and tell all relevant threads about the new values. You can simply stop all threads which work on the sub-tree whenever a cutoff occurs, which should be a bit easier.
Good luck!
Tord