マニュアルページ f90.1
名前
f95, f90 - 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 ]
[ -fma={none|fused} ] [ -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 ]
[ -m32|-m64 ] [ -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] ]
[ -xa ] [ -xalias[=a[,a]...] ] [ -xarch=a ]
[ -xassume_control[=a[,a]...] ] [ -xautopar ]
[ -xbinopt={prepare|off} ] [ -xcache=c ] [ -xcg89 ]
[ -xcg92 ] [ -xcheck=v ] [ -xchip=c ] [ -xcode=v ]
[ -xcommonchk[={no|yes}] ] [ -xcrossfile=n ]
[ -xdebugformat={stabs|dwarf} ] [ -xdepend ]
[ -xdryrun ] [ -xexplicitpar ] [ -xF ]
[ -xfilebyteorder=options ]
[ -xhasc[={yes|no}] ] [ -xhelp=h ]
[ -xhwcprof[=e] ] [ -xia[=i] ]
[ -xinline=rl ] [ -xinstrument=d ]
[ -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] ] [ -xmodel=[a] ] [ -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[={v}] ] [ -ztext ]
source file(s) ... [ -lx ]
機能説明
Sun Studio 12 Fortran 95 コンパイラ、バージョン 8.3 。
f95 コンパイラでは、標準に準拠した Fortran 95 ソースコードプ
ログラムを使用できます。また、Fortran 2003 のいくつかの機
能、区画演算の拡張機能、および OpenMP[tm] Fortran 95 API
version 2.5 も使用できます。さらに、-f77 互換性オプションの
下の多くの FORTRAN 77 (f77) 言語拡張機能と VAX VMS Fortran
拡張機能 (-vax) も使用できます。
Fortran 95 コンパイラ f95 の Version 8.3 は、Sun Studio 12
のコンポーネントの 1 つとして発表されたバージョンです。これ
は、Solaris[tm] オペレーティングシステム (Solaris OS)
Version 9、10 (SPARC(R) および x86 プラットフォームの場合)
および SuSE Linux Enterprise Server 9 Service Pack 3 以降が
稼働する Linux x86 プラットフォーム、または Red Hat
Enterprise Linux 4で使用することができます。
プラットフォーム、環境、新しい機能、制限事項、問題、回避策、
およびソフトウェア修正の最新情報については、Sun Studio の
Web ポータル
http://developers.sun.com/sunstudio/ を参照してください。
マニュアルページは、クイックリファレンスです。f95 コンパイラ
とそのオプションの使用方法についての詳細は、 『Fortran ユー
ザーズガイド』と 『Fortran プログラミングガイド』を参照して
ください。このマニュアルは、Sun Studio のポータル
http://developers.sun.com/sunstudio/ の「Documentation」の
ページからアクセスできます。
f95 コンパイラの使用方法についての詳細は、『Fortran ユーザー
ズガイド』を参照してください。このユーザーズガイドには、f95
が受け入れるすべてのオプション、プラグマ指令、および環境変数
についての詳細と、標準 Fortran 95 コンパイラとこの Fortran
95 コンパイラとの相違点の説明があります。
プログラムのパフォーマンスと最適化、並列化、およびほかの
Fortran プラットフォームからの移植については、『Fortran プロ
グラミングガイド』を参照してください。
関連する Sun Studio マニュアルの一覧は、本マニュアルページの
最後にあります。
すべてのインストール済みの Sun Studio のマニュアル (Sun
Studio のポータルにあるマニュアルへのリンクも含む) の索引
は、このソフトウェアがインストールされているホストシステムに
ある次のファイルを HTML ブラウザで指定して参照できます。
file:/opt/SUNWspro/docs/index.html
インストールされているマニュアルの参照方法については、ご使用
のシステムのシステム管理者にお問い合わせください。
これ以外の技術的な参考資料や、パッチおよび問題の回避策に関す
る最新情報は、コンパイラコレクション開発者リソースのポータル
( http://developers.sun.com/sunstudio/ ) にあります。
新機能
このリリースの Sun Studio Fortran 95 コンパイラには、次の新
しい機能があります。
o Linux (x86 および x64) ディストリビューションで
Fortran コンパイラを使用できるようになりました。こ
のコンパイラが使用できるのは、SuSe Linux
Enterprise Server 9 Service Pack 3 以降、Red Hat
Enterprise Linux 4、2.6 カーネルを使用するその他の
Linux ディストリビューションです。ただし、正式には
サポートされていません。
o 64 ビット実行可能ファイルおよび共有ライブラリを作
成するための -m64 の使用。
o 廃止フラグに代わる -xarch の新しいフラグ。
o UltraSPARC T2 および SPARC64vi プロセッサ用のコー
ド生成を可能にする新しい値を -xtarget および
-xchip に追加。
o 対応するプロセッサでの fused multiply-add 命令の生
成を可能にする新しいフラグ -fma=fused。
o データ領域のプロファイリングのコンパイラサポートを
可能にする新しいフラグ -xhwcprof。
o スレッドアナライザによるパフォーマンス解析を可能に
する新しいフラグ -xinstrument
o x86 での -fast への -xregs=frameptr の追加。
o Solaris x86 プラットフォームでの -xarch=sse2 -xia
オプションによる区間演算のサポート。
o SPARC プラットフォームと同様に x86 プラットフォー
ムでも受け付けられる明示的な先読み指令の追加 (-
xprefetch=explicit)。
o デバッグ情報のデフォルト形式を "stabs" 規格から
"dwarf" 形式に変更 (-xdebugformat=dwarf)。
このリリースのコンパイラの詳細は、Sun Studio Web ポータルサ
イト (http://developers.sun.com/sunstudio/) のコンパイラド
キュメントのページを参照してください。
詳細とこれまでの経緯については、『Fortran ユーザーズガイド』
を参照してください。
64 ビットプラットフォーム向けコンパイル:
このリリースでは、32 ビットまたは 64 ビットバイナリのコンパ
イルの指定方法が変更されています。-xarch オプションは、暗黙
のメモリーモデル、32 ビットILP32 または 64 ビット LP64 とそ
の定義の指示には使用されなくなりました。このリリースからは、
ターゲットプロセッサの命令セットの指定にのみ使用されます。
ターゲットコンパイルのメモリーモデルの指定には、新しいオプ
ション -m32 および -m64 を使用します。
ILP32 モデルでは、C 言語の int、long、およびポインタデータ型
のすべてが 32 ビット幅になります。LP64 モデルでは、long およ
びポインタデータ型のすべてが 64 ビット幅になります。Solaris
および Linux OS は、LP64 メモリーモデルでの大規模ファイルお
よび大規模配列もサポートします。
-m64 を指定してコンパイルすると、生成される実行可能ファイル
は、64 ビットカーネルが動作する Solaris OS または Linux OS
の 64ビット UltraSPARC(R) または x86 プロセッサでのみ動作し
ます。64 ビットオブジェクトのコンパイル、リンクおよび実行
は、64 ビット実行をサポートする Solaris または Linux OS での
み行うことができます。
x86 に関する特記事項
x86 Solaris プラットフォーム向けにコンパイルする際に知ってお
くべき重要事項があります。
x86では、従来の Sun および Cray 形式の並列化指令は使用できま
せん。代わりに OpenMP を使用してください。従来の並列化指令の
OpenMP への変換については、『OpenMP API ユーザーズガイド』を
参照してください。
-xarch を sse、sse2、sse2a、または sse3 のどれかに設定してコ
ンパイルしたプログラムは、それらの拡張および機能を提供するプ
ラットフォームでのみ実行してください。
Pentium 4 互換プラットフォームでは、Solaris 9 4/04 以降の OS
リリースは SSE/SSE2 に対応しています。これ以前のバージョンの
Solaris OS は SSE/SSE2 に対応していません。-xarch によって選
択された命令セットが実行中の Solaris で非対応の場合、コンパ
イラはその命令セット用のコードを生成したり、リンクしたりでき
ません。
コンパイルとリンクを別々に行う場合は、必ず、同じ -xarch 設定
でコンパイラを使用してリンクし、適切な起動ルーチンがリンクさ
れるようにしてください。
x86 の浮動小数点レジスタのサイズが 80 バイトであるため、x86
上と SPARC 上での数値結果が異なることがあります。こうした違
いが出ないようにするには、-fstore オプションを使用するか、
ハードウェアが SSE2 をサポートしている場合は、-xarch=sse2 を
指定してコンパイルしてください。
組み込み数学ライブラリ (sin(x) など) が同じでないため、
Solaris と Linux の間でも数値結果が異なることがあります。
バイナリ互換性の検証
Sun Studio 11 および Solaris 10 OS 以降、これらの特化された
-xarch ハードウェアフラグを使用してコンパイルし、構築された
プログラムバイナリは、適切なプラットフォームで動作するかどう
か検証されるようになっています。
Solaris 10 より前のシステムでは、検証が行われず、それらのフ
ラグを使用して構築されたオブジェクトの適切なハードウェアへの
配備はユーザーの責任で行うことになっていました。
適切な機能または命令セット拡張を持たない非対応のプラット
フォームで、-xarch オプションを指定してコンパイルされたプロ
グラムを実行すると、明確な警告メッセージなしにセグメント例外
や不正な結果が発生することがあります。
この警告は、.il インラインアセンブリ言語関数を使用しているプ
ログラム、あるいは SSE/SSE2/SSE2a/SSE3 命令および拡張を使用
している __asm() アセンブラコードにも当てはまります。
オプション
SPARC プラットフォームでのみ有効なオプションには、 (SPARC)
と注記されています。
x86/x64 プラットフォームでのみ有効なオプションには、 (x86)
と注記されています。
非推奨オプションは、 (旧式)
と注記されていて、以降、使わないことを推奨します。それらの
オプションは、以前のリリースとの互換性を維持する目的にのみ提
供されています。指示されている代わりのオプションを使ってくだ
さい。
リンカーオプションについては、 ld(1) を参照してください。
f95 でコンパイルを行なった場合、メッセージは表示されません。
エラーと警告メッセージを除いて、コンパイル中に「進捗」メッ
セージを出力しません。
一般的に、コンパイラオプションは左から右に処理されます。その
ため、特定のマクロオプションを優先させることもできます。この
規則はリンカーまたはプリプロセッサのオプションには適用されま
せん。
コマンド行オプションの項目では、角括弧 ( [] ) で示された項目
は省略可能です。{yes | no | maybe } のように中括弧で囲まれた
縦線区切りのリテラル項目のリストは、そのから 1 つを選択しま
す。リストの最初の項目は、通常、値なしでフラグが現れた場合の
デフォルト値を示します。
たとえば、-someoption[={no|yes}] は -someoption
が -someoption=no
と同じであることを意味します。
オプション一覧
-a (旧式) tcov 用に基本ブロックごとのプロファイルを生成し
ます。
各基本ブロックが実行される回数をカウントします。
tcov(1) をソースファイルに対して実行し、そのプログラム
の統計を生成します。
これは、 tcov 用の基本ブロックの古い形式のプロファイル
です。代わりに -xprofile=tcov を使用してください。
-aligncommon[={1|2|4|8|16}]
共通ブロックおよび標準数値シーケンス型内のデータの整列
を指定します。
指定された値は、共通ブロックおよび標準数値シーケンス型
内のデータ要素の整列の最大値 (単位はバイト) を示しま
す。たとえば、 -aligncommon=4 は、共通ブロックのデータ
要素を、4 バイトまたはそれ以上の境界の自然配列に整列し
ます。このオプションは、指定した大きさより小さい自然配
列データには影響しません。
-aligncommon を指定しないと、
共通ブロックのデータおよび標準数値シーケンスのデータ
は、デフォルトの最大 4 バイト境界に整列されます。
値なしで -aligncommon が指定された場合のデフォルトは、
プラットフォームに関係なく 1 です。つまり、要素間のパ
ディングなしで、すべてのデータがバイト境界で整列しま
す。
64 ビット非対応のプラットフォーム用のコンパイルでは、
-aligncommon=16 は -aligncommon=8 に戻されます。
-xmemalign も参照してください。
-ansi
標準外の拡張機能を識別します。
-arg=local
ENTRY 文に対する実際の引数を保持します。
このオプションを指定し、代替エントリポイントを使って副
プログラムをコンパイルすると、 f95 は copy restore を使
用してダミーの引数と実際の引数との対応を保持します。
このオプションは従来の Fortran 77 プログラムとの互換性
をもっています。このオプションに依存するコードは標準外
です。
-autopar
自動ループ並列化を有効にします。
適切なループを見つけ、並列化します。依存関係解析を行い
ます (データ依存関係についてループを解析します)。ループ
の再構成を行います。最適化レベルが -O3 よりも低い場合、
最適化レベルを -O3 に設定します。
並列化オプションを使用するときには、 -stackvar オプショ
ンも指定します。 -stackvar オプションは、 -autopar が使
用されたときに、パフォーマンスの向上をもたらすことがあ
ります。これは、オプティマイザが並列化対象をさらに検出
できることがあるためです。メインスレッドスタックおよび
スレーブスレッドスタックのサイズを設定する方法について
は、 -stackvar オプションの説明を参照してください。
独自のスレッド管理を行う場合は、 -autopar は使用しない
でください。 -mt の注を参照してください。
また、 -autopar はシングルプロセッサシステムには適して
おらず、パフォーマンスも低下します
詳細は、『Fortran プログラミングガイド』の並列化に関す
る章を参照してください。
スレッド数: マルチスレッド環境で並列化プログラムを実行
するには、実行前に
OMP_NUM_THREADS 環境変数を設定する必要があります。この
環境変数は、プログラムが作成できるスレッドの最大数を実
行時システムに伝えます。デフォルトは 1 です。一般に、
OMP_NUM_THREADS には、実行中のシステムで使用可能な仮想
プロセッサ数を設定します。このプロセッサ数は、Solaris
の psrinfo(1) コマンドを使用して確認できます。
-autopar を指定し -explicitpar を指定しない場合、明示的
な Sun/Cray 並列化指令は無視されます。
-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 OS でリンクエラーを起こす可能性があります。この
ような場合は、アプリケーションが動的ライブラリとリンク
しなければなりません。
注: 静的な Fortran 実行時システムライブラリと動的な
Fortran 実行時システムライブラリの混在は推奨されませ
ん。リンカーエラーが発生したり、何のメッセージもなしに
データが壊れたりすることがあります。必ず、最新の動的共
有 Fortran 実行時システムライブラリとリンクしてくださ
い。
-C 範囲外の添字と構造について配列参照を検査します。
宣言されたサイズを超える添字を配列に付けると、予想外の
結果 (セグメント例外も含む) が生じることがあります。 -C
オプションは、ソースコードと実行時に考えられる配列添字
違反を検査します。
With the -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, __x86_64,
__amd64, __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
32 ビット x86 プラットフォームの場合は -aligncommon=8
64 ビット x86 プラットフォームの場合は
-aligncommon=16 と同じです。
データレイアウトは -f フラグを使用した時と同じ結果とな
ります。つまり、COMMON ブロック内や EQUIVALENCE クラス
の倍精度および 4 倍精度のデータは「自然な」整列でメモ
リー内に配置されています。この整列は、8 バイト境界 (あ
るいは、 -m64 で 64 ビット SPARC プラットフォーム向けに
コンパイルする場合、4 倍精度データは 16 バイト境界) で
す。COMMON ブロックの整列のデフォルトは、4 バイト境界で
す。
また、 -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 と同じで
す。
-m64 を指定して 64 ビット SPARC 環境のコンパイルを行う
と、このフラグは 4 倍精度データを 16 バイト境界に整列さ
せます。
このフラグは、COMMON ブロックまたはユーザー定義構造体内
のデータレイアウトは変更しません。
使用する場合は、すべてのルーチンをこのオプションでコン
パイルしなければなりません。
-depend[=yes|no]
データ依存関係と再構成についてループを解析します。
-depend は -depend=yes と同じ意味で、依存解析を有効にし
ます。
-depend=no は DO ループのデータ依存解析を無効にするもの
で、デフォルトです。
データ依存関係についてループを解析し、ループの再構成を
行います。 -depend データ依存関係の解析は、 -fast 、
-parallel 、および -autopar の一部として選択されます。
は、最適化レベルが -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 は提供されていません) が含ま
れます。結果として、64 ビット Solaris OS プラットフォー
ムと 32 ビット Solaris x86 プラットフォーム、Solaris 10
リリース以降の 32 ビット Solaris プラットフォームのすべ
てで、 -Bstatic および -dn がリンクエラーを引き起こすこ
とがあります。この場合、アプリケーションを動的ライブラ
リとリンクさせる必要があります。
-e 132 文字まで固定書式ソース行を拡張します。
コンパイラは (132 桁まで) 右側に空白を埋め込みます。 -e
でコンパイルするときに継続行を使用する場合、文字定数を
複数の行に分割しないでください。そうしなければ、定数の
間に不必要な空白が挿入される可能性があります。
-erroff[={%all|%none|taglist}]
タグ名で示される警告メッセージを抑止します。
このオプションは警告メッセージに影響するだけです。エ
ラーメッセージは影響を受けません。The taglist には、警
告メッセージと共に表示されるコンマ区切りのタグ名のリス
トを指定します。 %all のみ指定された場合はすべての警告
が抑止されます (これは、 -w オプションと同じです。)
%none のみ指定された場合、警告は抑止されません。値を付
けずに -erroff とだけ指定するのは、 -erroff=%all と指定
したのと同じです。
( -errtags も参照してください)。
-errtags[={yes|no}]
各警告メッセージと共にメッセージタグを表示します。
このオプションを付けると、コンパイラの内部エラータグ名
が表示されます。(-errtags=no と同じことです) 。値を指定
しない -errtags は、-errtags=yes と同じことを意味しま
す。
-errwarn[={%all|%none|taglist}]
警告メッセージをエラーと見なします。
は、エラーと見なす警告メッセージのコンマ区切りのタグ名
リストです。 %all
のみ指定された場合は、すべての警告がエラーとみなされま
す。 %none
のみ指定された場合、警告はエラーと見なされません。
関連項目: -errtags.
-explicitpar
(旧式、SPARC のみ) 指令で明示的に示されたループを並列化
します。
このオプションを使用すると、従来の Sun または、Crayの並
列化指令が有効になります。これらの指令および並列かモデ
ルは非推奨で、すでにサポートされていません。推奨、そし
てサポートされている並列化モデルは、OpenMP API です。
OpenMP への Sun/Cray 指令の変換の詳細は、 -xopenmp オプ
ションおよび『OpenMP API ユーザーズガイド』を参照してく
ださい。
コンパイラは、並列に実行すると正確な結果が生成されない
ようなデータの依存が DO ループ中にある場合でも、並列
コードを生成します。明示的な並列化を行う場合は、ループ
を正しく解析してデータ依存の問題がないことを確認してか
ら、並列化の指令を使用してください。
このオプションは、Sun または Cray の明示的な並列化指令
を有効にします。このオプション付きでコンパイルすると、
並列化指令の直後にある DO ループから、スレッド化された
並列コードが生成されます。並列化はマルチプロセッサシス
テムの場合にのみ適しています。このオプションは、すでに
libthread ライブラリへの呼び出しによって独自にマルチス
レッド処理を行っているプログラムをコンパイルする場合に
は使用できません。
デフォルトでは、Sun 並列化指令は -explicitpar で有効に
なります。Cray 形式の指令を使う場合は -mp=cray を追加し
ます。たとえば次のように指定します。
-explicitpar -stackvar -mp=cray
注 :OpenMP 並列化指令を有効にするには、-explicitpar で
はなく、-xopenmp を指定してコンパイルします。
スレッド数: マルチスレッド環境で並列化プログラムを実行
するには、実行前に OMP_NUM_THREADS 環境変数を設定する必
要があります。この環境変数は、プログラムが作成できるス
レッドの最大数を実行時システムに伝えます。デフォルトは
1 です。一般に、OMP_NUM_THREADS には、実行中のシステム
で使用可能な仮想プロセッサ数を設定します。このプロセッ
サ数は、Solaris の psrinfo(1) コマンドを使用して確認で
きます。
-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 ビット SPARC 環境で -m64 を指
定してコンパイルした場合は 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 は、最適化された数学ライブラリをリンクしま
す。 (Solaris のみ)
o -depend=yes は、DO ループをより最適化するための依存性
解析を選択します。(このオプションは、最適化レベルが
.B -O3 以上の場合に必ず選択されます。)
o -fns は、浮動小数点演算例外および段階的アンダーフロー
の処理を高速化します (ただし非標準)。
o -ftrap=common は、共通浮動小数点例外のトラップを選択
します ( f95 のデフォルト)。
o -pad=local は、ローカルパディングを選択してキャッシュ
の使用率を改善します。 (SPARC)
o -xvector=lib は、ベクトル化数学ライブラリを選択しま
す。 (SPARC)
o -xvector および -xlibmopt が必要とするため、
-fround=nearest が選択されます。 (Solaris のみ) を選
択します。
o -nofstore は、式の精度を強制的に結果の精度に合わせる
のを取り消します。 (x86)
o -xregs=frameptr 未割り当ての呼び出し先保存レジスタと
してフレームポインタレジスタを使用することを許可しま
す。-fast のあとに -xregs=no%frameptr を指定すると、
フレームポインタレジスタは汎用レジスタとして使用され
ません。 (x86)
この構成要素オプションフラグの選択は、コンパイラのリ
リースごとに変更されることがあるので注意してください。
-fast により設定されるオプションの詳細については、
『Fortran ユーザーズガイド』を参照してください。
実行中のシステムでの -fast の展開内容を確認するには、次
のコマンドを実行します。
f95 -fast -dryrun |& grep ###
例:
> f95 -dryrun -fast |& grep ###
### command line files and options (expanded):
### -dryrun -xO5 -xarch=sparcvis2 -xcache=64/32/4:1024/64/4
-xchip=ultra3i -xdepend=yes -xpad=local -xvector=lib
-dalign -fsimple=2 -fns=yes -ftrap=common -xlibmil
-xlibmopt -fround=nearest
-fast オプションの次にその他のオプションを指定して、こ
のリストから加算したり、減算したりすることができます。
例えば、次のようにすることができます。
f95 -fast -fsimple=1 -xnolibmopt
これは、 -fsimple=2 フラグを無効にし、 -fast により選ば
れた -xlibmopt が使用できなくなります。 -fast は
-dalign -fns -fsimple=2
オプションを選択してプログラムをコンパイルするので、浮
動小数点演算、データ配列、式評価の順序付けが規格外とな
ることがあります。この選択は、多くのプログラムで適切で
はない可能性があります。
また -fast
は -xlibmopt
および -xvector=lib を選択するため、 -fast を使用する
ときは、デフォルトの丸めモードの -fround=nearest が前提
とされ、必須です。
コンパイルとリンクを別々に行う場合は、 -fast でコンパイ
ルしたら、リンク時にも必ず -fast を指定してください。
-fixed
固定書式ソース入力であるとみなします。
Fortran のあらゆるソースファイルを Fortran 95 の固定書
式として解釈します。ファイルの接尾辞は無視します。
-flags
-help と同義です。
-fma={none|fused}
(SPARC) (SPARC) 浮動小数点fused multiply-add 命令の自動
生成を許可します。-fma=none は、そうした命令の生成を無
効にします。-fma=fused は、コンパイラが、浮動小数点
fused multiply-add 命令を使用する機会を見つけることに
よって、コードのパフォーマンスの向上を図ることを可能に
します。
デフォルトは -fma=none です。
コンパイラが fused multiply-add 命令を生成するには、最
小要件は、-xarch=sparcfmaf と、最適化レベルを少なくとも
-xO2 にする必要があります。fused multiply-add 命令が生
成された場合、コンパイラは、生成するバイナリプログラム
が非対応のプラットフォームで実行されることのないようプ
ログラムに印を付けます。
-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) でのみ有効です。
x86 の場合、 -fns は SSE flush-to-zero モードが選択さ
れ、使用可能な場合には、denormals-are-zero モードが選択
されます。このオプションによって、非正規数の結果がゼロ
に切り捨てられます。また、使用可能な場合には、非正規数
の演算対象もゼロと見なされます。
このオプションは、SSE や SSE2 命令セットを使用しない従
来の x86 浮動小数点演算には影響しません。
警告: 非標準モードを有効にすると、浮動小数点演算は IEEE
754 標準の要求に準拠しない結果を生成する場合がありま
す。詳細は、『数値計算ガイド』と『Fortran ユーザーズガ
イド』を参照してください。
このオプションは、さらに、メインプログラムをコンパイル
するときに使用する場合だけに有効です。
-fpover[={yes|no}]
書式付き入力の浮動小数点オーバーフローを検出します。
-fpover=yes が指定された場合、入出力ライブラリは書式付
き入力内の浮動小数点オーバーフローを検出し、演算例外を
発生させます。完全な診断情報を得るには、-ftrap と組み合
わせてください。
デフォルトでは、そうしたオーバーフロー検出は行われませ
ん (-fpover=no)。 -fpover は -fpover=yes と同等です。
-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
フラグを使用しないとき、丸め方向モードは初期値から変更
されません (デフォルトでは最近似値に丸める)。
このオプションは、メインプログラムをコンパイルするとき
に使用する場合だけに有効です。
-xvector または -xlibmopt を付けたコンパイラでは、デ
フォルトの丸めが必要であることに注意してください。 -
xvector か -xlibmopt 、またはその両方を指定してコンパイ
ルしたライブラリとプログラムをリンクする場合は、必ず、
デフォルトの丸めを有効にする必要があります。
-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
-fsimple=1 に加えて、浮動小数点演算の積極的な最適化
を許可します。こうすると、丸めの違いにより、多くのプ
ログラムで数値結果が異なることがあります。また、
-xvector=simd が指定されたコンパイルでは、SIMD 命令
を使用して縮約計算を行うことを許可します。
特に、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 を使用し、
書き出すファイル名を指定してください。
動的ライブラリおよびその作成方法の詳細については、
『Fortran プログラミングガイド』を参照してください。
-g デバッグとパフォーマンス解析ができるようコンパイルしま
す。
dbx(1) または Sun Studio デバッガを使用してデバッグでき
るよう、また Sun Studio パフォーマンスアナライザ
analyzer(1) を使用して解析できるように追加のシンボル
テーブル情報を生成します。
-g を指定しなくても、デバッグできることもありますが、
dbx のすべての機能は、 -g でコンパイルされたオブジェク
トのみで有効です。
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
-i8 (-i8 オプションはありません。)
このコンパイラで 8 バイト INTEGER を指定するには、 -
xtypemap=integer:64 を使用してください。
-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
どのループが並列化されるかを表示します。
どのループが並列化され、どのループが並列化されないかを
表示します。このオプションは通常 -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 と path の間に、空白文字が 1つあってもかまいません。
次に例を挙げます。
-M /home/siri/PK15/Modules
Solaris で、path がアーカイブまたはモジュールファイルの
どちらでもない通常のファイルを示している場合、コンパイ
ラはそのオプションをリンカー(ld) に渡し、リンカーはその
ファイルをリンカーマップファイルとして処理します。この
機能は、C/C++ コンパイラのものに似た便利な機能として提
供されています。
-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
Sun および Cray の並列化モデルは非推奨になっています。
代わりに OpenMP の並列化を使用してください。Sun/Cray 並
列化指令を OpenMP に変換する方法については、『OpenMP
API ユーザーズガイド』を参照してください。
OpenMP の並列化指令に合わせてコンパイルする場合、 -
xopenmp フラグを使用してください。
-mt MT-safe (マルチスレッド環境で使用しても安全な) ライブラ
リを使用します。 (SPARC)
マルチスレッドのコードを書くときに独自のマルチスレッド
コーディングを行う場合( -autopar 、 -explicitpar または
-parallel のいずれのオプションも使用しない場合) は、コ
ンパイル時とリンク時に -mt オプションを使用する必要があ
ります。並列化処理のためのオプションを指定した場合は、
-mt が自動的に使用されます。
シングルプロセッサシステムでは、このオプションで生成さ
れるコードの実行速度は遅くなります。
-m32 | -m64
コンパイルしたバイナリオブジェクトのメモリーモデルを指
定します。
32 ビットの実行可能ファイルおよび共有ライブラリを作成す
る場合は、-m32 を使用します。64 ビット実行可能ファイル
および共有ライブラリを作成する場合は、-m64 を使用しま
す。
64 ビットに対応していないすべての Solaris プラット
フォームおよび Linux プラットフォームでは、ILP 32 メモ
リーモデル (32 ビット int、long、ポインタデータ型) がデ
フォルトです。64 ビットに対応している Linux プラット
フォームでは、LP64 メモリーモデル (64 ビット long、ポイ
ンタデータ型) がデフォルトです。-m64 は、LP 64 モデルに
対応しているプラットフォームでのみ使用できます。
-m32 を使用してコンパイルされたオブジェクトファイルやラ
イブラリを、-m64 を使用してコンパイルされたオブジェクト
ファイルやライブラリとリンクすることはできません。
-m64 を使用して大量の静的データを持つアプリケーションの
コンパイルをする場合は、-xmodel=medium も必要になること
があります。
一部の Linux プラットフォームは medium モデルをサポート
していないことに注意してください。
以前のコンパイラリリースでは、-xarch での命令セットの選
択により暗黙でメモリーモデル ILP32 または LP64 が指示さ
れました。Sun Studio 12 のコンパイラからは、これは当て
はまりません。大部分のプラットフォームで、コマンド行に
-m64 を追加するだけで 64 ビットオブジェクトを作成できま
す。
Solaris の場合、デフォルトは -m32 です。64 ビットプログ
ラムをサポートする Linux システムの場合は、 -m64
-xarch=sse2 がデフォルトです。
-xarch も参照してください。
-native
使用中のマシンに合わせた最適化を行います。
-native オプションは、 -xtarget=native オプションと同義
です。
-noautopar
コマンド行の -autopar を取り消します。
コマンド行の -autopar で呼び出されるループの自動並列化
を取り消します。
-nodepend
コマンド行の -depend を取り消します。
コマンド行の前で指定した -depend オプションで呼び出され
る依存関係解析を取り消します。
-noexplicitpar
-explicitpar を取り消します。
コマンド行の前で指定した -explicitpar で呼び出される明
示的なループの並列化を取り消します。
-nofstore
(x86) コマンド行で -fstore を取り消します。
-fstore によって、式が強制的な代入先の変数の精度を持つ
ことを取り消します。
-nofstore は、 -fast によって呼び出されます。通常は、
-fstore がデフォルトです。
-nolib
システムライブラリとリンクしません。
任意のシステムライブラリまたは言語ライブラリとは自動的
にリンクしません。つまり、デフォルトの -lx オプションを
ld に渡しません。デフォルトでは、システムライブラリや言
語ライブラリはコマンド行で指定されなくても、実行可能
ファイルにリンクされます。
最終的に実行するときには、これらのライブラリが必要にな
ります。これらのライブラリと手作業でリンクするのは、
ユーザーの責任です。このオプションを指定すると、すべて
の制御がユーザーの手にゆだねられますが、同時に、すべて
の責任もユーザーにかかってきます。
-nolib オプションにより、これらのライブラリを静的にリン
クすることが容易になります。
-nolibmil
コマンド行の -libmil を取り消します。
libm 数学ルーチンのインライン化を無効にするには、 -fast
と併用します。
demo% f95 -fast -nolibmil ...
-noreduction
コマンド行の -reduction を取り消します。
-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
ループを1回実行します。
DO ループに到達したときに、そのループが少なくとも 1 回
は実行されるようにコンパイルします。
Fortran 95 の DO ループは、上限が下限よりも小さいときに
は 1 度も実行されません。この動作は、従来のFortran にお
ける DO ループの動作とは異なります。
-openmp
-xopenmp と同義です。
-p (旧式) prof を使ったプロファイリング用にコンパイルしま
す。
prof(1) を使ったプロファイリングのためのオブジェクト
ファイルを準備します。手続きごとのプロファイルを作成
し、各手続きの呼び出しの数と、各手続きによって使用され
た時間の割合を示します。
コンパイルとリンクを別々に行う場合、 -p でコンパイルし
たら、リンク時にも必ず -p を使用してください。
このオプションは廃止されています。代わりに -g およびパ
フォーマンスアナライザの analyzer(1) を使用してくださ
い。
-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 のみ)
このオプションを使用すると、従来の Sun または、Crayの並
列化指令が有効になります。これらの指令および並列かモデ
ルは非推奨で、すでにサポートされていません。推奨、そし
てサポートされている並列化モデルは、OpenMP API です。
OpenMP への Sun/Cray 指令の変換の詳細は、 -xopenmp オプ
ションおよび『OpenMP API ユーザーズガイド』を参照してく
ださい。
このオプションはマクロであり、次のオプションを組み合わ
せたものです。
-autopar -explicitpar -depend
コンパイラが自動的に選択したループと、ユーザーが明示的
に指令で指定したループを並列化します。最適化レベルが
-O3 よりも低い場合、最適化レベルは自動的に -O3 まで引き
上げられます。sp パフォーマンスを上げるために、並列化オ
プション ( -autopar も含む) を使用するときには、
-stackvar オプションも指定します。メインスレッドスタッ
クおよびスレーブスレッドスタックのサイズを設定する方法
については、 -stackvar オプションの説明を参照してくださ
い。
デフォルトでは、Sun 形式の並列化指令が有効になっていま
す。Cray 形式の指令を使うには、-mp=cray を追加してくだ
さい。たとえば次のように指定します。
-parallel -stackvar -mp=cray
注: OpenMP 並列化には、 -parallel ではなく -xopenmp オ
プションフラグを使用してください。
独自のスレッド管理を行う場合は、 -parallel は使用しない
でください。 -mt を参照してください。
-parallel などの並列化オプションの目的は、マルチプロ
セッサシステムで動作する実行可能プログラムを生成するこ
とです。シングルプロセッサシステムでは、一般的に、並列
化はパフォーマンスを低下させます。
コンパイルとリンクを別の段階で行う場合、 -parallel をコ
ンパイルコマンドに指定した場合は、リンクコマンドにも指
定しなければなりません。
-autopar の説明も参照してください。
詳細は、『Fortran プログラミングガイド』の並列化に関す
る章を参照してください。
スレッド数: マルチスレッド環境で並列化プログラムを実行
するには、実行前に OMP_NUM_THREADS 環境変数を設定する必
要があります。この環境変数は、プログラムが作成できるス
レッドの最大数を実行時システムに伝えます。デフォルトは
1 です。一般に、OMP_NUM_THREADS には、実行中のシステム
で使用可能な仮想プロセッサ数を設定します。このプロセッ
サ数は、Solaris の psrinfo(1) コマンドを使用して確認で
きます。
-pg gprof(1) によるプロファイリング用のデータを収集するため
のオブジェクトコードを生成します。
正常終了時に gmon.out ファイルを生成する実行時記録メカ
ニズムが起動されます。
注: -xpg を使用する場合、-xprofile を指定してコンパイル
するメリットはありません。これら 2 つのオプションは、他
方が提供するデータを作成、使用しません。
64 ビット Solaris プラットフォームの場合は、prof または
gprof を使用してプロファイルを生成します。32 ビット
Solaris プラットフォームの場合は、gprof だけがユーザー
CPU 時間の概算値を取り込みます。それらの時間は、主実行
可能ファイル内のルーチンおよび、実行可能ファイルのリン
ク時にリンカー引数として指定された共有ライブラリ内の
ルーチンに関する PC 標本データ (pcsample(2) を参照) か
ら求められます。ほかの共有ライブラリ (dlopen(3DL) を使
用してプロセスの起動後に開かれたライブラリ) は、プロ
ファイリングされません。
32 ビット Solaris システムの場合、prof(1) を使用して生
成されるプロファイルは、実行可能ファイル内のルーチンに
限定されます。32 ビット共有ライブラリは、-xpg を指定し
て実行可能ファイルをリンクし、gprof(1) を使用することに
よってプロファイリングできます。
Solaris 10 ソフトウェアは、-p を指定してコンパイルされ
たシステムライブラリを取り込みません。このため、Solaris
10 プラットフォームで収集されたプロファイルには、システ
ムライブラリルーチンに関する呼び出し回数は含まれませ
ん。
注: マルチスレッドプログラムのコンパイルに、コンパイラ
オプションの -p 、 -pg および -xpg を使用しないでくださ
い。これは、これらのオプションの実行時サポートがスレッ
ド安全でないためです。マルチスレッドを使用するプログラ
ムのコンパイルでこれらのオプションを使用すると、実行時
に、不正な結果やセグメント例外が発生する可能性がありま
す。
コンパイルとリンクを別々に行う場合、 -pg でコンパイルし
たら、リンク時にも必ず -pg を使用してください。
-pic 共有ライブラリ用に位置独立コードをコンパイルします。
SPARC では、 -xcode=pic13 と同義です。
x86 では、位置独立コードを生成します。共有ライブラリの
構築時は、このオプションを使用してソースファイルをコン
パイルしてください。大域オフセットテーブル中、大域デー
タに対するあらゆる参照はポインタの間接参照として生成さ
れます。あらゆる関数呼び出しは、プロシージャリンケージ
テーブル経由の PC 相対アドレッシングモードで生成されま
す。
-PIC SPARC では、これは -xcode=pic32と同等です。
x86 では、 -PIC は -pic と同じです。
-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
ループ内の縮約演算を並列化します。
縮約の自動並列化についてループを解析します。縮約ループ
の並列化処理を可能にするには、 -reduction と -autopar
を両方指定してください。
例: demo% f95 -autopar -reduction any.f
配列の要素を単一のスカラー値に変換するループのことを縮
約演算と呼びます。たとえば、ベクトルの要素を合計するな
どは典型的な縮約演算です。このような演算は並列化の規準
に違反しますが、-reduction を指定すると、コンパイラはこ
のような演算を特別なケースとして認識および並列化できま
す。 f95 が認識する縮約演算については、『Fortran プログ
ラミングガイド』の並列化に関する章を参照してください。
-autopar を指定せずに -reduction を指定する場合、コンパ
イラは警告を発行します。
シングルプロセッサシステムでは、生成されるコードの実行
速度は遅くなります。
縮約には、丸めのエラーが起こる可能性が常にあります。
-S コンパイルし、アセンブリコードを生成するだけです。
指定されたプログラムをコンパイルし、拡張子 .s を付けた
ファイルにアセンブリ言語出力を保存します ( .o ファイル
は作成しません)。
-s 実行可能ファイルからシンボルテーブルを削除します。
このオプションは、実行可能ファイルを小さくし、逆アセン
ブルを困難にします。しかし、デバッグが不可能になりま
す。
-sb (旧式) Sun WorkShop ソースブラウザ用のテーブル情報を生
成します。
ソースブラウザは現在はサポートされていません。
-sbfast
(旧式) -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 メガバイトで
す。デフォルトのヘルパースレッドスタックサイズは、32
ビットプラットフォームで 4 メガバイト、64 ビットプラッ
トフォームで 8 メガバイトです。
limit コマンド (パラメータなし) は、現在のメインスタッ
クのサイズを表示します。
limit シェルコマンドを使用して、メインスレッドスタック
のサイズ (K バイト単位) を設定できます。たとえば、次の
コマンドでメインスタックのサイズを 64 メガバイトに設定
できます。
% limit stacksize 65536
STACKSIZE 環境変数に値 (K バイト単位) を指定すると、各
スレーブスレッドが使用するスタックサイズを設定できま
す。
次のコマンドで、各スレーブスレッドのスタックサイズを 8M
バイトに設定できます。
% setenv STACKSIZE 8192
STACKSIZE 環境変数は、接頭辞付きの数値も受け付けます。
有効な接頭辞は、 B 、 K 、 M 、 G でそれぞれバイト、キ
ロバイト、メガバイト、ギガバイトを表します。デフォルト
はキロバイトです。
詳細は 『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 を使用してください。
組み込み関数の呼び出しが、このオプションの影響を受ける
ことはありません。
-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
フラグに取って代わります。 注: これによ
り、データの不正な境界整列 (「バスエ
ラー」) が発生することがあります。こうし
たエラーを回避するには、-xmemalign と併用
してください。
%all: これらのすべての VAX VMS 機能を有効にしま
す (デフォルト)。
%none: これらすべての VAX VMS 機能を無効にしま
す。
サブオプションは個別に選択したり無効にしたりすることが
できます (直前に no% を指定) 。
例:
-vax=debug,rsize,no%blank_zero
-vax=
が省略された場合のデフォルトは、 -vax=%all です。
-vpara
並列化警告メッセージを表示します。
OpenMP または Sun/Cray 並列指令および並列プラグマを使用
したときに不正な結果を生じする可能性がある潜在的な並列
プログラミング関連の問題に関する警告を発行します。
-xopenmp および OpenMP API 指令と併用するか、
-explictpar および C$MIC DOALL 並列化指令と併用してくだ
さい。
警告は、コンパイラが次の状況を検出したときに発行されま
す。
o C$MIC DOALL 指令を使用してループが並列化されてい
て、ループの繰り返しの間にデータの依存関係がある。
o OpenMP データ共有属性句の使われ方に問題ある。たと
えば、変数が "shared" と宣言されていて、OpenMP 並
列領域内でのそのアクセスでデータ競合を起こす可能性
がある、あるいは変数が "private" と宣言されてい
て、並列領域内のその値が並列領域の後ろで使用される
など。
並列化指令がすべて問題なく処理された場合、警告は表示さ
れません。
例
f95 -xopenmp -vpara any.f
注 :Sun Studio コンパイラは、OpenMP 2.5 API 並列化機能
をサポートしています。このため、MP プラグマおよび Cray
指令は非推奨になっています。OpenMP API への移行について
は、『OpenMP API ユーザーズガイド』を参照してください。
-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 プログラミングガイド』を参照してくだ
さい。
-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) を指定しま
す。
このオプションは、コンパイラが生成するコードを、指定し
た命令セットアーキテクチャーの命令だけに制限します。つ
まり、指定した命令セットだけを許可します。このオプショ
ンは、ターゲット固有の命令が使用されるとは限りません。
ただし、このオプションを使用すると、バイナリプログラム
の移植性に影響がある可能性があります。この項目の最後に
ある注意と警告を参照してください。
注:メモリーモデル LP64 (64 ビット) または ILP32 (32
ビット) を意図的に指定する場合は、それぞれ -m64、-m32
オプションを使用してください。次に示すように以前のリ
リースとの互換性を維持する場合を除き、-xarch フラグはメ
モリーモデルを指示しなくなりました。
値 (すべてのプラットフォーム) は次のとおりです。
値 意味
generic 大部分のプロセッサに共通する命令セットを使用
してコンパイルします。
generic64 ほとんどの 64 ビットプラットフォームでコンパ
イルします。(Solaris のみ)
次のオプションはこのオプションと同義です。
-m64 -xarch=generic
このオプションは、以前のリリースとの互換性を
維持するために提供されています。64 ビットコン
パイルを指定するには、-xarch=generic64 ではな
く -m64 を指定してください。
native 当該システムで良好なパフォーマンスを得られる
ようにコンパイルします
コンパイラは、自身が実行されているシステムプ
ロセッサに合った適切な設定を選択します。
native64 当該システムで良好なパフォーマンスを得られる
ようにコンパイルします (Solaris のみ)
次のオプションはこのオプションと同義です。
-m64 -xarch=native
このオプションは、以前のリリースとの互換性を
維持するために提供されています。
SPARC プラットフォームでの値:
sparc SPARC-V7 ISA に合ったコンパイルをします。
Visual Instruction Set (VIS) およびその他の実
装に固有の ISA 拡張のない V9 ISA 向けにコンパ
イルします。このオプションにより、V9 ISA で良
好なパフォーマンスを得るためのコードを生成で
きます。
sparcvis VIS を持つ SPARC-V9 ISA 向けにコンパイルしま
す。
Visual Instruction Set (VIS) version 1.0 およ
び UltraSPARC 拡張を持つ SPARC-V9 向けにコン
パイルします。このオプションによって、
UltraSPARC アーキテクチャーで良好なパフォーマ
ンスを得るためのコードを生成できます。
sparcvis2 UltraSPARC III 拡張を持つ SPARC-V9 ISA 向けに
コンパイルします。
このオプションにより、Visual Instruction Set
(VIS) version 2.0 と UltraSPARC III 拡張を持
つ UltraSPARC アーキテクチャー用のオブジェク
トコードを生成できます。
sparcfmaf sparcfmaf バージョンの SPARC-V9 ISA 向けにコ
ンパイルします。
このオプションにより、コンパイラは、
UltraSPARC 拡張 (Visual Instruction Set (VIS)
version 1.0 など) や UltraSPARC-III 拡張
(Visual Instruction Set (VIS) version 2.0 な
ど)、SPARC64 VI の浮動小数点乗加算の拡張に加
えて SPARC-V9 命令セットの命令を使用できま
す。
-xarch=sparcfmaf は、必ず -fma=fused と組み合
わせてください。またコンパイラが自動的に
multiply-add 命令を使用する機会を見つけるよ
う、適切な最適化レベルを指定してください。
v9 -m64 -xarch=sparc と同等です。
-xarch=v9 を使用して 64 ビットメモリーモデル
を取得する従来のメイクファイルおよびスクリプ
トは、-m64 を使用すればよいだけです。
v9a -m64 -xarch=sparcvis と同等です。以前のリリー
スとの互換性を維持するために提供されていま
す。
v9b -m64 -xarch=sparcvis2 と同等で、以前のリリー
スとの互換性を維持するために提供されていま
す。
また、次のことにも注意してください。
o 従来の 32 ビット SPARC 命令セットアーキテクチャーの
V7 および V8 は -m32 を意味し、-m64 と組み合わせるこ
とはできません。
o sparc または sparcvis を指定してコンパイルされたオブ
ジェクトバイナリファイル (.o) はまとめてリンクし、実
行することができますが、そうすることができるのは、
sparcvis 互換プラットフォーム上だけです。
o sparc、sparcvis、または sparcvis2 を指定してコンパイ
ルされたオブジェクバイナリトファイル (.o) はまとめて
リンクし、実行することができますが、そうすることがで
きるのは、sparcvis2 互換プラットフォーム上だけです。
選択によっては、生成された実行可能ファイルの、以前の
アーキテクチャーでの実行速度が非常に遅くなることがあ
ります。また、これら命令セットアーキテクチャーの多く
で 4 倍精度の浮動小数点命令を使用できますが、コンパイ
ラは生成するコードでそれらの命令を使用しません。
x86 プラットフォームでの値:
値 意味
386 命令セットを Intel 32 ビット 386/486 アーキテ
クチャー用に制限します。
pentium_pro
命令セットを 32 ビット pentium_pro アーキテク
チャー用に制限します。
sse pentium_pro 命令セットに SSE 命令セットを追加
します。
sse2 pentium_pro 命令セットに SSE2 命令セットを追
加します。
amd64 -m64 -xarch=sse2 と同等です (Solaris のみ)。
-xarch=amd64 を使用して 64 ビットメモリーモデ
ルを取得する従来のメイクファイルおよびスクリ
プトは、-m64 を使用すればよいだけです。
pentium_proa
pentium_pro アーキテクチャーに AMD 拡張
(3DNow!、3DNow! 拡張、および MMX 拡張) を追加
します。
ssea 32 ビット SSE アーキテクチャーに AMD 拡張
(3DNow!、3DNow! 拡張、および MMX 拡張) を追加
します。
sse2a SSE2 アーキテクチャーに AMD 拡張 (3DNow!、
3DNow! 拡張、および MMX 拡張) を追加します。
amd64a -m64 -xarch=sse2a と同等です (Solaris のみ)。
sse3 SSE 命令セットに SSE3 命令セットを追加しま
す。
注: x86 プラットフォームで、プログラムの一部で
も -m64 を使用してコンパイルまたはリンクする
場合は、プログラムのすべての部分のコンパイル
に、これらオプションの 1 つを併用します。
デフォルト:
-xarch=isa が指定されなかった場合、デフォルトは次のと
おりです。
SPARC プラットフォームの場合: -xarch=sparc
x86 プラットフォームの場合: -xarch=386
相互の関連性:
このオプションは単独で使用することができますが、
-xtarget オプションの展開内容に含まれており、特定の
-xtarget オプションで設定された -xarch 値を無効にする
目的で使用することもできます。
たとえば、 -xtarget=ultra4 は次のように展開されます。
-xarch=sparcvis -xcache=64/32/4:8192/128/2
-xchip=ultra4
次にコマンドの例を示します。
example% f95 -xtarget=ultra4 -xarch=sparcvis2 ...
この例で、-xarch=sparcvis2 は、-xtarget=ultra2 の展開
内容の -xarch に優先します。
警告:
このオプションを最適化と組み合わせた場合、適切な選択
をすると、指定のアーキテクチャーでの実行可能ファイル
のパフォーマンスを高めることができます。ただし、不適
切な選択をすると、パフォーマンスの深刻な低下を招いた
り、意図したターゲットプラットフォームでバイナリプロ
グラムが実行できなくなったりすることがあります。
-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
-autopar と同義です。
-xbinopt={prepare|off}
(SPARC) あとで binopt(1) を使って最適化、変換、および解
析が可能な形式でバイナリを生成するよう指示します。この
オプションは、実行可能ファイルまたは共有オブジェクトの
構築に使用でき、有効にするには、最適化レベルを -xO1 以
上にする必要があります。このオプションを指定して構築す
ると、バイナリのサイズが少し (約 5%) 増加します。
コンパイルとリンクを別々に行う場合は、コンパイルとリン
クの両方で -xbinopt を指定する必要があります。
example% f95 -o myprog -xbinopt=prepare a.o b.o c.f95
このオプションは、コンパイルに使用する一部ソースコード
がない場合でも、残りコードのコンパイルに使用できます。
その場合は、最終バイナリを作成するリンクステップで、こ
のオプションを使用してください。こうした状況では、この
オプションを指定してコンパイルしたコードのみ最適化、変
換、解析できます。
-xbinopt=prepare と -g を指定してコンパイルすると、デ
バッグ情報が含まれるため、実行可能ファイルのサイズが増
えます。デフォルトは、.BR -xbinopt=off です。
-xcache=c
オプティマイザ用のキャッシュを定義します。
オプティマイザが使用するキャッシュの属性を定義します。
c は、次の 1 つでなければなりません。
o generic
o native
o s1/l1/a1[/t1]
o s1/l1/a1[/t1]:s2/l2/a2[/t2]
o s1/l1/a1[/t1]:s2/l2/a2[/t2]:s3/l3/a3[/t3]
si 、 li 、 ai 、および ti, は、次のように定義されてい
ます。
si レベル i におけるデータキャッシュのサイズ (キロバイ
ト)
li レベル i におけるデータキャッシュの行サイズ (バイト)
ai レベル i におけるデータキャッシュの結合規則
ti i レベルでキャッシュを共有するハードウェアスレッド数
ti パラメータは省略可能です。省略された場合は、値 1
が使用されます。
このオプションは、オプティマイザが使用できるキャッシュ
の属性を指定します。どのキャッシュの属性が使用されるか
は保証されません。
このオプションは単独でも使用できますが、 -xtarget オプ
ションを展開したものの一部です。主に、 -xtarget オプ
ションで指定された値を無効にする (変更する) 場合に使用
します。
-xcache の値は、次のとおりです。
generic
ほとんどのプラットフォームでよいパフォーマンスを
得るためのキャッシュの属性を定義します。これはデ
フォルトです。
native
当該ホストプラットフォームで良好なパフォーマンス
を得られるようにキャッシュ特性を定義します。
s1/l1/a1[/t1]
レベル 1 のキャッシュ属性を定義します。
s1/l1/a1[/t1]:s2/l2/a2[/t2]
レベル 1 と 2 のキャッシュ属性を定義します。
s1/l1/a1[/t1]:s2/l2/a2[/t2]:s3/l3/a3[/t3]
レベル 1、2、および 3 のキャッシュ属性を定義しま
す。
-xcg89
(SPARC) -cg89 と同義です。
このオプションは廃止されています。使用しないでくださ
い。
-xcg92
(SPARC) -cg92 と同義です。
このオプションは廃止されています。使用しないでくださ
い。
-xcheck=v
特別な実行時チェックを実行します。
v は次から選択します。
%all %none stkovf no%stkovf init_local no%init_local
注: x86 プラットフォームでは、 -xcheck=init_local のみ
受け付けられます。 %all は特別な実行時チェックを有効に
します。一方、 %none はこれを無効にします。デフォルト (
-xcheck がコマンド行に指定されなかった場合) は -
xcheck=%none となります。
次のように、サブオプションは複数をコンマで区切って指定
できます。
-xcheck=no%stkovf,init_local
-xcheck=stkovf
(SPARC のみ) 実行時にスタックオーバーフローを検出し
ます。 -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
値は次のとおりです。
sparc64vi
SPARC64 VI プロセッサ向けに最適化します。
ultra UltraSPARC(TM) チップ向けに最適化します。
ultra2 UltraSPARC II チップ向けに最適化します。
ultra2e UltraSPARC IIe チップ向けに最適化します。
ultra2i UltraSPARC IIi チップ向けに最適化します。
ultra3 UltraSPARC III チップ向けに最適化します。
ultra3cu UltraSPARC IIIcu チップ向けに最適化しま
す。
ultra3i UltraSPARC IIIi チップ向けに最適化しま
す。
ultra4 UltraSPARC IV チップ向けに最適化します。
ultra4plus
UltraSPARC IV+ チップ向けに最適化します。
ultraT1 UltraSPARC T1 チップ向けに最適化します。
ultraT2 UltraSPARC T2 チップ向けに最適化します。
generic サポートされている大部分の SPARC プラット
フォームで良好なパフォーマンスが得られる
ように最適化します。(コンパイラデフォルト
)。
native 現在のホストプラットフォームでよいパ
フォーマンスが得られるよう、最適化を行な
います。
あまり一般的でない SPARC プロセッサ名:
super
SuperSPARC チップ向けに最適化します。
super2
SuperSPARC II チップ向けに最適化します。
micro
MicroSPARC(TM) チップ向けに最適化します。
micro2
MicroSPARC II チップ向けに最適化します。
hyper
HyperSPARC(TM) チップ向けに最適化します。
hyper2
HyperSPARC II チップ向けに最適化します。
x86 プラットフォームでの -xchip の値は次のとおりです。
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 ビット
アーキテクチャーでデフォルトです。
abs44 44 ビット絶対アドレスを生成します。
コード、データ、および bss を合計したサイズは
2**44 バイトに制限されます。64 ビットアーキテク
チャーだけで使用できます。
abs64 64 ビット絶対アドレスを生成します。
64 ビットアーキテクチャーだけで使用できます。
pic13 位置独立コード (小規模モデル) を生成します。
-pic と同義です。32 ビットアーキテクチャーでは
最大 2**11 まで、64 ビットアーキテクチャーでは
最大 2**10 までの固有の外部シンボルを参照できま
す。
pic32 位置独立コード (大規模モデル) を生成します。
-PIC と同義です。32 ビットアーキテクチャーでは
最大 2**30 まで、64 ビットアーキテクチャーでは
最大 2**29 までの固有の外部シンボルを参照できま
す。
32 ビットコンパイル時のデフォルトは -xcode=abs32 です。
64 ビットコンパイル時のデフォルトは -xcode=abs44 です。
位置独立コード:
動的共用ライブラリの作成時に -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 コマンドを使用することです。
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 です。
注: このオプションは、 -xipo に置き換えられています。
通常、コンパイラの解析範囲はコマンド行上の個々のファイ
ルに限定されます。たとえば、 -O4 の自動インライン化は、
同じソースファイル内で定義および参照された副プログラム
に限定されます。
-xcrossfile が指定されると、コンパイラはコマンド行に指
定されたすべてのファイルを、それらが単一のソースファイ
ルとして結合されているかのように解析します。
-xcrossfile が有効になるのは、 -O4 または -O5 と共に使
用される場合だけです。 -xcrossfile フラグは、 -S と共に
コンパイルされた場合無視されます。
アセンブリ言語の .s ソースファイルは、ファイルをまたい
だ解析からは除外されます。
このコンパイルから生成されるファイルは (インライン化が
原因で) 相互依存の関係にあり、プログラムにリンクされる
際には 1 つの単位として使用されなければなりません。ルー
チンのどれかが変更されたためにファイルを再コンパイルす
る場合には、すべてのファイルを再コンパイルする必要があ
ります。
このオプションを使用すると、結果的に Makefile の構造に
作用します。
デフォルト (コマンド行で指定が行われない場合) は、
-xcrossfile=0 で、複数のファイルを対象とした最適化は行
われません。 -xcrossfile は -xcrossfile=1 に同じです。
-xdebugformat={stabs|dwarf}
Sun Studio コンパイラでは、デバッガ情報の形式が "stabs"
形式から "dwarf" 形式へと移行しました。このリリースのデ
フォルト値は
-xdebugformat=dwarf です。
このオプションは、移植ツールで使用する際のいずれかの形
式へのアクセス手段として使用してください。デバッガ情報
を読み取るソフトウェアを持っているのでない限り、あるい
は特定のツールがいずれか一方の形式のデバッガ情報を必要
とするのでない限り、このオプションを使用する必要はあり
ません。
-xdebugformat=stabs は、stabs 標準形式でデバッグ情報を
生成します。
-xdebugformat=dwarf は、dwarf 標準形式でデバッグ情報を
生成します。
-xdebugformat を指定しなかった場合は、
-xdebugformat=dwarf と見なされます。引数なしでこのオプ
ションを指定するとエラーになります。
このオプションは、-g オプションを使って記録されたデータ
に影響します。 -g なしでも、少量のデバッグ情報が記録さ
れ、その情報の形式は、このオプションで制御されます。こ
のため、-xdebugformat は、-g が使用されない場合でも影響
します。
dbx およびパフォーマンスアナライザは、stabs および
dwarf 形式の両方を認識するため、このオプションを使用し
ても、どちらのツールの機能にも影響はありません。
これは、過渡的なインタフェースです。マイナーリリースで
あっても、リリースがのたびに互換性のない方法で変更が発
生する可能性があります。
また、stabs と dwarf のどちらも、フィールドまたは値の細
部仕様が進化しています。
オブジェクトまたは実行可能ファイルが "dwarf" または
"stabs" デバッグ情報付きでコンパイルされたかどうかを判
定するには、dwarfdump(1) コマンドを使用します。
-xdepend
-depend と同義です。
-xdryrun
-dryrun と同義です。
-xexplicitpar
-explicitpar と同義です。
-xF Sun Studio パフォーマンスアナライザによる関数レベルの並
べ替えを許可します。
コンパイラ、アナライザ、およびリンカーを使用してコアイ
メージの関数 (副プログラム) を並べ替えることを許可しま
す。 -xF オプションを指定してコンパイルし、続いてアナラ
イザを実行すると、メモリー内の関数がどのように使用され
ているかに応じて、それらの関数の順序を最適化するマップ
ファイルを生成できます。リンカーの -Mmapfile オプション
を使用し、実行ファイルを構築する後続のリンクに対して、
このマップを使用するように指示できます。これにより、実
行ファイルの各関数が個別のセクションに置かれます。(f95
-Mpath オプションはまた、通常のファイルをリンカーに渡し
ます。-Mpath オプションの説明を参照してください。)
メモリー内の副プログラムの並べ替えは、アプリケーション
テキストのページフォルトタイムがアプリケーションタイム
の大部分を消費している場合に便利です。そうでない場合
は、並べ替えによってアプリケーションの全体的なパフォー
マンスが向上しないかもしれません。パフォーマンスアナラ
イザは、Sun Studio の一部です。アナライザの詳細について
は、マニュアル 『プログラムのパフォーマンス解析』を参照
してください。
-xfilebyteorder=options
ビッグエンディアンとリトルエンディアンの、異なる方式の
プラットフォーム間の書式なしのファイルの共有および移植
をサポートします。
このフラグは、書式なし入出力ファイルのバイト順序とバイ
ト列を特定します。options には、次のフラグを組み合わせ
たものを指定する必要があります。少なくとも 1 つ、指定が
存在する必要があります。
littlemax_align:spec
bigmax_align:spec
native:spec
max_align は、ターゲットプラットフォームの最大整列を宣
言します。指定できる値は 1、2、4、8、16 です。境界整列
は、C 言語の構造体との互換性を維持するため、プラット
フォーム依存のバイト列を使用する Fortran VAX 構造体と
Fortran 95 派生型に適用されます。
最大整列が max_align プラットフォームでは、little は
「リトルエンディアン」ファイルを表します。たとえば
little4 が 32 ビット x86 ファイルを表すのに対し、
little16 は 64 ビットの x86 ファイルを表します。
big は、最大整列が max_align の「ビッグエンディアン」
ファイルを表します。たとえば big8 は 32 ビット SPARC
ファイルを表すのに対し、big16 は 64 ビット SPARC ファイ
ルを表します。
native は、コンパイルしているプロセッサプラットフォーム
が使用しているのと同じバイト順序、バイト列の「ネイティ
ブ」ファイルを表します。次の指定は「ネイティブ」と見な
されます。
プラットフォーム 「ネイティブ」の指定
32-bit SPARC big8
64-bit SPARC big16
32-bit x86 little4
64-bit x86 little16
spec には、次をコンマで区切って指定する必要があります。
%all
unit
filename
%all は、"SCRATCH" として開かれている以外のすべてのファ
イルおよび論理装置、またはほかの場所で -xfilebyteorder
に明示的に指定されているすべてのファイルおよび論理装置
を表します。%all は 1 回だけ指定できます。
unit は、プログラムによって開かれた特定の Fortran 装置
番号を表します。
filename は、プログラムによって開かれた特定の Fortran
ファイル名を表します。
使用例:
-xfilebyteorder=little4:1,2,afile.in,big8:9,bfile.out,12
-xfilebyteorder=little8:%all,big16:20
注:
このオプションは、STATUS="SCRATCH" を指定して開かれた
ファイルには適用されません。これらのファイルに対する入
出力操作は、つねに、ネイティブプロセッサのバイト順序お
よびバイト列で行われます。
コマンド行に -xfilebyteorder がない場合は最初のデフォル
トは、-xfilebyteorder=native:%all です。
このオプションでは、ファイル名および装置番号をそれぞれ
1 回だけ宣言できます。
コマンド行に -xfilebyteorder を含める場合は、little か
big、または native の少なくとも 1 つの指定と組み合わせ
る必要があります。
このフラグで明示的に宣言されていないファイルは、ネイ
ティブファイルと見なされます。たとえば
xfilebyteorder=little4:zork.out を指定してコンパイルし
た場合、zork.out は、最大 4 バイトのバイト列を持つリト
ルエンディアンの 32 ビット x86 ファイルと見なされます。
プログラム内のほかのすべてのファイルはネイティブファイ
ルになります。
ファイルに指定されたバイト順序はネイティブプロセッサと
同じであるが、バイト列が異なる場合は、バイトスワップが
行われないにしても、適切なパディングが使用されます。た
とえば -m64 を付けた、64 ビット x86 プラットフォーム向
けのコンパイルで、-xfilebyteorder=little4:filename が指
定された場合などがそうです。
ビッグエンディアンとリトルエンディアンの、異なる方式の
プラットフォーム間で共有されるデータレコード内で宣言す
る型は、同じサイズである必要があります。たとえば、
-xtypemap=integer:64,real:64,double:128 を指定してコン
パイルした SPARC 実行可能ファイルの生成するファイルを、
-xtypemap=integer:64,real:64,double:64 を指定してコンパ
イルした x86 実行可能ファイルが読み取ることはできませ
ん。これは、両者のデフォルトの倍精度データ型のサイズが
異なるためです。
REAL*16 データを含む書式なしのファイルは、REAL*16 をサ
ポートしていない x86 プラットフォームでは使用できないこ
とに注意してください。
非ネイティブとして指定されたファイルに対して、UNION/MAP
データオブジェクト全体を使った入出力操作を行うと、実行
時入出力エラーになります。非ネイティブファイルに対して
は、MAP の個別メンバーを使った入出力操作のみ行うことが
できます。UNION/MAP を含む VAX レコード全体を使った入出
力操作は行えません。
-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 と同義です。
-xhwcprof[={enable|disable}]
(SPARC) データ領域プロファイリング用のコンパイラサポー
トを有効にします。
-xhwcprof を有効にすると、コンパイラは、ツールがプロ
ファイリング対象のロード命令およびストア命令を、それら
の命令の参照するデータ型および構造体メンバーを
(-g で生成されるシンボリック情報とともに) 関連付けるの
に役立つ情報を生成します。プロファイルデータを、ター
ゲットの命令領域ではなくデータ領域に関連付けて、命令プ
ロファイリングだけでは簡単には得られない動作に対する見
通しが得られるようにします。
-xhwcprof で特定の一組オブジェクトファイルをコンパイル
することができますが、このオプションが最も有用なのは、
アプリケーションのすべてのオブジェクトファイルに適用し
た場合です。そうすることで、アプリケーションのオブジェ
クトファイルに分散しているすべてのメモリー参照を特定
し、相関させることができます。
コンパイルとリンクを個別に行う場合は、リンク時にも
-xhwcprof を使用してください。
同じコマンド行上の -xhwcprof=enable または
-xhwcprof=disable の指定は、それ以前のすべての
-xhwcprof 指定に優先します。
デフォルトでは、-xhwcprof は無効です。引数なしの
-xhwcprof の指定は、-xhwcprof=enable と同等です。
-xhwcprof を使用する場合は、最適化を有効にして、デバッ
グデータ形式を dwarf (-xdebugformat=dwarf) に設定します
(ただし、このリリースの Sun Studio コンパイラでは dwarf
がデフォルト)。
-xhwcprof と -g を組み合わせると、-xhwcprof と -g を単
独で指定した場合に増加する容量の合計以上に、一時ファイ
ルの容量要件が増大します。
次は example.f をコンパイルするコマンド例です。ハード
ウェアカウンタプロファイリングと、DWARF シンボルを使用
したデータ型および構造体メンバーのシンボリック解析のサ
ポートを指定しています。
example% f95 -c -O -xhwcprof -g example.f
ハードウェアカウンタプロファイリングの詳細は、『プログ
ラムのパフォーマンス解析』を参照してください。
-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 区間演算プログラミングリ
ファレンス』を参照してください。
-xinline=rl
-inline=rl と同義です。
-xinstrument=[no%]datarace]
スレッドアナライザによる解析用にプログラムをコンパイル
し、計測機構を組み込むには、このオプションを使用しま
す。スレッドアナライザの詳細は、tha(1) を参照してくださ
い。
計測機構の組み込まれたプログラムは、パフォーマンスアナ
ライザから collect -r races を使用して実行し、データ競
合検出用実験を作成することができます。計測機構の組み込
まれたコードはスタンドアロン実行できますが、実行速度が
遅くなります。
この機能を無効にするには、-xinstrument=no%datarace を指
定します。デフォルトは、この設定です。
-xinstrument には、必ず引数を指定してください。
コンパイルとリンクを個別に行う場合は、コンパイルとリン
クの両方で -xinstrument=datarace を指定してください。
このオプションは、プリプロセッサトークンの __THA_NOTIFY
を定義します。#ifdef __THA_NOTIFY を指定することで、
libtha(3) ルーチンの呼び出しを保護できます。
このオプションはまた、-g も設定します。
-xinterval[={widestneed|strict|no}]
(SPARC) 区間演算の拡張機能の処理を有効にします。
区間演算は、Fortran 95 における数値計算技法の拡張機能で
す。詳細については、Fortran 95 のマニュアルを参照してく
ださい。
このフラグは、許可される式評価構文を制御します。
-xinterval が値なしで指定されると、デフォルトの
widestneed が使用されます。
no が指定されると、区間演算は有効になりません。
widestneed
混在モードの式に含まれるすべての非区間変数と非区間リ
テラルを、その式における最大幅の区間データ型に拡張し
ます。
strict
型または長さが混在した区間式を禁じます。区間の型と長
さの変換はすべて明示的でなければなりません。
-xipo[={1|0|2}]
相互手続きの最適化を行います。
相互手続き解析パスを起動して、プログラム全体を最適化し
ます。 -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 を指定してコンパイルされた実行可能ファイルを並
列 make ツールで構築すると、問題が起きることがありま
す。この問題が起きるのは、構築に使用されるオブジェク
トファイルが、並列動作するリンクでも使用される場合で
す。この問題を回避するには、リンクの実行前にオブジェ
クトファイルの各リンク専用のコピーが最適化されるよう
にしてください。
-xipo を指定しないでコンパイルしたオブジェクトは、こ
のフラグを使用してコンパイルされていないオブジェクト
に自由にリンクできます。
-xjobs も参照してください。
-xipo_archive={none|readonly|writeback}
(SPARC) ファイル相互の最適化でアーカイブ (.a) ライブラ
リを取り込むことを可能にします。
none アーカイブファイルの処理を行いません。
コンパイラは、-xipo を使用してコンパイルされ、
リンク時にアーカイブライブラリから抽出されたオ
ブジェクトファイルにモジュール間インライン化や
その他のモジュール間最適化を適用しません。アー
カイブファイルの処理を行うには、リンク時に
-xipo と -xipo_archive=readonly または
-xipo_archive=writeback のいずれかを指定しま
す。
readonly
コンパイラは、実行可能ファイルを生成する前に、
-xipo を指定してコンパイルされた、アーカイブラ
イブラリ (.a) 内のオブジェクトファイルを使っ
て、リンカーに渡すオブジェクトファイルを最適化
します。
-xipo_archive=readonly オプションは、リンク時に
指定されたアーカイブライブラリ内のオブジェクト
ファイルに対するモジュール間インライン化および
相互手続きデータフロー解析を有効にします。ただ
し、モジュール間インライン化によってほかのモ
ジュールに挿入されたコードを除き、アーカイブラ
イブラリのコードのモジュール間の最適化が行われ
るわけではありません。
アーカイブライブラリ内のコードにモジュール間最
適化を適用するには、-xipo_archive=writeback が
必要です。このオプションを指定すると、コードの
抽出元のアーカイブライブラリの内容が変更されま
す。
writeback
コンパイラは、実行可能ファイルを生成する前に、
-xipo を付けてコンパイルされてアーカイブライブ
ラリ (.a) に存在するオブジェクトファイルととも
に、リンカーに渡されたオブジェクトファイルを最
適化します。このライブラリに含まれていて、コン
パイル中に最適化されたオブジェクトファイルはす
べて、その最適化したバージョンに置き換えられま
す。
アーカイブライブラリセットを共用する並列リンク
の場合は、リンクの実行前に、アーカイブライブラ
リの各リンク専用のコピーを作成し、それらコピー
が最適化されるようにしてください。
-xipo_archive の値が指定されていない場合、コンパイラは
-xipo_archive=none と見なします。
-xjobs=n
複数のプロセッサを使用してコンパイルします。
-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 宣言を無視する効果があり、ユーザー指定の組
み込みルーチンは無視されます。
コンパイラによって組み込み関数として認識される関数の
一覧は、『Fortran ライブラリ・リファレンス』の第 2
章と第 3 章を参照してください。
-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
(廃止) このオプションは、無視され、メッセージも表示され
ません。
-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 となっています。
-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
-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 SPARC 64ビットプラットフォームの場合は、4 バイト
以下の整列に対してシグナル SIGBUS を発生させ、そ
れ以外ではアクセスを解釈して実行を継続します。そ
れ以外の -xarch 値の場合、 f フラグは i と同等で
す。
デフォルト:
-xmemalign フラグが出現しない場合に適用される最初のデ
フォルトは次のとおりです:
32 ビット SPARC プラットフォームの場合は
-xmemalign=8i
C および C++ の 64 ビットプラットフォームの場合は
-xmemalign=8s
Fortran の 64 ビットプラットフォームの場合は
-xmemalign=8f
値が指定されていない -xmemalign が出現する場合に適用さ
れる 2 番目のデフォルトは次のとおりです。
すべてのプラットフォームとも -xmemalign=1i
-xmemalign
そのものは、特定のデータ整列を強制的に行わせるわけでは
ないことに注意してください。 -dalign または -
aligncommon を参照してください。
-xmodel=[a]
(x86) Solaris x64 プラットフォームでの共有オブジェクト
のデータアドレスモデルを指定します。
-xmodel オプションを使用すると、Solaris x64 プラット
フォーム向けの 64 ビット共有オブジェクトを作成できま
す。このオプションは、そうしたオブジェクトのコンパイル
にのみ使用してください。
このオプションは、64 ビット対応の x64 プロセッサで -m64
も指定されている場合にのみ有効です。
a には、次のいずれかを指定します。
small
実行するコードの仮想アドレスがリンク時に判明してい
て、すべてのシンボルが、0 〜 2^31 - 2^24 - 1 の範
囲の仮想アドレスに配置されることが判明している
small モデル用のコードを生成します。
kernel
すべてのシンボルを 2^64 - 2^31 〜 2^64 - 2^24 の範
囲に配置すると定義されている kernel モデル用のコー
ドを生成します。
medium
データセクションへのシンボリック参照の範囲に関する
条件のない medium モデル用のコードを生成します。テ
キストセクションは、small コードモデルと同じサイズ
およびアドレスの制限を受けます。大量の静的データが
あるアプリケーションのコンパイルで -m64 を使用する
ときは、-xmodel=medium が必要になることがありま
す。
-xmodel が指定されていない場合は、-xmodel=small と見な
されます。引数なしで -xmodel を指定すると、エラーになり
ます。
アクセスするオブジェクトが範囲内にあることが保証される
限り、必ずしも、すべてのルーチンのコンパイルでこのオプ
ションを使用する必要はありません。
必ずしもすべての Linux プラットフォームで、medium モデ
ルがサポートされるわけではありません。
-xnolib
-nolib と同義です。
-xnolibmil
-nolibmil と同義です。
-xnolibmopt
-xlibmopt を取り消します。
-fast と併用すると、最適化した数学ライブラリとのリンク
を取り消します。
-xO[n]
-O[n] と同義です。
-xopenmp[={parallel|noopt|none}]
Fortran 95 OpenMP version 2.5 指令による明示的な並列化
を有効にします。
このフラグは、次のサブオブションキーワードを受け付けま
す。
parallel
OpenMP プラグマの検出を有効にします。
-xopenmp=parallel の最低最適化レベルは -xO3 です。
最適化レベルがこれより低い場合、コンパイラは -xO3
に変更し、警告を発行します。
noopt
最適化レベルを上げることなく OpenMP プラグマの検出
を有効にします。
コンパイルで最適化レベルと -xopenmp=noopt を指定す
る場合、最適化レベルは -xO3 以上にします。-xO3 以
上を指定しないと、コンパイルエラーが発行されます。
-xopenmp=noopt を指定して最適化レベルを指定しな
かった場合は、OpenMP プラグマが認識され、それに
従ってプログラムが並列化されますが、最適化は行われ
ません。
none
OpenMP プラグマの検出を無効にします。最適化レベル
は変更されず、OpenMP 関係のプリプロセッサ文字列は
定義されません。(これが、-xopenmp が指定されなかっ
た場合のデフォルトの動作です。)
サブオプションキーワードのない -xopenmp だけの指定は -
xopenmp=parallel と同等です。このデフォルトは、今後のリ
リースで変更される可能性があります。-xopenmp とともに最
適化レベルを明示的に指定することによって警告メッセージ
を回避できます。
サブオブションの parallel 、または noopt は、 _OPENMP
プリプロセッサ文字列を 200525 と定義します。
サブオブションの parallel および noopt は、 -stackvar
を自動的に呼び出します。
dbx を使用して OpenMP プログラムをデバッグする場合は、
コンパイル時に
-g -xopenmp=noopt
を指定し、並列領域内にブレークポイントを設定して、変数
の内容を表示できるようにしてください。
マルチスレッド環境で並列化プログラムを実行する場合は、
実行前に OMP_NUM_THREADS 環境変数を設定してください。こ
の変数は、プログラムが作成可能な最大スレッド数を実行時
システムに指示します。デフォルトは 1 です。一般に、
OMP_NUM_THREADS には、実行中のシステムで使用可能な仮想
プロセッサ数を設定します。このプロセッサ数は、Solaris
の psrinfo(1) コマンドを使用して確認できます。
入れ子並列を有効にするには、 OMP_NESTED 環境変数を TRUE
に設定します。デフォルトでは、入れ子並列は無効です。詳
細は、 『Sun Studio OpenMP API ユーザーズガイド』の入れ
子並列に関する章を参照してください。
コンパイルとリンクを別々に実行する場合は、リンク時にも
-xopenmp を含めてください。これは、動的ライブラリ (.so)
のコンパイル時に特に重要です。OpenMP 指令を含むライブラ
リのコンパイルと、それらライブラリを参照するプログラム
のコンパイルには、同じリリースのコンパイラを使用してく
ださい。
最高のパフォーマンスを機能を得るには、必ず、OpenMP 実行
時ライブラリ (libmtsk.so) の最新のパッチを実行中のシス
テムにインストールしてください。
Fortran 95 OpenMP については、 『Sun Studio OpenMP API
ユーザーズガイド』を参照してください。
-xpad
-pad と同義です。
-xpagesize=n
スタックおよびヒープの優先ページサイズを設定しま
す。
The n の値は次のいずれかでなければなりません。
SPARC の場合:
8K 64K 512K 4M 32M 256M 2G 16G または default。
x86 の場合:
4K 2M 4M
対象となるプラットフォーム上の Solaris OS 環境で有
効なページサイズを指定する必要があります。
getpagesize(3C) を使用するとそのサイズがわかりま
す。有効なページサイズを指定しなかった場合、その要
求は実行時に無視され、何もメッセージは出されます。
Solaris OS 環境ではページサイズ要求が尊重されるこ
とを保証していません。
pmap(1) または meminfo(2) を使って、対象となるプ
ラットフォームのページサイズを判断することができま
す。
-xpagesize=default を指定すると、このフラグは無視
されます。 -xpagesize に引数を指定しない場合、
-xpagesize=default と同じことになります。
このオプションは次のためのマクロです。
-xpagesize_heap=n -xpagesize_stack=n
この 2 つのオプションは、 -xpagesize と同じ引数を
受け付けます。 -xpagesize=n と指定して上記の 2 つ
のオプションに同じ値を設定することができ、あるいは
これらを別々に指定して異なる値に設定することも可能
です。
このフラグを使ってコンパイルすることは、同じオプ
ションを使って LD_PRELOAD 環境変数を mpss.so.1 に
設定すること、またはプログラム実行前に同じオプショ
ンを使って Solaris OS 9 コマンドの ppgsz(1) 実行す
るのと同様の効果があります。詳細は Solaris OS 環境
に関するマニュアルページを参照してください。
-xpagesize_heap=n
ヒープのためのメモリーのページサイズを設定します。
n は、 -xpagesize で説明しているものと同じです。対
象となるプラットフォームの Solaris OS 環境で有効な
ページサイズを指定しなければなりません。この値は
getpagesizes(3C) で確認できます。有効なページサイ
ズを指定しなかった場合、その要求は実行時に無視さ
れ、何もメッセージは出力されません。
この機能は Solaris OS 7 および 8 環境では使用でき
ません。
詳細については -xpagesize を参照してください。
-xpagesize_stack=n
(SPARC) スタックためのメモリのページサイズを設定し
ます。
n は、 -xpagesize で説明しているものと同じです。対
象となるプラットフォームの Solaris OS 環境で有効な
ページサイズを指定しなければなりません。この値は
getpagesizes(3C) で確認できます。有効なページサイ
ズを指定しなかった場合、その要求は実行時に無視さ
れ、何もメッセージは出力されません。
この機能は Solaris OS 7 および 8 環境では使用でき
ません。
詳細は -xpagesize を参照してください。
-xparallel
-parallel と同義です。
-xpentium
(x86) -xtarget=pentium と同じ
-xpg -pg と同義です。
-xpp={fpp|cpp}
.F .F95 .F03 ファイルに使用するソースファイルプリ
プロセッサを選択します。
デフォルトは fpp です。Fortran には fpp の使用が適
しています。旧バージョンのコンパイラでは、標準の C
言語プリプロセッサ cpp が使用されていました。 cpp
を選択するには、 -xpp=cpp を指定します。
-xprefetch[=a[,a]]
先読み命令 (プリフェッチ) をサポートするアーキテク
チャー上で先読み命令を使用および調整できるようにし
ます。
a は、次のいずれかの値でなくてはなりません。
値 意味
auto 先読み命令を自動生成できるようにし
ます。
no%auto 先読み命令を自動生成できないように
します。
explicit 明示的な先読みマクロを有効にしま
す。
no%explicit は、明示的な先読みマクロを無効にし
ます。
latx:factor (SPARC) コンパイラによるロード命令
とストア命令に対する先読み命令の、
「潜在期間」の仮定値を、指定された
因数 (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=auto,explicit とみなされます。
-xprefetch だけが指定されている場合は、
-xprefetch=auto,explicit
とみなされます。
-xprefetch または -xprefetch=yes など、自動先読み
が有効だが遅延要素が指定されない場合は、 latx:1.0
とみなされます。
相互の関連性:
-xprefetch=explicit が指定されると、コンパイラは次
の指令を認識します:
C$PRAGMA SUN_PREFETCH_READ_ONCE (address)
C$PRAGMA SUN_PREFETCH_READ_MANY (address)
C$PRAGMA SUN_PREFETCH_WRITE_ONCE (address)
C$PRAGMA SUN_PREFETCH_WRITE_MANY (address)
-xchip 設定は、「潜在期間」の仮定値の決定と、それ
による latx:factor 設定の結果に影響します。
latx:factor サブオプションは、自動先読みが可能な場
合のみ、有効です。つまり、 auto と共に使用しない限
り、 latx:factor は無視されます。
警告:
明示的な先読みは、測定方法がサポートする特別な環境
だけで使用してください。
コンパイラは、広範囲に渡るマシンおよびアプリケー
ションで、パフォーマンスを最適にするように先読みメ
カニズムを調整するので、パフォーマンステストにより
明らかに利点があるとわかった場合のみ、 latx:factor
サブオプションを使用してください。先読み命令の「潜
在期間」の仮定値は、リリース間で異なる可能性があり
ます。そのため、別のリリースに切り替えるたびに「潜
在期間」がパフォーマンスに与える影響をテストし直す
ことを強くお勧めします。
-xprefetch_auto_type=[no%]indirect_array_access
間接アクセスされるデータ配列に対する間接先読み命令
を生成します。
[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
prefetch 命令の挿入の程度を制御します。
このオプションは、-xprefetch=auto を使用して、最適
化レベル 3 以上 (-xO3) で、prefetch をサポートする
プラットフォームでコンパイルする場合にのみ有効で
す。
n は 1、2、3 のいずれかです。
-xprefetch=auto でのデフォルトはレベル 2 です。
prefetch レベル 2 では、レベル 1 を超える prefetch
命令の追加生成が可能です。prefetch レベル 3 では、
レベル 2 を超える prefetch 命令の追加生成が可能で
す。
古い SPARC および x86 プラットフォームでは、先読み
レベル 2 および 3 が有効でないことがあります。
-xprofile=p
実行時プロファイルデータを収集するか、これらのデー
タで最適化を行います。
実行中の実行頻度データを収集および保存します。そし
て、収集したデータをその後の実行で使用することによ
り、パフォーマンスを上げます。
p は collect[:nm]、use[:nm]、または tcov でなけれ
ばなりません。
注: Linux システムでの共有ライブラリの構築では、
-xprofile=collect および -xprofile=tcov を使用しな
いでください。
コンパイルとリンクを別の段階で行う場合、リンク時に
はコンパイル時と同じ -xprofile オプションを使用し
なければなりません。
collect[:nm]
実行頻度データを収集および保存します。あ
とで -xprofile=use を指定すると、オプティ
マイザがこのデータを使用できます。コンパ
イラは、文の実行頻度を測定するコードを生
成します。
nm の名前は省略可能です。省略された場合
は、実行可能なバイナリの名前が使用されま
す。(-o name が指定されなかった場合は、
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 は省略可能です
が、省略された場合は、-o name が指定され
ていても、a.out が使用されます。コンパイ
ラは nm.profile/feedback または
a.out.profile/feedback (nm が指定されてい
ない場合) を検索します。次に例を示しま
す。
f95 -xprofile=collect -o myexe prog.f
f95 -xprofile=use:myexe -xO5 -o myexe prog.f
プログラムは、実行頻度データを元に最適化
されます。このデータは、
-xprofile=collect 付きでコンパイルしたプ
ログラムが前回実行された際に作成された
フィードバックファイルに生成され、保存さ
れます。
ソースファイルおよびその他のコンパイルオ
プションは、feedback ファイルを生成する実
行可能ファイルのコンパイルで使用したのと
完全に同じものを指定してください。
-xprofile=collect:nm を使用してコンパイル
した場合、同じプログラム名 nm を最適化コ
ンパイルでも指定しなければなりません (
-xprofile=use:nm )。
collect 段階と use 段階との間のコンパイル
の高速化については -xprofile_ircache も参
照してください。
tcov 新しいスタイルの tcov(1) を使用する基本的
なブロックカバレージ解析。
コードの使用法は -a と似ていますが、ソー
スファイルごとに .d ファイルは生成されま
せん。その代わりに、単一のファイルが生成
されます。このファイルの名前は、最終実行
可能ファイルの名前に基づきます。たとえ
ば、 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
-reduction と同義です。
-xregs=r
レジスタの使用法を指定します。
生成されるコードのレジスタの使用法を指定します。
r は、コンマで区切った 1 つまたは複数の [no%]appl
、 [no%]float 、 [no%]frameptr のリストです。
例 : -xregs=appl,no%float
機能を無効にするには、その機能の前に [no%] を置き
ます。
-xregs の値は、 -xarch の値に固有です。
appl (SPARC のみ)
一時レジスタとしてアプリケーションレジス
タを使用するコードを、コンパイラが生成す
るのを許可します。レジスタは、32 ビットプ
ラットフォームの g2、 g3、 g4 と 64 ビッ
トプラットフォームの g2、 g3 です。
float (SPARC のみ)
整数値のための一時レジスタとして浮動小数
点レジスタを使用するコードをコンパイラが
生成するのを許可します。このオプションは
浮動小数点値のために浮動小数点レジスタを
使用することにはまったく影響ありません。
frameptr (x86 のみ)
フレームポインタレジスタ (x86 32 ビット
プラットフォームの場合は %ebp、64 ビット
プラットフォームの場合は %rbp) を未割り当
ての呼び出し先保存レジスタとして使用する
ことを許可します。
未割り当ての呼び出し先保存レジスタとして
フレームポインタレジスタを使用すると、プ
ログラムの実行時パフォーマンスが向上する
ことがあります。ただし、スタックを調べ、
追跡するために、パフォーマンスアナライザ
や dtrace などの一部ツールの能力の低下を
招きます。このスタック調査機能は、システ
ムパフォーマンスの測定やチューニングの際
に重要です。このため、この最適化を使用す
ると、グローバルなシステムパフォーマンス
を犠牲にしてローカルのプログラムパフォー
マンスが向上することがあります。
frameptr は、コンパイルで -xpg または -p
と併用すると無視されます。
デフォルトは SPARC の場合は -xregs=appl,float 、
x86 の場合は -xregs=appl,float,no%frameptr です。
アプリケーションとリンクする共有ライブラリ用のコー
ドは、 -xregs=no%appl,float を指定してコンパイルす
ることを推奨します。少なくとも、リンクするアプリ
ケーションでのレジスタ処理に問題がないように、共有
ライブラリがアプリケーションレジスタを使用する方法
を明示的に指示する必要があります。
たとえば、大局的な方法で (重要なデータ構造体を示す
ためにレジスタを使用するなど) レジスタを使用するア
プリケーションは、ライブラリと確実にリンクするた
め、-xregs=no%appl なしでコンパイルされたコードを
含むライブラリがアプリケーションレジスタをどのよう
に使用するかを正確に認識しておく必要があります。
-xs オブジェクトファイルなしで dbx によるデバッグができ
るようにします。
このオプションは、デバッグ情報すべてを実行可能ファ
イルにコピーします。dbx パフォーマンスやプログラム
の実行時パフォーマンスにはほとんど影響を与えません
が、使用するディスクスペースの量は増えます。
-xs を使用すると、実行可能ファイルを別のディレクト
リに移動した場合に、オブジェクト (.o) ファイルを無
視して dbx を使用できます。このオプションは、 .o オ
ブジェクトファイルを保持できない場合に使用してくだ
さい。
-xsafe=mem
(SPARC) メモリー保護違反が発生しないことを前提とし
て、コンパイラを動作させます。
このオプションは、コンパイラが、SPARC V9 アーキテク
チャーでフォルト発生を想定しないロード命令を使用す
ることを許可します。
警告:
フォルト発生を想定しないロード命令は、アドレス割り
当ての失敗やセグメント違反のようなフォルトが発生し
た場合でも、トラップを発生させません。そのためこの
オプションは、そのようなフォルトが起こり得ないプロ
グラムでのみ使用してください。メモリーに基づいたト
ラップを発生させるプログラムはごく少数なので、この
オプションはほとんどのプログラムで安全に使用できま
す。しかし、例外的な状態を処理するために、メモリー
に基づいたトラップを明示的に使用しているプログラム
では、このオプションは使用しないでください。
相互の関連性:
このオプションは、 -xO5 の最適化レベルで、かつ、次
のいずれかの値をとる -xarch オプションと一緒に使用
された場合にのみ有効です。値: sparc, sparcvis,
sparcvis2, for both -m32, and -m64.
-xsb
-sb と同義です。
-xsbfast
-sbfast と同義です。
-xspace
コードのサイズを増やしません。
コードのサイズを増やす最適化を行いません。
例: ループは展開しません。
-xtarget=t
命令セットと最適化用のターゲットシステムを指定しま
す。
t は native 、 native64 、 generic 、 generic64 、
またはシステム名の 1 つでなければなりません。
-xtarget オプションを使用すると、実システムで発生す
る -xarch 、 -xchip 、および -xcache の組み合わせを
簡単に指定できます。 -xtarget の唯一の意味は、その
展開の中にあります。
-xtarget の値は、次のとおりです。
native: ホストシステムで最良のパフォーマンスを得る
ことができます。(32 ビットアーキテクチャー) 次のよ
うに展開されます。
-m32 -xarch=native -xchip=native -xcache=native
native64: これは廃止されています。代わりに
-xtarget=native -m64 を使用してください。
generic: ほとんどの 32 ビットプラットフォームで最
良のパフォーマンスを得られるように最適化します。こ
れがデフォルトで、次のように展開されます。
-m32 -xarch=generic -xchip=generic -xcache=generic
generic64: これは廃止されています。代わりに
-xtarget=generic -m64 を使用してください。
プラットフォーム名: 指定したシステムで最良のパ
フォーマンスを得ることができます。
有効な 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, ultra3i, ultra4, ultra4plus, ultraT1
ultraT2, sparc64vi。
次のターゲットプラットフォームは -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
ソフトウェア向けコンパイルであることは、-m64 オプ
ションによって指示されます。-xtarget を指定する場合
は、次のように -m64 も指定してください。
-xtarget=ultra2 ... -m64
この指定がないと、32 ビットメモリーモデルが使用され
ます。
x86 システムの場合は、有効なプラットフォーム名は次
のとおりです。 generic、 native、 pentium、
pentium_pro、 pentium3、 pentium4、および opteron。
64 ビット x86 AMD Opteron プラットフォームの 64
ビット Solaris ソフトウェア向けコンパイルであること
は、次に示すように -m64 フラグによって指示されま
す。
-xtarget=opteron -m64
この指定がない場合は、32 ビット x86 向けのコンパイ
ルに戻ります。
-xtarget の展開については、『Fortran ユーザーズガイ
ド』を参照してください。各プラットフォーム名に対し
て使用される -xarch -xchip -xarch の値が示されてい
ます。
このオプションはマクロです。-xtarget の各値は、
-xarch 、 -xchip 、および -xcache オプションの特定
の値に展開されます。たとえば、 -xtarget=ultra4 は、
-xarch=sparcvis -xcache=64/32/4:8192/128/2
-xchip=ultra4 と同義です。
実行中のシステムでの -xtarget の展開内容を確認する
には、次のコマンドを実行します。
f95 -xtarget=platform_name -dryrun |& grep ###
例:
f95 -dryrun -xtarget=ultra4 |& grep ###
### command line files and options (expanded):
### -dryrun -xarch=sparcvis -xcache=64/32/4:8192/128/2 -xchip=ultra4
あるホストプラットフォームの -xtarget が、そのプ
ラットフォームでコンパイルするときの
-xtarget=native と同じ -xarch、-xchip、-xcache の設
定に展開されない場合があります。
-xtime
-time と同義です。
-xtypemap=spec
デフォルトのデータマッピングを指定します。
このオプションを使用すると、デフォルトのデータ型に
対するバイトサイズを柔軟に指定できます。
文字列 spec の構文は次のとおりです:
type:bits,type:bits,...
許可されるデータ型は、 REAL、 DOUBLE、および
INTEGERです。許可されるデータサイズは、 16、 32、
64、および 128 です。
このオプションは、 REAL XYZ のように、明示的なバイ
トサイズが指定されることなく宣言されるすべての変数
に適用されます。
許可される組み合わせを次に示します。
real:32
real:64
double:64
double:128
integer:16
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[=[[no%]lib,[no%]simd, %none] ]
ベクトルライブラリ関数への呼び出しの自動生成を有効
にします。
-xvector を指定してコンパイルする場合は、デフォルト
の丸めモード -fround=nearest を使用する必要がありま
すす。
-xvector=lib により、コンパイラは、ループ内の数学ラ
イブラリへの呼び出しを、同等のベクトル数学ルーチン
への単一の呼び出しに変換します (変換が可能な場合)。
ループカウントが多いループのパフォーマンスが向上す
ることがあります。-xvector=no%lib は、この機能を無
効にします。
-xvector=simd により、ネイティブの x86 SSE SIMD 命
令を使用し、特定のループのパフォーマンス向上を図る
ことができます。コンパイラは、ターゲットアーキテク
チャーが SIMD 命令をサポートしている場合にのみ、こ
のスイッチを受け付けることができます。たとえば、
-xarch=sse2 -m64 または -xarch=generic64 を指定する
必要があります。 -xvector=simd とともに、 -xdepend
ばかりでなく、最適化レベル -xO3 以上を指定する必要
もあります。-xvector=no%simd は、この機能を無効にし
ます。
-xvector=simd 単独ではなく、 -xvector=simd および
-fsimple=2 の両方を使用すると、パフォーマンスが向上
します。ただし、 -fsimple=2 では、浮動小数点演算の
順序変更が可能になるため、浮動小数点の演算結果が少
し異なることがあります。
デフォルトは -xvector=%none です。 -xvector1 とだけ
指定して、フラグを指定しないと、 -xvector=lib とみ
なされます。
コンパイラは、ロードステップで libmvec ライブラリを
取り込みます。コンパイル時に -xvector=lib を指定し
た場合は、リンク時にも指定する必要があります。
このオプションは、それ以前の同じオプションの指定に
優先するため、 -xvector=lib のあとに -xvector=%none
を指定すると、 -xvector=lib は取り消されます。
-ztext
再配置が残った状態では、ライブラリを作成しません。
-ztext は、主に、生成されるライブラリが純粋なテキス
トであるかどうか評価するために使用します。これは、
命令がすべて位置独立コードであるかを確認することで
す。したがって、通常はこのオプションは、 -G と -pic
と併用します。
-ztext を使用すると、テキストセグメントに不完全な再
配置を検出した場合、 ld はライブラリを構築しませ
ん。データセグメントに不完全な再配置を検出した場
合、 ld は一般的にライブラリを構築します。つまり、
データセグメントは書き込み可能です。
-ztext を使用しないと、再配置の状態にかかわらず、
ld はライブラリを構築します。
典型的な使用法は、 -pic を指定してオブジェクトファ
イルを作成したかどうかが判明しない場合に、ソース
ファイルとオブジェクトファイルの両方からライブラリ
を作成することです。
上記以外の引数は、リンカーのオプション引数、 f95 互換オ
ブジェクトプログラムの名前 (通常は事前に作成されたオブ
ジェクト)、または f95 と互換性のあるルーチンのライブラ
リとみなされます。これらのプログラムを指定されたコンパ
イルの結果とともに (指定された順で) リンクして実行可能
プログラムを作成し、 -o オプションで指定されたファイル
( -o オプションが指定されていない場合は a.out ) に出力
します。
ファイルの接尾辞
コンパイラのコマンド行には次の接尾辞を持つファイルを指定でき
ます。接尾辞は通常、ファイルの型を識別し、コンパイラのファイ
ル処理方法を決定します。
.f .for
固定形式の Fortran ソースファイル。
.f90 .f95 .f03
自由形式の Fortran 90、Fortran 95、または Fortran 2003
ソースファイル。
.F プリプロセッサ指令を含む固定形式の Fortran ソース。これ
らのファイルは、コンパイルの前に fpp(1) により事前処理
されます (-xpp= オプションも参照)。
.F90 .F95
プリプロセッサ指令を含む自由形式の Fortran 95 ソース
ファイル。これらのファイルは、コンパイルの前に fpp(1)
により事前処理されます (-xpp= オプションも参照)。
.s アセンブラソースファイル。
.il インラインアセンブラ展開コードテンプレートファイル。コ
ンパイラはこのファイルを使用して、選択したルーチンの呼
び出しをインラインコードに展開します。インラインテンプ
レートファイルの詳細は、inline(1) マニュアルページと
-inline オプションフラグを参照してください。
.o リンカーに渡されるオブジェクトファイル。
.so リンカーに渡される共用オブジェクトファイルまたはライブ
ラリ。
.a リンカーに渡される、すなわち MODULE サププログラムが検
索されるライブラリファイル (-M オプションフラグを参照
)。
.mod 事前コンパイルされた MODULE プログラムユニットを含む
ファイル。コンパイラによって生成されます。-M オプション
を参照してください。
指令
一般的な指令: 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)
C$PRAGMA SUN_PREFETCH_READ_ONCE (name)
C$PRAGMA SUN_PREFETCH_READ_MANY (name)
C$PRAGMA SUN_PREFETCH_WRITE_ONCE (name)
C$PRAGMA SUN_PREFETCH_WRITE_MANY (name)
!$PRAGMA IGNORE_TKR list
C$PRAGMA ASSUME (expression [, probability])
並列化指令: f95 は、OpenMP API 並列化指令を認識します。
OpenMP は、すべての Sun Studio コンパイラの明示的並列化のた
めの推奨モデルです。
このリリースでは、f95 コンパイラはバージョン 2.5 の OpenMP
Fortran 95 API を受け入れます。指令標識は !OMP です。
Sun Studio OpenMP 実装の詳細については、『OpenMP API ユー
ザーズガイド』を参照してください。
f95 (SPARC のみ) 従来の Sun および Cray 形式の並列化指令も認
識します。ただし、これら指令は廃止されていて、すでにサポート
されていません。(x86 では、Sun/Cray 並列化指令は認識されませ
ん。) OpenMP への Sun/Cray 指令の変換の詳細は、『OpenMP API
ユーザーズガイド』を参照してください。Sun 形式のコンパイラ指
令行は C$PAR か !$PAR 、または *$PAR のいずれかで開始しま
す。大文字または小文字のどちらでも使用できます。
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
ビットのライブラリを検索するためのパスを設定します。
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 バイ
トに設定されます。
デフォルトのスレッドスタックサイズは、32 ビットシステムでは
4M バイト、64 ビットシステムでは 8M バイトです。
STACKSIZE 環境変数は、接頭辞付きの数値も受け付けます。有効な
接頭辞は、 B 、 K 、 M 、 G でそれぞれバイト、キロバイト、メ
ガバイト、ギガバイトを表します。デフォルトはキロバイトです。
("キロバイト" は実際には 1024 バイトを意味します。)
詳細については、『Fortran プログラミングガイド』の並列化の章
を参照してください。
SUNW_MP_WARN
OpenMP 実行時ライブラリが出力する警告メッセージを制御しま
す。 TRUE と設定すると、ライブラリは警告メッセージを stderr
に出力します。 FALSE と設定すると、警告は無効になります。デ
フォルトは、 FALSE です。
SUNW_MP_THR_IDLE
各ヘルパースレッドのタスクの終わりステータスを制御し、SPIN
または SLEEP ns に設定できます。デフォルトは SLEEP です。こ
れらををはじめとする OpenMP 環境変数の詳細は、 『OpenMP API
ユーザーズガイド』を参照してください。
OMP_NUM_THREADS
アプリケーション実行時に使用するスレッド数を設定します。これ
らの環境変数とその他 OpenMP 環境変数の詳細は、 『OpenMP API
ユーザーズガイド』を参照してください。
ファイル
コンパイラのコマンド行に指定される名前の接尾辞によって識別さ
れるファイルについては、上記の「ファイルの接尾辞」の項を参照
してください。
そのほかに、コンパイラは次のファイルを使用します。
/usr/lib/libc.so
標準の C ライブラリ、
/usr/lib/libm.so
標準のシステム数学ライブラリ
/tmp/*
コンパイラの一時ファイル
mon.out
prof(1) による解析用に生成されるファイル
gmon.out
gprof(1) による解析用に生成されるファイル
次のファイル、Sun Studio インストールディレクトリ (通常は
/opt/SUNWspro/) にあります。
bin/fpp
Fortran プリプロセッサ
bin/cpp
C プリプロセッサ
prod/include/f95
f95 の INCLUDE 文で検索されるパス
prod/include/f95/f95_floatingpoint.h
f95 IEEE 演算型定義
次のライブラリは、.so と .a の両方のバージョンが存在すること
があります。 注: 静的 Fortran 実行時ライブラリと共有 Fortran
実行時ライブラリの混在は避けてください。リンクには、必ず、最
新の共有 Fortran ライブラリを使用してください。
libfsu
f95 サポート組み込み
libfui
f95 - UNIX インタフェース
libfio
Fortran 95 入出力
libf*ai
Fortran 95 配列組み込みライブラリ
libifai
Fortran 95 区間配列組み込みライブラリ
libf77compat
f77 Fortran 77 互換性ライブラリ
libsunmath
Sun 数学ライブラリ
libsunimath
Sun 区間数学ライブラリ
README ファイル
多くの README ファイルが Sun Studio のコンパイラとツール、お
よびライブラリについての有益な最新情報を提供しています (白書
も含む)。特に、次の話題に注目しています。
o fortran_95
o math_libraries
このリリースの Sun Studio の READNE ファイルは、次の Sun
Studio のポータルにあります。
http://developers.sun.com/sunstudio/documentation/ss12/index.html
関連項目
Sun Studio のマニュアルの完全な索引は、次の URL を HTML ブラ
ウザで指定して参照できます。
file:/opt/SUNWspro/docs/index.html
追加情報については、次のマニュアルページを参照してください。
asa(1), cc(1), dbx(1), fpp(1), fpr(1), fsplit(1),
gprof(1), ld(1), perror(3f), prof(1), tcov(1)
詳細情報については、次のマニュアルを参照してください。
『Fortran ユーザーズガイド』
『Fortran プログラミングガイド』
『OpenMP API ユーザーズガイド』
『数値計算ガイド』
『Sun Performance Library User's Guide』
『プログラムのパフォーマンス解析』
『Fortran ライブラリ・リファレンス』
『Solaris リンカーとライブラリ』
『dbx コマンドによるデバッグ』
『Sun Performance Library User's Guide』: この Sun Studio
リリースには、線形代数やフーリエ変換に使用されるサブルーチン
や関数を含む Sun Pefrormance Library が含まれています。
Sun Studio Developer Network Web サイトでは、さらに多くの情
報を提供しています。
http://developers.sun.com/sunstudio/
診断
f95 が生成する診断メッセージは、それだけで理解できるように
なっています。メッセージの中にはリンカーによって生成されるも
のもあります。