
Ubuntu日本語フォーラム

ログインしていません。
以下の条件(条件(1))で,分子動力学計算プログラム AMBER9 をコンパイルして使おうとすると,
Segmentation Fault で落ちてしまいます.
★条件(1)
* OS : Ubuntu 10.04 の amd64 サーバエディション
* CPU: Intel(R) Core(TM)2 Quad CPU Q9550 @ 2.83GHz
* メモリ: 8 GB
* コンパイラ: gfortran, gcc, g++, cpp?
* 結果: 使えない
Segmentation Fault で落ちるだけならば問題なかったのですが,
別のマシン(条件(2))でコンパイルすると普通に使えました.
★条件(2)
* OS : Ubuntu 10.04 の amd64 サーバエディション
* CPU: Dual-Core AMD Opteron(tm) Processor 1210
* メモリ: 2.5 GB
* コンパイラ: 条件(1)と同じ
* 結果: 使える
また,OS が異なる場合(条件(3))も試したところ,普通に使えました.
★条件(3)
* OS: Ubuntu 9.04 の amd64 サーバエディション
* CPU: 条件(1)と同じ
* メモリ: 条件(1)と同じ
* コンパイラ: gfortran, gcc, g++, cpp? (バージョンは条件(1)と異なる)
* 結果: 使える
この条件(3)より,このプログラムが,このマシンで使えないことはないと思うのですが….
このように,OS とコンパイラが一緒で(条件(1)と条件(2)),結果が違うということは起こり得るのでしょうか?
また,これに対し,何か解決方法はあるのでしょうか?
宜しくお願いします.
オフライン
http://ambermd.org/
http://www.conflex.co.jp/prod_amber.html
のものでしょうか。
ぱっとみただけではよくわかりませんでしたが、AmberToolsという追加パッケージをコンパイルしようとしているのでしょうか。あるいは、シミュレータ(?)か数値計算プログラム(?)本体のコンパイルをしようとしているのでしょうか。
このあたりでopteron(amd64)向けにコンパイルしようとして、苦労している雰囲気のやりとりが見つかりましたが、コンパイルオプションは適切に設定されていますでしょうか。
http://archive.ambermd.org/200805/0216.html
上記のやりとりを見た感じでは32bit版としてコンパイルした方が簡単そうに聞こえます。
また、コンパイル時や、make時にエラーやワーニングがでていたりしないでしょうか。インストールマニュアルなどを参照して、コンパイル要件(ライブラリやビルドツールなど)を確認してみて下さい。
あとは、実行プログラムに対してlddを実行して、ライブラリに不足が無いか確認するのもよいでしょう。
オフライン
hmatsue 様
返信ありがとうございます.
何とか解決しました.
インストールパッケージは,Amber9 の本体(計算プログラム)でしたが,
Segmentation Fault が起こるプログラムは,Ambertools に含まれており,
Ambertools の最新版をコンパイルしたところ,問題なく使えることがわかりました.
返信から解決の糸口に繋がりました.
本当にありがとうございました.
オフライン
問題は解決しましたが,根本的な問題(マシン依存性)については未だわかっておりません.
後学のため,この問題についてどなたか教えて戴けると幸いです.
マシンA + Ubuntu 10.04 = 使えない … 条件(1)
マシンA' + Ubuntu 10.04 = 使えない … 条件(1)'
マシンB + Ubuntu 10.04 = 使える … 条件(2)
マシンA + Ubuntu 9.04 = 使える … 条件(3)
マシンA' + Ubuntu 9.04 = 使える … 条件(3)'
※マシンAとマシンA'は同じスペックのマシン.
※いずれも 64bit Server.
※インストール方法はいずれもマニュアルにある通り.
宜しくお願いします.
オフライン
ちょっと自分には分かりそうにありませんが、
コンパイルの手順、入力コマンドの詳細((あれば)./configure実行時の引数や、make実行時の引数など)
インストール済みの関連ライブラリ
(あれば)./configure実行時の出力ログ、make実行時の出力ログ
などの情報が無いと、なかなか、フォローが付きにくいのではないかと思います。
オフライン
コンパイルの手順は
1. AMBER9.TGZ を解凍する.
$ tar zxvf AMBER9.TGZ
2. .bashrc 内で指定する.
$ vi ~/.bashrc
export AMBERHOME=~/amber9 export PATH=$PATH:$AMBERHOME/exe
$ . ~/.bashrc
2. http://ambermd.org/bugfixes90.html からパッチをダウンロードし,当てる.
$ wget http://ambermd.org/bugfixes/9.0/bugfix.all $ cd $AMBERHOME $ patch -p0 -N -r patch_rejects < ~/bugfix.all
3. Makefile を書き換えて,xleap (GUI) をコンパイルしないようにする.
$ cd src $ vi Makefile
32行目 「cd leap; make install」→「# cd leap; make install」
38行目 「# cd leap/src/leap; make -f Makefile.tleap install」→「cd leap/src/leap; make -f Makefile.tleap install」
3. configure で gfortran を指定する.
$ ./configure gfortran [ログ取得] $ ./configure > configure.log
4. コンパイルする.
$ make serial [ログ取得] $ make serial > make.log 2> make_err.log
で,マシンB(条件(2)),及びマシンA(条件(3))では使えました.
マシンA(条件(1))で,tleap が Segmentation Fault します.
マシンAのログ http://www.box.net/shared/3hri3azl1f
マシンA'のログ http://www.box.net/shared/f4x3rvbve3
マシンBのログ http://www.box.net/shared/txpab32z1y
ldd を tleap に対して行なった結果も静的リンクを用いているためか,not a dynamic executable としか表示されませんでした.
以上,宜しくお願いします.
オフライン
hellfire による投稿:
[ログ取得] $ make serial > make.log 2> make_err.log
で,マシンB(条件(2)),及びマシンA(条件(3))では使えました.
マシンA(条件(1))で,tleap が Segmentation Fault します.
マシンAのログ http://www.box.net/shared/3hri3azl1f
マシンA'のログ http://www.box.net/shared/f4x3rvbve3
マシンBのログ http://www.box.net/shared/txpab32z1y
ldd を tleap に対して行なった結果も静的リンクを用いているためか,not a dynamic executable としか表示されませんでした.
とりあえず、ログだけ比較してみましたが、特に違いは無かったですね。。
あとはデバッグモードでコンパイルして、デバッガに食わせて、どこで落ちているのか見ていくぐらいしかないかもです。
が、申し訳無いですが、具体的な操作については詳しくは知らないため、有効なアドバイスはできそうにありませんです。
オフライン