やねうら王2016MidのLinux/Mac対応について

やねうら王2016Mid、g++でコンパイル出来るようになりました。
魔女のMakefileを参考に、Makefile書いておきました。

> make avx2
とかやるとavx2用の実行ファイルが得られるはずです。
(やねうら王のshogi.hでやねうら王2016Midを選択して、extra/config.hでSSE,AVX2有りを選択しておく必要があります。)

まだ開発中で、長い持ち時間においては魔女にやや負け越すようです。
1手1秒とかなら勝ち越すのですが…。

パラメーター絡みのチューニングというよりはnpsの差が原因である可能性があって、やねうら王のほう、何故かnpsが魔女より1,2割出ないので、その原因をいま調べているところです。

何かお気づきの点がありましたら、コメント欄などでお願いします。

やねうら王2016MidのLinux/Mac対応について」への17件のフィードバック

      • あら・・g++のPGOの話をネットで検索してたら「マルチスレッド対応も弱い」とかいう記述があるぞ。wikipediaの「性能解析」見るといろいろな種類のプロファイラがあるみたいです。g++のPGOなんかよりも良いやつがあるかもしれないです

  1. g++対応嬉しいです(・◡・´)

    が、#includeのほうでfolder separatorが修正切れてないところが2つあります
    1. source/move_picker.h:13の #include "extra\move_picker_2015.h"
    2. source/evaluate.h:8 の #include "eval\kppt_evalsum.h"
    です。

    あと、以下のファイルだけ文字コードがcp932になってます(´・_・)
    source/extra/entering_king_win.cpp
    source/eval/evaluate_bona_piece.cpp
    source/eval/kppt_evalsum.h
    docs/ToDoのリスト.txt
    docs/あとで使うかも知れないコード.txt

  2. linux対応とのことでlinuxでmakeしてみましたが、一部includeが足りないようでした。
    INT_MAXにはが、offsetofを使うにはが必要です。

    diff –git a/source/position.cpp b/source/position.cpp
    index c2ffd53..08bfd4f 100644
    — a/source/position.cpp
    +++ b/source/position.cpp
    @@ -1,5 +1,6 @@
    #include
    #include
    +#include

    #include “position.h”
    #include “misc.h”
    diff –git a/source/shogi.h b/source/shogi.h
    index faba279..60116f0 100644
    — a/source/shogi.h
    +++ b/source/shogi.h
    @@ -1,5 +1,6 @@
    #ifndef _SHOGI_H_
    #define _SHOGI_H_
    +#include

    //
    // やねうら王mini

    • includeのカッコが消えてしまいましたが……INT_MAXにはclimits、offsetofにはcstddefが必要です

      • 修正しておきました(`・ω・´)ゞ

        Ubuntu16.04でmake avx2が出来て、実行ファイルが実行できることまでは確認しました。

        って…もしかしてこれで晴れてLinux + AWSのスポットインスタンスが利用できる…!?も、、もう、Xeon 40コアPC発注しちゃったよ!!ヽ(`Д´)ノ

  3. LLVM Clangが試してほしそうにこちらを見ています
    ライセンスが少し難しいintel c compilerさんも

    • ClangはAVX2とか使うときに読み込むヘッダーがよくわかりません…。(そもそもClangのその手のヘッダーが読み込めるようにセットアップするところまでがよくわかりません…) まあ、最適化においてg++とそんなに変わらないのであれば、まあいいかな…と思ったり。Intel C++ Compilerは、ほんの少しの修正ぐらいでコンパイルが通るはずなんですけどコンパイル環境を用意するの面倒くさくて…。

  4. nosseがコンパイルできなかったのですが、mm_malloc.hをインクルードしたらコンパイルできました。
    gccでは_mm_mallocと_mm_freeの宣言 (インライン定義) はそこに入っているのですが、イントリンシックのヘッダをインクルードすると一緒にインクルードされるようでした。

  5. 最近のバージョンは_stricmpがなくてLinux環境でコンパイルできませんでした。usi.cppにこんなものを追加してください:
    #ifndef _MSC_VER
    #define _stricmp strcasecmp
    #endif

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です