マニュアルページ f90.1
名前
f95 - Fortran 95 コンパイラ
形式
f95 と f90 のどちらのコマンドでも起動できます (f95 と f90 は
同じ意味です)。
f95 [ -a ] [ -aligncommon[=a] ] [ -ansi ] [ -arg=local ]
[ -autopar ] [ -Bx ] [ -C ] [ -c ] [ -cg89 ] [ -cg92 ]
[ -copyargs ] [ -Dnm[=def] ] [ -dalign ]
[ -dbl_align_all[={yes|no}] ] [ -depend[={yes|no}] ]
[ -dryrun ] [ -d{y|n} ] [ -e ] [ -erroff[=taglist] ]
[ -errtags[={yes|no}] ] [ -errwarn[=taglist] ]
[ -explicitpar ] [ -ext_names=e ] [ -F ] [ -f ]
[ -f77[=list] ] [ -fast ] [ -fixed ] [ -flags ]
[ -fnonstd ] [ -fns[={yes|no}] ] [ -fpover[={yes|no}] ]
[ -fpp ] [ -fprecision=p ] [ -free ]
[ -fround=r ] [ -fsimple[=n] ] [ -fstore ] [ -ftrap=t ]
[ -G ] [ -g ] [ -hnm ] [ -help ] [ -Ipath ]
[ -inline=rl ] [ -iorounding[=r] ] [ -KPIC ] [ -Kpic ]
[ -Lpath ] [ -lx ] [ -libmil ] [ -loopinfo ]
[ -Mpath ] [ -moddir=path ] [ -mp=x ] [ -mt ]
[ -native ] [ -noautopar ] [ -nodepend ]
[ -noexplicitpar ] [ -nofstore ] [ -nolib ]
[ -nolibmil ] [ -noreduction ] [ -norunpath ]
[ -O[n] ] [ -o nm ] [ -onetrip ]
[ -openmp[=a] ] [ -PIC ] [ -p ]
[ -pad[=a] ] [ -parallel] [ -pg ] [ -pic ]
[ -Qoption pr ls ] [ -qp ] [ -R list ] [ -r8const ]
[ -reduction ] [ -S ] [ -s ] [ -sb ] [ -sbfast ]
[ -silent ] [ -stackvar ] [ -stop_status={yes|no} ]
[ -temp=path ] [ -time ] [ -U ] [ -Uname ] [ -u ]
[ -unroll=n ] [ -use=list ] [ -V ] [ -v ] [ -vax=v ]
[ -vpara ] [ -w[n] ] [ -Xlist[z] ] [ -x386 ] [ -x486 ]
[ -xa ] [ -xalias[=a[,a]...] ]
[ -xarch=a ] [ -xassume_control[=a[,a]...] ]
[ -xautopar ] [ -xcache=c ] [ -xcg89 ] [ -xcg92 ]
[ -xcheck=v ] [ -xchip=c ] [ -xcode=v ]
[ -xcommonchk[={no|yes}] ] [ -xcrossfile=n ]
[ -xdebugformat={stabs|dwarf} ] [ -xdepend ]
[ -xdryrun ] [ -xexplicitpar ] [ -xF ]
[ -xhasc[={yes|no}] ] [ -xhelp=h ] [ -xia[=i] ]
[ -xildoff ] [ -xildon ] [ -xinline=rl ]
[ -xinterval=i ] [ -xipo[=n] ] [ -xipo_archive[=a] ]
[ -xjobs=n ] [ -xknown_lib=lib ]
[ -xlang=f77 ] [ -xlibmil ] [ -xlibmopt ] [ -xlicinfo ]
[ -xlic_lib=sunperf ] [ -xlinkopt[=level] ]
[ -xloopinfo ] [ -xmaxopt[=n] ]
[ -xmemalign[=ab] ] [ -xnolib ]
[ -xnolibmil ] [ -xnolibmopt ] [ -xO[n] ]
[ -xopenmp[=a] ] [ -xpad[=a] ] [ -xpagesize=n ]
[ -xpagesize_heap=n ] [ -xpagesize_stack=n ]
[ -xparallel ] [ -xpg ] [ -xpp=p ] [ -xprefetch=a[,a]]
[ -xprefetch_auto_type=[no%]indirect_array_access ]
[ -xprefetch_level=n ]
[ -xprofile=p ] [ -xprofile_ircache=path ]
[ -xrecursive ] [ -xreduction ] [ -xregs=r ] [ -xs ]
[ -xsafe=mem ] [ -xsb ] [ -xsbfast ]
[ -xspace ] [ -xtarget=t ] [ -xtime ]
[ -xtypemap=spec ] [ -xunroll=n ]
[ -xvector[={yes|no}] ] [ -ztext ]
source file(s) ... [ -lx ]
機能説明
Sun Studio 9 Fortran 95 コンパイラ、バージョン 8.0 。
f95 コンパイラは、標準に準拠した Fortran 95 ソースファイルプ
ログラムを受け入れます。また、区画演算の拡張機能と
OpenMP[tm] Fortran 95 API バージョン 2.0 も受け入れます。さ
らに、-f77 互換性オプションの下の多くの FORTRAN 77 (f77) 言
語拡張機能と VAX VMS Fortran 拡張機能 (-vax) も受け入れま
す。
Fortran 95 コンパイラ f95 のバージョン 8.0 は、Sun Studio 9
のコンポーネントの 1 つとして発表されたバージョンです。これ
は、Solaris[tm] オペレーティングシステム (Solaris OS) 8、9、
10 (SPARC(R) および x86 プラットフォーム) で利用することがで
きます。
プラットフォーム、環境、新しい機能、制限事項、問題、回避策、
およびソフトウェア修正の最新情報については、オンラインの
Readme ファイルを参照してください。このファイルを参照するに
は、以下のコマンドを実行します。
f95 -xhelp=readme
マニュアルページは、クイックリファレンスです。f95 コンパイラ
とそのオプションの使用方法についての詳細は、 『Fortran ユー
ザーズガイド』と 『Fortran プログラミングガイド』を参照して
ください。
f95 コンパイラの使用方法についての詳細は、『Fortran ユーザー
ズガイド』を参照してください。このユーザーズガイドには、f95
が受け入れるすべてのオプション、プラグマ指令、および環境変数
についての詳細と、標準 Fortran 95 コンパイラとこの Fortran
95 コンパイラとの相違点の説明があります。
プログラムのパフォーマンスと最適化、並列化、および他の
Fortran プラットフォームからの移植については、『Fortran プロ
グラミングガイド』を参照してください。
関連する Sun Studio マニュアルの一覧は、本マニュアルページの
最後にあります。
Readme ファイル、ユーザーズガイド、リファレンスマニュアルな
ど、すべてのインストール済みの Sun Studio のマニュアルは、こ
のソフトウェアがインストールされているホストシステムにある以
下のファイルを HTML ブラウザで指定して参照できます。
file:/opt/SUNWspro/docs/index.html
インストールされているマニュアルの参照方法については、ご使用
のシステムのシステム管理者にお問い合わせください。
これ以外の技術的な参考資料や知識ベースは、コンパイラコレク
ション開発者リソースのポータル (
http://developers.sun.com/prodtech/cc ) にあります。
変更
このリリースの Sun Studio 9 Fortran 95 コンパイラには、以下
の変更点があります。
以下のオプションフラグが新規に追加されました。
-xipo_archive
-xprefetch_auto_type
-xprofile_pathmap
変更されたオプションフラグは次のとおりです。
-xarch and -xcode
x86 プラットフォームの Pentium III および Pentium 4、と
SSE および SSE2 命令セットの値が変更され、SPARC プラッ
トフォームのデフォルトが変更されています。
-xmemalign のデフォルトが変更されています。
-xildon が -g でのデフォルトでなくなりました。すなわ
ち、インクリメンタルローダの ild は、-g でオブジェクト
ファイルのみコンパイルするときでも、自動的に呼び出され
なくなりました。 ild を呼び出すには、明示的に -xildon
を付けてコンパイルします。
以下のプラグマ指令が新規に追加されました。
このリリースのコンパイラの詳細については、以下のコマンドを実
行して、コンパイラの Readme ファイルを参照してください。
f95 -xhelp=readme.
詳細とこれまでの経緯については、『Fortran ユーザーズガイド』
を参照してください。
x86 に関する特記事項
Solaris x86 SSE/SSE2 Pentium 4 互換プラットフォームで実行す
るために -xarch={sse|sse2} を付けてコンパイルしたプログラム
は、SSE/SSE2 対応のプラットフォームでのみ実行する必要があり
ます。SSE/SSE2 に対応していないプラットフォーム上でそのよう
なプログラムを実行すると、セグメント例外が発生したり、明示的
な警告メッセージなしに不正な結果が発生することがあります。
SSE/SSE2 でコンパイルされたバイナリが SSE/SSE2 に対応してい
ないプラットフォームで実行されることのないようにするための
OS およびコンパイラに対するパッチが、後日提供されるかもしれ
ません
Pentium 4 互換のプラットフォームの場合、Solaris 9 update 6
以降の OS リリースは SSE/SSE2 に対応しています。これより前の
バージョンの Solaris OS は SSE/SSE2 に対応していません。
このことは、.il インラインアセンブリ言語関数を使用しているプ
ログラムや、SSE/SSE2 命令を利用している
__asm() アセンブラコードにも当てはまります。
コンパイルとリンクを別々に行う場合は、必ずコンパイラを使って
リンクし、-xarch={sse|sse2} で適切な起動ルーチンがリンクされ
るようにしてください。
x86 の浮動小数点レジスタのサイズが 80 バイトであるため、x86
上と SPARC 上での算術演算結果が異なることがあります。こうし
た違いが出ないようにするには、 -fstore オプションを使用して
ください。あるいは、ハードウェアが SSE2 をサポートしている場
合は、 -xarch=sse2 を付けてコンパイルしてください。
オプション
Solaris SPARC プラットフォームでのみ有効なオプションには、
(SPARC) と注記されています。
Solaris x86 プラットフォームでのみ有効なオプションには、
(x86) と注記されています。
非推奨オプションは、 (旧式)
と注記されていて、以降、使わないことを推奨します。それらの
オプションは、以前のリリースとの互換性を維持する目的にのみ提
供されています。指示されている代わりのオプションを使ってくだ
さい。
リンカーオプションについては、 ld(1) を参照してください。
f95 でコンパイルを行った場合、メッセージは表示されません。エ
ラーと警告メッセージを除いて、コンパイル中に「進捗」メッセー
ジを出力しません。
一般的に、コンパイラオプションは左から右に処理されます。その
ため、特定のマクロオプションを優先させることもできます。この
規則はリンカーまたはプリプロセッサのオプションには適用されま
せん。
コマンド行オプションの項目では、角括弧 ( [] ) で示された項目
は省略可能です。{yes | no | maybe } のように中括弧で囲まれた
縦線区切りのリテラル項目のリストは、そのから 1 つを選択しま
す。リストの最初の項目は、値なしでフラグが現れた場合のデフォ
ルト値を示します。
たとえば、-someoption[={no|yes}] は implies -someoption
が -someoption=no
と同じであることを意味します。
オプション一覧
-a (旧式) tcov 用に基本ブロックごとのプロファイルを生成し
ます。
各基本ブロックが実行される回数をカウントします。
tcov(1) をソースファイルに対して実行し、そのプログラム
の統計を生成します。
これは、 tcov 用の基本ブロックの古い形式のプロファイル
です。代わりに -xprofile=tcov を使用してください。
-aligncommon[{=1|2|4|8|16}]
共通ブロックおよび標準数値シーケンス型内のデータの整列
を指定します。
指定された値は、共通ブロックおよび標準数値シーケンス型
内のデータ要素の整列の最大値 (単位はバイト) を示しま
す。たとえば、 -aligncommon=4 は、共通ブロックのデータ
要素を、4 バイトまたはそれ以上の境界の自然配列に整列し
ます。このオプションは、指定した大きさより小さい自然配
列データには影響しません。
-aligncommon を指定しないと、
共通ブロックのデータおよび標準数値シーケンスのデータ
は、デフォルトの最大 4 バイト境界に整列されます。
値なしで -aligncommon が指定された場合のデフォルトは、
プラットフォームに関係なく 1 です。つまり、要素間のパ
ディングなしで、すべてのデータがバイト境界で整列しま
す。
-aligncommon=16 を 64 ビットが使用できないプラット
フォーム上 (v9、v9a、または v9b 以外) で指定した場合は
-aligncommon=8 となります。
-xmemalign も参照してください。
-ansi
標準外の拡張機能を識別します。
-arg=local
ENTRY 文に対する実際の引数を保持します。
このオプションを指定し、代替エントリポイントを使って副
プログラムをコンパイルすると、 f95 は copy restore を使
用してダミーの引数と実際の引数との対応を保持します。
このオプションは従来の Fortran 77 プログラムとの互換性
をもっています。このオプションに依存するコードは標準外
です。
-autopar
(SPARC) 自動ループ並列化を有効にします。
適切なループを見つけ、並列化します。依存関係解析を行い
ます (データ依存関係についてループを解析します)。ループ
の再構成を行います。最適化レベルが -O3 よりも低い場合、
最適化レベルを -O3 に設定します。
並列化オプションを使用するときには、 -stackvar オプショ
ンも指定します。 -stackvar オプションは、 -autopar が使
用されたときに、パフォーマンスの向上をもたらすことがあ
ります。これは、オプティマイザが並列化対象をさらに検出
できることがあるためです。メインスレッドスタックおよび
スレーブスレッドスタックのサイズを設定する方法について
は、 -stackvar オプションの説明を参照してください。
独自のスレッド管理を行う場合は、 -autopar は使用しない
でください。 -mt の注を参照してください。
また、 -autopar はシングルプロセッサシステムには適して
おらず、パフォーマンスも低下します
詳細は、『Fortran プログラミングガイド』の並列化に関す
る章を参照してください。
スレッド数: マルチスレッド環境で並列化プログラムを実行
するには、実行前に PARALLEL または OMP_NUM_THREADS 環境
変数を設定する必要があります。これらの環境変数は、プロ
グラムが作成できるスレッドの最大数を実行時システムに伝
えます。デフォルトは 1 です。一般的に、ターゲットプラッ
トフォーム上の PARALLEL または OMP_NUM_THREADS 変数に
は、利用可能なプロセッサ数を設定します。
-autopar を指定し -explicitpar を指定しない場合、明示的
な並列化指令は無視されます。
-autopar を使用し、コンパイルとリンクを同じ段階で行う場
合、リンクはマイクロタスクライブラリとスレッド安全
FORTRAN 実行時ライブラリを自動的にインクルードします。
-autopar を使用し、コンパイルとリンクを別の段階で行う場
合、f95 -autopar でリンクしなければなりません。
-B{dynamic|static}
ライブラリのリンク方式を指定します。
このオプションの後にコマンド行で指定するライブラリのリ
ンク方法として、動的リンクを優先するか、必ず静的リンク
を実行するかを指定します。これはリンカーのオプションで
す。
デフォルトは -Bdynamic です。
-Bdynamic: 動的リンクを優先する (共有ライブラリのリン
ク)
-Bstatic : 静的リンクを実行する場合がある (非共有ライ
ブラリのリンク)
static を指定した場合に動的ライブラリしか見つからない
と、ライブラリのリンクは実行されず、警告メッセージが出
力されます。
しかし、 dynamic を指定した場合に静的ライブラリしか見つ
からない場合は、そのライブラリがリンクされ、警告メッ
セージは出力されません。
-Bdynamic と -Bstatic は 1 つのコマンド行の中で何回でも
指定できます。したがって、ライブラリの種類に応じて、リ
ンク方式を動的と静的の間で切り替えることができます。
これらはリンカーオプションであるため、 -Bstatic または
-Bdynamic を付けて、コンパイルとリンクを別々に実行する
場合、コンパイルコマンド上に -Bx オプションを指定した
ら、リンク時にも -Bx オプションを指定する必要がありま
す。
64 ビット環境では、システムライブラリの多くは共有動的ラ
イブラリとしてのみ有効です。これらには、libm.so や
libc.so (libm.a と libc.a は提供されていません) が含ま
れます。その結果、 -Bstatic および -dn は 64 ビット
Solaris[tm] オペレーティングシステム (Solaris OS) でリ
ンクエラーを起こす可能性があります。このような場合は、
アプリケーションが動的ライブラリとリンクしなければなり
ません。
-C 範囲外の添字と構造について配列参照を検査します。
宣言されたサイズを超える添字を配列に付けると、予想外の
結果 (セグメント例外も含む) が生じることがあります。 -C
オプションは、ソースコードと実行時に考えられる配列添字
違反を検査します。
-C オプションを指定すると、実行時の配列添字違反がエラー
として扱われます。コンパイラは、ソースコード内の配列添
字範囲違反も警告として示します。
このオプションは、実行可能ファイルのサイズを増やし、実
行パフォーマンスを落とします。デバッグのときだけ使用す
るようにしてください。
-c コンパイルだけを行います。実行可能ファイルは作成しませ
ん。
各ソースファイルごとにコンパイルし、.o ファイルを生成し
ますが、ローダーによるリンクを抑制します。 -o オプショ
ンを使用すれば、単一のオブジェクトファイルに名前をつけ
ることができます。
-cg89
(旧式、SPARC) 汎用の SPARC アーキテクチャ用のコードを生
成します。
このオプションは、
-xarch=v7 -xchip=old -xcache=64/32/1
をマクロ化したもので、 -xtarget=ss2 と同義です。このオ
プションは使わないでください。最新の Solaris オペレー
ティングシステムは、SPARC V7 アーキテクチャをサポートし
ません。このオプションを付けてコンパイルしたプログラム
は、最新の SPARC プラットフォームで実行速度が低下しま
す。
-cg92
(旧式, SPARC) SPARC V8 アーキテクチャで動作するコードを
生成します。
このオプションは、
-xarch=v8 -xchip=super -xcache=16/32/4:1024/32/1
をマクロ化したもので、 -xtarget=ss1000 と同義です。
-copyargs
定数引数への割り当てを許可します。
副プログラムが、定数の仮引数を変更できるようにします。
このオプションにより、レガシーコードは、定数を変更する
のに、実行時エラーなしでコンパイルおよび実行できるよう
になります。
-copyargs を指定しないで、副プログラムに定数引数を渡し
てから、サブルーチン内でその定数を変更しようとした場
合、異常終了します。
-copyargs を指定して、副プログラムに定数引数を渡してか
ら、サブルーチン内でその定数を変更する場合、必ずしもラ
ンタイムエラーになりません。
-copyargs フラグを使用するコンパイルを必要とするプログ
ラムは、Fortran 規格準拠のプログラムではありません。
-Dname[=def]
ソースコードプリプロセッサのシンボル name を定義しま
す。
これは、ソース内の define 指令と同義です。定義 def が指
定されない場合、 name は 1 に定義されます。このオプショ
ンは拡張子 .F .F90 .F95 .F03 が付いたファイルのみに適用
されます。
次のシンボルは、それぞれ使用しているシステムに合うよう
に事前定義されています。下線が先頭に 2 本ついていること
に注意してください。
__sparc, __sparcv9, __unix, __sun, __i386, __SVR4,
__SunOS_5_6, __SunOS_5_7, __SunOS_5_8, __SunOS_5_9,
__SunOS_5_10
Fortran 構文は、上記のシンボルの実際値をサポートしない
場合もあるかもしれません。このシンボルは、次のような
fpp または cpp プリプロセッサ条件文でのみ使用される必要
があります。
#ifdef __sparc
上記に対応する古い値として、以前のリリースでも次のシン
ボルが事前定義されています。
sparc, unix, sun,
これらの古い事前定義値は、将来のリリースでは削除される
可能性があります。
f95 は、デフォルトでは fpp(1) プリプロセッサを使用しま
す。C プリプロセッサ cpp(1) と同様に、fpp はソースコー
ドマクロを展開し、コードを条件付きでコンパイルすること
ができます。また cpp とは異なり、 fpp は Fortran 構文を
認識するので、Fortran プリプロセッサとしては fpp が優先
して使用されます。 -xpp=cpp フラグを指定すると、 fpp で
はなく cpp を使用するようにコンパイラに対して強制できま
す。 -xpp=cpp
-dalign
COMMON ブロックデータと標準数値シーケンス型を整列し、高
速な多重ワードのロード/ストア命令を生成します。
このフラグは、COMMON ブロック (および EQUIVALENCE クラ
ス) のデータレイアウトを変更し、コンパイラが更に高速な
多重ワードのロード/ストア命令を生成するのを可能にしま
す。
-dalign はマクロであり、SPARC プラットフォームの場合は
-xmemalign=8s -aligncommon=16 x86 プラットフォーム
の場合は -aligncommon=8 と同じです。
データレイアウトは -f フラグを使用した時と同じ結果とな
ります。つまり、COMMON ブロック内や EQUIVALENCE クラス
の倍精度および 4 倍精度のデータは「自然な」整列でメモ
リー内に配置されています。この整列は、8 バイト境界 (あ
るいは、 -xarch=v9、 v9a、または v9b で 64 ビット SPARC
プラットフォーム向けにコンパイルする場合、4 倍精度デー
タは 16 バイト境界) です。COMMON ブロックの整列のデフォ
ルトは、4 バイト境界です。.sp また、 -dalign と
-xtypemap=real:64,double:64,integer:64 を一緒に使用する
と、SPARC では 64 ビット整数変数は 8 バイトに境界整列さ
れます。
-dalign を使用すると、データの境界整列が FORTRAN の標準
に合わなくなることがあります。これは、EQUIVALENCE や
COMMON で使用される変数に問題となることがあります。すな
わち、速度と引き換えに移植性を失うことになります。
副プログラムおよびファイルを -dalign でコンパイルしたと
きは、同じプログラム単位内のすべての副プログラムまたは
ファイルを -dalign でコンパイルしてください。
-dalign は -aligncommon を起動するので、標準数値シーケ
ンス型の整列も影響を受けます。
-fast フラグは -dalign を選択します。
必要になることがあります。
-dbl_align_all[={yes|no}]
データを 8 バイト境界に整列させます。
yes が指定されると、すべての変数は 8 バイト境界に整列し
ます。デフォルトは、 -dbl_align_all=no です。
-dbl_align_all だけの指定は -dbl_align_all=yes と同じで
す。
-xarch=v9 、 v9a 、または v9b を指定して 64 ビット環境
のコンパイルを行うと、このフラグは 4 倍精度データを 16
バイト境界に整列させます。
このフラグは、COMMON ブロックまたはユーザー定義構造体内
のデータレイアウトは変更しません。
使用する場合は、すべてのルーチンをこのオプションでコン
パイルしなければなりません。
-depend[=yes|no]
(SPARC) データ依存関係と再構成についてループを解析しま
す。
-depend は -depend=yes と同じ意味で、依存解析を有効にし
ます。 -depend=no は DO ループのデータ依存解析を無効に
するもので、デフォルトです。
データ依存関係についてループを解析し、ループの再構成を
行います。 -depend データ依存関係の解析は、 -fast 、
-parallel 、および -autopar の一部として選択されます。
-depend は、最適化レベルが -O3 よりも低い場合、最適化レ
ベルを -O3 に引き上げます。また、最適化レベル -O3 以上
が指定されていれば、データ依存解析は自動的に有効になり
ます。
-dryrun
f95 ドライバが構築したコマンドを表示します。コンパイル
はしません。
このオプションは、コンパイラがコンパイル時に実行するコ
マンドを表示するため、デバッグに役立ちます。
-d{y|n}
実行可能ファイル全体を生成するときのライブラリのリンク
形式 (動的または静的) を指定します。
実行可能ファイル全体について、 動的リンクを行うかどうか
を y (動的リンク) または n (静的リンク) で指定します。
これはリンカーのオプションです。
デフォルトは -dy です。
-dy: 動的リンク (共有ライブラリを使用可能)
-dn: 静的リンク (共有ライブラリは使用不可)
-B[dynamic|static] とは異なり、このオプションは実行可能
ファイル全体に適用され、コマンド行で 1 度だけ使用しま
す。
-d[y|n] はリンカーのオプションです。このオプションを付
けてコンパイルとリンクを別々に行う場合は、リンクでも同
じオプションを指定する必要があります。
64 ビット環境では、システムライブラリの多くは、共有動的
ライブラリとしてのみ有効です。これらには libm.so および
libc.so (libm.a と libc.a は提供されていません) が含ま
れます。結果として、 -Bstatic および -dn は 64 ビット
Solaris OS 環境でリンクエラーを起こす可能性があります。
このような場合、アプリケーションが動的ライブラリとリン
クする必要があります。
-e 132 文字まで固定書式ソース行を拡張します。
コンパイラは (132 桁まで) 右側に空白を埋め込みます。 -e
でコンパイルするときに継続行を使用する場合、文字定数を
複数の行に分割しないでください。そうしなければ、定数の
間に不必要な空白が挿入される可能性があります。
-erroff[={%all|%none|taglist}]
タグ名で示される警告メッセージを抑止します。
taglist には、警告メッセージと共に表示されるコンマ区切
りのタグ名のリストを指定します。
%all のみ指定された場合はすべての警告が抑止されます (こ
れは、 -w オプションと同じです。
%none のみ指定された場合、警告は抑止されません。値を付
けずに -erroff とだけ指定するのは、 -erroff=%all と指定
したのと同じです。
-errtags も参照してください)。
-errtags[={yes|no}]
各警告メッセージと共にメッセージタグを表示します。
このオプションを付けると、コンパイラの内部エラータグ名
が表示されます。(-errtags=no と同じことです) 。値を指定
しない -errtags は、-errtags=yes と同じことを意味しま
す。
-errwarn[={%all|%none|taglist}]
警告メッセージをエラーと見なします。
taglist は、エラーと見なす警告メッセージのコンマ区切り
のタグ名リストです。 %all
のみ指定された場合は、すべての警告がエラーとみなされま
す。 %none
のみ指定された場合、警告はエラーと見なされません。
関連項目: -errtags
-explicitpar
(SPARC)
指令で明示的に示されたループを並列化します。
コンパイラは、並列に実行すると正確な結果が生成されない
ようなデータの依存が DO ループ中にある場合でも、並列
コードを生成します。明示的な並列化を行う場合は、ループ
を正しく解析してデータ依存の問題がないことを確認してか
ら、並列化の指令を使用してください。
このオプションは、Sun または Cray の明示的な並列化指令
を有効にします。このオプション付きでコンパイルすると、
並列化指令の直後にある DO ループから、スレッド化された
並列コードが生成されます。並列化はマルチプロセッサシス
テムの場合にのみ適しています。このオプションは、すでに
libthread ライブラリへの呼び出しによって独自にマルチス
レッド処理を行っているプログラムをコンパイルする場合に
は使用できません。
デフォルトでは、Sun 並列化指令は -explicitpar で有効に
なります。Cray 形式の指令を使う場合は -mp=cray を追加し
ます。たとえば次のように指定します。
-explicitpar -stackvar -mp=cray
注: OpenMP 並列化指令を有効にするには、-explicitpar で
はなく -openmp を使用します。
スレッド数: マルチスレッド環境で並列化プログラムを実行
するには、実行前に PARALLEL または OMP_NUM_THREADS 環境
変数を設定する必要があります。これらの環境変数は、プロ
グラムが作成できるスレッドの最大数を実行時システムに伝
えます。デフォルトは 1 です。一般的に、ターゲットプラッ
トフォーム上の PARALLEL または OMP_NUM_THREADS 変数に
は、利用可能なプロセッサ数を設定します。
-explicitpar を使用してコンパイルとリンクを同時に行う
と、マイクロタスキングライブラリとスレッド対応の
Fortran 実行時ライブラリが自動的にリンクされます。
-explicitpar を使用してコンパイルとリンクを別々に行うと
きは、リンク時にも必ず -explicitpar を使用してくださ
い。
-autopar の説明も参照してください。
-explicitpar などの並列化オプションを使用する場合にパ
フォーマンスを改善するには、 -stackvar オプションも指定
してください。メインスレッドスタックおよびスレーブス
レッドスタックのサイズを設定する方法については、
-stackvar オプションの説明を参照してください。
最適化レベルが -O3 よりも低い場合は、自動的に -O3 に設
定されます。
詳細は、『Fortran プログラミングガイド』の並列化に関す
る章を参照してください。
-ext_names=e
下線付きまたは下線なしの外部名を作成します。
e は、 plain か underscores でなければなりません。デ
フォルトは underscores です。
plain: 末尾に下線を追加しません。
underscores: 末尾に下線を追加します。
外部名は、サブルーチン、関数、ブロックデータ副プログラ
ム、または名前付き共通ブロックの名前です。このオプショ
ンは、ルーチン自体で使用されている名前だけでなく、呼び
出し側の文 (symdefs と symrefs の両方) で使用されている
名前にも作用します。
-F ソースファイルプリプロセッサを起動します。ただしコンパ
イルは行いません。
拡張子 .F90、 .F95、 .F03、および .F が付いたファイルに
fpp プリプロセッサを適用し、拡張子を .f90、 .f95、
.f03、または .f に変更したファイルにその結果を出力しま
す。ただし、コンパイルは行いません。
fpp は Fortran のデフォルトのプリプロセッサです。C のプ
リプロセッサ cpp は、 -xpp=cpp を指定すると選択されま
す。
-f COMMON ブロックにおいて、倍精度または 4 倍精度のデータ
を整列します。
このフラグは、COMMON ブロック (および、EQUIVALENCE クラ
ス) におけるデータのレイアウトを変更します。COMMON ブ
ロック (および、EQUIVALENCE クラス) における倍精度デー
タと 4 倍精度データはメモリー内で「自然」に、つまり、8
バイト境界 (あるいは、64 ビット境界で -xarch=v9、v9a、
または v9b を指定してコンパイルした場合は 16 バイト境界
) に整列されます。デフォルトでは、COMMON ブロックにおけ
るデータは 4 バイト境界に整列されます。
-f は -aligncommon=16 と同じ意味です。
これは、実数と複素数の両方のデータに適用されます。
ただし、結果のコードは標準のものと異なる可能性があり、
そのために移植できない場合があります。
1 つの副プログラムを -f でコンパイルした場合は、同じプ
ログラムのすべての副プログラムも -f でコンパイルしてく
ださい。
このオプションを単独で使用しても、コンパイラは倍精度と
4 倍精度のデータに対して高速のダブルワードの先読み/スト
ア命令を生成することはできません。これを実行させるには
-dalign を指定する必要があります。
-f77[=list]
Fortran 77 互換モードを選択します。
list はコンマで区切ったリストで、以下のキーワードで構成
されます。
%all すべての f77 互換機能を選択します。
%none f77 互換機能を無効にします。
output リスト指定出力や名前リスト出力を含む、f77 スタ
イルの書式付き出力を生成します。
input f77 で使用可能な入力書式を受け入れます。
tab tab 無制限のソース行長さを含む、f77 スタイルの
TAB 書式を有効にします。また 72 文字以下のソー
ス行に空白文字パディングを追加しません。
backslash
文字列内のエスケープシーケンスの始まりとして、
バックスラッシュ文字を受け入れます。
intrinsics
組み込みの認識を Fortran 77 組み込みに限定しま
す。
logical Fortran 77 が以下のように論理変数を使用できるよ
うにします。
- 論理変数への整数値の割り当てを許可します。
- .TRUE. を表す .NE.0 を使用して、条件文に論理
式の代わりに算術式を使用することを許可しま
す。
- 論理オペランドに関係演算子 .EQ. と .NE. の使
用を許可します。
subscript
非整数式を配列添字として使用可能にします。
misc Fortran 95 によりサポートされていないその他の
Fortran 77 拡張機能を使用可能にします。
すべてのキーワードに以下のように no% の接頭辞を付けるこ
とにより、対応する機能を無効にできます。
-f77=%all,no%backslash
-f77 が指定されない場合は、デフォルトで -f77=%none が指
定されます。-f77 がリストなしで使用されると、-f77=%all
を指定した場合と同じ結果になります。
例外のトラップ
-f77 を指定すると、Fortran 95 トラップモードが変更され
ません。これは -ftrap=common です。Fortran 95 と
Fortran 77 は、演算例外トラップの動作が異なります。
Fortran 77 の場合、これは、演算例外の発生後も実行を継続
できるようにするためでした。また、このためには、プログ
ラム終了時、プログラム呼び出しの ieee_retrospective
は、に発生した演算例外を報告できていました。
Fortran 77 の動作をまねたトラップに戻すには、-f77 の後
に -ftrap=%none を指定します。
FORTRAN 77 プログラムの Fortran への移行
-f77 とその互換機能の詳細については、 『Fortran ユー
ザーズガイド』の FORTRAN 77 互換に関する章を参照してく
ださい。また、不正な結果を出す可能性のある非標準
FORTRAN 77 プログラミングの処理については、-xalias フラ
グも参照してください。
f77 によるコンパイル
使い勝手を考え、Fortran 77 コンパイラスクリプトが用意さ
れています。 f77
コマンド行スクリプトは、Fortran 77 との互換性を維持す
るための一群の適切なオプションを付けて f95
を呼び出します。詳細は、f77(1) のマニュアルページを参
照してください。
-fast
実行パフォーマンスを最適化するオプションを選択します。
-fast は、ある種のアプリケーションのパフォーマンスを向
上させます。しかし、アプリケーションによっては、特定の
オプションが選択されることが適切ではない場合があるかも
しれません。アプリケーションのパフォーマンスを最大化す
るための最初の手順として -fast を使用してアプリケーショ
ンをコンパイルしてみてください。しかし、更に調整が必要
な場合があります。 -fast を指定してコンパイルしたプログ
ラムが正しく動作しない場合、 -fast を形成している個々の
オプションを調査して、プログラムを正しく動作させるオプ
ションだけを呼び出してください。
-fast でコンパイルされたプログラムが、あるデータセット
を使うと最適なパフォーマンスと正確な結果を出し、別の
データセットではそうならないという可能性もあります。浮
動小数点演算の特定のプロパティに依存しているプログラム
は、 -fast を指定してコンパイルしないでください。
-fast は次のオプションを選択します。
o -xtarget=native は、ハードウェアターゲットを設定しま
す。
コンパイルマシンとは異なるターゲットマシンでプログラ
ムを実行する場合は、 -fast の後に適切な -xtarget= オ
プションを指定してください。以下はその例です。
f95 -fast -xtarget=ultra ...
o -O5 は、レベル 5 の最適化を選択します。
o -libmil は、特定の数学ライブラリルーチンをインライン
化します。
o -fsimple=2 は、より広範囲の浮動小数点の最適化を行いま
す。このオプションは、厳密な IEEE 754 標準に準拠する
必要のあるプログラムには適合しないことがあります。
o -dalign は、より高速なダブルワードのロード/ストア命令
や、共通ブロック内の自然境界の倍精度と 4 倍精度データ
の配列を生成します。このオプションを使用すると、非標
準の Fortran データ配列が生成される場合があります。
o -xlibmopt は、最適化された数学ライブラリをリンクしま
す。
o -depend=yes は、DO ループをより最適化するための依存性
解析を選択します。
o -fns は、浮動小数点演算例外および段階的アンダーフロー
の処理を高速化します (ただし非標準)。
o -ftrap=common は、共通浮動小数点例外のトラップを選択
します ( f95 のデフォルト)。
o -pad=local は、ローカルパディングを選択してキャッシュ
の使用率を改善します。
o -xvector=yes は、ベクトル化数学ライブラリを選択しま
す。
o -xprefetch=yes は、プリフェッチをサポートするプラット
フォーム上でプリフェッチを自動生成できるようにしま
す。 (SPARC)
o -xprefetch_level=2 は、デフォルトのプリフェッチレベル
を設定します。 (SPARC)
o -nofstore は、式の精度を強制的に結果の精度に合わせる
のを取り消します。 (x86)
この構成要素オプションフラグの選択は、コンパイラのリ
リースごとに変更されることがあるので注意してください。
-fast により設定されるオプションの詳細については、
『Fortran ユーザーズガイド』を参照してください。
-fast オプションの次にその他のオプションを付けて、この
リストから加算したり、減算したりすることができます。例
えば、以下のようにすることができます。
f95 -fast -fsimple=1 -xnolibmopt
これは、 -fsimple=2 フラグを無効にし、 -fast により選ば
れた -xlibmopt が使用できなくなります。 -fast は
-dalign -fns -fsimple=2
オプションを選択してプログラムをコンパイルするので、浮
動小数点演算、データ配列、式評価の順序付けが規格外とな
ることがあります。この選択は、多くのプログラムで適切で
はない可能性があります。
また -fast
は -xlibmopt
および -xvector=yes を選択するため、 -fast を使用する
ときは、デフォルトの丸めモードの -fround=nearest が前提
とされ、必須です。
コンパイルとリンクを別々に行う場合は、 -fast でコンパイ
ルしたら、リンク時にも必ず -fast を指定してください。
-fixed
固定書式ソース入力であるとみなします。
Fortran のあらゆるソースファイルを Fortran 95 の固定書
式として解釈します。ファイルの接尾辞は無視します。
-flags
-help と同義です。
-fnonstd
浮動小数点ハードウェアを非標準の設定に初期化します。
このオプションは、
-fns -ftrap=common
の組み合わせのマクロで、浮動小数点ハードウェアを次のよ
うに初期化します。
o 例外時に停止します。
o 速度が上がる場合は、非正規化数の値をゼロにフラッシュ
します。
効率化のために、主プログラムはこのフラグを使用してコン
パイルしてください。
アンダーフローと非正規化数の処理については、 -fns を参
照してください。
このオプションを指定すると、浮動小数点例外 (オーバーフ
ロー、ゼロ除算、無効演算など) のトラップが有効になりま
す。トラップは、SIGFPE シグナルに変換され、プログラムに
SIGFPE のハンドラが登録されていない場合は、プログラムは
異常終了します。詳細は ieee_handler (3m)、ieee_funcions
(3m)、『数値計算ガイド』、および『Fortran ユーザーズガ
イド』を参照してください。
-fns[={yes|no}]
は、非標準の浮動小数点モードを選択します
デフォルトの -fns=no は、標準の浮動小数点モードを使用し
ます。
オプションの =yes または =no を使用すると、他のマクロフ
ラグ (-fns を含むもの) に続き -fns フラグを切り替えるこ
とができます (-fast など)。
-fns は -fns=yes と同義です。
-fns=yes は非標準の浮動小数点を選択します。
-fns=no は標準の浮動小数点を選択します。
-fast selects -fns.
SPARC プラットフォームの場合、非標準の浮動小数点モード
は「段階的アンダーフロー」を無効にします。つまり、小さ
な結果は、非正規化数にはならず、ゼロにフラッシュされま
す。また、非正規化数のオペランドは暗黙のうちにゼロに置
換えられます。
x86 プラットフォームの場合、このオプションは、Pentium
III と Pentium 4 プロセッサ (sse
または sse2) でのみ有効です。
警告: 非標準モードを有効にすると、浮動小数点演算は IEEE
754 標準の要求に準拠しない結果を生成する場合がありま
す。詳細は、『数値計算ガイド』と『Fortran ユーザーズガ
イド』を参照してください。
このオプションは、さらに、メインプログラムをコンパイル
するときに使用する場合だけに有効です。
-fpover[={yes|no}]
書式付き入力の浮動小数点オーバーフローを検出します。
-fpover=yes を指定すると、入出力ライブラリは、書式付き
入力の浮動小数点オーバーフローを検出し、エラー1031 を戻
します。デフォルトでは、このようなオーバーフローの検出
は行われません (-fpover=no)。-fpover は -fpover=yes 1.
と同義です。
-fpp 入力ファイルを強制的に fpp で前処理します。
ファイル拡張子にかかわらず、コマンド行に示されたすべて
の入力ソースファイルを fpp プリプロセッサに渡します (拡
張子 .F90、.F95、.F、F03 を持つファイルは自動的に fpp
によって前処理されます。-xpp も参照してください)。
-fprecision=p
(x86)
デフォルト以外の浮動小数点丸め精度モードを初期設定しま
す。
x86 の場合は、浮動小数点精度モードを single か double
、 extended のいずれかに設定します。
p
が single
か double の場合、このフラグは、プログラムの起動時に丸
め精度モードをそれぞれ単精度、倍精度に設定します。 p
が extended
または -fprecision
か、フラグがない場合、丸め精度モードは拡張精度モードに
初期設定されます。
このオプションは、x86 システムで主プログラムのコンパイ
ルで使用された場合にのみ有効です。
-free
自由形式のソース入力を想定します。
すべてのソースファイルを Fortran 95 の自由形式として解
釈します。このオプションを指定すると、ファイル接尾辞は
無視されます。
-fround=r
起動時に有効になる IEEE 丸めモードを選択します。
r には、
nearest 、 tozero 、 negative 、 positive のいず
れかを指定します。
デフォルトは、 -fround=nearest です。
r が tozero、 negative、または positive
のとき、このフラグを設定すると、プログラムが実行を開始
するときに、丸め方向モードがそれぞれ、「ゼロに向かって
丸める」、「負の無限に向かって丸める」、または「正の無
限に向かって丸める」に設定されます。r が nearest
のとき、あるいは -fround
フラグを使用しないとき、丸め方向モードは初期値から変更
されません (デフォルトでは最近似値に丸める)。
このオプションは、メインプログラムをコンパイルするとき
に使用する場合だけに有効です。
-fsimple[=n]
浮動小数点の最適化設定を選択します。
オプティマイザが浮動小数点演算に関する仮定を単純化でき
ます。
n を指定する場合、n は 0、1、または 2 でなければなりま
せん。
デフォルト:
-fsimple を指定しない場合、 f95 は -fsimple=0 を使用
します。
-fsimple だけを指定する場合、 f95 は -fsimple=1 を使
用します。
-fsimple=0
仮定の単純化を許可しません。厳密に IEEE 754 に準拠し
ます。
-fsimple=1
保守的な単純化を行います。作成されるコードは、厳密に
は IEEE 754 に準拠しません。しかし、ほとんどのプログ
ラムの数値結果は変わりません。
-fsimple=1 を指定すると、オプティマイザは次を仮定で
きます。
IEEE 754 のデフォルトの丸めモードとトラップモード
は、プロセス初期化後も変わりません。
潜在的な浮動小数点例外以外の外に現れない結果を生
成する計算は、削除される可能性があります。
オペランドに無限または NaN を持つ計算は、結果に
NaN を反映する必要はありません。たとえば、x*0 は
0 に置き換えられるかもしれません。
計算はゼロの符号には影響されません。
-fsimple=1 を指定した場合、オプティマイザは、切り捨
てや例外を完全に無視して最適化を行うことはできませ
ん。特に、浮動小数点の計算は、実行時に通常適用される
丸めモードによって結果が異なるものと置き換えることは
できません。
-fsimple=2
浮動小数点の最適化を積極的に行います。この場合、丸め
モードの変更により、多くのプログラムの数値結果が変わ
る可能性があります。
特に、Fortran の標準規則では、コンパイラの二次式の周
りに明示的な括弧が必要で、式の評価順序を制御します。
これは、 -fsimple=2 を使用すると破壊される可能性があ
ります。この結果、この規則に従うプログラムの数値の丸
め誤差が発生する可能性があります。
たとえば、 -fsimple=2, を指定すると、コンパイラが
C-(A-B) を (C-A)+B として評価することがあります。こ
れは、結果コードがより最適化されている場合、明示的な
括弧についての標準規則を破ります。コンパイラは、
z=1/y が一度算出され、一時ファイルに保存され、コスト
分割操作をなくす場合に、x*z を使用して x/y の反復演
算を置き換える場合もあります。
浮動小数点演算の特定のプロパティに依存するプログラム
は、 -fsimple=2 でコンパイルしてはいけません。
ただし、 -fsimple=2 を指定しても、本来浮動小数点例外
を生成しないプログラムには、オプティマイザは浮動小数
点例外を導入しません。
-fast は -fsimple=2 を設定します。
-fstore
(x86) 浮動小数点式の精度を強制的に設定します。
代入文の場合、このオプションはあらゆる浮動小数点式を強
制的に代入先の変数の精度にします。デフォルトは -fstore
です。ただし、 -fast
オプションには、このオプションを無効にする -nofstore
が含まれています。再びこのオプションを有効にするには、
-fast の後に -fstore
を続けてください。
-ftrap=t
浮動小数点のトラップモードを設定します。
起動時に浮動小数点のトラップモードを有効にします。
t には、1 つ以上の以下の項目をコンマで区切って指定しま
す。
%all, %none, common, [no%]invalid, [no%]overflow,
[no%]underflow, [no%]division, [no%]inexact.
f95 デフォルトは -ftrap=common です。% は省略できませ
ん。f77 のデフォルトは -ftrap=%none であることに注意し
てください。
このオプションは、起動時に IEEE 745 トラップモードを有
効にしますが、SIGFPE ハンドラを組み込みません。
ieee_handler(3M) か fex_set_handling(3M)
を使用して、トラップを有効にするのと同時に
SIGFPE ハンドラを組み込むことができます。複数の値が指
定された場合、そのリストは、左から右に処理されます。
例 : すべてのトラップを設定します ( inexact を除く)。
-ftrap=%all,no%inexact
以下の点を除いて、 ieee_flags() と同じ意味です。
o %all はすべてのトラップモードをオンにして、予期してい
る例外にも予期していない例外にもトラップを発生させま
す。代わりに common を使用してください。
o デフォルトの %none はすべてのトラップモードをオフにし
ます。
o 先頭に付いている no% はそのトラップモードをオフにしま
す。
有効にするためには、メインプログラムをコンパイルすると
きに、このオプションを使用しなければなりません。
-G 動的共有ライブラリを構築します。
動的共有ライブラリを作成するようにリンカーに指示しま
す。 -G を指定しないと、リンカーは実行ファイルを構築し
ます。 -G を指定すると、動的ライブラリを構築します (実
行ファイルではありません)。 -G を指定して -o を使用し、
書き出すファイル名を指定してください。
-g デバッグとパフォーマンス解析ができるようコンパイルしま
す。
dbx(1) または Sun Studio デバッガを使用してデバッグでき
るよう、また Sun Studio パフォーマンスアナライザ
analyzer(1) を使用して解析できるように追加のシンボル
テーブル情報を生成します。
-g を指定しなくても、デバッグできることもありますが、
dbx のすべての機能は、 -g でコンパイルされたオブジェク
トのみで有効です。
注: 以前のリリースでは、 -g
オプションは、コンパイラのリンク専用の呼び出しで、 ld
ではなく、 ild
をデフォルトにしていました。このリリースでは、この動作
は変更され、 ild
は、 -xildon
が明示的に指定されているコンパイラのリンク専用の呼び出
しでのみ使用されます。詳細については ild(1) のマニュア
ルページを参照してください。
Sun Studio パフォーマンスアナライザのすべての機能を使用
するには、 -g でコンパイルしてください。パフォーマンス
解析の機能には、 -g を必要としないものありますが、注釈
付きのソース、機能レベル情報、コンパイラコメントメッ
セージを表示するには、 -g でコンパイルする必要がありま
す( analyzer(1) マニュアルページを参照)。
-g で生成されたコメントメッセージは、プログラムをコンパ
イルする際にコンパイラが生成する最適化と変換について記
述します。コメントメッセージを表示するには、
er_src(1)、 er_print(1)、またはパフォーマンスアナライザ
analyzer(1) を使用する必要があります。
コメントメッセージは、コンパイラが実際に最適化を実行す
る場合にのみ表示されることに注意してください。 -xO4、ま
たは -fast のような高度な最適化レベルを要求した場合に、
コメントメッセージが必要になります。
-h nm
生成される共有動的ライブラリの名前を指定します。
ライブラリに "内部名" がある場合は、実行可能ファイルの
実行中にリンカーは同じ "内部名" を持つライブラリを検索
パスの中から探します。"内部名" を持っていない場合、リン
カーは同じパスからライブラリを検索します。したがって、
内部名を使用すると実行時の柔軟性が高まります。
注意 :
o -h と nm の間に空白は入れても入れなくてもかまいませ
ん。
o -G オプションを指定しないと、 -hnm は何も実行しませ
ん。
o -hnm はリンカーオプションです。
o -h と -o の後には通常、同じ名前を指定します。
o -hnm は、動的共有ライブラリのバージョンを管理する目的
でも使用できます。
詳細は、『リンカーとライブラリ』を参照してください。
-help
f95 コマンド行オプションのリストを表示します。
-xhelp も参照してください。
-Ipath
インクルードファイル検索パスに path を追加します。
インクルードファイル検索パスの最初にディレクトリパス
path を挿入します。 -I と path の間に空白は入れないでく
ださい。
インクルードファイル検索パスは、インクルードファイルが
検索されるディレクトリのリストです。この検索パスは、次
によって使用されます。
o プリプロセッサ指令 #include
o f95 の INCLUDE 文
例: /usr/applib でインクルードファイルを検索するには、
次のようにします。
f95 -I/usr/applib growth.F
プリプロセッサを呼び出すためには、 .F .F90 .F95 .F03
接尾辞を付けてソースファイルをコンパイルする必要があり
ます。
-Ipath 検索パスは、INCLUDE 文では、絶対パス名ではなく相
対パス名の検索に使用されます。相対パス名の検索順序は次
のとおりです。
1. ソースファイルが入っているディレクトリ
2. -I オプションで指定したディレクトリ
3. コンパイラのデフォルトリストに入っているディレクト
リ
4. /usr/include
-inline={%auto|[%no]function|...}
指定したユーザー作成のルーチンのインライン化を要求しま
す。
コンマ区切りの関数とサブルーチンのリストで指定されてい
るユーザー作成のルーチンをインライン化することによって
最適化します。
引数リストには、最適化レベルが -O4
以上の場合の自動的なインライン化を有効にする文字列
%auto
が含まれています。通常、 -inline をコマンド行に指定し
て明示的にインライン化する場合は、自動インライン化は無
効です。
リストにおいてルーチンの名前の前に no% を付けると、その
ルーチンのインライン化が禁止されます。
たとえば、自動インライン化を有効にするが、特定のルーチ
ン (gflub) のインライン化だけを無効にする場合、次のよう
に指定します。
-O5 -inline=%auto,no%gflub
リストが空の場合、自動的インライン化は無効になります
-fast -inline= sourcefile.f95
この -fast は、自動インライン化を有効にする -O5 を意味
します。これに対し、リストが空の -inline= は自動インラ
イン化を無効にします。
コンパイルされるファイル内のルーチンだけがインライン化
の対象となります。オプティマイザは、どのルーチンがイン
ライン化に適しているかを判断します。
次のいずれかの状態が適用される場合、ルーチンはインライ
ン化されません。このとき、警告は発行されません。
o 最適化レベルが -O3 より低い。
o ルーチンが見つからない。
o ルーチンのインライン化に効果がないか、安全でない。
o -xipo または -xcrossfile を指定しないと、コンパイルさ
れるファイル内にソースが存在しない。
-iorounding[={compatible | processor-defined}]
書式付き入力/出力用の丸めモードを設定します。
すべての書式付き入力/出力に広域的に ROUND= 指示子を設定
します。
-iorounding=compatible を使用すると、データ変換結果の値
は、2つの最近似表現の近い方の値となるか、2 つの表現の中
間値である場合はゼロから離れた方の値となります。
-iorounding=processor-defined を使用すると、丸めモード
はプロセッサのデフォルトモードになります。これは、 -
iorounding が指定されない場合のデフォルトです。
引数なしで -iorounding
を指定するのは、 -iorounding=compatible
と同等になります。
-Kpic
-pic と同義です。
-KPIC
-PIC と同義です。
-Ldir
ライブラリ検索ディレクトリパスのリストに path を追加し
ます。
path は検索リストの先頭に追加されます。 -L と path の間
の空白文字はあってもなくてもかまいません。
注意:
-Lpath オプションを使って /usr/lib や /usr/ccs/lib を指
定しないでください。これらのディレクトリはデフォルトで
検索されます。また、ここで指定すると、バンドルされてい
ない libm を使用できなくなります。
-lx ライブラリ libx.a をリンカーの検索ライブラリリストに追
加します。
ローダーに対し、オブジェクトライブラリ libx.a ( x は文
字列) をリンクするように指示します。詳細は、 ld(1) を参
照してください。
例 : -lsumex とすると、ライブラリ libsumex.a をリンク
します。
コマンド行における順序: -lx オプションは、 .f 、 .F ま
たは .o ファイルの後に指定してください。 libx の関数を
呼び出すときにそれらの関数が liby の関数を参照している
場合、 -lx は -ly の前に置いてください。
-lx に含まれるファイル検索の順序 :
リンカーは、複数の場所でライブラリを検索します。詳細に
ついては、『Fortran プログラミングガイド』のライブラリ
に関する章を参照してください。詳細は、 ld(1) を参照して
ください。
-libmil
選択した libm 数学ライブラリルーチンをインライン化し、
最適化します。
いくつかの単純なライブラリルーチンはコンパイラによりイ
ンライン化できます。このオプションは、現在使用している
浮動小数点オプションとプラットフォームに従い、ライブラ
リ呼び出しをインライン化します。
-loopinfo
(SPARC)
どのループが並列化されるかを表示します。
どのループが並列化され、どのループが並列化されないかを
表示します。このオプションは通常 -autopar や
-explicitpar オプションと併用します。このオプションは標
準エラーのメッセージのリストを生成します。
-Mpath
MODULE ディレクトリ、アーカイブ、またはファイルを指定し
ます。
現在のコンパイルで参照されている Fortran 95 モジュール
のパスを検索します。このパスが、現在のディレクトリに加
えて検索されます。
パスは、ディレクトリ、事前コンパイルされたモジュール
ファイルの .a アーカイブファイル、事前コンパイルされた
.mod モジュールファイルのいずれかです。コンパイラは、そ
の内容を調べてファイルの型を決定します。
モジュールが検索される .a アーカイブファイルは、-M オプ
ションフラグに明示的に指定する必要があります。コンパイ
ラは、デフォルトではアーカイブファイルの検索は行いませ
ん。
USE 文に使用される MODULE 名と同じ名前を持つ .mod ファ
イルのみが検索されます。たとえば、USE ME 文は、コンパイ
ラにモジュールファイル me.mod のみを検索させます。
モジュールを検索する場合、コンパイラはモジュールファイ
ルが書き込まれるディレクトリを優先します。この優先権
は、-moddir フラグまたは MODDIR 環境変数によって制御さ
れます。そのいずれも指定されない場合は、デフォルトの書
き込みディレクトリが現在のディレクトリとなります。両方
指定すると、書き込みディレクトリが -moddir フラグにより
指定されたパスとなります。
つまり、-M フラグだけが指定される場合、-M フラグにリス
トされるオブジェクトの前に、まず現在のディレクトリでモ
ジュールの検索が行われます。前リリースの動作をエミュ
レートするには、以下のコマンドを使用します。
-moddir=empty-dir -Mdir -M
empty-dir は、空ディレクトリへのパスです。
-M とパスの間には空白はありません。以下に例を挙げます。
-M/home/siri/PK15/Modules
-moddir=path
コンパイラが .mod MODULE ファイルを書き込むディレクトリ
へのパスを検索します。パスは、MODDIR 環境変数を使用して
指定することもできます。両方指定される場合、このオプ
ションフラグが優先されます。
デフォルトの .mod ファイル書き込み用ディレクトリは、現
在のディレクトリです。
-mp=[%none|sun|cray]
Sun または Cray の並列化指令用のスタイルを指定します。
(SPARC)
-explicitpar または -parallel を指定しない場合、デフォ
ルトは -mp=%none です。-explicitpar か -parallel を指定
する場合、デフォルトは -mp=sun となります。
-mp=sun: Sun スタイルの MP 指令だけを受け入れます。
-mp=cray: Cray スタイルの MP 指令だけを受け入れます。
-mp=%none: すべての並列化指令を無視します。
Sun スタイルの並列化指令は、 C$PAR または !$PAR で始ま
ります。Cray スタイルの並列化指令は、 CMIC$ または
!MIC$ で始まります。どちらのスタイルも、大文字または小
文字で指定できます。
同じコンパイル単位で Sun スタイル指令と Cray スタイル指
令の両方を有効にすることはできません。
並列化を有効にするためには、-explicitpar または
-parallel も指定しなければなりません。さらに -stackvar
も指定する必要があります。次に例を示します。
-explicitpar -stackvar -mp=cray
OpenMP の並列化指令に合わせてコンパイルする場合、 -
openmp フラグを使用してください。
-mt MT-safe (マルチスレッド環境で使用しても安全な) ライブラ
リを使用します。 (SPARC)
マルチスレッドのコードを書くときに独自のマルチスレッド
コーディングを行う場合( -autopar 、 -explicitpar または
-parallel のいずれのオプションも使用しない場合) は、コ
ンパイル時とリンク時に -mt オプションを使用する必要があ
ります。並列化処理のためのオプションを指定した場合は、
-mt が自動的に使用されます。
シングルプロセッサシステムでは、このオプションで生成さ
れるコードの実行速度は遅くなります。
-native
使用中のマシンに合わせた最適化を行います。
-native オプションは、 -xtarget=native オプションと同義
です。
-noautopar
コマンド行の -autopar を取り消します。 (SPARC)
コマンド行の -autopar で呼び出されるループの自動並列化
を取り消します。
-nodepend
コマンド行の -depend を取り消します。 (SPARC)
コマンド行の前で指定した -depend オプションで呼び出され
る依存関係解析を取り消します。
-noexplicitpar
-explicitpar を取り消します。 (SPARC)
コマンド行の前で指定した -explicitpar で呼び出される明
示的なループの並列化を取り消します。
-nofstore
(x86) Cancel -fstore on command line
Cancels forcing expressions to have the precision of
the destination variable invoked by -fstore.
-nofstore is invoked by -fast. -fstore is the usual
default.
-nolib
システムライブラリとリンクしません。
任意のシステムライブラリまたは言語ライブラリとは自動的
にリンクしません。つまり、デフォルトの -lx オプションを
ld に渡しません。デフォルトでは、システムライブラリや言
語ライブラリはコマンド行で指定されなくても、実行可能
ファイルにリンクされます。
最終的に実行するときには、これらのライブラリが必要にな
ります。これらのライブラリと手作業でリンクするのは、
ユーザーの責任です。このオプションを指定すると、すべて
の制御がユーザーの手にゆだねられますが、同時に、すべて
の責任もユーザーにかかってきます。
-nolib オプションにより、これらのライブラリを静的にリン
クすることが容易になります。
-nolibmil
コマンド行の -libmil を取り消します。
libm 数学ルーチンのインライン化を無効にするには、 -fast
と併用します。
demo% f95 -fast -nolibmil ...
-noreduction
コマンド行の -reduction を取り消します。 (SPARC)
-reduction は並列化オプションと併用します。このオプショ
ンは、コマンド行の前で指定した -reduction を取り消しま
す。並列化オプションを使用するには、Forte for HPC ライ
センスが必要です。
-norunpath
実行時ライブラリ検索パスを実行可能ファイルに構築しませ
ん。
通常、実行可能ファイルが共有ファイルを使用している場
合、コンパイラは実行時リンカーに知らせるために、その共
有ライブラリの検索パスを実行可能ファイルに組み込みま
す。このパスは、コンパイラがインストールされているディ
レクトリに依存します。 -norunpath オプションを指定する
と、実行時パスは実行可能ファイルに組み込まれません。
このオプションは、ライブラリを標準以外の場所にインス
トールしていて、実行可能ファイルが別のサイトで実行され
るとき、ローダーがこれらのパスの下を検索しないようにす
る場合に便利です。 -R と比較してください。
-O[n]
最適化レベル (n) を指定します。
-O[n] を指定しない場合、本当に基本的なレベルの最適化 (
局所的な共通部分式の削除とデッドコードの解析) だけが実
行されます。最適化レベルを指定してコンパイルしたとき、
パフォーマンスが飛躍的に上がるプログラムもあります。
-On の各レベルには、それよりも低いレベルでの最適化が含
まれています。一般に、最適化レベルが高いと、実行時のパ
フォーマンスも向上します。ただし、最適化レベルを高くす
ると、コンパイル時間が長くなり、実行可能ファイルのサイ
ズが大きくなります。
-On と組み合わせて使用できる最適化レベルは 5 つありま
す。コンパイラが各レベルで実際に行う最適化の内容は、コ
ンパイラのリリースによって異なります。ほとんどのプログ
ラムでは、 -O ( -O3 を暗黙指定する) または -fast ( -O5
を暗黙指定する) を使用することを推奨します。
-g オプションは、最適化オプションと組み合わせて使用でき
ます。
メモリーが不足した場合、オプティマイザはもう一度より低
いレベルの最適化で処理しようとし、その後のルーチンのコ
ンパイルを元のレベルで再開します。
最適化についての詳細は、『Fortran プログラミングガイ
ド』の「パフォーマンスプロファイリング」の章と「パ
フォーマンスと最適化」の章を参照してください。
-O ほとんどの現実的なアプリケーションで最高に近いパ
フォーマンスが得られるようなレベルで最適化を行いま
す (現在は -O3 レベルで最適化されます)。
-O1 基本的で局所的な (ピープホール) 最適化のみを行ない
ます
-O2 基本的な局所的最適化と大域的最適化を行います。通
常、このレベルでは、コードのサイズが最小になりま
す。
-O3 関数レベルの大域的な最適化を追加します。通常、
-O3 または -O4 レベルで行う場合、-xspace オプショ
ンと組み合わせるとコードのサイズが最小になります。
自動的に -depend によるデータ依存解析が有効になり
ます。
-O4 同じファイルの関数の自動インライン化を追加します。
-g は自動インライン化を抑制します。通常、 -O4 で
は、 -xspace と組み合わせない限り、コードのサイズ
がさらに大きくなります。
インライン化されるルーチンの制御については、
-inline を参照してください。
-O5 最高レベルの最適化を行います。このレベルは、プログ
ラムの中でも、その実行にコンピュータ時間の大部分を
要する、ごく少量のコードに対してのみ使用します。よ
り長いコンパイル時間を要する最適化アルゴリズム、ま
たは実行時間が確実に改善されるかが不明な最適化アル
ゴリズムを使用します。このレベルでより確実にパ
フォーマンスを向上させるには、プロファイルのフィー
ドバックを使用してください。 -xprofile=collect|use
の項を参照してください。
相互の関連性:
-g を使用していて、最適化レベルが -O3 以下の場合、
コンパイラは、ほぼ完全な最適化によって最大限のシン
ボル情報を提供します。末尾呼び出しの最適化とバック
エンドのインライン化は無効です。
詳細については『 dbx コマンドによるデバッグ』を参
照してください。
-xcrossfile オプションは、 -O4 または -O5 といっ
しょに使用した場合にのみ有効です。
関連項目:
-fast 、 -xprofile=p 、 csh(1) マニュアルページ
『プログラムのパフォーマンス解析』では、最適化の各
レベルがアナライザのデータに及ぼす影響について説明
しています。
-o nm
実行可能ファイルの名前を指定します。
-o と nm の間には空白が必要です。このオプションを指定し
ない場合、デフォルトでは、実行可能ファイルは a.out に書
き込まれます。 -c と併用したとき、 -o はターゲットの .o
オブジェクトファイルを指定します。また、 -G と併用した
とき、 -o はターゲットの .so ライブラリファイルを指定し
ます。
-onetrip
DO ループを1回実行します。
DO ループに到達したときに、そのループが少なくとも 1 回
は実行されるようにコンパイルします。
Fortran 95 の DO ループは、上限が下限よりも小さいときに
は 1 度も実行されません。この動作は、従来のFortran にお
ける DO ループの動作とは異なります。
-openmp[=a]
Fortran 95 OpenMP バージョン 2.0 指令で明示的な並列化を
有効にします。
このフラグは以下のサブオプションキーワードを受け付けま
す。
parallel
OpenMP プラグマの認識を有効にします。
-xopenmp=parallel の最低の最適化レベルは -O3 で
す。コンパイラは必要であればこれより低い最適化レベ
ルを -O3 に上げて、警告を出します。
noopt
OpenMP プラグマの認識を有効にします。最適化レベル
が -O3 より低くても、コンパイラはレベルを上げませ
ん。
明示的に最適化レベルが
-O2 -openmp=noopt
のように -O3 よりも低く設定されている場合、コンパ
イラはエラーとします。-openmp=noopt に最適化レベル
を指定しなければ、OpenMP プラグマが認識されてその
ように並列化されますが、最適化は行なわれません。
stubs
OpenMP プラグマの認識を無効にし、スタブライブラリ
ルーチンにリンクし、かつ、最適化レベルの変更を行な
いません。アプリケーションで明示的に OpenMP 実行時
ライブラリルーチンが呼び出されていて、それを順次実
行するようコンパイルする場合には、このオプションを
使います。
none OpenMP プラグマの認識を無効にし、最適化レベルを変
更しません (デフォルト)。
サブオプションキーワードを付けずに -openmp を指定した場
合、 -openmp=parallel と同じ意味になります。このデフォ
ルトは将来のリリースで変更になるかもしれません。
サブオプション parallel、 noopt、 stubs は _OPENMP プロ
プロセッサのトークンを 200011 と定義します。
サブオプション parallel と noopt は自動的に -stackvar
を起動します。
OpenMP プログラムを dbx を使ってデバッグする場合は、
-g -openmp=noopt
を使用し、並列領域内で停止して変数の中身を表示できるよ
うにします。
マルチスレッド環境で並列化プログラムを実行するには、実行前
に PARALLEL または OMP_NUM_THREADS 環境変数を設定する必要
があります。これらの環境変数は、プログラムが作成できるス
レッドの最大数を実行時システムに伝えます。デフォルトは 1
です。一般的に、ターゲットプラットフォーム上の PARALLEL ま
たは OMP_NUM_THREADS 変数には、利用可能なプロセッサ数を設
定します。
コンパイルとリンクを別々のステップで実行する場合は、リンク
のステップでも -openmp を指定します。このことはとくに動的
ライブラリ (.so) をコンパイルする際に重要です。OpenMP 指令
を含むライブラリをコンパイルするときには、そのライブラリを
参照するプログラムのコンパイルに使用したのと同じリリースの
コンパイラを使用しなければなりません。
Fortran 95 OpenMP 指令については、『 OpenMP API ユーザーズ
ガイド』を参照してください。
-p (旧式)
prof を使ったプロファイリング用にコンパイルします。
prof(1) を使ったプロファイリングのためのオブジェクト
ファイルを準備します。手続きごとのプロファイルを作成
し、各手続きの呼び出しの数と、各手続きによって使用され
た時間の割合を示します。
コンパイルとリンクを別々に行う場合、 -p でコンパイルし
たら、リンク時にも必ず -p を使用してください。
-pad[=p]
キャッシュを有効に使用するために、パディングを挿入しま
す。
このオプションは、配列または文字列が次の状態である場合
に、配列または文字列の間にパディングを挿入します。
o 静的、局所的で、初期化されていない。または
o 共通ブロック内にある
上記どちらの場合でも、配列または文字列は等値にはなりま
せん。
=p を指定する場合、次の 1 つでなければなりません (空白
なし)。
%none: パディングは行なわれません。
local: 局所変数にパディングを挿入します。
common: 共通ブロック内にある変数にパディングを挿入し
ます。
local,common: 局所変数と共通ブロック内の変数の両方に
パディングを挿入します。 local
および common
の順序は任意です。
デフォルト:
コンパイラのデフォルトは、パディングなしです。
値なしで -pad を指定すると、 -pad=local,common と同等
です。
プログラムは、次の制限事項に従っている必要がありま
す。
o -pad=common を共通ブロックを参照するファイルに指定
する場合、その共通ブロックを参照する他のすべての
ファイルにも -pad=common を指定しなければなりませ
ん。
o -pad=common を指定した場合、異なるプログラム単位間
の同じ共通ブロック内の変数のレイアウトは、変数名以
外は同じである必要があります。
o パディングは -xcache の設定に依存しています。コン
パイラが配列間に挿入するパディングは、データの仮定
レイアウトと衝突し、予想外の方法で配列参照が失敗し
ます。
o プログラムが共通ブロックの配列をオーバーインデック
スする場合、 -pad=common を指定しないでください。
コンパイラが配列間に挿入するパディングは、データの
仮定レイアウトと衝突し、予想外の方法で配列参照が失
敗します。
o -pad=common を指定してコンパイルした場合、共通ブ
ロック変数を持つ EQUIVALENCE 宣言があると「
EQUIVALENCE 宣言によってパディングが禁止されまし
た」という内容のエラーメッセージが出力されます。こ
の場合、配列にパディングは挿入されません。
プログラマは、 -pad
が使用されたときに、共通ブロックのコンパイルの一貫性が
維持されるようにする必要があります。異なるプログラムユ
ニットの共通ブロックを -pad=common
を付けてコンパイルしたとき、その一貫性が維持されない場
合は、エラーになります。 -Xlist を付けたコンパイルで
は、同じ名前の共通ブロックの長さがプログラムユニットの
間で異なる場合に、そのことが報告されます。
-parallel
(SPARC) 自動並列化機能と明示的な並列化機能の組み合わせ
を有効にします。
このオプションはマクロであり、次のオプションを組み合わ
せたものです。
-autopar -explicitpar -depend
コンパイラが自動的に選択したループと、ユーザーが明示的
に指令で指定したループを並列化します。最適化レベルが
-O3 よりも低い場合、最適化レベルは自動的に -O3 まで引き
上げられます。sp パフォーマンスを上げるために、並列化オ
プション ( -autopar も含む) を使用するときには、
-stackvar オプションも指定します。メインスレッドスタッ
クおよびスレーブスレッドスタックのサイズを設定する方法
については、 -stackvar オプションの説明を参照してくださ
い。
デフォルトでは、Sun 形式の並列化指令が有効になっていま
す。Cray 形式の指令を使うには、-mp=cray を追加してくだ
さい。たとえば次のように指定します。
-parallel -stackvar -mp=cray
注: OpenMP 並列化には、 -parallel ではなく -openmp オプ
ションフラグを使用してください。
独自のスレッド管理を行う場合は、 -parallel は使用しない
でください。 -mt を参照してください。
-parallel などの並列化オプションの目的は、マルチプロ
セッサシステムで動作する実行可能プログラムを生成するこ
とです。シングルプロセッサシステムでは、一般的に、並列
化はパフォーマンスを低下させます。
コンパイルとリンクを別の段階で行う場合、 -parallel をコ
ンパイルコマンドに指定した場合は、リンクコマンドにも指
定しなければなりません。
-autopar の説明も参照してください。
詳細は、『Fortran プログラミングガイド』の並列化に関す
る章を参照してください。
スレッド数: マルチスレッド環境で並列化プログラムを実行
するには、実行前に PARALLEL または OMP_NUM_THREADS 環境
変数を設定する必要があります。これらの環境変数は、プロ
グラムが作成できるスレッドの最大数を実行時システムに伝
えます。デフォルトは 1 です。一般的に、ターゲットプラッ
トフォーム上の PARALLEL または OMP_NUM_THREADS 変数に
は、利用可能なプロセッサ数を設定します。
-pg gprof を使ったプロファイリング用にコンパイルします。
gprof(1) によるプロファイリングのためのオブジェクトファ
イルを準備します。手続きごとのプロファイルを作成し、各
手続きの呼び出しの数と、各手続きによって使用された時間
の割合を示します。
計数を行うコードの作成方法は -p オプションの場合と同じ
ですが、このオプションでは、より広範囲の統計情報を保持
し、正常終了時にファイル gmon.out を作成する実行時記録
メカニズムが呼び出されます。その後、 gprof(1) を使って
実行プロファイルを生成することができます。
コンパイルとリンクを別々に行う場合、 -pg でコンパイルし
たら、リンク時にも必ず -pg を使用してください。
-pic 共有ライブラリ用に位置独立コードをコンパイルします。
-xcode=pic13 と同義です。
-PIC -pic と似ていますが、32 ビットアドレスを使用します。
-xcode=pic32 と同義です。
-Qoption pr ls
オプションリスト ls をコンパイル段階 pr に渡します。
このオプションは、主に、カスタマサービスにより使用され
ます。
-qp -p と同じ意味です。
-R list
ライブラリ検索パスを実行可能ファイルに構築します。
このオプションを使用すると、リンカー ld(1) は、ライブラ
リ検索パスのリストを実行可能ファイルに追加します。
list はコロンで区切ったディレクトリのリストで、ライブラ
リ検索パスを実行時リンカーに指定するために使用されま
す。このリストは、f95 がリンカーに渡すデフォルトリスト
に追加されます。
-R と list の間の空白はオプションです。
このオプションの複数のインスタンスは 1 つに連結され、そ
れぞれのリストはコロンで区切られます。
このオプションを使用するのは、ユーザーの動的ライブラリ
へのパスを特別にオプション指定せずに実行できる実行可能
ファイルをエクスポートする場合です。
このオプションで実行可能ファイルを構築すると、デフォル
トのパス (常に最後に検索される) にパスが追加されます。
/opt/SUNWspro/lib
-r8const
単精度の定数を REAL*8 定数に拡張します。
単精度の定数表現はすべて REAL*8 に拡張されます。倍精度
の定数 (REAL*8) は拡張されません。
このフラグは定数にだけ適用されます。定数と変数の両方を
拡張するには、-xtypemap を使用してください。
このフラグの使用には注意が必要です。実際の引数として
REAL*4 定数表現を使用して、REAL*4 の値を期待するルーチ
ンを呼び出すと、インタフェース障害が発生することがあり
ます。また、入出力リストに REAL*4 定数表現を含む書き込
み文で書かれた書式なしデータファイルを読み取るプログラ
ムに問題が起こることもあります。
-reduction
(SPARC) ループ内の縮約演算を並列化します。
縮約の自動並列化についてループを解析します。縮約ループ
の並列化処理を可能にするには、 -reduction と -autopar
を両方指定してください。
例: demo% f95 -autopar -reduction any.f
配列の要素を単一のスカラー値に変換するループのことを縮
約演算と呼びます。たとえば、ベクトルの要素を合計するな
どは典型的な縮約演算です。このような演算は並列化の規準
に違反しますが、-reduction を指定すると、コンパイラはこ
のような演算を特別なケースとして認識および並列化できま
す。 f95 が認識する縮約演算については、『Fortran プログ
ラミングガイド』の並列化に関する章を参照してください。
-autopar を指定せずに -reduction を指定する場合、コンパ
イラは警告を発行します。
シングルプロセッサシステムでは、生成されるコードの実行
速度は遅くなります。
縮約には、丸めのエラーが起こる可能性が常にあります。
-S コンパイルし、アセンブリコードを生成するだけです。
指定されたプログラムをコンパイルし、拡張子 .s を付けた
ファイルにアセンブリ言語出力を保存します ( .o ファイル
は作成しません)。
-s 実行可能ファイルからシンボルテーブルを削除します。
このオプションは、実行可能ファイルを小さくし、逆アセン
ブルを困難にします。しかし、デバッグが不可能になりま
す。
-sb Sun WorkShop ソースブラウザ用のテーブル情報を生成しま
す。
ソースブラウザについては、 sbquery(1) と sbtags(1) を参
照してください。
注意: -sb は、コンパイラが fpp または cpp プリプロセッ
サを介して自動的に渡すソースファイルには使用できませ
ん。たとえば、拡張子が .F、 .F90、 .F95、 .F03 のいずれ
かであるソースファイル、または -F オプションを使用した
場合がこれに該当します。
-sbfast
-sb に似ていますが、 -sb より高速です。
ソースブラウザのテーブル情報を生成するだけであり、オブ
ジェクトファイルのアセンブル、リンク、作成は行いません
( -sb およびソースコードプリプロセッサとの併用に関する
注意事項も参照してください)。
-silent
コンパイラメッセージを抑止します。
通常、 f95 はコンパイル中にエラー診断以外のメッセージを
出力しません。このオプションは、古いスクリプトと
Makefile との互換性のためにのみ提供されています。デフォ
ルトは -silent
で、その使用は冗長です。
-stackvar
すべての局所変数を強制的にスタックに割り当てます。
特に指定していないかぎり、ルーチン中のすべての局所変数
と局所配列をメモリースタックに割り当てます。このオプ
ションにより、これらの変数は、静的ではなく、自動になり
ます。そして、サブプログラムを呼び出してループを並列化
するときにオプティマイザの自由度が高くなります。
サブプログラム呼び出しを含む明示的に並列化されたループ
に対しては、 -stackvar の使用は必須で、すべての並列化オ
プションに使用することを推奨します。 -stackvar
を使用すべきケースと使用すべきでないケースについては、
『Fortran プログラミングガイド』の「並列化」の章を参照
してください。
次の場合にあてはまらないかぎり、変数と配列は局所的にな
ります。
o SUBROUTINE 文または FUNCTION 文中の引数
(すでにスタックに割り当てられている)
o COMMON 文、SAVE 文、または STATIC 文中の大域的な項
目
o 型宣言文または DATA 文中の初期化された項目
(たとえば、 REAL X/8.0/ や DATA X/8.0/ など)
-stackvar で大きな配列をスタックに置くと、スタックが
オーバーフローし、セグメント例外が発生することがありま
す。スタックのサイズを増やす必要があります。
プログラムを実行する初期スレッドはメインスタックを持っ
ており、マルチスレッド化プログラムの各補助スレッドは独
自のスレッドスタックを持っています。
メインスタックのデフォルトのサイズは、約 8 メガバイトで
す。デフォルトのヘルパースレッドスタックサイズは、SPARC
V8 プラットフォームで 4 メガバイト、SPARC V9 プラット
フォームで 8 メガバイトです。
limit コマンド (パラメータなし) は、現在のメインスタッ
クのサイズを表示します。
limit シェルコマンドを使用して、メインスレッドスタック
のサイズ (K バイト単位) を設定できます。たとえば、次の
コマンドでメインスタックのサイズを 64 メガバイトに設定
できます。
% limit stacksize 65536
STACKSIZE 環境変数に値 (K バイト単位) を指定すると、各
スレーブスレッドが使用するスタックサイズを設定できま
す。
次のコマンドで、各スレーブスレッドのスタックサイズを 8M
バイトに設定できます。
% setenv STACKSIZE 8192
詳細は 『Fortran プログラミングガイド』の並列化に関する
章を参照してください。
関連項目 -xcheck=stkovf
スタックオーバーフローに関する実行時検査を有効にします
-stop_status[={yes|no}]
STOP 文により整数のステータス値を戻すことを許可します。
オプション引数は yes または no のどちらかです。デフォル
トは yes です。
-stop_status=yes を指定すると、STOP 文には、プログラム
の終了時に環境に渡される整数定数を指定できます。この値
は C シェルでは $status、Bourne シェルや Korn シェルで
は $? です。
STOP 文の値には任意の正の整数を指定してください。シェル
に戻される値は 256 で割った余りになります (つまり、0 か
ら 255 までの範囲)。
-temp=dir
一時ファイル用のディレクトリを定義します。
f95 で使用される一時ファイル用のディレクトリを /tmp で
はなく dir に設定します。
-time
各コンパイル処理段階の実行時間を表示します。
-U ソースファイル内の大文字と小文字を認識します。
大文字を小文字と同じに扱いません。デフォルトでは、文字
列定数内を除き、大文字は小文字として扱われます。
このオプションが指定されると、コンパイラは Delta、
DELTA、および delta を別々のシンボルとして扱います。
移植性を考慮する場合や Fortran を他の言語と混合する場合
は、必要に応じて -U を使用してください。
このオプションは、組み込み関数、Fortran ライブラリ関
数、明示的に EXTERNAL と宣言されたルーチンへの呼び出し
には影響しません。
-Uname
プリプロセッサマクロ name を未定義にします。
同じコマンド行の -Dname が作成したプロプロセッサマクロ
シンボル name の初期定義を削除します。または、オプショ
ンの順番に関係なく、コマンド行ドライバにより、暗黙に置
かれます。ソースファイルのマクロ定義には影響ありませ
ん。複数の -Uname フラグは、同じ行にあり、 -U と name
の間には空白文字を置いてはなりません。
このオプションは、 fpp
か cpp
プロプロセッサを呼び出しソースファイルです。
-u 未宣言変数を報告します。
各コンパイル単位に IMPLICIT NONE を指定することと同じで
す。このオプションは、Fortran 標準の暗黙的な型指定を使
用せずに、変数のデフォルトの型を未宣言の状態にします。
このオプションは、既存の IMPLICIT 文や明示的な型宣言文
を無効にすることはありません。
-unroll=n
可能であれば、DO ループの展開を n 回だけ有効にします。
n は正の整数です。
n = 1 の場合、このオプションは、すべてのループの展開を
禁止します。
n > 1 の場合、このオプションは、 n 回だけループを展開す
ることをオプティマイザに指示します。
任意のループが実際に展開されると、実行可能ファイルはよ
り大きくなります。
-use=list
暗黙的な MODULE 使用法をグローバルに指定します。
list は、コンマで区切ったモジュール名またはモジュール
ファイル名のリストです。-use=module_name を使用するコン
パイルは、実際にはコンパイルされる各サブプログラムに
USE module_name を追加します。同様に、
-use=module_file_name を使用するコンパイルは、実際には
コンパイルされる各サブプログラムに、module_file_name
ファイルに含まれる各モジュールの USE module_name を追加
します。
-V 各コンパイル段階の名前とバージョンを表示します。
-v 詳細モード。-詳細なコンパイル段階を表示します。
-V と似ていますが、ドライバが使用するオプション、マクロ
フラグの拡張、環境変数などの詳細も表示します。
-vax=v
VAX VMS Fortran 拡張機能の選択を有効にします。
v には次のいずれか 1 つの値か、あるいは複数の選択項目を
コンマで区切り、指定します。
blank_zero: 書式付き入力の中のブランクを、内部ファイ
ル上のゼロと解釈します。
debug: 文字 'D' で始まる行を注釈行ではなく、VMS
Fortran のような通常の Fortran 文と解釈し
ます。
rsize: 書式なしレコードのサイズを、バイトではな
くワードで表されていると解釈します。
struct_align: VMS Fortran のように、メモリー内の VAX 構
造のコンポーネントを、パディングせずに配
置します。このオプションフラグは f77 -xl
フラグに取って代わります。 注: データが
誤って整列される場合があります。
%all: これらのすべての VAX VMS 機能を有効にしま
す (デフォルト)。
%none: これらすべての VAX VMS 機能を無効にしま
す。
サブオプションは個別に選択したり無効にしたりすることが
できます (直前に no% を指定) 。
例:
-vax=debug,rsize,no%blank_zero
-vax=
が省略された場合のデフォルトは、 -vax=%all です。
-vpara
(SPARC) 詳細な並列化メッセージを表示します。
明示的に並列化されたループが依存関係を持つことを検出す
ると、コンパイラは警告メッセージを発行します。しかし、
ループは並列化されます。
-explicitpar と C$MIC DOALL 並列化プラグマを併用してく
ださい。
例: f95 -explicitpar -vpara any.f
-w[{0|1|2|3|4}]
警告メッセージを表示または抑止します。
-w コンパイラから警告メッセージを抑止します。
-w0 エラーメッセージだけを表示します。
-w1 エラーと警告を表示します (これはデフォルトです)。
-w2 エラー、警告、および注意を表示します。
-w3 エラー、警告、注意、および注を表示します。
-w4 エラー、警告、注意、注、およびコメントを表示しま
す。
2 つのオプションを指定した際に、2 番目のオプションが 1
番目のオプションのすべてまたは一部を無効にしてしまう場
合は、コンパイラは警告を発行します。
-Xlist[z]
ソースリストを出力し、大域的にプログラムを検査します。
潜在的なプログラム上のバグを検索します。大域プログラム
での呼び出しや共通における整合性を検査するためにその他
のコンパイラパスを呼び出します。クロスリファレンスのあ
る行番号付きソースコードを生成します。
-Xlist からの診断メッセージは、警告で、コンパイルやリン
クは実行することができます。
すべての構文エラーを最初に修正してください。構文エラー
のあるソースプログラムで実行した場合、 -Xlist は予期で
きない結果を出力する可能性があります。
結果は、最初に指定されたファイルの名前の拡張子を .lst
に変えた名前のファイルに出力されます。
例 : エラー、リスト、クロスリファレンスを file1.lst に
出力します。
demo% f95 -Xlist file1.f file2.f
手続き間での問題をチェックするには -Xlist オプションを
使用してください。ただし、他のすべてのコンパイルエラー
と警告が解決されてから使用してください。
-Xlist のサブオプションの要約を示します。
-Xlist デフォルト。リスト、エラー、クロスリファ
レンステーブルを出力する。
-Xlistc 大域的エラーとコールグラフのみを出力す
る。
-XlistE エラーのみ出力 (クロスリファレンステーブ
ルとリストはなし)。
-Xlisterr -Xlist によるすべてのエラーメッセージを
出力しない。
-Xlisterr[n] -Xlist による n 番のエラーメッセージを出
力しない。
-Xlistf エラー、リスト、クロスリファレンスを表示
し、オブジェクトファイルのコンパイルを行
わない。
-Xlisth エラーが検出された場合は、コンパイルを終
了する。
-XlistI インクルードファイルも検査する。
-XlistL リストのみを出力 (クロスリファレンステー
ブルはなし)。
-Xlistl[n] 1 ページの行数を n 行にする。
-XlistMP (SPARC) OpenMP 指令を検査する。
-Xlisto nm file.lst ではなく nm に結果を出力する。
-Xlists 参照されていない名前をクロスリファレンス
に出力しない。
-Xlistvn 検査レベルを n (1、2、3、4) に設定する (
デフォルトは 2)。
-Xlistw[nnn] 出力行の幅を n 桁に設定する (デフォルト
は 79)。
-Xlistwar -Xlist によるすべての警告メッセージを出
力しない。
-Xlistwar[n] -Xlist による n 番の警告メッセージを出力
しない。
-XlistX クロスリファレンステーブルのみを出力する
(リストはなし)。
詳細は、 『Fortran プログラミングガイド』を参照してくだ
さい。
-x386
(旧式) -xtarget=386 と同義。かわりに -xtarget=generic
を使ってください。
-x486
-xtarget=486 と同義。
-xa -a と同義です。
-xalias[=type_list]
コンパイラが仮定する別名の程度を指定します。
非標準のプログラミング技法により、コンパイラの最適化戦
略の妨げとなる状況が発生することがあります。特に、オー
バーインデックスの使用、ポインタの使用、ならびに大域変
数または一意でない変数をサブプログラム引数として渡すこ
とにより、コンパイラが特定の最適化を適用できなくなるあ
いまいな別名状況が発生し、予想外の結果を招くことがあり
ます。
別名の詳細については、『Fortran ユーザーズガイド』を参
照してください。
コンパイラに、プログラムと Fortran 標準の別名要件との違
いを知らせるには、 -xalias
フラグを使用します。
フラグには、リストが付くこともあれば付かないこともあり
ます。リストに含まれるキーワードはコンマで区切られ、各
キーワードはプログラムに存在する別名状況を示します。各
キーワードに接頭辞 no% を付けることにより、存在しない別
名のタイプを示すことができます。
以下の別名キーワードがあります。
dummy ダミー(形式) サブプログラムパラメータは相互に
別名となり、大域変数となります。
no%dummy (デフォルト)。ダミーパラメータの使用法は
Fortran 標準に従い、相互に別名または大域変数
となることはありません。
craypointer
(デフォルト)。Cray ポインタは、LOC() 関数でア
ドレスが取り出せる任意の大域変数または局所変
数を指すことがきます。また、2 つの Cray ポイ
ンタが同じデータを指す可能性もあります。この
ような仮定に基づいて、ある種の最適化が阻止さ
れるため、安全です。
no%craypointer
Cray ポインタは、malloc() で取り出せるような
固有のメモリアドレスだけを指します。また、2
つの Cray ポインタが同じデータを指すことはあ
りません。この仮定に基づくと、コンパイラは
Cray ポインタを使った参照を最適化することが可
能になります。
actual コンパイラは実際のサブプログラムの引数を、そ
れらが大域変数であるかのように扱います。引数
をサブプログラムに渡すと、Cray ポインタにより
別名が発生します。
no%actual (デフォルト)。引数を渡しても別名にはなりませ
ん。
overindex (a) COMMON ブロック内の配列要素を参照すると、
COMMON ブロックまたは同類のグループ内の要素を
参照することになります。
(b) COMMON ブロックまたは同類のグループの要素
を実引数としてサブプログラムに渡すと、その
COMMON ブロックまたは同類のグループへのアクセ
ス権が、呼び出されるプログラムに与えられま
す。
(c) シーケンス構造型の要素は、COMMON ブロック
であるかのように処理されます。
(d) 個々の配列境界が犯されることがあります
が、上記を除くと、参照された配列要素は、その
配列内に留まると見なされます。
配列構文の WHERE 文と FORALL 文は、オーバーイ
ンデックスとはみなされません。
no%overindex
(デフォルト)。配列結合違反はありません。配列
参照により他の変数が参照されることはありませ
ん。
ftnpointer
外部関数を呼び出すと、Fortran ポインタはすべ
ての型、種類、またはランクの TARGET 変数を指
します。
no%ftnpointer
(デフォルト)。Fortran ポインタは標準ルールに
従います。
コンパイラのコマンド行に -xalias が指定されない場合、デ
フォルトは以下のとおりです。
-xalias=no%dummy,craypointer,no%actual,no%overindex,\
no%ftnpointer
-xalias をリストなしで指定すると、Fortran 別名ルールに
違反しないほとんどのプログラムで最良のパフォーマンスが
得られます。これは、以下の指定と一致します。
-xalias=no%dummy,no%craypointer,no%actual,no%overindex,\
no%ftnpointer
-xO3 以上の最適化レベルでコンパイルするときは、効率上
-xalias は使用しないでください。
詳細については、『Fortran プログラミングガイド』の移植
の章を参照してください。
-xarch=isa
ターゲットの命令セットアーキテクチャ(ISA) を指定しま
す。
このオプションは、コンパイラが生成するコードを、指定し
た命令セットアーキテクチャの命令だけに制限します。つま
り、指定した命令セットだけを許可します。このオプション
は、ターゲット固有の命令が使用されるとは限りません。た
だし、このオプションを使用すると、バイナリプログラムの
移植性に影響がある可能性があります。この項目の最後にあ
る注意と警告を参照してください。
SPARC プラットフォームの場合:
値 意味
generic ほとんどの 32 ビットアーキテクチャで良好なパ
フォーマンスを得られるようにコンパイルしま
す。
これはデフォルトです。このオプションは、たい
ていの 32 ビットプロセッサで良好なパフォーマ
ンスを得るのに最適な命令セットを使用します。
「最良な命令セット」の定義は、必要に応じてリ
リースごとに調整される可能性があります。これ
は現時点では「v8plus」として解釈されていま
す。
generic64 (SPARC) ほとんどの 64 ビットアーキテクチャで
良好なパフォーマンスを得られるようにコンパイ
ルします。
このオプションは、たいていの 64 ビットプロ
セッサで良好なパフォーマンスを得るのに最適な
命令セットを使用します。新しいリリースごと
に、「最良な命令セット」の定義を調節する必要
があるかもしれません。これは現時点では「v8」
として解釈されています。
native 当該システムで良好なパフォーマンスを得られる
ようにコンパイルします (32 ビットアーキテク
チャを想定)。
これは -fast オプションのデフォルトです。コン
パイラは、実行している現在のシステム 32 ビッ
トプロセッサに適切な設定を選択します。
native64 (SPARC) 当該システムで良好なパフォーマンスを
得られるようにコンパイルします (64 ビットアー
キテクチャを想定)。
コンパイラは、実行している現在の 64 ビットシ
ステムプロセッサに適切な設定を選択します。
v7 SPARC-V7 ISA に合ったコンパイルをします (旧式
)。
最新の Solaris オペレーティングシステムは、
SPARC V7 アーキテクチャをサポートしません。こ
のオプションを付けてコンパイルしたプログラム
は、最新のプラットフォームで実行速度が低下し
ます。デフォルトは -xarch=v8plus
です。
例: SPARCstation 1、SPARCstation 2
v8a V8a バージョンの SPARC-V8 ISA 用にコンパイル
します。
定義上、V8a は V8 ISA を意味します。ただし、
fsmuld 命令は例外です。このオプションは、V8a
ISA 上で良好なパフォーマンスを得るためのコー
ドを生成します。
例: microSPARC I チップアーキテクチャに基づく
システム
v8 SPARC-V8 ISA 用にコンパイルします。
V8 アーキテクチャ上で良好なパフォーマンスを得
るためのコードを生成します。
例: SPARCstation 10
v8plus V8plus バージョンの SPARC-V9 ISA 用にコンパイ
ルします。
定義上、V8plus は V9 ISA を意味します。ただ
し、V8plus ISA 仕様で定義されている 32 ビット
サブセットに制限されます。さらに、VIS (Visual
Instruction Set) と実装に固有な ISA 拡張は例
外です。このオプションは V8plus ISA 上で良好
なパフォーマンスを得るためのコードを生成しま
す。結果のオブジェクトコードは SPARC-V8 +
ELF32 形式であり、Solaris OS UltraSPARC 環境
だけで実行できます。つまり、V7 または V8 のプ
ロセッサ上では動作しません。
例: UltraSPARC チップアーキテクチャに基づくシ
ステム
v8plusa V8plusa バージョンの SPARC-V9 ISA 用にコンパ
イルします。
定義上、V8plusa は V8plus アーキテクチャ+ VIS
(Visual Instruction Set) バージョン 1.0 +
UltraSPARC 拡張を意味します。このオプションは
UltraSPARC アーキテクチャ上で良好なパフォーマ
ンスを得るためのコードを生成します。ただし、
V8plus 仕様で定義されている 32 ビットサブセッ
トに制限されます。結果のオブジェクトコードは
SPARC-V8 + ELF32 形式であり、Solaris OS
UltraSPARC 環境だけで実行できます。つまり、V7
または V8 のプロセッサ上では動作しません。
例: UltraSPARC チップアーキテクチャに基づくシ
ステム
v8plusb UltraSPARC III 拡張付きで、V8plusb バージョン
の SPARC-V8 plus ISA 用にコンパイルします。
UltraSPARC アーキテクチャ+ VIS (Visual
Instruction Set) バージョン 2.0 + UltraSPARC
III 拡張用のオブジェクトコードを生成します。
結果のオブジェクトコードは SPARC-V8 + ELF32
形式であり、Solaris OS UltraSPARC III 環境だ
けで実行できます。このオプションは UltraSPARC
III アーキテクチャ上で良好なパフォーマンスを
得るための最良のコードを使用します。
v9 SPARC-V9 ISA 用にコンパイルします。
V9 SPARC アーキテクチャ上で良好なパフォーマン
スを得るためのコードを生成します。結果の .o
オブジェクトファイルは ELF64 形式であり、同じ
形式の SPARC-V9 オブジェクトファイルだけとリ
ンクできます。結果の実行可能ファイルは、64
ビット有効な Solaris OS 環境が動作しており、
64 ビットカーネルを持つ UltraSPARC プロセッサ
上だけで実行できます。
-xarch=v9 は、64 ビット有効な Solaris OS 環境
でコンパイルするときだけ使用できます。
v9a UltraSPARC 拡張付きの SPARC-V9 ISA 用にコンパ
イルします。
SPARC-V9 ISA に VIS (Visual Instruction Set)
と UltraSPARC プロセッサに固有な拡張を追加し
ます。V9 SPARC アーキテクチャ上で良好なパ
フォーマンスを得るためのコードを生成します。
結果の .o オブジェクトファイルは ELF64 形式で
あり、同じ形式の SPARC-V9 オブジェクトファイ
ルだけとリンクできます。結果の実行可能ファイ
ルは、64 ビット有効な Solaris OS 環境が動作し
ており、64 ビットカーネルを持つ UltraSPARC プ
ロセッサ上だけで実行できます。
-xarch=v9a は、64 ビット有効な Solaris OS 環
境でコンパイルするときだけ使用できます。
v9b UltraSPARC III 拡張付きの SPARC-V9 ISA 用にコ
ンパイルします。
V9a バージョンの SPARC-V9 ISA に UltraSPARC
III 拡張と VIS バージョン 2.0 を追加します。
Solaris OS UltraSPARC III 環境で良好なパ
フォーマンスを得るためのコードを生成します。
結果の .o オブジェクトファイルは SPARC-V9
ELF64 形式であり、同じ形式の SPARC-V9 オブ
ジェクトファイルだけとリンクできます。結果の
実行可能ファイルは、64 ビット有効な Solaris
OS 環境が動作しており、64 ビットカーネルを持
つ UltraSPARC III プロセッサ上だけで実行でき
ます。
-xarch=v9b は、64 ビット有効な Solaris OS 環
境でコンパイルするときだけ使用できます。
また、次のことにも注意してください。
o SPARC 命令セットアーキテクチャV7、V8 および V8a はす
べて上位バイナリ互換です。
o v8plus と v8plusa でコンパイルしたオブジェクトバイナ
リファイル (.o) は、SPARC V8plusa 互換プラットフォー
ム上でのみ、一緒にリンクおよび実行できます。
o v8plus、 v8plusa、 および v8plusb でコンパイルしたオ
ブジェクトバイナリファイル (.o) は、SPARC V8plusb 互
換プラットフォーム上でのみ、一緒にリンクおよび実行で
きます。
o -xarch には、UltraSPARC 64 ビット Solaris OS 環境での
み、 v9、v9a、 および v9b の値を指定できます。
o v9 と v9a でコンパイルしたオブジェクトバイナリファイ
ル (.o) は、SPARC V9a 互換プラットフォーム上でのみ、
一緒にリンクおよび実行できます。
o v9、 v9a、および v9b でコンパイルしたオブジェクトバイ
ナリファイル (.o) は、SPARC V9b 互換プラットフォーム
上でのみ、一緒にリンクおよび実行できます。
どの場合でも、初期のアーキテクチャでは、生成された実
行可能ファイルの実行速度がかなり遅くなる可能性があり
ます。また、4 倍精度 (REAL*16 と long double) の浮動
小数点命令は初期の多くの命令セットアーキテクチャでも
使用できますが、コンパイラは、それらの命令を生成した
コードで使用しません。
x86 プラットフォーム用の値:
値 意味
generic 命令セットを Intel x86 アーキテクチャ用に制限
します。デフォルトです。
native このシステムで良好なパフォーマンスが得られる
ようにコンパイルします。このオプションは大き
なパフォーマンスの低下もなく、たいてのプロ
セッサで良好なパフォーマンスを得るのに最適な
命令セットを使用します。新しいリリースのたび
に、「最適」な命令セットの定義は、適宜調整さ
れることがあります。
386 命令セットを Intel 386/486 アーキテクチャ用に
制限します。
pentium_pro
命令セットを pentium_pro アーキテクチャ用に制
限します。
sse pentium_pro 命令セットに SSE 命令セットを追加
します。
sse2 pentium_pro 命令セットに SSE2 命令セットを追
加します。
x86 に関する特記事項
Solaris x86 SSE/SSE2 Pentium 4 プラットフォームで実行
するために -xarch={sse|sse2} を付けてコンパイルしたプ
ログラムは、SSE/SSE2 対応のプラットフォームでのみ実行
する必要があります。SSE/SSE2 に対応していないプラット
フォーム上でそのようなプログラムを実行すると、セグメ
ント例外が発生したり、明示的な警告メッセージなしに不
正な結果が発生することがあります。SSE/SSE2 でコンパイ
ルされたバイナリが SSE/SSE2 に対応していないプラット
フォームで実行されることのないようにするための OS お
よびコンパイラに対するパッチが、後日提供されるかもし
れません
Pentium 4 互換のプラットフォームの場合、Solaris 9
update 6 以降の OS リリースは SSE/SSE2 に対応していま
す。これより前のバージョンの Solaris OS は SSE/SSE2
に対応していません。
このことは、.il インラインアセンブリ言語関数を使用し
ているプログラムや、SSE/SSE2 命令を利用している
__asm() アセンブラコードにも当てはまります。
コンパイルとリンクを別々に行う場合は、必ずコンパイラ
を使ってリンクし、-xarch={sse|sse2} で適切な起動ルー
チンがリンクされるようにしてください。
x86 の浮動小数点レジスタのサイズが 80 バイトであるた
め、x86 上と SPARC 上での算術演算結果が異なることがあ
ります。こうした違いが出ないようにするには、 -fstore
オプションを使用してください。あるいは、ハードウェア
が SSE2 をサポートしている場合は、 -xarch=sse2 を付け
てコンパイルしてください。
デフォルト:
-xarch=isa を指定しない場合、SPARC プラットフォームでは
-xarch=v8plus x86 プラットフォームでは -xarch=386
と見なされます。
相互の関連性:
このオプションは単体でも使用できますが、 -xtarget オ
プションの展開の一部でもあります。したがって、特定の
-xtarget オプションによって設定された -xarch の値を変
更するためにも使用できます。たとえば、
-xtarget=ultra2 は -xarch=v8 -xchip=ultra2
-xcache=16/32/1:512/64/1 に展開されます。次のコマンド
では、 -xarch=v8plusb は、-xtarget=ultra2 の展開で設
定された -xarch=v8 を変更します。
example% f95 -xtarget=ultra2 -xarch=v8plusb ...
警告:
このオプションを最適化と一緒に使用するとき、適切な選
択をした場合、指定されたアーキテクチャ上で良好な実行
可能ファイルのパフォーマンスを得ることができます。し
かし、適切な選択をしなかった場合、パフォーマンスが著
しく低下するか、あるいは、作成されたバイナリプログラ
ムが目的のターゲットプラットフォーム上で実行できない
可能性があります。
-xassume_control[=a[,a]...]
ASSUME プラグマを制御するパラメータを設定します。
このフラグを使用すると、コンパイラによる、ソースコード
の ASSUME プラグマの取り扱いを制御できます。
ASSUME の説明については『Fortran ユーザーズガイド』を参
照してください。
ASSUME プラグマによって、コンパイラがよりよい最適化を行
なえるようにするために利用できる特別な情報を、プログラ
マが表明できます。この表明には確率を指定できます。確率
が「0」か「1」のものは certain で示し、その他は non-
certain であるとみなされます。
この先の分岐が発生するかどうか、整数値または式の範囲、
この先の DO ループの実行回数などといった表明は、その確
率、正確性を指定して行なうことができます。
認識できるサブオプションは次のとおりです。
optimize ASSUME プラグマでの表明は、そのプログラムの最
適化に影響を与えます。
check コンパイラが、certain と指定された表明の正し
さをチェックするコードを生成し、その表明の違
反について実行時メッセージを出します。 fatal
が併せて指定されていなければ、プログラムは続
行します。
fatal check とともに使用されると、certain が指定さ
れた表明に違反が発生した場合、プログラムは終
了します。
retrospective[:d]
パラメータ d は耐性値でオプションで指定でき、
その値は「1」より小さい正の実定数でなければな
りません。デフォルトは「.1」です。
retrospective によって、すべての表明について
その真偽がカウントされるようコードがコンパイ
ルされます。耐性値 d を越えた表明はプログラム
終了時の出力に記載されます。
%none ASSUME プラグマをすべて無視します。
コンパイラのコマンド行に指定されなかった場合、デフォル
トは次のとおりです。 -xassume_control=optimize
これは、コンパイラは ASSUME プラグマを認識して最適化に
反映するけれども、チェックはまったく行なわれないという
意味です。
パラメータを付けないで指定された場合は、
-xassume_control は次のような意味になります。
-xassume_control=check,fatal
この場合、コンパイラは certain である ASSUME プラグマを
すべて受け付けますが、最適化には反映されません。表明が
無効であれば、プログラムは終了します。
-xautopar
(SPARC) -autopar と同義です。
-xcache=c
オプティマイザ用のキャッシュを定義します。
オプティマイザが使用するキャッシュの属性を定義します。
c は、次の 1 つでなければなりません。
o generic
o native
o s1/l1/a1
o s1/l1/a1:s2/l2/a2
o s1/l1/a1:s2/l2/a2:s3/l3/a3
si 、 li 、および ai は、次のように定義されています。
si レベル i におけるデータキャッシュのサイズ (キロバイ
ト)
li レベル i におけるデータキャッシュの行サイズ (バイト)
ai レベル i におけるデータキャッシュの結合規則
このオプションは、オプティマイザが使用できるキャッシュ
の属性を指定します。どのキャッシュの属性が使用されるか
は保証されません。
このオプションは単独でも使用できますが、 -xtarget オプ
ションを展開したものの一部です。主に、 -xtarget オプ
ションで指定された値を無効にする (変更する) 場合に使用
します。
-xcache の値は、次のとおりです。
generic
ほとんどのプラットフォームでよいパフォーマンスを
得るためのキャッシュの属性を定義します。これはデ
フォルトです。
native
当該ホストプラットフォームで良好なパフォーマンス
を得られるようにキャッシュ特性を定義します。
s1/l1/a1
レベル 1 のキャッシュ属性を定義します。
s1/l1/a1:s2/l2/a2
レベル 1 と 2 のキャッシュ属性を定義します。
s1/l1/a1:s2/l2/a2:s3/l3/a3
レベル 1、2、および 3 のキャッシュ属性を定義しま
す。
-xcg89
(SPARC) -cg89 と同義です。
-xcg92
(SPARC) -cg92 と同義です。
-xcheck=v
特別な実行時チェックを実行します。
v は以下から選択します。
%all %none stkovf no%stkovf init_local no%init_local
%all は特別な実行時チェックを有効にします。一方、 %none
はこれを無効にします。デフォルト ( -xcheck がコマンド行
に指定されなかった場合) は -xcheck=%none となります。
次のように、サブオプションは複数をコンマで区切って指定
できます。
-xcheck=no%stkovf,init_local
-xcheck=stkovf
実行時にスタックオーバーフローを検出します。
-xcheck=stkovf を使用してコンパイルを行うと、各ルー
チンエントリごとにコードが生成され、スレッドスタッ
クオーバーフローが検査されます。
-xcheck=no%stkovf は、スタックオーバーフローチェッ
クを無効にします。
デフォルトでは、実行時スタックオーバーフローチェッ
クは行われません。
スタックオーバーフローが検出されると、SIGSEGV 障害
が発生します。
-xcheck=stkovf を使用してコンパイルを行う場合、すべ
てのスタックオーバーフロー状況が検出される保証はあ
りません。このオプションを使用せずにコンパイルされ
たルーチンでスタックオーバーフローが発生する可能性
があるからです。未検出のスタックオーバーフローは、
近傍スレッドのスタックでデータを破壊する可能性があ
ります。
-xcheck=init_local
局所変数の特別な初期化を実行します。
このオプションが指定されると、プログラムで値が割り
当てられる前に使用された場合に算術例外を引き起こす
可能性のある局所変数を、コンパイラはある値に初期化
します。 ALLOCATE 文で割り当てられたメモリもこの方
法で初期化されます。
SAVE 変数、モジュール変数、 COMMON ブロック内の変数
は初期化されません。 no%init_local によってこの初期
化は無効になります。これはデフォルトです。
-xchip=c
オプティマイザ用のターゲットプロセッサを指定します。
このオプションは、ターゲットプロセッサを指定することに
よって命令タイミングのプロパティを指定します。
このオプションは単独でも使用できますが、 -xtarget オプ
ションを展開したものの一部です。主に -xtarget オプショ
ンで指定された値を無効にする (変更する) 場合に使用しま
す。
次のような影響があります。
o 命令の順序 (つまり、スケジューリング)
o コンパイラが飛越しを使用する方法
o 意味的に等しい代替が利用できる場合に使用する命令
SPARC で一般的な -xchip
値は次のとおりです。
ultra UltraSPARC(TM) チップ向けに最適化します。
ultra2 UltraSPARC II チップ向けに最適化します。
ultra2e UltraSPARC IIe チップ向けに最適化します。
ultra2i UltraSPARC IIi チップ向けに最適化します。
ultra3 UltraSPARC III チップ向けに最適化します。
ultra3cu UltraSPARC IIIcu チップ向けに最適化しま
す。
ultra3i UltraSPARC IIIi チップ向けに最適化しま
す。
ultra4 UltraSPARC IV チップ向けに最適化します。
generic サポートされている大部分の SPARC プラット
フォームで良好なパフォーマンスが得られる
ように最適化します。(コンパイラデフォルト
)。
native 現在のホストプラットフォームでよいパ
フォーマンスが得られるよう、最適化を行な
います。
あまり一般的でない SPARC プロセッサ名:
super
SuperSPARC チップ向けに最適化します。
super2
SuperSPARC II チップ向けに最適化します。
micro
MicroSPARC(TM) チップ向けに最適化します。
micro2
MicroSPARC II チップ向けに最適化します。
hyper
HyperSPARC(TM) チップ向けに最適化します。
hyper2
HyperSPARC II チップ向けに最適化します。
x86 プラットフォームでの -xchip の値は次のとおりです。
386 Intel 386 向けに最適化します。
486 Intel 486 向けに最適化します。
pentium
Pentium 向けに最適化します。
pentium_pro
Pentium Pro 向けに最適化します。
pentium3
Pentium III 向けに最適化します。
pentium4
Pentium 4 向けに最適化します。
generic
大部分の x86 プラットフォーム向けに向けに最適
化します。
native
このホストプロセッサ向けに最適化します。
詳細は、『Fortran ユーザーズガイド』を参照してくださ
い。
-xcode=v
(SPARC) コードアドレス空間を指定します。
-xcode の値は、次のとおりです。
abs32 32 ビット絶対アドレスを生成します。
コード、データ、および bss を合計したサイズは
2**32 バイトに制限されます。これは 32 ビット
アーキテクチャ(
-xarch=generic,v8,v8a,v8plus,v8plusa ) でデフォ
ルトです。
abs44 44 ビット絶対アドレスを生成します。
コード、データ、および bss を合計したサイズは
2**44 バイトに制限されます。64 ビットアーキテク
チャ(-xarch=v9,v9a,v9b) だけで利用できます。
abs64 64 ビット絶対アドレスを生成します。
64 ビットアーキテクチャ(-xarch=v9,v9a,v9b) だけ
で利用できます。
pic13 位置独立コード (スモールモデル) を生成します。
-pic と同義です。32 ビットアーキテクチャでは最
大 2**11 まで、64 ビットアーキテクチャでは最大
2**10 までの固有の外部シンボルを参照できます。
pic32 位置独立コード (ラージモデル) を生成します。
-PIC と同義です。32 ビットアーキテクチャでは最
大 2**30 まで、64 ビットアーキテクチャでは最大
2**29 までの固有の外部シンボルを参照できます。
SPARC V8 と V7 では、デフォルトは -xcode=abs32 です。
SPARC V9 と UltraSPARC V9 (-xarch=v9,v9a,v9b) では、デ
フォルトは -xcode=abs64 です。
位置独立コード:
動的共用ライブラリの作成時に -xcode=pic13 または
-xcode=pic32 を使用すると、実行時のパフォーマンスが
向上します。
動的実行ファイル内のコードは通常、メモリー内の固定ア
ドレスと結合されていますが、位置独立コードはプロセス
のアドレス空間内のどこにでもロードできます。
位置独立コードを使用すると、グローバルオフセットテー
ブル全体の間接参照として再配置可能参照が生成されま
す。共用オブジェクト内の頻繁にアクセスされる項目は、
-xcode=pic13 または -xcode=pic32 を使用してコンパイ
ルすると、位置独立コード以外のコードに必要な多数の再
配置が不要となるメリットがあります。
グローバルオフセットテーブルのサイズは、SPARC では
8K バイトに制限されています。
-xcode={pic13|pic32} には、2 つのパフォーマンス損失
があります。
o -xcode=pic13 または -xcode=pic32 を使用してコン
パイルされたルーチンは、共用ライブラリの大域変数
または静的変数へのアクセスに使用されるグローバル
オフセットテーブルをポイントするために、レジスタ
設定のエントリ時に若干の余分な命令を実行します。
o 大域変数または静的変数にアクセスするたびに、グ
ローバルオフセットテーブル全体の余分な間接メモ
リー参照が必要です。pic32 を使用してコンパイルを
行う場合、広域メモリーおよび静的メモリーの参照ご
とに 2 つの追加命令があります。
上述のパフォーマンス損失を検討する場合、
-xcode=pic13 または -xcode=pic32 を使用すると、ラ
イブラリコードの共有の効果により、システムのメモ
リー所要量が大幅に削減されることに注意してくださ
い。-xcode=pic13 または -xcode=pic32 を使用してコ
ンパイルされた共用ライブラリ内のコードのすべての
ページは、このライブラリを使用するすべてのプロセス
で共用できます。共用ライブラリ内のコードのページに
1 つでも非 pic (すなわち絶対) メモリー参照が含まれ
ると、そのページは非共用となり、ライブラリを使用す
るプログラムが実行されるたびにそのページのコピーを
作成する必要があります。
nm <ファイル>.o | grep _GLOBAL_OFFSET_TABLE_
位置独立コードを含む .o ファイルには、文字 U で
マークされる、未解決の _GLOBAL_OFFSET_TABLE_ への
外部参照が含まれます。
-xcode=pic13 または -xcode=pic32 のどちらを使用す
るか決定する際は、elfdump -c (詳細は elfdump(1) の
マニュアルページを参照) を使って大域オフセットテー
ブル (GOT: Global Offset Table) のサイズを調べ、セ
クション見出し sh_name: .got を確認します。sh_size
の値が GOT のサイズを示しています。GOT が 8,192 バ
イトに満たない場合は -xcode=pic13、そうでない場合
は -xcode=pic32 を指定します。
一般に、-xcode の使用方法を決める際は、次の指針に
従います。
o 実行可能ファイルを構築する場合は、-xcode=pic13
と-xcode=pic32 のどちらも使わない。
o 実行可能ファイルへのリンク専用のアーカイブライ
ブラリを構築する場合は、-xcode=pic13 と
-xcode=pic32 のどちらも使わない。
o 共有ライブラリを構築する場合は、まず
-xcode=pic13 を使い、GOT サイズが 8,192 バイトを超
えたら、-xcode=pic32 を使う。
o 共有ライブラリへのリンク用のアーカイブライブラ
リを構築する場合は、-xcode=pic32 だけ使う。
Solaris OS マニュアル『リンカーとライブラリ』を参
照してください。
-xcommonchk[={yes|no}]
共通ブロック不一致の実行時検査を有効にします。
このオプションは、TASK COMMON と並列化 (-explicitpar ま
たは -parallel) を使用するプログラム向けのデバッグ支援
ツールとして提供されています (task common プラグマを参
照してください)。
通常は、矛盾した TASK COMMON 宣言の実行時検査は無効に
なっています。-xcommonchk=yes を指定してコンパイルする
と、実行時検査が有効になります。
ある共通ブロックが 1 つのソースモジュールで正規の共通ブ
ロックとして宣言され、別の場所で TASK COMMON プラグマ内
に出現する場合、プログラムは停止し、最初の不一致を示す
メッセージが出力されます。
このオプションによって呼び出される実行時検査はプログラ
ムパフォーマンスを低下させるため、プログラムの開発とデ
バッグ時にだけ使用してください。
-xcommoncheck だけの指定は -xcommoncheck=yes と同じで
す。
-xcrossfile[=n]
複数ソースファイルに渡る最適化とインライン化を有効にし
ます。
このオプションが指定される場合、n は 0、または 1 です。
通常、コンパイラの解析範囲はコマンド行上の個々のファイ
ルに限定されます。たとえば、 -O4 の自動インライン化は、
同じソースファイル内で定義および参照された副プログラム
に限定されます。
-xcrossfile が指定されると、コンパイラはコマンド行に指
定されたすべてのファイルを、それらが単一のソースファイ
ルとして結合されているかのように解析します。
-xcrossfile が有効になるのは、 -O4 または -O5 と共に使
用される場合だけです。 -xcrossfile フラグは、 -S と共に
コンパイルされた場合無視されます。
アセンブリ言語の .s ソースファイルは、ファイルをまたい
だ解析からは除外されます。
このコンパイルから生成されるファイルは (インライン化が
原因で) 相互依存の関係にあり、プログラムにリンクされる
際には 1 つの単位として使用されなければなりません。ルー
チンのどれかが変更されたためにファイルを再コンパイルす
る場合には、すべてのファイルを再コンパイルする必要があ
ります。
このオプションを使用すると、結果的に Makefile の構造に
作用します。
デフォルト (コマンド行で指定が行われない場合) は、
-xcrossfile=0 で、複数のファイルを対象とした最適化は行
われません。 -xcrossfile は -xcrossfile=1 に同じです。
-xdebugformat={stabs|dwarf}
Sun Studio コンパイラでは、デバッガ情報の形式が "stabs"
形式から "dwarf" 形式へと移行されようとしています。この
リリースのデフォルト値は
-xdebugformat=stabs です。
デバッグ情報を読み取るソフトウェアを管理している場合、
stabs 形式から dwarf 形式にツールを移行させるかどうかを
選択できます。
このオプションは、ツールの移植のために新しい形式にアク
セスする手段として利用してください。デバッガ情報を読み
取るソフトウェア管理しているか、特定のツールで、これら
の形式のいずれかのデバッガ情報が必要となるのでない限
り、このオプションを使用する必要はありません。
-xdebugformat=stabs は、stabs 標準形式でデバッグ情報を
生成します。
-xdebugformat=dwarf は、dwarf 標準形式でデバッグ情報を
生成します。
-xdebugformat を指定しなかった場合は、
-xdebugformat=stabs と見なされます。引数なしでこのオプ
ションを指定するとエラーになります。
このオプションは、-g オプションを使って記録されたデータ
に影響します。 -g なしでも、少量のデバッグ情報が記録さ
れ、その情報の形式は、このオプションで制御されます。こ
のため、-xdebugformat は、-g が使用されなかい場合でも影
響します。
dbx およびパフォーマンスアナライザは、stabs および
dwarf 形式の両方を認識するため、このオプションを使用し
ても、どちらのツールの機能にも影響はありません。
これは、過渡的なインタフェースです。このため、マイナー
リリースであっても、リリースがのたびに互換性のない方法
で変更が発生する可能性があります。
また、stabs と dwarf のどちらも、フィールドまたは値の細
部仕様が進化しています。
-xdepend
(SPARC) -depend と同義です。
-xdryrun
-dryrun と同義です。
-xexplicitpar
(SPARC) -explicitpar と同義です。
-xF Sun Studio パフォーマンスアナライザによる関数レベルの並
べ替えを許可します。
コンパイラ、アナライザ、およびリンカーを使用してコアイ
メージの関数 (副プログラム) を並べ替えることを許可しま
す。 -xF オプションを指定してコンパイルし、続いてアナラ
イザを実行すると、メモリー内の関数がどのように使用され
ているかに応じて、それらの関数の順序を最適化するマップ
ファイルを生成できます。リンカーの -Mmapfile オプション
を使用し、実行ファイルを構築する後続のリンクに対して、
このマップを使用するように指示できます。これにより、実
行ファイルの各関数が個別のセクションに置かれます。
メモリー内の副プログラムの並べ替えは、アプリケーション
テキストのページフォルトタイムがアプリケーションタイム
の大部分を消費している場合に便利です。そうでない場合
は、並べ替えによってアプリケーションの全体的なパフォー
マンスが向上しないかもしれません。Performance Analyser
は、Sun Studio の一部です。アナライザの詳細については、
マニュアル 『プログラムのパフォーマンス解析』を参照して
ください。
-xhasc[={yes|no}]
実引数リストで、ホレリス定数を文字列として扱う。
-xhasc=yes を指定すると、コンパイラは、副プログラム呼び
出しで実引数として出現するホレリス定数を文字列として扱
います。これは、デフォルトで、Fortran 77 規格でコンパイ
ルします。
-xhasc=no を指定すると、ホレリス定数は、副プログラム呼
び出しリストで型なし値として扱われます。
このフラグは、古い Fortran プログラムをポートするのを助
けます。呼び出した副プログラムの引数が INTEGER または
CHARACTER 以外の他の型であると想定される場合、 -
xhasc=no を指定して、ホレリス定数で副プログラムを呼び出
すルーチンをコンパイルしてください。
-xhelp=h
オプションの要約または README ファイルを表示します。
h は、 readme または flags のどちらかです。
readme: オンラインの README ファイルを表示します。
flags: コンパイラのフラグ (オプション) を表示します。
-xhelp=flags -help と同義です。
-xia[={widestneed|strict}]
(SPARC) 区間演算の拡張機能を有効にし、適切な浮動小数点
環境を設定します。
区間演算は、Fortran 95 における数値計算技法の拡張機能で
す。詳細については、Fortran 95 のマニュアルを参照してく
ださい。
-xia は、次のように展開するマクロフラグです:
-xia と -xia=widestneed は、次のように展開されます:
-xinterval=widestneed -ftrap=%none -fns=no -fsimple=0
-xia=strict 次のように展開されます:
-xinterval=strict -ftrap=%none -fns=no -fsimple=0
詳細については『Fortran 95 区間演算プログラミングリ
ファレンス』を参照してください。
-xildoff
インクリメンタルリンカー ild を使用不可にします。これが
デフォルトです。
-xildon を指定すると、このデフォルトが無効になります。
-xildon
インクリメンタルリンカー ild を使用可能にします。
このオプションは、 -g が使用されていて、 -G の指定がな
く、コマンド行にオブジェクトファイルしかない場合に ild
を有効にします。
-xinline=rl
-inline=rl と同義です。
-xinterval[={widestneed|strict|no}]
(SPARC) 区間演算の拡張機能の処理を有効にします。
区間演算は、Fortran 95 における数値計算技法の拡張機能で
す。詳細については、Fortran 95 のマニュアルを参照してく
ださい。
このフラグは、許可される式評価構文を制御します。
-xinterval が値なしで指定されると、デフォルトの
widestneed が使用されます。
no が指定されると、区間演算は有効になりません。
widestneed
混在モードの式に含まれるすべての非区間変数と非区間リ
テラルを、その式における最大幅の区間データ型に拡張し
ます。
strict
型または長さが混在した区間式を禁じます。区間の型と長
さの変換はすべて明示的でなければなりません。
-xipo[={1|0|2}]
(SPARC) 内部手続きの最適化を行います。
内部手続き解析パスを起動して、プログラム全体を最適化し
ます。 -xcrossfile と異なり、 -xipo はリンクステップの
すべてのオブジェクトファイルを最適化し、コンパイルコマ
ンドのソースファイルだけに限定しません。
解析と最適化は、 -xipo でコンパイルされたオブジェクト
ファイルに限定されます。
-xipo=0 は、内部手続き解析を無効にします。
-xipo=1 は、ソースファイル全体のインライン化を有効にし
ます。
-xipo=2 は、メモリー割り当ておよびメモリー最適化を含む
プログラム全体の検出と解析を追加し、キャッシュのパ
フォーマンスを向上させます。
デフォルトは、 -xipo=0 です。
値を指定しない場合、 -xipo=1
とみなされます。
-xipo=2 を付けてコンパイルすると、 -xipo=2 を付けずにコ
ンパイルされた関数やサブルーチン (たとえばライブラリ)か
ら -xipo=2 を付けてコンパイルされた関数やサブルーチンへ
の呼び出しはありません。そうでない場合は、呼び出された
関数の使用法に関するコンパイラの前提が間違っている可能
性があります。
-xipo を使用するケースについての詳細は、 Fortran 95
ユーザーズガイドを参照してください。
別々のステップでコンパイルとリンクを行った場合、両方の
ステップに -xipo を指定して、有効化する必要があります。
ライブラリは、 -xipo を指定してコンパイルされていた場合
であっても、ファイルをまたいだ内部手続き解析の対象とな
ることはできません。また、アセンブリ言語の .s ソース
ファイルは、解析から除外されます。
-xipo フラグは、-Sと共にコンパイルされた場合無視されま
す。
-xipo に関する追加情報:
は、少なくとも最適化レベル -xO4 を必要とします。
-xcrossfile と共に使用しないでください。共に使用す
ると、コンパイルエラーが発生します。
-xipo を指定しないでコンパイルしたオブジェクトは、
このフラグを使用してコンパイルされていないオブジェ
クトに自由にリンクできます。
-xjobs も参照してください。
-xipo_archive[={none|writeback|readonly|none}]
(SPARC) ファイル相互の最適化でアーカイブ (.a) ライブラ
リを取り込むことを可能にします。
writeback
コンパイラは、実行可能ファイルを生成する前に、
-xipo を付けてコンパイルされた、アーカイブライ
ブラリ (.a) 内のオブジェクトファイルを使って、
リンカーに渡すオブジェクトファイルを最適化しま
す。コンパイル中に最適化された、このライブラリ
内のオブジェクトファイルは、その最適化された
バージョンに置き換えられます。
readonly
コンパイラは、実行可能ファイルを生成する前に、
-xipo を付けてコンパイルされた、アーカイブライ
ブラリ (.a) 内のオブジェクトファイルを使って、
リンカーに渡すオブジェクトファイルを最適化しま
す。
none アーカイブファイルの処理はありません。
-xipo_archive の値が指定されていない場合、コンパイラは
-xipo_archive=none と見なします。
-xjobs=n
(SPARC) 複数のプロセッサを使用してコンパイルします。
-xjobs オプションを使用すると、コンパイラが作業を完了す
るために作成するプロセスの数を設定できます。このオプ
ションによって、マルチ CPU のマシンにおける構築時間を削
減できます。現在、-xjobs は -xipo オプションととも指定
した場合だけに機能します。-xjobs=n を指定した場合、n
は、内部手続きオプティマイザがさまざまなファイルをコン
パイルするために起動できる、コードジェネレータとなるイ
ンスタンスの最大数です。
一般に n の安全な値は利用可能なプロセッサ数の 1.5 倍で
す。利用可能なプロセッサの数の何倍もの数を指定すると、
生成されたジョブ間でのコンテキスト切り替えにオーバー
ヘッドがかかり、パフォーマンスが劣化します。また値をあ
まり大きくすると、スワップ空間などのシステムリソースの
制限が使い切られてしまう可能性があります。
-xjobs は必ず値を指定して使います。値を指定しないとエ
ラー診断が出て、コンパイルが異常終了します。
コマンド行に -xjobs の複数のインスタンスを指定すると、
もっとも右にあるインスタンスに達するまで、前の値が上書
きされていきます。
次は、プロセッサを 2 つ持つシステム上において、-xjobs
オプションを指定してコンパイルする例で、同じコマンドで
このオプションを指定しない場合よりも短時間でコンパイル
できます。
example% f95 -xipo -xO4 -xjobs=3 t1.f t2.f t3.f
-xknown_lib=lib
既知のライブラリの呼び出しを認識します。
このフラグが指定されると、コンパイラは特定の既知のライ
ブラリ参照を組み込みとして扱い、ユーザーが指定するバー
ジョンを無視します。これによりコンパイラは、ライブラリ
の特殊な知識に基づいてライブラリルーチンの呼び出しを最
適化することができます。
lib には、以下のキーワードのいずれか 1 つを指定するか、
複数をコンマで区切って指定できます。
blas
blas1
blas2
blas3
組み込み関数
-xknown_lib=[blas | blas1 | blas2 | blas3 ]
コンパイラは以下の BLAS ライブラリルーチンへの呼び出
しを認識し、Sun Performance Library 実装に対して適切
になるよう、自由に最適化します。
-xknown_lib=blas1 が認識する BLAS1 ルーチン:
caxpy ccopy cdotc cdotu crotg
cscal csrot csscal cswap dasum
daxpy dcopy ddot drot
drotg drotm drotmg dscal dsdot
dswap dnrm2 dzasum dznrm2 icamax
idamax isamax izamax sasum saxpy
scasum scnrm2 scopy sdot sdsdot
snrm2 srot srotg srotm srotmg
sscal sswap zaxpy zcopy zdotc
zdotu zdrot zdscal
zrotg zscal zswap
-xknown_lib=blas2 が認識する BLAS2 ルーチン:
cgemv cgerc cgeru ctrmv ctrsv
dgemv dger dsymv dsyr dsyr2
dtrmv dtrsv sgemv sger
ssymv ssyr ssyr2 strmv strsv
zgemv zgerc zgeru ztrmv ztrsv
-xknown_lib=blas3 が認識する BLAS3 ルーチン:
cgemm csymm csyr2k csyrk ctrmm
ctrsm dgemm dsymm dsyr2k dsyrk
dtrmm dtrsm sgemm ssymm ssyr2k
ssyrk strmm strsm zgemm zsymm
zsyr2k zsyrk ztrmm ztrsm
これらはどのように組み合わせて指定することも可能で
す。たとえば、
-xknown_lib=blas2,blas3
は BLAS2 ルーチンと BLAS3 ルーチンだけを選択します。
BLAS ルーチンすべてを選択するには
-xknown_lib=blas
と指定します。これは次の指定と同じことです。
-xknown_lib=blas1,blas2,blas3
コンパイラは、これらのライブラリルーチンのユーザー指
定バージョンを無視して、Sun Performance Library 内の
BLAS ルーチンへリンクします。
-xknown_lib=intrinsics
intrinsics の指定には、Fortran 95 組み込みの明示的
EXTERNAL 宣言を無視する効果があり、ユーザー指定の組
み込みルーチンは無視されます。
-xlang=f77
(SPARC) 適切な実行時ライブラリをインクルードして、既存
の Fortran 77 のための正しい実行時環境が確実に設定され
るようにします。
相互の関連性:
-xlang=f77 オプション指定には、 f77compat ライブラリと
のリンクが暗黙的に含まれているので、Fortran 77 オブジェ
クトファイルと Fortran 95 オブジェクトファイルを簡単に
リンクできます。 -xlang=f77 を使用すると、確実に正しい
実行時環境を設定できます。
警告:
-xnolib は -xlang と組み合わせて使用しないでください。
Fortran オブジェクトファイルと C++ オブジェクトファイル
を混在させる場合は、C++ コンパイラとリンクして、 -
xlang=f95 を指定します。
-mt flag 並列 Fortran オブジェクトと C++ オブジェクトを
混在させる場合は、リンク行に -mt フラグを指定する必要が
あります。
-xlibmil
-libmil と同義です。
-xlibmopt
最適化された数学ルーチンのライブラリを使用します。
このオプションによって通常は高速なコードが生成されま
す。結果が若干異なる場合がありますが、このときは普通は
最終ビットが違っています。このライブラリオプションをコ
マンド行で指定する順序には意味はありません。
このオプションを使用する場合は、デフォルトの丸めモード
の -fround=nearest が前提であり、必須です。
-xlicinfo
ライセンス情報を表示します。
インストールされた Sun Studio ソフトウェアのシリアル番
号獲得情報を返します。
-xlic_lib=sunperf
Sun Performance Library とリンクします。
例 :
f95 -o pgx -fast -pgx.f xlic_lib=sunperf
libs はコンマで区切られたライブラリのリストです。
-l と同様に、コマンド行のすべてのソースファイル名とオブ
ジェクトファイル名の後に指定しなければなりません。Sun
Performance Library とリンクするときは、このオプション
を指定する必要があります。
-xlinkopt[=level]
(SPARC) 再配置可能オブジェクトファイルに対してリンク時
最適化を実行します。
ポストオプティマイザが、リンク時にバイナリオブジェクト
コードに対してパフォーマンス上の高度な最適化を多数、実
行します。level の値で、実行する最適化のレベルを設定し
ます。値は 0、1、2 のいずれかです。
最適化のレベルは以下のとおりです。
0 ポストオプティマイザは無効です (これはデフォルト
です)。
1 命令キャッシュカラーリングおよび分岐最適化など、
制御フロー分析に基づいて、リンク時に最適化しま
す。
2 デッドコードの除去とアドレス計算の簡素化など、リ
ンク時により詳細なデータフロー分析を実行します。
レベルパラメータを指定せずに -xlinkopt を指定した場合、
-xlinkopt=1 という意味になります。
こうした最適化はオブジェクトバイナリコードを分析してリ
ンク時に実行されます。このオブジェクトファイルは書き直
されませんが、結果として出力される実行可能コードは元の
オブジェクトコードとは異なる場合があります。
このオプションはプログラム全体をコンパイルするときに、
プロファイルのフィードバックとともに使用すると最も効果
的です。
ステップを分けてコンパイルする場合には、 -xlinkopt をコ
ンパイルとリンク、双方のステップに指定する必要がありま
す。
% f95 -c -xlinkopt a.f95 b.f95
% f95 -o myprog -xlinkopt=2 a.o b.o
level パラメータはコンパイラがリンクする際だけに使われ
ることに注意してください。上記の例では、オブジェクトバ
イナリは暗黙のレベルである 1 でコンパイルされています
が、ポスト最適化レベルは 2 となっています。
リンク時ポストオプティマイザはインクリメンタルリンカー
ild とともに使えません。 -xlinkopt はデフォルトのリン
カーを ld に設定します。インクリメンタルリンカーを -
xildon で明示的に有効にすると、両方がともに指定されてい
れば -xlinkopt が無効になります。
-xlinkopt を有効に使用できるようにするには、必ずしもす
べてではありませんが、少なくともプログラム内の一部の
ルーチンは、このオプションを使用してリンクする必要があ
ります。それでも、 -xlinkopt 以外を使ってコンパイルされ
たオブジェクトバイナリに対しても、一部の限定された最適
化は実行されます。
-xlinkopt はコンパイラコマンド行に指定された静的ライブ
ラリからのコードを最適化しますが、コマンド行に指定され
た共用 (動的) ライブラリから取り込んだコードはスキップ
して最適化しません。また、共用ライブラリ ( -G でコンパ
イル) を構築するときに -xlinkopt を使用することも可能で
す。
リンク時ポストオプティマイザーは、実行時プロファイルの
フィードバックとともに使用されるともっとも効果的です。
プロファイリングによって、もっとも使用されている、ある
いはもっとも使用されていないコード部分が明らかになり、
オプティマイザに対してそれに従って最適化するよう指示が
出されます。このことは、リンク時に行なわれる最適なコー
ド配置によって命令キャッシュミスが削減できる大きなアプ
リケーションでは、とくに重要です。こうしたコンパイルは
通常、次のようにして行ないます。
% f95 -o progt -xO5 -xprofile=collect:prog file.f95
% progt
% f95 -o prog -xO5 -xprofile=use:prog -xlinkopt file.95
プロファイルフィードバックの使用法についての詳細は、 -
xprofile を参照してください。
このオプションを指定してコンパイルすると、リンク時間が
若干長くなることにご注意ください。オブジェクトファイル
のサイズも大きくなりますが、実行可能ファイルのサイズは
変わりません。 -xlinkopt と -g を指定してコンパイルする
と、デバッグ情報も含まれるため、実行可能ファイルのサイ
ズは大きくなります。
-xloopinfo
(SPARC) -loopinfo と同義です。
-xmaxopt[=n]
最適化プラグマを有効にし、最大の最適化レベルを設定しま
す。
C$PRAGMA SUN OPT=m 指令によって指定される最適化レベルを
nに制限します。-xmaxopt フラグ上の n を超えるレベル m
を指定する指令が出現する場合、コンパイラは n を使用しま
す。
値 n は、 -O 最適化レベルフラグの値 1 〜 5 に対応しま
す。n の値は、他のオプションによって指定される最大の最
適化レベルの値以上でなければなりません。次に適切な例を
示します。
f95 ... -O3 -xmaxopt=4
フラグ -xmaxopt だけが指定されると、デフォルトの
-xmaxopt=5 が使用されます。
-xmemalign[=ab]
(SPARC) 最大メモリー整列および整列不正のデータアクセス
時の動作を指定します。
コンパイル時に整列を決定可能なメモリーアクセスの場合、
コンパイラは、そのデータ整列に適したロード/ストア命令
シーケンスを生成します。
コンパイル時に整列の決定が不可能なメモリーアクセスの場
合は、整列を想定して、必要なロード/ストア命令シーケンス
を生成する必要があります。
-xmemalign フラグを使用すると、このような決定不可能な状
況において、コンパイラが想定すべきデータの最大のメモ
リー整列を指定できます。このフラグは、整列不正のメモ
リーアクセスが発生した場合に実行時に従うべきエラー動作
も指定します。
値:
値を指定する場合は、2 つの部分、数値の整列値 a と英字の
動作フラグ b を指定する必要があります。
整列の a に指定できる値は次のとおりです。
1 最大 1 バイトの整列を想定します。
2 最大 2 バイトの整列を想定します。
4 最大 4 バイトの整列を想定します。
8 最大 8 バイトの整列を想定します。
16 最大 16 バイトの整列を想定します。
動作の b に指定できる値は次のとおりです。
i アクセスを解釈し、実行を継続します。
s シグナル SIGBUS を立てます。
f 4 以下の整列に対してシグナル SIGBUS を立て、整列
が 4 以下でない場合はアクセスを解釈し、実行を継続
します。
デフォルト:
-xmemalign
フラグがない場合に最初に適用されるデフォルトは次のとお
りです。
最大のメモリー引き継ぎ整列と、不正に整列したデータア
クセスの動作を指定します。
コンパイル時に整列を決定できるメモリーアクセスの場
合、コンパイラはデータのその整列に対して適切なロード
/ストア命令シーケンスを生成します。
コンパイル時に整列を決定できないメモリーアクセスの場
合、コンパイラは必要な読み込み / 格納シーケンスを生
成するために整列を想定しなければなりません。
-xmemalign フラグを使用すると、このような決定不可能
な状況において、コンパイラがデータの最大のメモリー配
列を想定するように指定できます。このフラグは、不正に
整列したメモリーアクセスが発生する場合に実行時に追跡
されるエラー動作も指定します。
値:
値を指定する場合は、2 つの部分、数値で指定される整列
値 a と英字で指定される動作フラグ b を指定する必要が
あります。
整列の値 a には次の値を指定できます:
1 最大 1 バイトの整列を想定します。
2 最大 2 バイトの整列を想定します。
4 最大 4 バイトの整列を想定します。
8 最大 8 バイトの整列を想定します。
16 最大 16 バイトの整列を想定します。
動作の値 b には次の値を指定できます:
i アクセスを解釈し、実行を継続します。
s シグナル SIGBUS を立てます。
f 4 以下の整列に対してシグナル SIGBUS を立て、
整列が 4 以下でない場合はアクセスを解釈し、
実行を継続します。
デフォルト:
-xmemalign フラグが出現しない場合に適用される最初
のデフォルトは次のとおりです:
-xmemalign=8i
C および C++ の -xarch=v9、v9a の場合は
-xmemalign=8s
Fortran の -xarch=v9、v9a の場合は
-xmemalign=8f
値が指定されていない -xmemalign が出現する場合に適
用される 2 番目のデフォルトは次のとおりです:
すべてのプラットフォームとも -xmemalign=1i
-xmemalign
そのものは、特定のデータ整列を強制的に行わせるわ
けではないことに注意してください。 -dalign または
-aligncommon を参照してください。
-xnolib
-nolib と同義です。
-xnolibmil
-nolibmil と同義です。
-xnolibmopt
-xlibmopt を取り消します。
-fast と併用すると、最適化した数学ライブラリとのリ
ンクを取り消します。
-xO[n]
-O[n] と同義です。
-xopenmp
(SPARC) -openmp と同義です。
-xpad
-pad と同義です。
-xpagesize=n
(SPARC) スタックおよびヒープの優先ページサイズを設
定します。
n の値は次のいずれかでなければなりません。
8K 64K 512K 4M 32M 256M 2G 16G またはデフォルト
対象となるプラットフォーム上の Solaris OS 環境で有
効なページサイズを指定する必要があります。
getpagesize(3C) を使用するとそのサイズがわかりま
す。有効なページサイズを指定しなかった場合、その要
求は実行時に無視され、何もメッセージは出されます。
Solaris OS 環境ではページサイズ要求が尊重されるこ
とを保証していません。
pmap(1) または meminfo(2) を使って、対象となるプ
ラットフォームのページサイズを判断することができま
す。
-xpagesize=default を指定すると、このフラグは無視
されます。 -xpagesize に引数を指定しない場合、
-xpagesize=default と同じことになります。
このオプションは次のためのマクロです。
-xpagesize_heap=n -xpagesize_stack=n
この 2 つのオプションは -xpagesize と同じく、8K、
64K、512K、4M、32M、256M、2G、16G、default を引数
として受け付けます。 -xpagesize=n と指定して上記の
2 つのオプションに同じ値を設定することができ、ある
いはこれらを別々に指定して異なる値に設定することも
可能です。
このフラグを使ってコンパイルすることは、同じオプ
ションを使って LD_PRELOAD 環境変数を mpss.so.1 に
設定すること、またはプログラム実行前に同じオプショ
ンを使って Solaris OS 9 コマンドの ppgsz(1) 実行す
るのと同様の効果があります。詳細は Solaris OS 環境
に関するマニュアルページを参照してください。
注: この機能は Solaris OS 7 および 8 環境では利用
できません。このオプションは使ってコンパイルされた
プログラムは、Solaris 7 および Solaris OS 8 環境で
はリンクできません。
-xpagesize_heap=n
(SPARC) ヒープのためのメモリのページサイズを設定し
ます。
n は 8K、64K、512K、4M、32M、256M、2G、16G、または
default です。対象となるプラットフォームの Solaris
OS 環境で有効なページサイズを指定しなければなりま
せん。この値は getpagesizes(3C) で確認できます。有
効なページサイズを指定しなかった場合、その要求は実
行時に無視され、何もメッセージは出力れません。
-xpagesize_heap=default と指定した場合、このフラグ
は無視されます。 -xpagesize_heap を指定して引数を
つけなかった場合、 -xpagesize_heap=default と同じ
意味になります。
この機能は Solaris OS 7 および 8 環境で利用できま
せん。
詳細については -xpagesize を参照してください。
-xpagesize_stack=n
(SPARC) スタックためのメモリのページサイズを設定し
ます。
n は 8K、64K、512K、4M、32M、256M、2G、16G、または
default です。対象となるプラットフォームの Solaris
OS 環境で有効なページサイズを指定しなければなりま
せん。この値は getpagesizes(3C) で確認できます。有
効なページサイズを指定しなかった場合、その要求は実
行時に無視され、何もメッセージは出力されません。
-xpagesize_stack=default と指定した場合、フラグは
無視されます。 -xpagesize_stack を指定して引数をつ
けなかった場合、 -xpagesize_stack=default と同じ意
味になります。
この機能は Solaris OS 7 および 8 環境では利用でき
ません。
詳細は -xpagesize を参照してください。
-xparallel
(SPARC) -parallel と同義です。
-xpentium
(x86) -xtarget=pentium と同じ
-xpg -pg と同義です。
-xpp={fpp|cpp}
.F .F95 .F03 ファイルに使用するソースファイルプリ
プロセッサを選択します。
デフォルトは fpp です。Fortran には fpp の使用が適
しています。旧バージョンのコンパイラでは、標準の C
言語プリプロセッサ cpp が使用されていました。 cpp
を選択するには、 -xpp=cpp を指定します。
-xprefetch[=a[,a]]
(SPARC) UltraSPARC II など、先読み命令 (プリフェッ
チ) をサポートするアーキテクチャ上で先読み命令を使
用および調整できるようにします。(-xarch=v8plus、
v8plusa、v8plusb、v9、v9a、v9b、generic64、または
native64)
a は、次のいずれかの値でなくてはなりません。
値 意味
auto 先読み命令を自動生成できるようにし
ます。
no%auto 先読み命令を自動生成できないように
します。
explicit 明示的な先読みマクロを有効にしま
す。
no%explicit は、明示的な先読みマクロを無効にし
ます。
latx:factor コンパイラによるロード命令とストア
命令に対する先読み命令の、「潜在期
間」の仮定値を、指定された因数
(factor) で調整します。factor は、
正の浮動小数点または整数でなければ
なりません。
先読み命令の「潜在期間」とは、先読
み命令が実行された時点から、先読み
命令の対象であるデータが実際に
キャッシュに入れられる時点までの、
ハードウェアに起因する時間のずれを
指します。
コンパイラは、先読み命令の挿入位置
と、先読みされたデータを使用する
ロードまたはストアの命令文の位置が
どれだけ離れているかを確認して、先
読みの潜在期間を仮定します。 注意 -
仮定される先読みの潜在期間は、ロー
ド命令とストア命令では異なる場合が
あります。
コンパイラは、広範囲に渡るマシンお
よびアプリケーションに対して適切に
なるように、先読みのメカニズムを調
整しています。このため現在の機能
が、すべてのマシンまたはアプリケー
ションで最良であるとは限りません。
メモリーを大量に消費するアプリケー
ション、特に大規模な複数のプロセッ
サで実行するアプリケーションの場合
は、先読みの潜在期間を示す値を増加
させた方が、パフォーマンスが向上す
る可能性があります。先読みの潜在期
間を増加させるには、 factor の値を
1 より大きい値にします。 0.5 から
2.0 の間の値にすると、ほぼ確実に最
高のパフォーマンスが得られます。
完全に外部のキャッシュに存在する
データベースを扱うアプリケーション
の場合は、先読みの潜在期間を減少さ
せた方が、パフォーマンスが向上する
可能性があります。先読みの潜在期間
を減少させるには、 factor の値を 1
より小さい値にします。
latx:factor サブオプションを使用す
る場合は、まず factor の値を 1.0 に
近い値に設定して、対象のアプリケー
ションに対するパフォーマンスを調べ
ます。そして徐々にその値を変化させ
ていき、パフォーマンスの変化を確認
します。最良のパフォーマンスが得ら
れるまでテストを繰り返し、適切な
factor の値を特定します。 factor の
値を細かく変更した場合は、しばらく
の間パフォーマンスの変化はまったく
見られませんが、ある値で突然高くな
ります。続けて値を増加または減少さ
せていくと、パフォーマンスは再び下
がります。
yes -xprefetch=auto,explicit と同じで
す。他のサブオブジェクトは指定でき
ません。
no -xprefetch=no%auto,no%explicit と同
じです。他のサブオブジェクトは指定
できません。
-xprefetch 、 -xprefetch=auto 、または
-xprefetch=yes と指定した場合、コンパイラは、生成
するコード中に先読み命令を必要に応じて挿入します。
これにより、先読み命令 (プリフェッチ) をサポートす
るアーキテクチャ上でパフォーマンスが向上します。
デフォルト:
コマンド行で -xprefetch が指定されていない場合のデ
フォルトは、 -xprefetch=no%auto,explicit 、
と見なされます。
-xprefetch が指定されている場合だけ、
-xprefetch=auto,explicit 、
と見なされます。
引数なしで、または引数に auto あるいは yes を指定
して -xprefetch を使用し、明示的に上書きしない限
り、 no%auto がデフォルトです。たとえば、
-xprefetch=explicit は、
-xprefetch=explicit,no%auto と同じです。
no%explicit あるいは no を指定して明示的に上書きし
ない限り、デフォルトで explicit とみなされます。た
とえば、 -xprefetch=auto は、
-xprefetch=auto,explicit と同じです。
-xprefetch または -xprefetch=yes など、自動先読み
が有効だが遅延要素が指定されない場合は、 latx:1.0
とみなされます。
相互の関連性:
-xprefetch=explicit が指定されると、コンパイラは次
の指令を認識します:
$PRAGMA SPARC_PREFETCH_READ_ONCE (address)
$PRAGMA SPARC_PREFETCH_READ_MANY (address)
$PRAGMA SPARC_PREFETCH_WRITE_ONCE (address)
$PRAGMA SPARC_PREFETCH_WRITE_MANY (address)
-xchip 設定は、「潜在期間」の仮定値の決定と、それ
による latx:factor 設定の結果に影響します。
latx:factor サブオプションは、自動先読みが可能な場
合のみ、有効です。つまり、 auto と共に使用しない限
り、 latx:factor は無視されます。
警告:
明示的な先読みは、測定方法がサポートする特別な環境
だけで使用してください。
コンパイラは、広範囲に渡るマシンおよびアプリケー
ションで、パフォーマンスを最適にするように先読みメ
カニズムを調整するので、パフォーマンステストにより
明らかに利点があるとわかった場合のみ、 latx:factor
サブオプションを使用してください。先読み命令の「潜
在期間」の仮定値は、リリース間で異なる可能性があり
ます。そのため、別のリリースに切り替えるたびに「潜
在期間」がパフォーマンスに与える影響をテストし直す
ことを強くお勧めします。
-xprefetch_auto_type=[no%]indirect_array_access
(SPARC) 間接アクセスされるデータ配列に対する間接先
読み命令を生成します。
[no%]indirect_array_access
直接メモリーアクセス用の先読み命令の生成と同じよう
にして、 -xprefetch_level=[1|2|3] オプションの指示
するループに対して間接先読みを生成させるかどうかを
指定します。
-xprefetch_auto_type に値が指定されなかった場合、
コンパイラは
-xprefetch_auto_type=no%indirect_array_access に設
定します。
-xprefetch=auto および最適化レベル -xO3 以上が必要
です。
メモリー使用に関する別名解析のあいまいさを排除でき
る可能性が高まるため、 -xdepend などのオプション
が、間接先読み命令の候補の計算の積極性、つまりは、
自動的な間接先読み命令の挿入の積極性に影響すること
があります。
-xprefetch_level=n
(SPARC) prefetch 命令の挿入の程度を制御します。
このオプションは、-xprefetch=auto を使用して、最適
化レベル 3 以上 (-xO3) で、prefetch をサポートする
プラットフォーム (-xarch=v8plus、v8plusa、
v8plusb、v9、v9a、v9b、generic64、native64) でコン
パイルする場合にのみ有効です。
n は 1、2、3 のいずれかです。
でのデフォルトです。-xprefetch=auto でのデフォルト
はレベル 2 です。
prefetch レベル 2 では、レベル 1 を超える prefetch
命令の追加生成が可能です。prefetch レベル 3 では、
レベル 2 を超える prefetch 命令の追加生成が可能で
す。
prefetch レベル 2 と 3 は、UltraSPARC III プラット
フォーム (-xarch=v8plusb または v9b) にのみ有効で
す。
-xprofile=p
実行時プロファイルデータを収集するか、これらのデー
タで最適化を行います。
実行中の実行頻度データを収集および保存します。そし
て、収集したデータをその後の実行で使用することによ
り、パフォーマンスを上げます。
p は collect[:nm]、use[:nm]、または tcov でなけれ
ばなりません。
コンパイルとリンクを別の段階で行う場合、リンク時に
はコンパイル時と同じ -xprofile オプションを使用し
なければなりません。
collect[:nm]
実行頻度データを収集および保存します。後
で -xprofile=use を指定すると、オプティマ
イザがこのデータを使用できます。コンパイ
ラは、文の実行頻度を測定するコードを生成
します。
nm は解析されるプログラムの名前です。この
名前はオプションです。この名前を指定しな
い場合、 a.out が実行可能ファイルの名前で
あると仮定されます。
実行時、 -xprofile=collect:nm でコンパイ
ルされたプログラムは、サブディレクトリ
nm.profile を作成し、実行時フィードバック
情報を保持します。データはこのサブディレ
クトリにあるファイル feedback に書き込ま
れます。プログラムを何回も実行する場合、
実行頻度データは feedback ファイルに累積
されます。つまり、以前の実行の出力は失わ
れません。
プログラムの実行時プロファイルデータの記
述を制御するには、環境変数 SUN_PROFDATA
および SUN_PROFDATA_DIR を設定してくださ
い。設定された場合、プログラムは
nm.profile/feedback の代わりにカレント
ディレクトリの
$SUN_PROFDATA_DIR/$SUN_PROFDATA に書き込
みます。
プロファイル収集はマルチスレッドに対して
安全です。つまり、自身のマルチタスク処理(
-mt ) を行なうプログラムをプロファイリン
グした場合、正しい結果が生成されます。注:
use[:nm] 実行頻度データを使用し、計画的に最適化し
ます。
collect:nm と同様に、nm はオプションで、
プログラムの名前を指定します。
プログラムは、実行頻度データを元に最適化
されます。このデータは、
-xprofile=collect 付きでコンパイルしたプ
ログラムが前回実行された際に作成された
フィードバックファイルに生成され、保存さ
れます。
ソースファイルや、その他のコンパイラオプ
ションは、このフィードバックファイルが生
成されたコンパイル時とまったく同じものを
使用しなければなりません。
-xprofile=collect:nm を使用してコンパイル
した場合、同じプログラム名 nm を最適化コ
ンパイルでも指定しなければなりません (
-xprofile=use:nm )。
collect 段階と use 段階との間のコンパイル
の高速化については -xprofile_ircache も参
照してください。
tcov 新しいスタイルの tcov(1) を使用する基本的
なブロックカバレージ解析。
コードの使用法は -a と似ていますが、ソー
スファイルごとに単一のファイルが生成され
ます。このファイルの名前は、最終実行可能
ファイルの名前に基づきます。たとえば、
stuff が実行可能ファイルである場合は、
stuff.profile/tcovd がデータファイルで
す。
tcov を実行するときは、 -x オプションを渡
し、新しいスタイルのデータを使用するよう
に指示しなければなりません。そうしない
と、 tcov はデフォルトで古い .d ファイル
(もしあれば) をデータとして使用し、予想外
の結果を生成します。
-a とは異なり、 TCOVDIR 環境変数はコンパ
イル時には効果がありません。しかし、その
値はプログラムの実行時に使用され、どこに
プロファイルのサブディレクトリを作成する
のかを指定します。
注 -
-O4 または -inline を使用したためにサブプ
ログラムのインライン化が存在する場合、
tcov が生成するレポートは不正確である可能
性があります。インライン化されたルーチン
への呼び出しの範囲は記録されません。
-xprofile_ircache[=path]
(SPARC) プロファイルの収集段階と使用段階とで、コン
パイルデータを保存、再利用します。
-xprofile=collect|use とともに指定すると、プロファ
イルの collect 段階に保存されたコンパイルデータが
use 段階で再利用され、コンパイル時間が改善されま
す。
このオプションの指定によって、path がキャッシュ化
されたファイルの保存場所を上書きします。デフォルト
では、このファイルはオブジェクトファイルと同じディ
レクトリに保存されます。パスを指定すると、収集
フェーズと使用フェーズが別のディレクトリで実行され
る場合に便利です。
コマンドは一般的に次のような順で指定します。
f95 -xO5 -xprofile=collect -xprofile_ircache t1.c t2.c
a.out // run collects feedback data
f95 -xO5 -xprofile=use -xprofile_ircache t1.c t2.c
大きなプログラムの場合、中間データがこのようにして
保存されているので、使用段階でのコンパイル時間が著
しく向上します。ただし、ディスクスペースを使うの
で、その必要量が増えます。
-xprofile_pathmap=collect_prefix:use_prefix
(SPARC) プロファイルデータファイルのパスマッピング
を設定します。
-xprofile_pathmap オプションは -xprofile=use オプ
ションと使います。
-xprofile_pathmap は、コンパイラが -xprofile=use
でコンパイルされたオブジェクトファイルのプロファイ
ルデータを見つけられず、かつ次の条件に当てはまる場
合に使います。
レクトリ
o -xprofile=collect でコンパイルするときに使用し
たディ
ではない、別のディレクトリに -xprofile=use でコ
ンパイルしようとする場合
を
o オブジェクトファイルがプロファイル中で共通の
ベース名
使用しているが、ディレクトリを別にして場所に
よってベース名を使い分けている場合
collect-prefix は、-xprofile=collect を指定してオ
ブジェクトファイルがコンパイルされたディレクトリツ
リーの UNIX パス名の接頭辞です。
use-prefix は、-xprofile=use を指定してオブジェク
トファイルをコンパイルしようとしているディレクトリ
ツリーの UNIX パス名の接頭辞です。
-xprofile_pathmap に複数のインスタンスを指定した場
合、コンパイラその指定の順序でそれらを処理していき
ます。 -xprofile_pathmap のインスタンスが指定した
各 use-prefix は、マッチする use-prefix が特定され
るか、最後に指定した use-prefix がオブジェクトファ
イルのパス名と一致しないことがわかるまで、オブジェ
クトファイルのパス名と比較されます。
-xrecursive
RECURSIVE 属性のないルーチンがそれ自体を再帰的に呼
び出すことを許可します。
それ自体を再帰的に呼び出すことができるのは、通常、
RECURSIVE 属性をもつ副プログラムだけです。
-xrecursive を指定して副プログラムをコンパイルする
と、属性 RECURSIVE で定義されていなくても副プログ
ラムはそれ自体を再帰的に呼び出すことができます。た
だし RECURSIVE 属性と異なり、このフラグは、デフォ
ルトで局所変数をスタックに割り当てることはできませ
ん。副プログラムの再帰呼び出しごとに個別の局所変数
値を割り当てるには、-stackvar を指定してコンパイル
を行い、局所変数をスタックに設定します。
-xrecursive を指定してルーチンをコンパイルすると、
パフォーマンスが低下する場合があります。
-xreduction
(SPARC) -reduction と同義です。
-xregs=r
(SPARC) レジスタの使用法を指定します。
生成されるコードのレジスタの使用法を指定します。
r は、コンマで区切った 1 つまたは複数の [no%]appl
、 [no%]float のリストです。
例 : -xregs=appl,no%float
機能を無効にするには、その機能の前に [no%] を置き
ます。
-xregs の値は、 -xarch の値に固有です。
appl 一時レジスタとしてアプリケーションレジス
タを使用するコードを、コンパイラが生成す
るのを許可します。レジスタは、v8、v8a、
v8plus、v8plusa プラットフォームの g2、
g3、 g4 と v9、v9a プラットフォームの
g2、 g3 です。
float 整数値のための一時レジスタとして浮動小数
点レジスタを使用するコードをコンパイラが
生成するのを許可します。このオプションは
浮動小数点値のために浮動小数点レジスタを
使用することにはまったく影響ありません。
デフォルトは、 -xregs=appl,float です。
-xs オブジェクトファイルなしで dbx によるデバッグができ
るようにします。
このオプションは、デバッグ情報すべてを実行可能ファ
イルにコピーします。dbx パフォーマンスやプログラム
の実行時パフォーマンスにはほとんど影響を与えません
が、使用するディスクスペースの量は増えます。
-xs を使用すると、実行可能ファイルを別のディレクト
リに移動した場合に、オブジェクト (.o) ファイルを無
視して dbx を使用できます。このオプションは、 .o オ
ブジェクトファイルを保持できない場合に使用してくだ
さい。
-xsafe=mem
(SPARC) メモリー保護違反が発生しないことを前提とし
て、コンパイラを動作させます。
このオプションは、コンパイラが、SPARC V9 アーキテク
チャでフォルト発生を想定しないロード命令を使用する
ことを許可します。
警告:
フォルト発生を想定しないロード命令は、アドレス割り
当ての失敗やセグメント違反のようなフォルトが発生し
た場合でも、トラップを発生させません。そのためこの
オプションは、そのようなフォルトが起こり得ないプロ
グラムでのみ使用してください。メモリーに基づいたト
ラップを発生させるプログラムはごく少数なので、この
オプションはほとんどのプログラムで安全に使用できま
す。しかし、例外的な状態を処理するために、メモリー
に基づいたトラップを明示的に使用しているプログラム
では、このオプションは使用しないでください。
相互の関連性:
このオプションは、 -xO5 の最適化レベルで、かつ、次
のいずれかの値をとる -xarch オプションと一緒に使用
された場合にのみ有効です。
v8plus、 v8plusa、 v8plusb、 v9、 v9a、または v9b
-xsb
-sb と同義です。
-xsbfast
-sbfast と同義です。
-xspace
コードのサイズを増やしません。
コードのサイズを増やす最適化を行いません。
例: ループは展開しません。
-xtarget=t
最適化用のシステムを指定します。
命令セットと最適化用のターゲットシステムを指定しま
す。
t は native 、 native64 、 generic 、 generic64 、
またはシステム名の 1 つでなければなりません。
-xtarget オプションを使用すると、実システムで発生す
る -xarch 、 -xchip 、および -xcache の組み合わせを
簡単に指定できます。 -xtarget の唯一の意味は、その
展開の中にあります。
-xtarget の値は、次のとおりです。
native: ホストシステムで最良のパフォーマンスを得る
ことができます。(32 ビットアーキテクチャ)
-xarch=native -xchip=native -xcache=native
native64: (SPARC) ホストシステムで最良のパフォーマ
ンスを得られるように最適化します (64 ビットアーキテ
クチャ)。
-xarch=native64 -xchip=native64 -xcache=native
generic: ほとんどの 32 ビットプラットフォームで最
良のパフォーマンスを得られるように最適化します。こ
れはデフォルトであり、次のオプションのセットと同じ
です。
-xarch=generic -xchip=generic -xcache=generic
generic64: ほとんどの 64 ビットプラットフォームで
最良のパフォーマンスを得られるように最適化します。
これは、次のオプションのセットと同じです。
-xarch=generic64 -xchip=generic64 -xcache=generic
プラットフォーム名: 指定したシステムで最良のパ
フォーマンスを得ることができます。
有効な SPARC プラットフォーム名は以下のとおりです。
一般的なプラットフォーム名:
ultra, ultra2, ultra2i, ultra1/140, ultra1/170,
ultra1/200, ultra2/1170, ultra2/1200,
ultra2/1300, ultra2/2170, ultra2/2200,
ultra2/2300, ultra2e, ultra2i, ultra3,
ultra3cu, 次のターゲットプラットフォームは
-xtarget=ultra
と同等です。
entr2, entr2/1170, entr2/2170, entr2/1200,
entr2/2200, entr3000, entr4000, entr5000,
entr6000
あまり一般的でないプラットフォーム名:
sun4/15, sun4/30, sslc, sslx, sslx2, ss4,
ss4/85, ss4/110, ss5, ss5/85, ss5/110, ssvyger,
ss10, ss10/hs11, ss10/hs12, ss10/hs14, ss10/20,
ss10/hs21, ss10/hs22, ss10/30, ss10/40,
ss10/41, ss10/50, ss10/51, ss10/61, ss10/71,
ss10/402, ss10/412, ss10/512, ss10/514,
ss10/612, ss10/712, ss20, ss20/hs11, ss20/hs12,
ss20/hs14, ss20/hs21, ss20/hs22, ss20/50,
ss20/51, ss20/61, ss20/71, ss20/151, ss20/152,
ss20/502, ss20/512, ss20/514, ss20/612,
ss20/712, ss600/41, ss600/51, ss600/61,
ss600/412, ss600/512, ss600/514, ss600/612,
ss1000, sc2000, cs6400, solb6
UltraSPARC V9 上の 64 ビット Solaris OS 環境用にコ
ンパイルするには、-xarch=v9 または -xarch=v9a フラ
グを指定します。-xtarget=ultra または ultra2 の設定
は必要ないか不十分です。-xtarget を指定する場合、次
のように、-xarch=v9 または v9a オプションを
-xtarget の後に指定しなければなりません。
-xtarget=ultra2 ... -xarch=v9
そうしない場合、-xtarget の設定によって、-xarch は
v8plusa に戻されます。
x86 システムの場合は、有効なプラットフォーム名は次
のとおりです。 generic、 native、 386、 486、
pentium、 pentium_pro、 pentium3、および pentium4。
-xtarget の展開については、『Fortran ユーザーズガイ
ド』を参照してください。各プラットフォーム名に対し
て使用される -xarch -xchip -xarch の値が示されてい
ます。
このオプションはマクロです。-xtarget の各値は、
-xarch 、 -xchip 、および -xcache オプションの特定
の値に展開されます。たとえば、 -xtarget=sun4/15
は、
-xarch=v8a -xchip=micro -xcache=2/16/1 と同義です。
稼働中のシステムにおける -xtarget=native の展開を調
べるには、fpversion(1) コマンドを使用します。
あるホストプラットフォームの -xtarget が、そのプ
ラットフォームでコンパイルするときの
-xtarget=native と同じ -xarch、-xchip、-xcache の設
定に展開されない場合があります。
-xtime
-time と同義です。
-xtypemap=spec
デフォルトのデータマッピングを指定します。
このオプションを使用すると、デフォルトのデータ型に
対するバイトサイズを柔軟に指定できます。
文字列 spec の構文は次のとおりです:
type:bits,type:bits,...
許可されるデータ型は、 REAL、 DOUBLE、および
INTEGERです。許可されるデータサイズは、 32、 64、お
よび 128 です。
このオプションは、 REAL XYZ のように、明示的なバイ
トサイズが指定されることなく宣言されるすべての変数
に適用されます。
許可される組み合わせを次に示します。
real:32 または real:64
double:64 または double:128
integer:32 または integer:64
次に、便利なマッピングを示します。
-xtypemap=real:64,double:64,integer:64
これは、REAL と DOUBLE を 8 バイトにマッピングしま
すが、DOUBLE PRECISION は QUAD PRECISION に拡張しま
せん。
INTEGER と LOGICAL は同様に処理されること、および、
COMPLEX は 2 つの REAL データ要素としてマッピングさ
れることに注意してください。また、DOUBLE COMPLEX は
DOUBLE がマッピングされるように処理されます。詳細
は、 『Fortran ユーザーズガイド』を参照してくださ
い。
-xunroll=n
-unroll=n と同義です。
-xvector[={yes|no}]
(SPARC) ベクトルライブラリ関数への呼び出しの自動生
成を有効にします。
-xvector=yes を指定すると、コンパイラは、可能であれ
ば、DO ループ内の数学ライブラリ呼び出しを、同等なベ
クトル数学ルーチンへの単一の呼び出しに変換します。
このオプションを使用すると、ループカウントが大きな
ループのパフォーマンスが飛躍的に上がることがありま
す。
オプションを指定しない場合、デフォルトは -
xvector=no です。 -xvector を指定することは、 -
xvector=yes と同義です。
コマンド行上で -xvector の前に -depend が指定されて
いない場合、このオプションは -depend も有効にしま
す。しかし、コマンド行上で -xvector の後に
-nodepend が指定されている場合、-xvector の影響は取
り消されます。
コンパイラは、自動的に、ロードの段階で libmvec と
libc ライブラリをインクルードするようにリンカーに知
らせます。コンパイルとリンクを別のコマンドで行う場
合、f95 コマンドをリンクするときにも、-xvector を指
定しなければなりません。 -xvector=yes を使用する場
合は、デフォルト丸めモードの -fround=nearest が前提
であり、必須です。
-ztext
再配置が残った状態では、ライブラリを作成しません。
-ztext は、主に、生成されるライブラリが純粋なテキス
トであるかどうか評価するために使用します。これは、
命令がすべて位置独立コードであるかを確認することで
す。したがって、通常はこのオプションは、 -G と -pic
と併用します。
-ztext を使用すると、テキストセグメントに不完全な再
配置を検出した場合、 ld はライブラリを構築しませ
ん。データセグメントに不完全な再配置を検出した場
合、 ld は一般的にライブラリを構築します。つまり、
データセグメントは書き込み可能です。
-ztext を使用しないと、再配置の状態にかかわらず、
ld はライブラリを構築します。
典型的な使用法は、 -pic を指定してオブジェクトファ
イルを作成したかどうかが判明しない場合に、ソース
ファイルとオブジェクトファイルの両方からライブラリ
を作成することです。
上記以外の引数は、リンカーのオプション引数、 f95 互換オ
ブジェクトプログラムの名前 (通常は事前に作成されたオブ
ジェクト)、または f95 と互換性のあるルーチンのライブラ
リとみなされます。これらのプログラムを指定されたコンパ
イルの結果とともに (指定された順で) リンクして実行可能
プログラムを作成し、 -o オプションで指定されたファイル
( -o オプションが指定されていない場合は a.out ) に出力
します。
ファイルの接尾辞
コンパイラのコマンド行には以下の接尾辞を持つファイルを指定で
きます。接尾辞は通常、ファイルの型を識別し、コンパイラのファ
イル処理方法を決定します。
.f90 .f95 .f03
自由形式の Fortran 95 ソースファイル。
.f .for
固定形式の Fortran 95 または Fortran 77 ソースファイ
ル。
.F .F95 .F03
プリプロセッサ指令を含む固定形式の Fortran 77、Fortran
95、または Fortran 2003 ソース。これらのファイルは、コ
ンパイルの前に fpp(1) により事前処理されます (-xpp= オ
プションも参照)。
.F90 .F95
プリプロセッサ指令を含む自由形式の Fortran 95 ソース
ファイル。これらのファイルは、コンパイルの前に fpp(1)
により事前処理されます (-xpp= オプションも参照)。
.s SPARC[tm] アセンブラソースファイル。
.il インラインアセンブラ展開コードテンプレートファイル。コ
ンパイラはこのファイルを使用して、選択したルーチンの呼
び出しをインラインコードに展開します。インラインテンプ
レートファイルの詳細は、inline(1) マニュアルページと
-inline オプションフラグを参照してください。
.o リンカーに渡されるオブジェクトファイル。
.so リンカーに渡される共用オブジェクトファイルまたはライブ
ラリ。
.a リンカーに渡される、すなわち MODULE サププログラムが検
索されるライブラリファイル (-M オプションフラグを参照
)。
.mod 事前コンパイルされた MODULE プログラムユニットを含む
ファイル。コンパイラによって生成されます。-M オプション
を参照してください。
64 ビット Solaris OS 環境用コンパイル:
このバージョンのコンパイラは、32 ビットまたは 64 ビット
Solaris OS 7、8、または 9 SPARC プラットフォーム版で 64 ビッ
トオブジェクトバイナリを生成できます。結果の実行可能ファイル
は、64 ビットカーネルを持つ Solaris OS 7、8、または 9 環境
で、64 ビット SPARC(tm) または UltraSPARC(tm) プロセッサでの
み実行されます。64 ビットオブジェクトのコンパイル、リンク、
および実行は、Solaris OS 7、8、または 9 環境でのみ可能です。
64 ビット Solaris OS 環境でのコンパイルは、-xarch=v9、v9a、
または v9b オプションにより指示されます。-xtarget または
-fast が一緒に指定されている場合でも、これらのオプションの 1
つを指定する必要があります。この場合、-xarch= オプションは、
-xarch オプションを設定する -xtarget またはその他のオプショ
ンの後に指定する必要があります。以下はその例です。
-xtarget=ultra -xarch=v9
-xtarget=ultra、-xtarget=ultra2、および -xtarget=ultra3 は
-xarch=v8 を意味し、自動的に 64 ビットコンパイルは実行されな
いことに注意してください。
64 ビット Solaris OS 環境で -xarch=v9、v9a、または v9b を指
定して共用動的ライブラリを構築する場合、-pic または -PIC オ
プションを指定する必要があります。
コードアドレスサイズの指定については、新規の
-xcode=abs32|abs44|abs64|pic13|pic32 オプションも参照してく
ださい。
64 ビット Solaris OS オペレーティング環境は、64 ビット整数
データとポインタデータを有効にするだけでなく、大規模ファイル
と大規模配列もサポートします。
64 ビット Solaris OS オペレーティング環境用コンパイルの詳細
については、http://docs.sun.com/ で『Fortran ユーザーズガイ
ド』と『Solaris 64 ビット開発ガイド』を参照してください。
指令
一般的な指令: f95 は、 C$PRAGMA 、 !$PRAGMA 、または
*$PRAGMA で始まる一般的なコンパイラ指令行を許可します。大文
字と小文字は関係ありません。次に例を示します。
C$PRAGMA C(list_of_subprogram_names)
C$PRAGMA SUN UNROLL n
C$PRAGMA WEAK function_name
C$PRAGMA SUN OPT=n
C$PRAGMA PIPELOOP=n
C$PRAGMA SPARC_PREFETCH_READ_ONCE (name)
C$PRAGMA SPARC_PREFETCH_READ_MANY (name)
C$PRAGMA SPARC_PREFETCH_WRITE_ONCE (name)
C$PRAGMA SPARC_PREFETCH_WRITE_MANY (name)
!$PRAGMA IGNORE_TKR list
C$PRAGMA ASSUME (expression [, probability])
並列化指令: f95 は、OpenMP API 並列化指令を認識します。
OpenMP は、すべての Sun Studio コンパイラの明示的並列化のた
めの推奨モデルです。
このリリースでは、f95 コンパイラはバージョン 2.0 の OpenMP
Fortran 95 API を受け入れます。指令標識は !OMP です。
Sun Studio OpenMP 実装の詳細については、『OpenMP API ユー
ザーズガイド』を参照してください。
f95 は、従来の Sun スタイルと Cray スタイルの並列化指令も認
識します。C$PAR、!$PAR、または *$PAR で始まる Sun スタイルの
並列化コンパイラ指令行が使用可能です。大文字と小文字は関係あ
りません。
C$PAR DOALL
C$PAR DOSERIAL
C$PAR DOSERIAL*
C$PAR TASKCOMMON
Cray スタイルの並列化指令も認識されます。指令標識は CMIC$ ま
たは !MIC$ です。
CMIC$ DOALL
CMIC$ TASKCOMMON
CMIC$ DOSERIAL
CMIC$ DOSERIAL*
詳細やバリエーションについては、『Fortran ユーザーズガイド』
を参照してください。
従来の Sun/Cray 並列化を OpenMP API 指令に変換するガイドライ
ンについては、『OpenMP API ユーザーズガイド』も参照してくだ
さい。
環境
以下に示すパスは /opt/SUNWspro/ への Sun Studio コンパイラの
標準インストールを仮定しています。コンパイラがその他のディレ
クトリパスへカスタマイズされてインストールされている場合は、
システム管理者にお問い合わせください。
PATH
f95 を使用するには、検索パスの先頭に以下のディレクトリを追加
してください。
/opt/SUNWspro/bin/
MANPATH
f95 のマニュアルページを使用するには、 MANPATH 環境変数に以
下のディレクトリを追加してください。
/opt/SUNWspro/man/
MODDIR
コンパイラが .mod モジュールファイルを書き込むディレクトリへ
のパスを指定します。MODDIR 環境変数の設定に優先する -moddir
も参照してください。
LD_LIBRARY_PATH
通常の場合、 LD_LIBRARY_PATH を設定する必要はありません。こ
の環境変数の設定がないとプログラムが動作しない場合には、イン
ストールに問題があるか、あるいは、実行プログラムが正しく作成
されていない場合があります。
LD_LIBRARY_PATH 環境変数は次のように設定します。
/opt/SUNWspro/lib/
LD_LIBRARY_PATH_64
LD_LIBRARY_PATH 環境変数と同様、LD_LIBRARY_PATH_64 は 64
ビットのライブラリを検索するためのパスを設定します。
SPARC プロセッサ上の 64 ビット Solaris OS 環境で、32 ビット
モードでリンクするとき、LD_LIBRARY_PATH_64 は無視されます。
LD_LIBRARY_PATH だけが定義されている場合、32 ビットのリンク
と 64 ビットのリンクの両方にこの値が使用されます。
LD_LIBRARY_PATH と LD_LIBRARY_PATH_64 の両方が定義されている
場合、32 ビットのリンクには LD_LIBRARY_PATH が使用され、64
ビットのリンクには LD_LIBRARY_PATH_64 が使用されます。
これらの環境変数についての詳細は、『リンカーとライブラリ』を
参照してください。
LD_RUN_PATH
LD_RUN_PATH を使用する場合、 f95 では LD_RUN_PATH が -R と同
一ではないことに注意してください ( ld.so に対しては同一です
)。詳細は『Fortran ユーザーズガイド』の -R の説明を参照して
ください。
STACKSIZE
STACKSIZE 環境変数に値 (単位 K バイト) を指定することによ
り、マルチスレッドプログラム内の各スレーブスレッドが使用する
スタックサイズを指定できます。
% setenv STACKSIZE 8192
上記の指定では、各スレーブスレッドのスタックサイズは 8M バイ
トに設定されます。
SPARC V8 システムでのデフォルトのスレッドスタックサイズは、
4M バイトです。V9 システムでは 8M バイトです。
詳細については、『Fortran プログラミングガイド』の並列化の章
を参照してください。
SUNW_MP_WARN
OpenMP 実行時ライブラリが出力する警告メッセージを制御しま
す。 TRUE と設定すると、ライブラリは警告メッセージを stderr
に出力します。 FALSE と設定すると、警告は無効になります。デ
フォルトは、 FALSE です。
SUNW_MP_THR_IDLE
各ヘルパースレッドのタスクの終わりのステータスを制御します。
spin ns、または sleep nms の値が指定できます。デフォルトは
spin です。詳細については 『OpenMP API ユーザーズガイド』を
参照してください。
OMP_NUM_THREADS
アプリケーション実行時に使用するスレッド数を設定します。
ファイル
コンパイラのコマンド行に指定される名前の接尾辞によって識別さ
れるファイルについては、上記の「ファイルの接尾辞」の項を参照
してください。
そのほかに、コンパイラは以下のファイルを使用します。
/usr/lib/libc.a
標準の C ライブラリ、 intro(3) を参照
/usr/lib/libp/libc.a
プロファイリングライブラリ、 intro(3) を参照
/tmp/*
コンパイラの一時ファイル
mon.out
prof(1) による解析用に生成されるファイル
gmon.out
gprof(1) による解析用に生成されるファイル
その他のファイルは、絶対パスが示されていない場合、次のディレ
クトリにあります。
/opt/SUNWspro/
bin/fpp
Fortran プリプロセッサ
bin/cpp
C プリプロセッサ
prod/include/f95
f95 の INCLUDE 文で検索されるパス
prod/include/f95/f95_floatingpoint.h
f95 IEEE 演算型定義
次のライブラリには、.so と .a の両方のバージョンがあります。
lib/libfsu
f95 サポート組み込み
lib/libfui
f95 - UNIX インタフェース
lib/libfio
Fortran 95 入出力
lib*libfai
Fortran 95 配列組み込みライブラリ
lib/libifai
Fortran 95 区間配列組み込みライブラリ
lib/libf77compat
f77 互換入出力ライブラリ
/usr/lib/libm.a
数学ライブラリ
/usr/lib/libp/libm.a
数学プロファイルライブラリ
lib/libsunmath.a
Sun 付加価値インターバル数学ライブラリ
lib/libsunmath.a
Sun 付加価値数学プロファイルライブラリ
lib/libp/libsunimath.a
Sun が提供する付加価値区間数学プロファイルライブラリ
README ファイル
多くの README ファイルがコンパイラとライブラリについての有益
な最新情報を提供しています (白書も含む)。特に、次の話題に注
目しています。
o fortran_95
o math_libraries
READMEs ディレクトリへのパスは、次のとおりです。
/opt/SUNWspro/READMEs/
関連項目
次の URL のサイトで、Sun Studio 9 のマニュアル一式を提供して
います。
file:/opt/SUNWspro/docs/ja/index.html
追加情報については、以下のマニュアルページを参照してくださ
い。
asa(1)、cc(1)、dbx(1)、fpp(1)、fpr(1)、fsplit(1)、gprof(1)、
ild(1)、ld(1)、perror(3f)、prof(1)、tcov(1)
詳細情報については、以下のマニュアルを参照してください。
『Fortran ユーザーズガイド』
『Fortran プログラミングガイド』
『OpenMP API ユーザーズガイド』
『数値計算ガイド』
『Sun Performance Library User's Guide』
『Sun Studio 9 プログラムのパフォーマンス解析』
『Fortran ライブラリ・リファレンス』
『Solaris リンカーとライブラリ』
『dbx コマンドによるデバッグ』
『Sun Performance Library User's Guide』: この Sun Studio
リリースには、線形代数やフーリエ変換に使用されるサブルーチン
や関数を含む Sun Pefrormance Library が含まれています。
Sun の開発者向け Web サイトにもその他の多数の情報がありま
す。
http://developers.sun.com/prodtech/cc/
診断
f95 が生成する診断メッセージは、それだけで理解できるように
なっています。メッセージの中にはリンカーによって生成されるも
のもあります。