SHELXのインストール  

プログラムアーカイブの入手  

アカデミックフリーですが、プログラムの入手は若干面倒です。 アプリケーションフォーム( http://shelx.uni-ac.gwdg.de/SHELX/applfrm.htm )を印刷して必要事項を記入の上FAXを送ります(e-mailはダメらしい)。しばらくすると記載したメールアドレスにダウンロード方法が届くはずです。その際、利用者リストにメールアドレスとともに載るので、スパムメールが気になる場合は掲載しないように伝えるとよいかもしれません(私は掲載された後、スパムが急増したのでメールで削除して貰うように連絡しました)。
得られたアーカイブに全てのプラットフォームのバイナリおよびソースが収録されています。

参考
How to obtain SHELX -- http://shelx.uni-ac.gwdg.de/SHELX/#Obtain%20SHELX

バイナリインストール  

2010-06-21 追加

Linuxバイナリを適当な場所に展開してパスを通すだけです。

# tar zxvf shelx_linux.tgz
# cp linux/* /usr/local/bin

OpenMP版がある場合はそれもコピーします。その際、シンボリックリンクを張ると便利でしょう。

# cp mp/shelxl_ifc /usr/local/bin
# cd /usr/local/bin
# mv shelxl shelxl.orig    <-- オリジナルファイルの名前を変更
# ln -s shelxl_ifc shelxl  <-- シンボリックリンクを張る

なお、Intel Compilerでビルドし直すと若干の速度向上が見込めるので試してみてもいいかもしれません。

SHELXLIntel Compilerを使ってビルドする  

OpenMP版をIntel Compiler 11.1でビルド Vine5  

2011-05-17 追加

OpenMP版のSHELXLIntel Compiler 11.1でビルドしてみます。バイナリで提供されるshelxl_ifcはおそらくIntel Compiler 9以前でビルドされているものなので、新しい方がたぶん速いだろうと思って試してみたところ、実際に10%ほど高速でした [smile]
OpenMP対応版はSHELXソースディレクトリのmpサブディレクトリ以下にあるのでその中で作業します。なお使用したいスレッド数が4を超える場合、shelxh_omp.fのパラメータを変更します。

    16 c maximum number of CPUs (choose the actual number with the
    17 c environment variable OMP_NUM_THREADS):
    18          parameter(maxcpu=4)   <-- この値(例えば8にする)

修正したらビルドします。

% ifort -O3 -xsse4.1 -openmp -prec-div -heap-arrays shelxh_omp.f shelxlv_omp.f -o shelxl.omp

ここではオリジナルと区別するためにshelxl.ompという名前にしています。

オプションの意味

複数ファイル最適化オプションである-ipoを付けると計算速度が10%程度低下したため、付けていません。

Intel Compiler 11によるビルド Vine5  

OpenMP版があれば不要です。
バイナリファイルをインストールは簡単なのですが、Intel Compilerを使って自動並列化による高速化を試してみます。オリジナルバイナリよりは30-50%程度高速になりますが、OpenMP版の方が遥かに高速です。
SHELXLIntel Compiler 11.1を用いて以下のようにビルドしました。

% ifort -O3 -xsse4.1 -parallel -prec-div shelxl.f shelxlv.f -o shelxl.intel

-xsse4.1などの拡張命令セットの指定はCPUにあわせて下さい。(Intel Compiler/コンパイルオプション)
生成されたshelxl.intelを適当な場所(例えば/usr/local/binにコピーして使って下さい)。ここではオリジナルのバイナリと区別するためにshelxl.intelという名前にしています。

ベンチマーク  

2011-05-17