Recently I am trying to write a MPI-based perft. I do this as an exercise of understanding the framework of the MPI-based parallel alpha-beta search. So I choose perft because it is relatively easier, and is also easy to verify the correctness.
My program starts from Viper. The implementation of my parallel perft framework is a mixture of Viper and Scorpio. I use the idea that Viper implements for the SMP based parallel search, but also borrow a lot of code from Scorpio, especially for the code that involved MPI. Really appreciate the nice works by Tord and Daniel
I also once try to simplify Scorpio to get such a perft program, but I did not understand the code of Scorpio very well, so my modification always makes Scorpio out of work. Not sure whether there is some other prior works about this.
One of the most headache issue is that, sometimes the slave process is just stuck there without doing anything. I suspect that this was caused by MPI_Probe (not MPI_IProbe), because I use this to wait for the response of “OFFERHELP” message. Moreover, the “helpful master” never happens. I still have no idea what’s the reason of this.
Any advice or comments would be welcome. Thanks!