Q) KPP_KKPT型評価関数とは何ですか?
A) KPPT型に比べて、KPPの手番は用いないことにしたものです。評価関数ファイルのサイズが約半分になります。
Q) それって強いの?
A) 厳密な比較は出来ていませんが、KPPT型より少し弱いかも、ぐらい差のようです。
Q) どんなメリットがあるの?
A) 10%ぐらいnpsが上がります。メモリ帯域がボトルネックになっているようなPCでmany core時はもう少し得するかも。あと、学習局面がおおよそ半分で済むようになります。評価関数のメモリ使用量がおおよそ半分で済むようになるので、KPPT型の評価関数がメモリに載らなかったPCや省メモリ環境(スマホなど)でも動作するようになります。
Q) KPP_KKPT型評価関数を用いるやねうら王の実行ファイルはどこからダウンロード出来るの?
A) やねうら王のGitHubのreleasesのタブからダウンロード出来ます。
Q) KPP_KKPT型評価関数はどこかからダウンロード出来るの?
A) とりあえず、elmoより少し弱いぐらいに調整したKPP_KKPT型リゼロ評価関数epoch4をやねうら王のGitHubからダウンロード出来るようにしておきました。
Q) どうやってビルドするの?
A) やねうら王のソースコードの、extra/config.hにある、#ifdef YANEURAOU_2017_EARLY_ENGINEの下らへんにある#define EVAL_KPPTを#define EVAL_KPP_KKPTに変更してビルドすればKPP_KKPT型の評価関数を使う実行ファイルが出来ます。
Q) KPP_KKPT型の評価関数をゼロから学習したいんだけど、ゼロで埋めた評価関数が用意されてなくて困る。
A) KPP_KKPT型実行ファイル詰め合わせのなかにあるlearn版の実行ファイルをダブルクリックして実行したあと、次のようにするとKPPT型評価関数から変換できます。
SkipLoadingEval true
test evalconvert kppt32 eval_zero_epoch0 kpp_kkpt32 eval_zero_kpp_kkpt_epoch0
※ 上の例の場合、実行ファイル配下のeval_zero_epoch0というフォルダにKPPT型評価関数ファイルが入っているとして、変換後のKPP_KKPT型評価関数ファイルがeval_zero_kpp_kkpt_epoch0というフォルダに生成されます。
epoch4、気になりますね。実験に使わせていただきます。
MSYS/clangのOpenMPは引き続き調査しています。
g++ではリンク時にlibgomp.dllも取り込むようになっていますが、clang++は取り込まないんですよね。
これをどうにかできれば解決しそうです。
Ubuntu 17.04,clang4だといまのmakefileでうまくビルド出来ているらしく、Msys2の問題なんですかねー。(´ω`)
たまさんのお陰で、Msys2でもclangでOpenMP有効にすることが出来ました。ありがとうございます!