faultするスタックサイズを増やしたのに停止するCNSのインストールリリース情報など2010-07-23:1.3がリリースされています。1.21とはいろいろ変わったらしく(^^;、処理時間がだいぶ伸びています。インプットファイルも互換性がありません。ver.11.1のIntel64版でビルドしてみました。32bit版と同様のビルド方法で非OpenMP版は問題なく動作しました。VirtualBox上でOpenMP版はベンチマーク確認時、途中でセグメントエラーになりましたが、実機では試してません。ver.11.1でOpenMP版をビルドしてみました。ビルド方法は11.0と同じです。ver.11でコンパイルしたCNSをしばらく使っていますが、ver.10でコンパイルしたものより快調な気がします。refine.logでは落ちることがありましたが(並列化版の難しさを参照)、今のところそのようなことはないようです。ver.11がリリースされていました。faultを起こした条件でも、設定変更なしに処理できるようになりました。スタックの扱いが変わったのかもしれません(たぶん)2008年8月頃(だと思われます)に1.21がリリースされていました。OpenMPに対応したらしいのでマルチプロセッサ環境では動作が速くなるかもしれません。2008-10-222007年1月中旬に1.2がリリースされました。1.3も1.21と同様の手順です。CompilerがサポートされているのでIntelCompiler用パッチは不要になりました。1.1の時のcns_solve_env、xpeakpik.fへのパッチは不要になりました。Ver.1.1で見られたcns_solve_envの問題、ソースを確認したところxpeakpik.fの不具合は修正されていました。6.4(64bit)でインストールを試したところ以下のエラーが出ました。2...(省略)これはlibm.a(mathのスタティックライブラリ)が不足している場合に起こるようです。この場合glibc-staticをインストールします。glibc-staticこれで問題は解決されるようです。Linuxへインストールする本体インストール後、インプットファイルを作成するためのWebインタフェースもインストールできますインストールは1.1に比べて非常に簡単になりました。rootでの作業になりますが、cns_solve_envがcsh用スクリプトなのでtcsh上で行います。/usr/local/以下にcns_solve_1.21_all.tar.gzを展開します。マルチコア、マルチプロセッサならcns_solve_1.21_all-mp.tar.gzを試してみるのもいいかも/usr/local/cns_solve_1.21/cns_solve_envを修正しますコンパイルします以下は実際のコマンドです。Compilerを検索しますのでifortvars.cshをあらかじめ読み込んでおいてください。Compilerの利用をおすすめします。18行目のCNSの場所を指定しますcns_solve_envを編集。'_CNSsolve_location_'の_CNSsolve_location_を環境に合わせて修正します。ver.9でビルドしましたが、今回(1.21)はver.10.1および11.0を使ってみました。ここに示してある方法ではマルチスレッド対応版はビルドされません。下のOpenMP有効化を参照して下さい。ver.11ではsourceのコマンドが変わっています。手元の環境に合わせてsourceコマンドを実行してください。installこれで終わりです。11.0以上推奨コンパイルするときにOpenMPを有効にしないと並列化機能が有効になりません。上のやり方でコンパイルしたものでは処理時間が1.2と変わらなかったのでちょっと攻めてみました。1.8GHzのとき)。4コアで実行した場合は計算時間が約半分になるようです。ver.10でもコンパイルできますがver.11のほうがOpemMP動作が安定しているような気がしました。installこれでビルドできるはずです。ver.10でビルドしたOpenMP版は実行する際に少し設定がいります。Faultが出ます)、増やしてからCNSを実行します。私の場合は750残基x3で試したからかもしれません。Ver.11でコンパイルしたCNSでは同じ条件でも最後まで処理できましたのでこの設定は必要ないのかもしれません。基本的にはVer.11でコンパイルしたCNSをスタックサイズの設定なしで問題なく使用できるようですが、処理の内容によってはクラッシュすることがありました。その際はスタックサイズの調整を行ってみてください(私の環境では200残基x6@2.7Åのanneal.inpで発生しました)。Faultを起こす場合は、無難なインストールで使ってください。スタックサイズをunlimitedにすると気にせず使えそうです。refine.logスタックサイズの導き方はトライ&エラーになるらしいので目安ですが、私の場合は1コアあたり8192で計算してます。4コアなら32768ですね。使用準備インストールが終了したら使用するユーザーの.cshrcファイルに以下の行を追加しておきます。CNSを使ってみる通常版と並列化版の見分けかたOpenMPオプションを付けた場合と付けなかった場合はCNSを実行した場合にわかります。============================================================ホスト数の次の行にwithでスレッド数が表示されているのがわかります。何らかの理由でスレッド数を制限したい場合は環境変数OMP_NUM_THREADSに最大のスレッド数を指定します。2するとwithの値が変わります。750残基x3で分解能3.6A、refine.inpを実行しました。2.93GHz7分(8)4スレッドでも思ったほどの高速化はありませんでしたね。Mapの場合はかかる時間が長いのでメリットが大きいかもしれません(概算になりますが、CPU時間と実際にかかった時間を比べると1/3程度になってました。CPU時間が5時間、実際にかかった時間は1.5時間)。計算の実行途中でtopコマンドを見てみるとcnsプロセスが複数または100%を超えているのがわかります。11だとスタックサイズの設定等をしなくても安定しています。limit.この時は、limitコマンドでスタックサイズを増やしてみてください。faultで停止することがあります。WikiのCNSに以下の記述がありました。abnormally.Imageが違いますが、エラー番号(174)が同じなので原因は同じかもしれません。crashなのでうまく走ることもあるというニュアンスなら、たしかに最後まで走ったり走らなかったりします。test.logのようにパイプを通してteeに流してますが、リダイレクトしているわけではないので同じ現象かもしれません。test.outと書いてあるので、そのようにしてみるとよいのかも。