2024年12月
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31        

tweet

  • tweets

« Bonanza Feliz 中途半端解析ブログ | トップページ | 統計なんて当てにならんよ…統計的に言って。 »

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 中途半端解析ブログ | トップページ | 統計なんて当てにならんよ…統計的に言って。 »

将棋プロセサ」カテゴリの記事

コメント

bonasse 1.2ですが、私のところのcygwinのgccは3.4.4で-DTLPがないとビルドできません。
落ちる件ですが、gdbによるとattack.cのis_black_attacked()の中の_mm_and_si128()を使っているところでsegmentition faultがでているようです。
というわけで、SEEOPTをコメントアウトしたところとりあえずは落ちなくなりました。

情報ありがとうございます。RHEL 4 + gcc3.4.6 でもどうやら同じみたいで、SSEOPTなしだと動きました。やはりgcc3でSSEかALIGN16かがだめのようです。

v1.2は-DTLPがないと通らないようになってました。失礼しました。v1.2.1では直ってます。

printf入れてアドレス見たら末尾が8でした。ナンテコッタALIGN16キイテネー

冷静になって確認しなおしたら、そもそもptreeのアドレスの末尾が8でした。ALIGN16キイテネーはひとまず撤回します。

簡単なテストコードを走らせたところ、少なくともstructの内容に関してはちゃんとalignしてます。ただしグローバル変数のアドレスがことごとく末尾8 orz
8ずれるようにアクセスするとsseコードも無事実行されました。どうもリンカに変な癖があるようです。

こちらでもgcc3.4.6で簡単なコードで試してみましたが、16B alignされますね。__attribute__(aligned)が未サポートというわけではなさそう。バグってことなんでしょうか。いずれにせよ、bonasseではgcc3.xはノーサポートとするしかなさそうです。

11/15 に cygwinのFullSetを落としてきて、コンパイルしてみました。-DTLP でコンパイルが通り355,979 バイトの実行ファイルができました。

ただし、うまく動作しません。MyBona152 の後手に設定し、先手76歩に対して、同歩成と表示してそのままになります。(タスクマネージャから消えていました。) Mybonaの中断を押すと、プロセスが終了したため、要求を処理できません、のエラーがでます。

cygwin1.dll, cyggcc_s-1.dll は、同じディレクトリにコピーしています。

環境は、Win XP SP3 + gcc4.3.4 です。cygwin のバージョンは不明です。

以上 ご報告まで。(恒)

私がcygwinを使うときはLinuxと同じで、コンソールで使う用途です(floodgate用等)。マイボナと組み合わせてGUIで使うにはVC++が必要なんではないかと思います。

コメント有難うございました。
ソースが同じであれば、同じ様に動くと思っていました。
Cygwinでコンパイルした別のプログラムは、DOS窓でも動いているので。。。

VC++2008 では、コンパイルオプションを変えてみたのですがオリジナルよりも10%程度遅い物しか生成できず、GCCを試してみようと思ったのですが残念です。 (恒)

コメントを書く

コメントは記事投稿者が公開するまで表示されません。

(ウェブ上には掲載しません)

トラックバック


この記事へのトラックバック一覧です: bonasseサポート掲示板 ~ 動作環境について:

« Bonanza Feliz 中途半端解析ブログ | トップページ | 統計なんて当てにならんよ…統計的に言って。 »