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 グループに
所属させないといけない
(プライマリグループでなくてもいい).

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS