[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 メーリングリストの案内