10.2をインストールしてみるCCP4開発用ライブラリのビルドMOLREPのビルドMOLREPのファイルのインストール使ってみたこのページでは、とにかく先進の機能を使いたい!、パフォーマンスチューニングしたい!、でもなくてもいいよ〜っていうようなCCP4のインストールを試してみます。4.2ではおそらく手順どおりにすればインストール可能だと思いますが、少々トラブル対応の知識がいるかも。Libraryを使いたい!私は全然知らなかったのですが、CCP4ではver.4.2からベクトルとかマトリックスの計算にBLASまたはLAPACKというライブラリを使っているらしく(CCP4のドキュメント)、通常はディフォルトでNetLib版が(ソース)パッケージに含まれています。Library(MKL)を使ってみようという企画です。これは「みんなのひろば」のがっちゃんさんの書き込みで興味を持って試してみました。マルチコアCPUの場合は、MKLを使用した場合の計算を自動的にマルチスレッドで実行するらしいのでパフォーマンスの変化は顕著だそうです。実際の作業にはコンパイルに相当時間がかかると思いますので、「今すぐCCP4をセットアップしなきゃ!!」っていう場合は止めた方がいいと思います。Compilerでのコンパイルも同じ方法になりますので参考にしてみてください。MKLの記事TLSに対応してる?まず最初の問題はこれです。Storage)という仕組みに対応してません。従ってglibcをTLSを使用可能な状態でコンパイルし直すか、TLSに対応しているディストリビューションを使います。今回のビルドはとりあえず居室にあったFedora8で試してみました。CentOS5もTLSに対応しているので問題ないと思います。TLSに対応していないVineでもglibcを再構築すれば使えますのでご心配なく。MKLを使用可能です。CCP4ソースパッケージの取得いつものようにCCP4のサイトからパッケージを取得します。今回は自分でビルドするのでソースパッケージを取得して下さい。フルセットをビルドするとなると一体どのくらい時間がかかるかわからないので今回はCCP4+Phaser/CCTBXで試してみました。共にX-Window用のプログラムはビルドしてません。v6.1とPhaser/CCTBXを選択します。最小構成という意味ではこの組み合わせになりますがPhaser/CCTBXなしのCCP4パッケージのみでもビルド可能です(その場合、POINTLESSやRAMPAGEも入りません)。code)にチェックを入れますそのままContinueで進みますライセンスに同意してファイルをダウンロードしますビルドとインストール取得したファイルをインストールしたい場所に展開します。/usr/local/ccp4-intelに展開します。11.0の環境で行いました。CCP4-Oth.tar展開したら環境変数XLDFLAGSおよびCOPTIMをセットします。XLDFLAGSにMKL関連オプションを追加しておきます。COPTIMに-ipオプションを入れないとlibccif.aが正常に動作しないらしく、CIFファイルの書き出しや読み込みに問題が発生して動作しないプログラムがあります(MLPHARE、TRUNCATEなど)。オプションなしでもビルド自体は成功するのが厄介なところ。Processorsへの最適化COPTIM(C++最適化オプション)とFOPTIM(Fortran最適化オプション)にオプションをセットします。Phaser/CCTBX)。-axTはプロセッサの種類によって異なりますので環境に合わせて下さい。-ip"プロセッサへの最適化を行わない場合はFOPTIMを設定しなくても構いません。これで準備ができました。そのままインストールスクリプトを実行します。./install.sh以上です。インストールスクリプトはこんな感じでした。これはCCP4本体だけで実行した結果です。CCP4がセットアップされていたら聞かれるはず。Enter(この辺からインストールするコンポーネントが聞かれる。Enterで開始されますビルドを開始するとパッケージが展開され、コンパイルが始まります。この時の出力はccp4.logとエラー出力はccp4e.logになります。念のため、MKL_LAPACKが認識されるかどうかをccp4.logを見て確認します。***********からライブラリの確認に入っています。これというメッセージがあればおそらくOKです。libmkl_lapackこんな感じになります。*******というのが出力されていれば認識しています。このXLAPACK_LIBが/usr/local/ccp4-intel/ccp4-6.1.0/lib/lapack...というようになっていたら認識してません。XLDFLAGSを確認してください。CCP4パッケージのみの場合、1時間少々でビルドが完了してました。確認してみる実際にMKLがリンクされているかを確認します。(0x004c5000)無事にlibmkl_lapackとlibmkl_*がリンクされていました。$CCP4/lib以下にlibfftw.aができていなければ、MKLのfftwが使用されていると考えていいと思います。プログラムのテストちゃんと動作するかどうかをテストしてみます。runtest失敗するとエラーが表示されます。パッケージによっては全て実行されません(CCP4メインのみならPHASERなどがスキップされます)。プログラムによっては$CCP4/examples/unix/runnableへの書き込み権限が必要になりますので、今回のようにroot権限でインストールした場合、一般ユーザーでテストを実行すると失敗しますので注意して下さい(bp3など)。テストによっては実行権限が付加されていない場合があります(--;、その場合はchmodで権限を追加して下さい。テストの結果どのぐらいの時間がかかるかを比べてみました。4.2上で実施しました。Phaser/CCTBXです。399pf+0wテストの比較では大幅な変化はありませんでした(8%程度)。MKLが活躍するようなプログラムをガシガシ使えば差が出るかもしれませんね。実際の使い方$CCP4/bin以下のプログラムをコピーして使うか、パスの探索順序を前の方にすればいいと思います。wrapperの検討フーリエ変換ライブラリFFTWをMKLに置き換える(FFTの挙動が異なるのか、正しい結果が得られません)FFTWライブラリはCLIPPERライブラリが使っているのでCLIPPERを使うBUCCANEER、PIRATE、PARROTあたりに影響を及ぼします。CLIPPERライブラリ中のFFTW関係の関数の挙動が本来と異なるようです。BUCCANEERのテスト(cbuccaneer.exam)で失敗していましたが、それ以前のCPIRATEのテスト(cpirate.exam)でプレビルド版とは結果が全く異なりました(たぶん解が出てません)。wrapperは使用しない方がいいと思います。wrapperでも同じ結果でした。-inf原因が究明されたときのためにメモは残しておきます。libraryの質問をnにして標準のFFTWを使わないようにします。(環境に合わせて下さい)これらの変数をセットしておけばMKLのFFTWラッパーライブラリを使うことができます。Compilerをインストールしただけではラッパーライブラリが構築されていませんのであらかじめ構築しておきます。libfftw3xf_intel.aが構築されます。libfftw?xc_intel.aのcはC++用ライブラリ、fはFortran用に分かれていますが、CCP4で使うのはlibfftw2xc_intel.aで、CLIPPERライブラリから使用されます(たぶん)。オリジナルのfftw2ライブラリはlibfftw,librfftwに分かれていますが、MKLのfftwラッパーライブラリは一つに集約されているようです。Faultが出ました)。6.1では標準でインストールされてますCCP4パッケージの分子置換プログラムであるMOLREPの最新版(2008年10月時点)をインストールしてみます。90を使用することでメモリアロケーションが効率化され、以前の2倍の速度で動作するのだとか。そんなわけで試してみます。Compilerを使います。ビルドなんてめんどくさい人はバイナリを取得してください。referenceエラーがでてリンクできません(環境によるのかもしれませんが)。Compilerでビルドします。Compilerの9.xを使います。今回は9.1を使用しました。10.xではconfigure時にエラーが出てうまくいきませんでした。only)を選択してContinueで次に進みます。v6.0.2にチェックを入れて一番下のContinueで次に進みます。conditionsをクリックするとダウンロード画面が表示されます。ファイル名はCCP4-Oth-.tarになっているはずです。ライブラリのビルドダウンロードしたファイルを展開してビルドします。ライブラリの出力先は/usr/local/ccp4/ccp4-6.0.2-ic91/libとします。インクルードファイルは/usr/local/ccp4/ccp4-6.0.2-ic91/includeになります。適当なディレクトリで作業します。ディレクトリを作成しておきます。/usr/local/ccp4/ccp4-6.0.2-ic91/include続いてビルド。installこれで必要なライブラリ群が/usr/local/ccp4/ccp4-6.0.2-ic91にインストールされます。コンパイル時間は15-30分程度だと思います。MOLREPのビルドライブラリが準備できたらMOLREPをビルドします。intel以上でビルドするとmolrep/bin/molrepができているはずです。MOLREPのファイルのインストールMOLREPのソースアーカイブを展開したディレクトリにccp4iディレクトリがありますが、これらのファイルをCCP4iのディレクトリにコピーします。以前のファイルは念のため名前を変えておいておきます。ディレクトリは/usr/local/ccp4/ccp4-6.0.2/ccp4i以下です。molrep.orgとでもしておきます。続いて、ファイルをコピーします。元のファイルはMOLREPアーカイブを展開したディレクトリです。ccp4i以下のファイルはgzで圧縮されているのでgunzipしておきます。/usr/local/ccp4/ccp4-6.0.2/bin/molrep以上でインストールは完了です。9.2になってますが、気になる方は変更してみるといいかもしれません。-italicこの部分ですね。9.2で20分かかった計算が10.2では7分半で終わりました。