うらおコンピューター将棋のようなαβ型の探索において、並列探索の効率があまりよろしくないことが知られている。LazySMPにより従来よりマシになったとは言え、10スレッド(10並列)で探索させたとしても、1スレッドの4倍相当ぐらいにしかならない。並列探索なんてやめて、重い処理だけを分散して処理させたほうが良いのではないかという疑問が生じる。言っても、実はそんな簡単に分散の出来るような重い処理というのが将棋ソフトには存在しない。唯一、可能性がありそうなのは評価関数ぐらいである。いま、仮に、べらぼうに重い評価関数を考えたとしよう。KPPT(3駒関係+手番)型の評価関数では、全体の処理時間の1/3ぐらいが評価関数の計算に費やされているが、例えば、KPPPTの4駒関係だと、この15倍ぐらい重い。局面の優劣を判断する精度は格段に向上するはずである。15倍とは言っても10スレッドでやればたかだか1.5倍であるから、1スレッドのときの半分ぐらいのnps(探索速度)は出るはずである。KPPPTにメモリは、1TBほど必要になるが非現実的というほどでもない。三角配列を使うなりすればそこそこ削減できる。1スレッドの半分(1スレッドの0.5倍速相当)となる。npsが倍になるごとにR100上がるという実験結果からすると、8倍の差はR300相当。KPPTをKPPPTにすることでR300以上カバーできるのかという問題になる。出来るのかどうかは俺は知らん。出来るような気もするが...。それから、10スレッドから同時に大量のメモリにアクセスしようとするとメモリ帯域がボトルネックになって、理論値は出ないと思う。並列探索をやめるという選択肢は、近い将来、ありうるかも(現在は無理)というのを結論としてこの記事を終わる。:MultiPVの1より元が取れるのか。私はMultiPV2~4は1に劣ると思っていますが、5の場合中盤以降1を上回ることを確認しております。同じ評価関数を使ってSMとやねうら王とか対局させると、深く読んだほうがもちろん強く、MultiPVで1が一番勝率が良くなります。普通同じ評価関数なんてありえない訳で、別のソフトと対局すれば読み筋がどこまで一致するかという問題がありまして、MultiPVで1で一生懸命実現しない指し手を調べているみたいなことが良くあります。いったときにMultiPVを5にして、実現しそうなDepthの指し手をしっかり読んだほうが良い手を発見することを確認しております。SM設定で何手までMultiPV○にして、それ以降強制的にMultiPV1にするという設定があったと思いますが、たまにこれ逆なんじゃないの?とか思います。穴もあって、終盤はDepthの範囲に詰めろが入らないと頓死しますので、詰み探査がない場合MultiPV1でマシンスペックのゴリ押しで読まないといけないんですが。私はMultiPV2~4は1に劣ると思っていますが、5の場合中盤以降1を上回ることを確認しております。Stockfishでは、PV(読み筋)とnonPV(読み筋以外)とで、枝刈りの量が圧倒的に違うんですよね。将棋だとnonPVを読む量が少なすぎて、よろしくないというのはあるのでしょうね。そのへんはPVとnonPVにどれくらいの比率で探索エネルギーを割り当てるか、みたいなことなのでパラメーター調整の範疇ではあるのですが。:私自身2ちゃんねるなんて見ないので、知人から指摘され気づきました。野球で言えば、プロ野球選手でも出せない200キロのボールをピッチングマシンが投げて来ても、投げる場所とタイミングさえ合えば打てますよといった程度の話です。それが新評価関数になってから振り飛車をやると、昔はボールも投げていたのにストライクしか投げなくなっているようなので、前より簡単に打ち返えせませんか?といった感じです。左美濃、銀冠、5筋位取りからの65歩タダ取られ等が後手番でも同じやり方で攻略出来たので一例を書き込んでしまいました。他人のブログに書くようなことでは無かったです。他人のブログに書くようなことでは無かったです。