Permalink: 2014-09-07 by Kai Sun in Blog tags: yixin multi-thread

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:

300s/1000s

Deep Yixin loses Deep Yixin wins
Yixin14(0.4.3) 16 26
Tito14 12 30
Renjusolver(H6) 9 33
Hewer14 5 37

(2015-11-26 Update)

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.