[SCore-users-jp] MPICH 再コンパイル / Absoft Compiler
kameyama @ pccluster.org
kameyama @ pccluster.org
2002年 9月 13日 (金) 15:48:41 JST
亀山です.
In article <005c01c25ae1$57413d70$66614b85 @ tadgw01hda1> "Kuroda Tohru" <tkuroda @ nifs.ac.jp> wrotes:
> mpif90のバックエンドコンパイラとして
> absoftフォートラン7.5を使用したいと思っております。
absoft コンパイラは数年前に一度試しただけなので,
現在のバージョンと変わっているかも知れません.
> /opt/score/etc/compilers/absoft中の記述
>
> $options{"absoft"} = sub {
> # all lower case and underscore, add libU77
> $addoptions = ($f90) ? "-YEXT_NAMES=LCS": "-f";
> $addoptions .= " -B100 -B108";
> };
>
> を書き換える必要があるのではないかと考えておりましたが、
はい, この部分で absoft 固有の処理を行っています.
多分, これをどうにかすれば動くとは思います.
> もし、/opt/score/etc/compilers/absoftの書き換えで
> 改善できるとしましたら、
> のパラメーターaddoptionsの意味・書式を、またできれば
> どのように書き換えたらよいのかを、
> どなたかご教授いただけないでしょうか。
このファイルは mpif90 などで指定された option などを変換する
ための perl 関数です.
$options{"absoft"} という変数に関数の reference を代入するという
形にあっています.
書式は perl の文法に従います.
固有の引数を処理したい場合は
Getopt::Long
モジュールの
GetOptions()
が使用できます.
$addoptions に代入した文字列はコンパイラに追加されます.
そのほか compile driver で処理できなかった引数も compiler に
渡されることになります.
そのほか, 以下の変数が利用できます.
$lang 現在処理している言語が格納されています.
すみません, $f90 は現在使用していないようです.
$static static link を行う場合, 1 になります.
static link を行わないと checkpoint ができません.
static link を行わない場合は 0 にしてください.
(checkpoint を使用しない library を link します.)
$static が 1 の場合は static link にするための
オプションを追加します.
mpif90 などの default は $static は 1 になっていて,
-nostatic で 0 になります.
> なお、absoft fortran バージョン7.5では、g77互換のソースファイルを
> コンパイルするためには、
> f77では、 f77 -f -N15 test.f
> f90では、 f90 -YEXT_NAMES=LCS -YEXT_SFX=_ test.f
> のようにオプションを与える必要があるようです。
ということは
options{"absoft"} = sub {
if ($lang eq "f90") {
$addoptions = "-YEXT_NAMES=LCS -YEXT_SFX=_";
} else {
$addoptions = "-f -N15";
}
};
という感じでしょうか?
static link のために, もう少し何かいるかも知れませんけど...
> $ cat site
> #タグ C コンパイラパス C++ コンパイラパス Fortran77 コンパイラパス Fortran90
> コンパイラパス
> #absoft complier
> absoft - - - /opt/absoft/bin/f90
MPI の場合は Fortran 77 のコマンドを使用して Fortran 環境
(C と link するための命名規則や引数をどのように取得するかなど) を
調べているので, Fortran 77 と Fortran 90 の両方とも設定してください.
from Kameyama Toyohisa
SCore-users-jp メーリングリストの案内