以前、Windowsだと1つのソフトから最大で論理64コアまでしか使えないので、いまどきの44コア88スレッドのようなPCだと全コア使い切れなくてどうすんねんみたいな話を書いたが、Stockfishの最新版で、全コアを使い切れるようなcommitがあった。参考のためURLを貼り付けておく。
Handle Windows Processors Groups
https://github.com/official-stockfish/Stockfish/commit/0d9a9f5e985c13852cf9f29767e95f295bb29575
全コアを使い切ったほうが将棋ソフトとしては強いのは強いのだが、(Dual CPUで)CPUがまたがることになるので、性能がやや落ちる。機械学習等では、これは電気代の無駄である。
あと、機械学習のコードでCPUをまたぐためにはOpenMPのparallel forとかで書いているところは、何らか修正が要るのだと思うが、ググっても古い記事しか出てこない。OpenMP界隈はどうなっているのだ…。
ソフトを研究に利用する者としては、1つのソフトで検討モードを使って局面を検討する際には全部のコアを使用できる方がNPSが増えてありがたいですね。
2つのソフトを使って連続対戦する際はdual coreで問題ありませんが。(それぞれにコアを割り当てられる)。
そうですね…。やねうら王も全コア利用できるように対応しようかと思っています。
> CPUをまたぐためにはOpenMPのparallel forとかで書いているところは、何らか修正が要るのだと思うが
そうなの?
OpenMPの設定か何かをごにょごにょしないといけないのでは…。デフォルトでは1プロセッサしか使ってくれないようで。
実行時に OMP_NUM_THREADS 環境変数設定するだけでスレッド数変更できますよ。
マルチCPU構成のときに、別のプロセッサのスレッドまではデフォルトで使ってくれないような?(勝手にNumaから出てこられても困るのでデフォルト動作はそれで良いのですが)
よくわかりませんがアフィニティー
http://www2.kobe-u.ac.jp/~lerl2/l_cc_p_10.1.008/doc/main_cls/mergedProjects/optaps_cls/common/optaps_openmp_thread_affinity.htm
とか-bind-toとかあるみたいです
http://hpcmemo.hatenablog.com/entry/2014/07/28/190017
http://www-fps.nifs.ac.jp/ito/memo/openmpi181.html
おおー!(゚д゚)
intel のomp は、プロセッサグループをまたげたと思いました。他の実装はまたげないのが多いかと。
ほほー(゚д゚) あとで詳しく調べてみます。情報ありがとうございます。