RIGHT:[[フリーソフトウェアのコンパイル]]
-Itenium2 なマシン(HP)
-RedHat Enterprise Linux AS 3(update 4)
で
一応,コンパイル O.K. だったので覚え書き.
*Unix Gaussian 03 Revision C.02
以下のものが必要
-Intel C++ Compiler for Linux(->利用したのは 8.1 評価版)
-Intel Fortran Compiler for Linux(->利用したのは 8.1 評価版)
-Intel MKL(Math Kernel Library)(->利用したのは 6.0 評価版)
**コンパイル手順
# groupadd g03
->GID 500 g03 group added
# setenv mntpnt /mnt/cdrom
# setenv g03root /usr/local
# cd $g03root
# cat $mntpnt/tar/*.taz | zcat | tar xvf -
# chgrp -R g03 g03
# cd g03
# source $g03root/g03/bsd/g03.login
# source /opt/intel_cc_80/bin/iccvars.csh
# source /opt/intel_fc_80/bin/ifortvars.csh
# vi /etc/ld.so.conf
-Added------------------
/opt/intel_cc_80/lib
/opt/intel_fc_80/lib
-------------------
# ldconfig
# パッチをあてる(自分で作った--後述)
# bsd/bldg03 >& make.log &
**パッチについて,
Intel の新しいコンパイラ(8.X系)ではコンパイルが通らなかったので
強引にコンパイルが通るようにしたパッチです.
一部 Source をいじっています.
いじった箇所は,OpenMP 関係でエラーが出る箇所に対して
OpenMP を無効にしました.
つまり,
-マルチプロセッサ,マルチスレッド対応になっているソースを,
-(一部だけですが)マルチプロセッサ,マルチスレッド非対応に
しています.
>ユーザさんにとっては申し訳ないのですが,
>コンパイルが通らないんだから仕方ない...
パッチ,3つあります.
-&ref(ia64.make.diff);
-&ref(mdutil.c.diff);
-&ref(utilam.F.diff);
順番は関係なく
patch -p1 < ファイル名
であてます.
**テスト
テストするユーザは,g03 グループにいれ,/usr/local/g03 内の
ファイルが読み込めるようにする.
% setenv g03root /usr/local
% setenv GAUSS_SCRDIR /work <-- スクラッチファイルの場所(指定が無ければカレントディレクトリ)
% source $g03root/g03/bsd/g03.login
% source /opt/intel_cc_80/bin/iccvars.csh
% source /opt/intel_fc_80/bin/ifortvars.csh
% cd /work1
% mkdir test
% cd test
% cp $g03root/g03/tests/com/test028.com .
% g03 < test028.com > test028.log
(ただし,大きなメモリを喰うようなサンプルではないので
実際のデータではどうなるかわからない.
limit コマンドなどで,アロケーションメモリの調整は必要かも)
**注意事項
Gaussian 03 からの制約として,
/usr/local/g03 ディレクトリ以下が,"World Readable" であると
コアダンプする.
このため,/usr/local/g03 以下のファイルについては,
g03 グループ以外のユーザには読めないように設定し,
Gaussian 03 を実行するユーザは g03 グループに
所属させないといけない
(プライマリグループでなくてもいい).