bonasseサポート掲示板 ~ 動作環境について
手の届く範囲のいくつかのマシンでbonasse1.2をコンパイルして動かしてみました。動いたといっても問題一問やらせてみたくらいですし、網羅的にサポート範囲を明確にする、なんてことはとてもできないですが、どのあたりまで動きそうか、という参考にどうぞ。
[Linux]
* Ubuntu 9.10 64bit + icc 11.1
私が今使ってます。動いてます。
* Fedora Core 6 32bit + gcc 4.1.1
動きました。
* RHEL 4 64bit + gcc3.4.6
pthread_setaffinity_np()がない、でエラーになります。これを無理やりコメント化すると、コンパイルは通ったが動かすとSEG FAULTに。
-> 私の記憶が正しければたしかこのマシンで元ボナは動いたはずなので、bonasseの修正のどれかのせいか。ALIGN16あたり?
* RHEL 4 64bit + gcc4.4.4
上記と同じマシンにgcc4.4.4を入れて試したところ、pthread_setaffinity_np()はやはりないが、これをコメント化すると動いた。
-> pthread_setaffinity_np()はOSがサポートしてないとだめ?この関数はもともとaffinity onの時しか使わないので、make時のオプションでdisableできるようにしました。
gccはv4以降が必要なのかな?
[cygwin]
* Win XP SP3 + cygwin 1.7.1 + gcc4.3.4
-DTLPにするとthread.cのコンパイルでこけます。lock()の中でasm文があるんですが、どうもこれが悪さしてる模様(ここをコメントにするとコンパイル通る)。-DTLPなしだと動きました。
-> floodgate観測員さんの「cygwinでスタックダンプ」は再現できませんでした。
cygwinのせいというよりgccのバージョンのせいかもしれません。
cygwinではTLPはノーサポート、とさせていただきます。
TLPもmake時のオプションでdisableできるようにしました。
(当然ですが、そうすると1コアでしか動きません)
[VC++]
* Win Vista SP1 + Visual C++ 2010 Express Edition
最近私が試したもの。動いてます。
将棋所+u2bにしたときのバージョン表示は、"5.2.1"になるようにしました。
[SPARC]
* Solaris 5.8 + gcc-3.4.6
"lock_t already defined"となってコンパイルエラー。SPARCやるならちゃんと書き直す必要ありそうです。
ということでまとめると、
・gccはv4以降が必要そう
・pthread_setaffinity_np()でエラーになったらMakefileの頭をいじる
・cygwinはTLP禁止。その他TLPでおかしくなったらMakefileの頭をいじる
・SPARCはだめぽ
でなとこでしょうか。
#autoconfとか使った方がいいのか…でもよく知らないんだよな
以上を反映したバージョンを資料館に置きました。Winバイナリにとっての変更点は将棋所のバージョン表示だけです。PGOなしですがバイナリをここに置きます。一晩floodgateで流してちゃんと動く程度は確認済。なおbonasse2cwin32はCore2Duo 1.86Gです。
※「将棋ソフトのページ」のbonasse1.2のバイナリを現在使っていて特に不満ない方は、このバイナリを使う必要はありません。強さに関わるソース変更は今回してないので、PGOがないぶんほんのわずかこちらの方が弱いかも(R10も変わらないはずですが)。将棋所でのバージョン表示が気になる、という方向けです。
« Bonanza Feliz 中途半端解析ブログ | トップページ | 統計なんて当てにならんよ…統計的に言って。 »
「将棋プロセサ」カテゴリの記事
- ボンクラーズの開発過程について書いた記事が掲載されました(2019.03.07)
- 「浅い評価値を深い評価値に近づける学習法」誕生の背景(2016.10.06)
- 塚田九段の対ボンクラーズ練習棋譜を公開します(2013.09.07)
- Puella α ソース公開(2013.08.28)
- クラスタ並列の解説記事を公開します(2013.08.22)
コメント
« Bonanza Feliz 中途半端解析ブログ | トップページ | 統計なんて当てにならんよ…統計的に言って。 »
bonasse 1.2ですが、私のところのcygwinのgccは3.4.4で-DTLPがないとビルドできません。
落ちる件ですが、gdbによるとattack.cのis_black_attacked()の中の_mm_and_si128()を使っているところでsegmentition faultがでているようです。
というわけで、SEEOPTをコメントアウトしたところとりあえずは落ちなくなりました。
投稿: floodgate観測員 | 2010年5月26日 (水) 20時33分
情報ありがとうございます。RHEL 4 + gcc3.4.6 でもどうやら同じみたいで、SSEOPTなしだと動きました。やはりgcc3でSSEかALIGN16かがだめのようです。
v1.2は-DTLPがないと通らないようになってました。失礼しました。v1.2.1では直ってます。
投稿: A級 | 2010年5月28日 (金) 18時15分
printf入れてアドレス見たら末尾が8でした。ナンテコッタALIGN16キイテネー
投稿: floodgate観測員 | 2010年5月28日 (金) 21時25分
冷静になって確認しなおしたら、そもそもptreeのアドレスの末尾が8でした。ALIGN16キイテネーはひとまず撤回します。
投稿: floodgate観測員 | 2010年5月28日 (金) 21時54分
簡単なテストコードを走らせたところ、少なくともstructの内容に関してはちゃんとalignしてます。ただしグローバル変数のアドレスがことごとく末尾8 orz
8ずれるようにアクセスするとsseコードも無事実行されました。どうもリンカに変な癖があるようです。
投稿: floodgate観測員 | 2010年5月28日 (金) 22時56分
こちらでもgcc3.4.6で簡単なコードで試してみましたが、16B alignされますね。__attribute__(aligned)が未サポートというわけではなさそう。バグってことなんでしょうか。いずれにせよ、bonasseではgcc3.xはノーサポートとするしかなさそうです。
投稿: A級 | 2010年5月31日 (月) 19時59分
11/15 に cygwinのFullSetを落としてきて、コンパイルしてみました。-DTLP でコンパイルが通り355,979 バイトの実行ファイルができました。
ただし、うまく動作しません。MyBona152 の後手に設定し、先手76歩に対して、同歩成と表示してそのままになります。(タスクマネージャから消えていました。) Mybonaの中断を押すと、プロセスが終了したため、要求を処理できません、のエラーがでます。
cygwin1.dll, cyggcc_s-1.dll は、同じディレクトリにコピーしています。
環境は、Win XP SP3 + gcc4.3.4 です。cygwin のバージョンは不明です。
以上 ご報告まで。(恒)
投稿: (恒) | 2010年11月16日 (火) 00時43分
私がcygwinを使うときはLinuxと同じで、コンソールで使う用途です(floodgate用等)。マイボナと組み合わせてGUIで使うにはVC++が必要なんではないかと思います。
投稿: A級 | 2010年11月16日 (火) 22時02分
コメント有難うございました。
ソースが同じであれば、同じ様に動くと思っていました。
Cygwinでコンパイルした別のプログラムは、DOS窓でも動いているので。。。
VC++2008 では、コンパイルオプションを変えてみたのですがオリジナルよりも10%程度遅い物しか生成できず、GCCを試してみようと思ったのですが残念です。 (恒)
投稿: (恒) | 2010年11月18日 (木) 22時58分