Towards Deep Yixin
Recently, I have been struggling with varieties of multi-threading bugs, trying to enable Yixin to take advantage of multi-core processors. Although there is still some space to improve the speedup, the result is good to some extent, because what I would like now is just making Deep Yixin run without bugs from synchronization. There is no doubt that the multi-threaded search will be improved in the future.
I tested the Deep Yixin (0.4.28) on a 4-core i7 with 21 balanced openings, and the result is as follows:
|Deep Yixin loses||Deep Yixin wins|
The framework for SMP has been redesigned. Rather than Windows API used in previous versions, the new framework is fully implemented with the thread library introduced by C++11. Besides, I managed to make extra thread information maintenance cost little so that the speed of single-threaded search in the new framework is almost the same as the single-threaded version.
The preliminary result between 2 threads vs 1 thread is 25:11 (18 balanced openings carefully selected by a gomoku expert were used). Both turbo boost and hyper-threading were turned on. Time settings were 300s/1000s. It is worth noting that the strength difference could be inflated quite a bit because of the test being self test.