SMPの部分のコードだと、コア数が増えてきた時に同じdepthを探索しているスレッドが増えすぎて良くないのではないかという指摘があった。これを調査するためには、80スレッド同士の対局などをさせなければならず、回数をこなすためには相当の計算資源が必要になることが予測されるのでやりたくなかったのだが、寒い季節になってきたので、PCから排出される熱源を暖房代わりにするために調査した。SMPの仕組みについて簡単におさらいしておく。SMP自体はきちんとした論文等になっていなくて、これを見れば何もかもわかるというような文献がない。SMPのページであろうか。https://www.chessprogramming.org/Lazy_SMP本ブログでもそのうち詳しい解説を書こうかと思うが、簡単に説明すると、それぞれのスレッドが使う置換表は共有してあるから、それぞれのスレッドがスレッド間の同期をとらずに各々が独立して探索してもいいよね?というだけのアイデアである。これにより、局面情報をサブスレッドにコピーするようなコストがかからないし、遊んでいるスレッドが全くなくなるので、わりと良い並列化効率が出せるというものだ。SMPのためのコードはやねうら王の場合、現状、以下のようになっている。スレッド間の探索深さを分散させるために使用されるスキップブロックに対するsizeとphase。threadならば0。threadより少し深い深さを探索させたい。スレッド間の探索深さを分散させるために使用されるスキップブロックに対するsizeとphase。threadならば0。threadより少し深い深さを探索させたい。2)continue;}スレッド番号(idx)によって、特定のdepthをスキップするようになっている。スレッド番号が大きければいまより少し深いdepthを探索するようになっている。1と同じdepthを探索するようなコードとなっている。20′′の部分)これだと同じdepthを探索するスレッドが増えすぎて良くないのではないかというのがPALの山口さん指摘であった。20′′を取り除いた。このskipSize,skipPhase配列を手で設定するのが面倒だったので以下のようなコードで補間した。