| pgflag |
記述 |
カテゴリ |
| allocatable=[95/03] |
【PGI 7.0 以降 pgfortranに 新設】
-Mallocatable= オプションは、コンパイラがメモリ割付(allocatable) に係る意味合いを制御します。デフォルトは Fortran
95 に準拠します。 =03 オプションは、Fortran 2003 に準拠します。 |
Fortran95
言語 |
| anno |
アセンブリコードと共にソースコードを注釈する。-Manno -S の指定により、アセンブラ・リスティング・ファイル xxxx.s の中にソース・リストとそれに対するアセンブラアセンブラ・リストが両方表示される。 |
その他 |
| [no]asmkeyword |
(pgccとpgCCのみ)コンパイラが C/C++ ソースファイルにの中に asm キーワードの挿入を許すかどうかを指定。asm キーワードの構文は以下のとおり。
asm("statement") ;
statement はアセンブラ言語による文であり、ダブル・クォツで囲むことが必要。 |
C/ C++言語 |
[no]autoinline[=levels:n | maxsize:n |
totalsize:n ] |
(PGI 6.2 以降)最適化オプション -O2 以上において、C/C++ コンパイラはインラインキーワードで定義されたもの、あるいはクラス実体(class
body)で定義された関数をインライン化する。-Mnoautoinline は、このインライン化を抑止する。levels:n は、インラインの段数(レベル)の数の制約値を指定します。そのデフォルトは4です。
(PGI 2010 以降の C/C++ コンパイラ) -O2 オプション時にインライン化をコンパイラに指示する。
levels:n : インラインを行うレベル階層を最大 n まで行うことを指示。
デフォルトは10 です。
maxsize:n : nサイズを超える関数のインラインを行わない。
デフォルトは100。
totalsize:n : インライン対象が、n サイズ時にインラインを
止めることを指示。 デフォルトは800。
|
インライン
C/C++言語 |
| [no]backslash |
(pgf77、pgfortranとpghpfのみ) backslash キャラクタが quote された文字列において escape キャラクタとして扱うかを決定。 |
Fortran言語 |
| [no]bounds |
実行時の配列の境界チェックを有効にするか、無効するかを指定。プログラムのデバッグ時に非常に有効である。例えば、配列境界外のアクセスを行った場合、以下のような形式で出力される。
PGFTN-F-Subscript out of range for array a (a.f: 2)
subscript=3, lower bound=1, upper bound=2, dimension=2 |
その他 |
| [no]builtin |
(pgccとpgCCのみ)数学サブルーチンのビルトインサポート(選択された数学ライブラリルーチンをインライン化する)を用いてコンパイルする[しない]。 |
最適化 |
| byteswapio |
FortranアンフォーマットデータのI/O時にバイトオーダをスワップ(リトルエンディアンからビッグエンディアンに、またその逆)する。 |
その他 |
| cache_align |
可能な限り、16バイト以上のデータオブジェクトをキャッシュラインに整列させる。特に、SSE/SSE2 のベクトル化を行う際に有効(必須)である。 |
最適化 |
| chkfpstk |
関数の開始時と、関数またはサブルーチン呼び出しから戻った後での x86 FPスタックの内部の一貫性についてチェック。
実行時に環境変数 PGI_CONTINUE=verbose のセットを行うと警告メッセージが出る。 |
その他 |
| chkptr |
(pgfortranとpghpfのみ) NULLポインタについてチェック。 |
その他 |
| chkstk |
パラレル領域のエントリー時と、パラレル領域の開始前にエントリ上のスタックの利用可能なスペースをチェック。多くのプライベートな変数が宣言されるときに有益。
(PGI 7.1 以降) -Mchkstk オプションでコンパイルされたプログラムは、スタック high-water mark の情報を収集できるように指示できます(Windows版のみ)。もし、環境変数
PGI_STACK_USAGE が実行時にセットされた場合、スタックの high-water mark が実行終了時に印字されます。 |
その他 |
| concur[=flag[,flag,...]] |
ループの自動並行化を有効にします。複数のプロセッサにより並列化できるループの並列性を確認し、可能な限り並列化する(共有メモリマルチCPUシステムのみで有効)。以下のサブ・フラグがありますので、詳細は
User's Guide を参照のこと。
altcode:n / noaltcode
dist:block / dist:cyclic
cncall
assoc/noassoc
[no]innermost (最内側ループの並列化) PGI 6.1以降
nonuma (libnumaライブラリをリンクしない) PGI 6.1 以降
(PGI 8.0 以降)
allcores 環境変数OMP_NUM_THREADS あるいは NCPUSにセット
していない場合、すべての有効なコアを使用する
(リンク時に指定すること)
bind スレッドをコアあるいはプロセッサにバインドする
(リンク時に指定すること) |
最適化 |
| cpp=[option] |
後続のコンパイル手続きを行わずに、PGI cppライクのプリプロセッサを実行する。このオプションは、makefileの中に含む各ルーチンの依存情報を生成する際に有効です。optionは、以下に示す一つあるいは複数の文字列(m,
md, mm, mmd)からなる。もし、これらの複数のオプションが指定された場合は、最後にリストされたオプションのみが有効となる
| m |
: makefile dependenciesをstdoutに出力する。 |
| md |
: makefile dependenciesをfilename.dと言うファイルに出力します。ここでfilenem.dとは、コンパイルする入力ファイル名のルート部分の名前が採用される。 |
| mm |
: makefile dependenciesをstdoutに出力しますが、システムincludeファイルは無視する。 |
| mmd |
: makefile dependenciesをfilename.dと言うファイルに出力します。ここでfilenem.dとは、コンパイルする入力ファイル名のルート部分の名前が採用される。なお、ステムincludeファイルは無視する。 |
| [no]comment |
: プリプロセス処理の出力のコメントを残す(さない)。 |
| [suffix:]<suff> |
: makefile dependenciesを含むファイルの添字として<suff>を使用する |
|
その他 |
| cray |
(pgf77、pgfortranとpghpfのみ)Cray Fortran(CF77)互換性を強制。 |
最適化 |
| cuda=[option] |
(pgfortranのみ、PGI 2010以降、アクセラレータのみ) コンパイラに CUDA Fortranを使用できるように指示する。以下のサブオプションを有する。
cc10 :compute capability 1.0のコード生成。
cc11 :compute capability 1.1のコード生成。
cc12 :compute capability 12のコード生成。
cc13 :compute capability 1.3のコード生成。
cc20: compute capability 2.0 のコードを生成 (PGI 10.4以降)
cuda2.3 or 2.3:CUDA toolkit 2.3 バージョンを使用 (PGI 10.4以降)
cuda3.0 or 3.0:CUDA toolkit 3.0 バージョンを使用 (PGI 10.4以降)
cuda3.1 or 3.1:CUDA toolkit 3.1 バージョンを使用 (PGI 10.8以降)
cuda3.2 or 3.2:CUDA toolkit 3.2 バージョンを使用 (PGI 11.0以降)
cuda4.0 or 4.0:CUDA toolkit 4.0 バージョンを使用 (PGI 11.6以降)
fastmath : fast mathライブラリを使用 (PGI 10.4以降)
[no]flushz:GPU上の浮動小数点演算の flush-to-zero モードを制御。デフォルトは noflushz。(PGI 11.5以降)
nofma: fused-multiply-add命令を生成しない (PGI 10.4以降)
emu :CUDA Fortran エミュレーションモード
keepbin: kernelバイナリファイルを保持し、ファイル(.bin)として
出力する (PGI 10.3 以降)
keepgpu : kernelソースファイルを保持する(xxxx.gpuファイル)。
(PGI 10.3 以降)
keepptx :GPUコードのためのportable assembly(.ptx)ファイルを
保持する
maxregcount:n :GPU上で使用するレジスタの最大数を指定。
ブランクの場合は、制約が無いと解釈する。
ptxinfo : コンパイル時にPTX AS情報メッセージを表示する。(PGI 11.0以降) |
CUDA
Fortran言語 |
| cudax86 |
(PGI 11.5新設、pgcpp のみ)
CUDA C++ プログラムを PGI C++ コンパイラでコンパイルして、この実行バイナリをインテルやAMDの x86 プロセッサ上で実行できる
PGI CUDA C for Multi-core x86 機能を有効にする。 |
C++言語 |
| [no]daz |
IEEE 754 正規化されていない数字(内部表現)に対して、zero セットすることを許可する(しない)オプション。(PGI6.0) このオプションは、メインプログラムに対して適用しなければ有効とならない。
PGI 6.2 以降、64ビット EM64T の場合は、-Mdazがデフォルトとし、AMD64 の場合は、-Mnodaz がデフォルトとなる。 |
最適化 |
| [no]dclchk |
(pgf77、pgfortranと pghpf のみ)全てのプログラム変数が宣言されていることを前提としてチェックする(しない)。 |
Fortran言語 |
| [no]defaultunit |
(pgf77、pgfortranとpghpfのみ)どのようにアステリスクキャラクタ“*”が(I/O ユニット 5 と 6 の状態に関係なく)標準入力、および、標準出力と関連して扱われるかを決定。 |
Fortran言語 |
| [no]depchk |
潜在的なデータ依存性が実際に存在することをコンパイラに指示してチェックを行う。一方、nodepchk は依存性がないことをコンパイラに指示する(もし、この場合、存在した場合は不正確な結果となる)。 |
最適化 |
| [no]dlines |
(pgf77、pgfortranとpghpfのみ)コンパイラが実行可能なステートメントとしてカラム1に“D”を含む行を扱うかどうかを決定。 |
Fortran言語 |
| dll |
(Windows only) ランタイムライブラリの DLL バージョンとリンクする。
(PGI 7.0以降)-Mdll オプションは、-D_DLL 機能を含意します。-D_DLL は、プリプロセッサ・シンボル _DLL を定義するものです。
(PGI 7.1以降)-Mdll オプションが削除されました。その代わり、-Mdynamic オプションを使用します。 |
その他 |
| dollar,char |
コンパイラがドル記号コードをマップする際の文字(char)を指定。ドル記号を名前として使用することを許す。ANSI C は許さない。 |
Fortran言語 |
| [no]dse |
【PGI 7.0 以降】
参照しない変数の保存を排除(dead store eliminations)する最適化を有効[無効]にするオプションです。これは、C++プログラムのようなパフォーマンス向上のために、関数呼び出しをインライン化することが多い場合に有効となります。 |
最適化 |
| dwarf1 | dwarf2 | dwarf3 |
DWARF1 あるいは DWARF2、DWARF3 フォーマットのいずれかのデバッグ情報を生成する。デフォルトは、 DWARF2 である。-g
とともに使用する。 |
コード生成 |
| nodwarf |
(PGI 8.0 以降)デバッグ情報を生成バイナリに付け加えないように指示する |
コード生成 |
| extend |
(pgf77、pgfortranとpghpfのみ)コンパイラは、132 カラムソースコードを受け付けます。デフォルトでは 72 カラムコードを受け付けます。 |
Fortran言語 |
| eh_frame, noeh_frame |
(PGI 2010以降)リンカーに、executable内のen_frameのcall frame を保持/非保持することを指示する。 (注意) このオプションは、システムunwindライブラリを持つ、最新のLinux、Windowsシステムでのみ有効です。 |
コード生成 |
| extract[=flag[, flag,...]] |
関数エキストラクタを起動。コマンドライン上で指定されたファイルから関数を抽出し、指定した外部 directory へその関数ファイルを生成、追加する。 インライン(-Minline)
とともに使用する場合が多い。以下のフラグがありますので、詳細は User's Guide を参照のこと。
name:func
size:number
lib:dirname |
インライン化 |
| fcon |
(pgccとpgCCのみ)浮動小数点定数を倍精度型の代わりに、 float 型として扱うようにコンパイラに指示。 |
C / C++言語 |
| fixed |
(pgfortranとpghpfのみ)F77スタイルの固定フォーマットのソースであると認識する |
Fortran言語 |
| [no]flushz |
SSE/SSE2 を flush-to-zero モードにセットする。浮動小数点のアンダーフローが生じた場合、これを 0 にセットする。このオプションは、メインプログラムに対して適用しなければ有効とならない。 |
最適化 |
| free |
(pgfortranとpghpfのみ)コンパイラは F90 形式のフリーフォーマットのソースコードであると仮定する。 |
コード生成 |
| [no]func32 |
32 Byte 上で全ての関数をアライン(整列)させる。 |
その他 |
| [no]fpapprox[=div|sqrt|rsqrt] |
(PGI 7.1 以降)
特定の浮動小数点演算を低精度近似方を使用して実行します。のオプションは結果の差異が生じる可能性がありますので、十分注意して使用してください。
div : 浮動小数点除算近似
sqrt : 浮動小数点平方根近似
rsqrt : 浮動小数点逆数平方根近似
デフォルトでは、-Mfpapprox は使用されません。もし、サブ・オプションを指定しない -Mfpapprox のみの場合は、上記の全てのサブ・オプションが指定されたものとして扱います。
(PGI 8.0 追加) -Mnofpapprox :低い精度の浮動小数点演算を使用しないように指示する。 |
最適化 |
| [no]fpmisalign |
(PGI 7.1 以降)
AMD barcelonaプロセッサに対して、16-byte境界に整列されていないアドレスを持つメモリ・オペランドのベクトル演算命令の使用を許可します。デフォルト設定は、Barcelonaを含めて、全てのプロセッサにおいて-Mnofpmisalignです。本オプションは、-tp
barcelona-64あるいは、-tp barcelonaの設定時、あるいは、barceona上でコンパイルされたときにのみ効果があります。また、このオプションでコンパイルされたコードは、barcelonaプロセッサ上だけで実行できるものとなりますのでご注意下さい。 |
最適化 |
| [no]fprelaxed=[div,order,rsqrt,sqrt,recip] |
いくつかの内部組込み関数 (div/sqrt/rsqrt) の計算において緩い精度で行うことをコンパイラに指示する。性能は向上するが、計算精度は劣る。
(PGI 6.1 以降) デフォルトは、-Mnofprelaxed。
PGI 6.2 以降、細かな制御を行うためのサブオプションを導入。サブオプションは以下のとおりです。 -Mfprelaxed=[div,rsqrt,sqrt]
div : 緩い精度で除算処理を行う。
rsqrt : 緩い精度でsqrtの逆数近似(1/sqrt)の処理を行う
order : a*b+a*cをa*(b+c)と変換する方式も含め、演算の順序の変更
noorder: 上記 order を行わない。
sqrt : 緩い精度でsqrtの処理を行う。
なお、サブオプションを付加しない場合(-Mfprelaxedのみ)は、そのターゲットプロセッサに応じて、顕著な性能向上が行える処理に緩い精度での処理を行うかを選択し適用される。
(PGI 9.0 新設)
recip : 緩和した精度で逆数近似 |
最適化 |
| [no]i4 |
(pgf77、pgfortranとpghpfのみ)どのようにコンパイラが INTEGER 変数を扱うかを決定。i4 の場合、INTEGER*4、noi4
の場合は、INTEGER*2 として扱う。 |
最適化 |
iface=unix | cref |
mixed_str_len_arg |
nomixed_str_len_arg |
(PGI 7.2 新設 Windowsのみ)サブオプション-Mifac は Fortranのための呼び出しルール(コンベンション)を調整するものです。
unix - Use UNIX calling conventions, 語末のアンダースコアがないタイプ cref - Use CREF calling
conventions, 語末のアンダースコアがないタイプ mixed_str_len_arg -文字列の長さをその対応する引数の直後に置くタイプ
nomixed_str_len_arg - 文字列の長さを引数リストの最後に置くタイプ。 |
Fortran言語 |
| info[=flag[,flag,...]] |
コンパイル時に最適化並びにコード生成に関するコンパイル・メッセージを標準出力に表示する。以下のサブ・フラグがありますので、詳細は User's
Guide を参照のこと。
all
inline
ipa
loop
mp
opt
time
unroll
(PGI 7.2新設)
intensity -ループ内の「演算密度」(Computational Intensity)を表示します。デフォルトは、最内側ループの情報が表示されます。演算密度とは、一般にループ内の演算数とメモリのロード・ストア数との比率を表し、演算とメモリ参照のバランスを見るための指標です。このような情報はパフォーマンス・チューニングにおいて特に重視されます。
・ ループ内の演算が浮動小数点演算である場合、演算密度は、浮動小数点演算総数を浮動小数点データのメモリロードとストアの総和で割った比率として定義します。
・ ループ内の演算が整数演算である場合、演算密度は、整数演算総数を整数データのメモリロードとストアの総和で割った比率として定義します。
(PGI 8.0 以降新設)
all 以下のサブオプションをすべて指定したものと解釈します。
-Minfo=accel,inline,ipa,loop,lre,mp,opt,par,unified,vect
accel アクセレータ情報の有効化
ccff オブジェクトファイルに最適化情報を追加します
ftn Fortran特有な情報の有効化
hpf HPF特融な情報の有効化 information
inline インライン情報の有効化
lre LRE情報の有効化
par 並列化の情報の有効化
pfo プロファイル・フィードバックに関する情報の有効化
vect ベクトル化の情報の有効化
(PGI 9.0 新設)
accel アクセラレータ領域をGPU Kernel に翻訳することが成功したかどうかの情報を示す |
その他 |
| inform,level |
指定した level 以上のエラー・メッセージをを表示するように指示。
fatal : fatal error messages.
severe : severe and fatal error messages.
warn : warning, severe and fatal error messages
inform : all error messages
(inform, warn, severe and fatal) |
その他 |
inline
[=func | filename.ext | number | levels:number],... |
関数のインライン展開を行う。以下のサブ・フラグがありますので、詳細は User's Guide を参照のこと。
except:func : IPA(-Mipa) のインライン機能にも影響する。
[name:]func
filename.ext
Number
levels:number
(PGI 7.1以降) 配列の形態(Array shape) が一致しない場合でも Fortran におけるインライン処理を許可(抑止)する。-Mconcur
あるいは -mp の場合を除いたデフォルトは、-Minline=noreshape。-Mconcur あるいは -mp の場合のデフォルトは、Minline=reshape。 |
インライン化 |
| instrument [=functions] |
(PGI 9.0以降、linux86-64 にみ)
Common Compiler Feedback Format (CCFF)を使用して、 PGI コンパイラは、どのようにプログラムの最適化を行ったら良いか、あるいは、特定の最適化がなされないのか等の関数レベルの
instrument 情報をオブジェクトに保持することを可能とする。-Minstrument=functions の指定も -Minstrumen
tと同じ意味なる。このオプションは、-Minfo=ccff -Mframe の二つを指定したことと同意です。 |
その他 |
| ipa[=flags] |
関数、サブルーチン間のグローバルな最適化を行うために、内部手続き間の最適化を行うように指示。version 5.2 から 1パスで行うことが可能。この
ipa は同時に -O2 のレベルで行うことを前提にしている。以下のサブ・フラグ flags の詳細は、User's Guide を参照のこと。一般的には、-Mipa=fast を指定すると良い。
[no]align
[no]arg
[no]const Interprocedural constant propagation
[no]cg
except:<func>
[no]f90ptr
fast
force
[no]globals
inline:<n>
inline
ipofile
[no]keepobj
[no]libc
[no]libinline
[no]libopt
[no]localarg
main:<func>
noerror
[no]ptr
[no]pure
required
safe:[<function>|<library>]
[no]safeall
[no]shape
summary
[no]vestigial
-Mipa Default enables constant propagation
複合フラグ fast の意味は
-Mipa=align,arg,const,f90ptr,shape,globals,localarg,ptr
PGI6.0 New flag:
-Mipa[=…,safe:<libname>,safeall,…] - IPA機能を使用してコンパイルして生成していない、ライブラリ名
libname の中のプログラムユニットへの呼び出しが安全であると仮定する、あるいは呼び出し側におけるIPA最適化を禁止しないことをコンパイラに指示するためのオプションです。-Mipa=safeall
は実行モジュールの中にリンクされる全てのライブラリが安全であることコンパイラに指示します。
PGI 6.1 New flag:
-Mipa=cg スイッチを設定することで、プログラムのコール・グラフ情報を出力できるようになりました。これは、新規に提供されたpgicgコマンド・ユーティリティを使用して、出力可能です。
-Mipa=except:<func> - IPA最適化において、インラインすべきでない関数funcを指定します。-Mipa=inlineと共に指定します。デフォルトは、内部的に検出されたすべての関数がインライン対象となります。
PGI 6.2 New flag:
-Mipa=[no]libc は、システム標準Cライブラリ内で、あるルーチンへの呼び出しを最適化するために使用します。-fastオプション時のデフォルトは-Mipa=libcです。
nolibcは、その機能を抑止します。
PGI 7.1 New flag:
-Mipa=[no]reshape は、配列の形態(Array shape) が一致しない場合でも Fortran におけるインライン処理を許可(抑止)します。
PGI 7.2 New flag:
-Mipa=jobs:<n>- jobs:[n] サブオプションを指定できるようになりました。このサブオプションは、並列に n ジョブで再コンパイルを行うように指示するものです。
PGI 9.0 New flag:
-Mipa=nopfo は、プロファイル・フィードバック情報の引用回数情報を無視する。このサブオプションは、inlineサブオプションの次に指定されているときのみ有効。-Mipa=inline,nopfo は、IPA手続きに対して、PFO情報が有効な状態において、インラインされる関数を決める際に、PFO情報を無視するように伝えます。 |
最適化 |
| noipa |
内部手続き間解析と最適化機能を抑制します。機能複合オプションの後に、このオプションを指定した場合、他の機能に関しては影響せず、IPA最適化のみを抑制することができます。(PGI
6.0) |
最適化 |
| [no]iomutex |
(pgf77、pgfortranとpghpfのみ)クリティカルセクションがFortran I/Oコールの周辺で生成されるかどうかを決定。 |
Fortran言語 |
| [no]large_arrays |
(AMD64、EM64T & Linux86-64)2GB を超える「単一の静的なデータオブジェクト」を扱うことができるコードを生成します。PGI 5.2 の場合は、pgfortran, PGF77,
PGCC 上でサポートします。一般的には、-mcmodel=medeium と同時に使用します。
PGI 6.0 以降では、2GB以上の単一の静的なデータオブジェクトをサポートするために指定する有効化(無効化)フラグです。pgfortran, PGF77, PGCC,
PGC++ の言語でサポートします。なお、このオプションは、PGI 6.0 から -mcmodel=medium の複合オプションの中に加えられました。2GB以上の単一の静的なデータオブジェクトを使用するアプリケーションでは必要とされるオプションです。 |
コード生成 |
| largeaddressaware[=no] |
(PGI 7.2新設:Windowsのみ) Windows x64 用に 2GB 以上のアドレス・インデックシングを許可します(RIP-relative addressingを使用する)。デフォルトは、no
で、direct addressing 形式となります。 |
その他 |
| [no]loop32 |
(PGI 7.1 以降)
barcelona上での 32-byte 境界上にある最内側ループを整列します。barcelona上で 32-byte 境界で整列されている場合、小さなループは性能が向上する可能性があります。しかし、実際には、ほとんどのアセンブラが、まだ効果的なパッディング(padding)を実装していません。その結果、このオプションで遅くなる可能性もあります。Barcelonaに対して最適化されたアセンブラを有するシステム上でこのオプションを使用してください。デフォルトは、-Mnoloop32です。 |
最適化 |
| lsf |
(32-bit Linux) 32ビットシステム上で 2GB 以上のファイル I/O を扱うためのライブラリをリンクする。 |
環境 |
lre[=array | assoc | noassoc]
[no]lre |
ループ内での冗長性を削除する最適化の有効化 [無効化]。
array : 個々の配列要素の参照を冗長性削減の対象
として扱う。デフォルトは、2以上のオペランド
を含む冗長式のみが対象となる。
assoc :冗長性削減の対象を増やすことができる、演
算式の再結合を許す最適化。結果の差異が
生じる可能性がある。
noassoc:上記を許さない最適化 |
最適化 |
| keepasm |
アセンブリファイルを保持するようにコンパイラに命令。ファイル名は、<filenema>.s 。 |
その他 |
| [no]list |
コンパイラがリスティング・ファイルを作成するかどうかを指定。ファイル名は、<filenema>.lst 。 |
その他 |
| [no]m128 |
(PGI 9.0 新設 pgcc のみ)
__m128, __m128d, __m128iデータ型を認識するためオプション |
その他 |
| makedll[=export_all] |
(Windows only) Dynamic Link Library (DLL) を生成する。=export_all は、DLL内の全ての関数をエクスポートする。
Winodws 上での DLL の作成に関しては、PGI User's Guide の 8 章を参考のこと。
(PGI 7.1 以降) -Mmakedll オプションは、-Mdynamic オプションを内包します。 |
その他 |
| makeimpdll[=export_all] |
(Windows only) DLL を生成することなしに、import ライブラリを生成する。=export_all は、DLL内の全ての関数をエクスポートする。 |
その他 |
| makeimplib |
(Windows only : PGI 7.0 以降) DLLを生成することなしに、インポートライブラリを生成します。これは、まだ、それ自身のDLLライブラリが構築される前に、DLLのためにインポートライブラリを生成したい時に使用します。 |
その他 |
| mpi[=option] |
(MPI 使用可能ライセンスのみ:PGI 7.1 以降)
プログラムのビルドに使用する MPI ライブラリの指定を行う。
-Mmpi のみの場合は、MPICH-1ライブラリを使用。
mpi=mpich1 : MPICH-1 ライブラリ
mpi=mpich2 : MPICH-2 ライブラリ
mpi=mvapich1: MVAPICH-1 ライブラリ
mpi=msmpi : Windowsのみ MSMPIライブラリ
mpi=hpmpi : HP-MPI ライブラリ (PGI 8.0 以降) |
コード生成 |
| neginfo[=flags] |
なぜ、最適化が行われないかに関する情報を生成するようにコンパイラに指示。
all : 全てのメッセージ出力
concur :自動並列化できない理由
loop :メモリ階層型の最適化ができない理由
(PGI 8.0 以降)
all 以下のサブオプションをすべて指定したものと解釈します。
-Mneginfo=accel,inline,ipa,loop,lre,mp,opt,par,vect
accel アクセレータ情報の有効化
ftn Fortran特有な情報の有効化
hpf HPF特有な情報の有効化 information
inline インライン情報の有効化
ipa IPA i情報の有効化
lre LRE情報の有効化
mp OpenMP情報の有効化
opt 最適化の情報の有効化
par 並列化の情報の有効化
pfo プロファイル・フィードバックに関する情報の有効化
vect ベクトル化の情報の有効化 |
その他 |
| names=lowercase|uppercase |
Fortran外部関数名の大文字/小文字を指定する。Lowercaseの場合は、小文字を使用すると言う意味となり、upperecaseは大文字を使用すると言う意味となる。(PGI
7.2新設) |
その他 |
| noframe |
関数の真のスタック・フレームポインタのセットアップ処理を消去するように指示。このオプションを有効化すると traceback 機能を使用することができない。 |
最適化 |
| nomain |
(pgf77、pgfortranとpghpfのみ)リンクステップ時に、Fortran のメインプログラムを呼ぶオブジェクトファイルを含めない形でリンクする。C
プログラムと Fortran プログラムのオブジェクトの混在したものをリンクする時、C プログラムにメインプログラムが存在している場合で、かつ
pgf77, pgfortran でリンクする時に使用する。 |
コード生成 |
| [no]movnt |
non-temporal ストア並びにプリフェッチの生成を強制するオプション。これまで使用してきた -Mnontemporal を置き換えるものです。(PGI
6.1) |
コード生成 |
| nontemporal |
non-temporal ストア並びにプリフェッチの生成を強制するオプション。 |
最適化 |
noopenmp
|
-mp オプションと同時に使用した場合、強制的に OpenMP directives を無視するようにコンパイラに指示する。但し、SGI スタイルの並列
directive は解釈する。 |
その他 |
[no]prefetch (PGI5.2まで)
[no]prefetch
[=d:<m>[,n:<p>[,{nta | t0 |w}]]] (PGI6.0以降) |
prefetch インストラクションの生成を有効化/無効化する。-Mvect (-fastsse) オプションと共に使用する。
PG 6.0 以降では、メモリデータのプリフェッチ命令を生成することを有効化(無効化)します。このオプションは、-Mvect あるいは、-Mfastsse(-Mvectを含む複合オプション)と組み合わせて使用する場合のみ有効です。新たなサブオプションである、d:<m>
距離サブフラグは、アクセスしようとするデータの先にある m キャッシュラインの長さをプリフェッチするようにコンパイラに指示します。n:<p> 数サブフラグは、プリフェッチが使用されている場所において、最大 p プリフェッチ命令まで出すことができるようにコンパイラに指示するものです。また、新たな
nta | t0 | w の各サブオプションは、プリフェッチのために、prefetchnta、prefetch0、prefetchw 命令を使うようにコンパイラに指示するものです。なお、prefetchw
は、IA32 あるいは EM64T プロセッサではサポートしません。 |
最適化 |
| nopgdllmain |
(Windows only) デフォルトの DllMain() を DLL の中に含んでいるモジュールをリンクしない。このフラグは、pgfortran
によるDLL の構築に対して適用される。 |
その他 |
| norpath |
(Linux only) PGI の 共有ライブラリ・オブジェクトを含むディレクトリパス名を -rpath オプションをリンク時のコマンド行に付加しない。(デフォルトは
-Mrpath で含む) |
その他 |
| nosgimp |
-mp オプションと同時に使用した場合、強制的に SGI スタイルの並列 directive を無視するようにコンパイラに指示する。但し、 OpenMP
directives は解釈する。 |
その他 |
| nostartup |
(pgf77、pgfortranとpghpfのみ)標準のスタートアップルーチンをリンクしない。 |
環境 |
| nostddef |
標準のプリプロセッサマクロを認識しないようにコンパイラに指示。 |
環境 |
| nostdinc |
インクルードファイルの標準の場所を検索しないようにコンパイラに指示。 |
環境 |
| nostdlib |
標準のライブラリをリンクしないようにリンカに指示。 |
環境 |
| [no]onetrip |
(pgf77、pgfortranとpghpfのみ)各 DOループが少なくとも 1 回実行させるかさせないかの指示。 |
言語 |
| novintr |
イディオム認識を抑制し、最適化されたベクトル関数の呼び出しを行う。 |
最適化 |
| pfi |
-Mpfo 最適化オプションを含む後続のコンパイル時において使用されるプロファイルとデータ・フィードバック情報を集めるための実行モジュールを生成するためのオプションです。-Mpfi
を伴う実行モジュールはこの情報を集積するためのオーバヘッドが発生するため、実行時間が多く掛かります。(PGI 6.0)
(PGI 7.2新設)
-Mpfi[=indirect] -Mpfiオプションは、間接的(indirect)な関数呼び出しターゲットを保持することを指示する |
最適化 |
| pfo |
強化されたブロック・リオーダリング機能を含む特定の性能最適化を有効にするために、pgfi.outプロファイル・フィードバック・トレースファイルのデータを使用して最適化を行います。(PGI
6.0)
(PGI 7.2新設)
-Mpfo[=indirect|nolayout] Indirect サブオプションは、間接的な関数呼び出しのインライン化を有効にするもので、nolayout
は、動的なコード配置を抑止する |
最適化 |
| pre[=all], nopre |
(PGI 7.2新設)サブオプションを付けない -Mpre オプションは、一部の冗長部削除を有効にする。サブオプション all を付けた場合、よりアグレッシブな
pre 処理を行う。
(PGI 9.0 以降)
=all サブオプションが廃止された。
(PGI 2010以降)
-Mnopre 冗長部削除の最適化を抑止する。 |
最適化 |
| preprocess |
cpp 形式の前処理をアセンブラ言語と Fortran ソースファイル上で行う。 |
その他 |
| prof[=flags[,flags,.]] |
プロファイルオプションをセット。関数レベルと、行レベルのプロファイリングがサポートされます。-Mprof=func、あるいは-Mprof=lines
を指定する。これは、リンク時にも指定が必要である(特に Makefile 等でコンパイルとリンク処理を別々に行う際に注意)
PGI 6.0 New feature:
プロファイル・オプションをセットします。-ql, -qp, -pg スイッチは、通常、プロファイルのために使用されますが、プロファイリングのデフォルトの方法を再セット(上書き)するために以下のオプションを指定します。詳細は、PGI
User’s Guide をご覧ください。
dwarf : サードパーティのプロファイリング・ツールによって、ソース相関を有効にするため、DWARF 情報を生成する。
func : PGI スタイルの関数レベルのプロファイリングを実行する
hwcts : ハードウェア・カウンタを用いた PAPI ベースのプロファイリングを使用する場合に指定する (linux x86-64ベースのシステムのみ)
lines : PGI スタイルのソースレベルのプロファイリングを実行する
time : サンプリングベースのインストラクション・ベースのプロファイリングを実行
(PGI 7.1以降)
プロファイルするアプリケーションにリンクするための mpich1 と mpich2 ライブラリ名を、-Mprof オプションに指定する。
mpich1 : プロファイル用 MPICH-1 ライブラリを使用。 -Mmpi=mpich1 を包含します。
mpich2 : プロファイル用 MPICH-2 ライブラリを使用。 -Mmpi=mpich2 を包含します。
mvapich1 : プロファイル用 MVAPICH-1 ライブラリを使用。-Mmpi=mvapich1 を包含します。
(PGI 8.0以降)
[no]ccff : CCFF情報の有効化 [無効化]
hpmpi : プロファイル用 HP-MPI ライブラリを使用。 -Mmpi=hpmpi を包含します。 |
コード生成 |
| [no]propcond |
(PGI 7.1 新設)
equality conditionalsから派生するassertions からのconstant propagation 最適化を有効にします。これは、デフォルトで有効となります。 |
最適化 |
| [no]r8 |
(pgf77、pgfortranとpghpfのみ)コンパイラが REAL 変数と定数をDOUBLE PRECISION に変換する(しない)。 |
最適化 |
| [no]r8intrinsics |
(pgf77、pgfortranとpghpfのみ)コンパイラが 組込み関数のCMPLX and REAL 型を DCMPLX and DBLEとして扱す(扱わない) |
最適化 |
| [no]recursive |
(pgf77、pgfortranとpghpfのみ)ローカル変数をスタックに割当てます(割当てません)。これは再帰を可能にします。SAVEされた、データ初期化された、または、namelist
メンバは、このスイッチの設定に関係なく常にスタティックに割当てられます。 |
コード生成 |
| [no]reentrant |
コンパイラがコードをリエントラントとしない最適化を回避するかどうかを指定。 |
コード生成 |
| [no]ref_externals |
(pgf77、pgfortranとpghpfのみ) EXTERNAL 文に現れる名前の参照を強制(強制しない)。 |
コード生成 |
| safeptr[=flags] |
(pgcc と pgCC のみ)ポインタと配列の間のデータ依存関係を以下のサブフラグの内容でオーバライドするようにコンパイラに指示します。以下のサブ・フラグ flags の詳細は、User's Guide を参照のこと。
all all is safe
arg Argument pointers are safe
auto Local pointers are safe
dummy Argument pointers are safe
local Local pointers are safe
static Static local pointers are safe
global Global pointers are safe
-Msafeptr All pointers are safe |
最適化 |
| safe_lastval |
スカラがループの後で使用され、しかし、ループの全ての反復に関しては定義されない場合、コンパイラはデフォルトではループを並列化しません。しかし、このオプションは、コンパイラにループを並列化することが安全であると告げます。特定のループについて、全てのスカラの最後に計算された値がループの並列化を安全にします。 |
コード生成 |
| [no]save |
(pgf77、pgfortranとpghpfのみ)コンパイラが全てのローカルな変数がSAVEステートメントと同等な状況に強いるように仮定するかどうかを決定。 |
Fortran言語 |
| [no]scalarsse |
スカラの浮動小数点演算において、xmm レジスタを使用した SSE/SSE2 のインストラクションを使用するか否かを指示。このオプションは、-tp
{ p7 / p7-64 / k8-32 / k8-64 以降の target4} 時に有効。 |
最適化 |
| schar |
(pgccとpgCCのみ) "plain" character を signed char ととして扱う。--uchar
を参照。 |
C / C++言語 |
| [no]second_underscore |
(pgf77、pgfortranとpghpfのみ) Fortran のグローバルなシンボル名が、既にその名前の suffix にアンダースコアを有しているものが存在している場合に、内部シンボル名として
2 つめのアンダースコアを加えます(加えません)。Fortran Module 間のシンボル名の競合が起きる場合にも便利です。また、g77プログラムとのリンク時に有効です。 |
コード生成 |
| [no]signextend |
コンパイラがサインビットを拡張するかどうかを指定します。 |
コード生成 |
| [no]single |
(pgccとpgCCのみ) float パラメータを double パラメータキャラクタに変換するかどうかを指示。 |
C / C++言語 |
nosizelimit
sizelimit:n |
ベクトライザにループ中のステートメント数に拘らず、全てのループに対してベクトル化最適化の対象とするように指示する。
PGI 6.2 から nosizelimit が、デフォルトとなった。一方、そのステートメントのサイズは、-Mvect=sizelimit:n
(nはループ内のステートメントの数)によって制限される。 |
最適化 |
| [no]smart |
AMD64専用 post-pass instruction スケジューリングを行うか否かのスイッチ。(デフォルトは no) |
最適化 |
| [no]smartalloc[=option] |
メインルーチン中に最適化された mallopt ルーチンのコールを加えます。これを有効にするためには、Fortran、C、C++のメインプログラムを含むファイルをコンパイルする際に、このオプションを付する必要がある。デフォルトは、-Mnosmartalloc。(PGI
6.2 以降)
PGI 7.1 New feature:
-Msmartalloc オプションは、Linux 並びに Windows 上での large TLBs をサポートするために強化されました。このオプションは、最適な
malloc ルーチンを有効にするために、メイン・プログラムをコンパイルする際に使用することが必要です。サブ・オプション huge は、シングルプログラムで使用される大きな
2MB ページを有効にするために指定します。これは、実行するために必要な TLB エントリ数を削減する効果があります。このオプションは、AMDの
Barcelona やインテル(r)の Core2 システムで特に有効です。古いプロセッサ・アーキテクチャでは、TLB エントリの数が少ないため、大きな効果は期待できない可能性もあります。サポートするサブ・オプションは、以下のとおりです。
huge : huge page のランタイムライブラリをリンクします。
huge:<n> : 使用されるページの数の限度を n に設定します。
hugebss : huge page の中に BSS セクションを置きます。
huge サブ・オプションは、それ自身、必要とされる huge page をアロケートしようとします。Huge page の数は、:n サブ・オプションで制限を設けることができ、あるいは、環境変数
PGI_HUGE_SIZE でも設定できます。Hugebss は、プログラムの初期化されていないデータセクションを huge page の中に置きます。
(PGI 8.0 以降)
hugebss : hugeページの中にBSSセクションを置く
(PGI 9.0 新設)
nohuge : -Msmartalloc=hugeを上書き(無効化)するサブオプション |
環境 |
| standard |
(pgf77、pgfortranとpghpfのみ) ANSI 標準に適合しないソースコードを検出します。
(PGI 7.1 以降) -Mstandard は、-Mbackslash を内包しました。これは、-Mstandard が現れたときにバックスラッシュ・エスケープ・シーケンスを認識することを禁止します。例えば、バックスラッシュは標準的なキャラクタとして扱います。 |
Fortran言語 |
| [no]stride0 |
(pgf77、pgfortranとpghpfのみ)コンパイラは、増分がゼロであるかもしれない誘導変数を含むループのために代替のコードを生成します(生成しません)。 |
コード生成 |
| [no]traceback |
環境変数 $PGI_TERMを使用することにより、ランタイム traceback のためにデバッグ情報が追加されました。また、デフォルトでのトレースバック機能は、f77、f90/f95では有効となっておりますが、C/C++では無効となっています。コンパイラへの初期設定ファイルs
siterc あるいは、.mypg*rc ファイルにTRACEBACK=OFF をセットすることで、デフォルトのレースバック機能を無効にすることができます。反対に
OFF の代わりに ON と指定することによって、有効にすることができます。 |
最適化制御 |
| uchar |
(pgccとpgCCのみ) "plain character" を unsigned char として扱う。-- scharも参照。 |
C/C++言語 |
| unix |
(pgf77、pgfortran for Win32) Fortran サブプログラムに対して、UNIX の呼び出し、名前のコンベンションを使用することを指示。 |
コード生成 |
| [no]unixlogical |
(pgf77、pgfortranとpghpfのみ)論理値 .TRUE. と .FALSE. が、unixlogical 非ゼロ(TRUE)、ゼロ(FALSE)
と決定されるかどうかを決定します。デフォルトの unixlogical では、none-zero 値がTRUE で、0 の値が FALSE です。nounixlogical
は、VMS convention スタイルを使用する。 |
Fortran言語 |
| [no]unroll[=flags] |
アンロール展開を制御。-Munroll=flags と言う形態でサブフラグを設定できる。以下のサブ・フラグ flags の詳細は、User's Guide を参照のこと。
c : m
n : u
PGI 7.1 New feature:
-M[no]unroll[=c:<n>|n:<n>|m:<n>] : マルチ・ブロックを持ったループをアンロールする機能を追加しました。特に、条件文を伴ったこのようなループで、アンロールできるようになりました。新しいオプション
-Munroll="m" は、この機能を制御するために導入されました。
n:<n> : シングル・ブロックを n 回アンロール
m:<n> : マルチ・ブロックを n 回アンロール
デフォルトでは、-Munroll=m は有効となっておりません。また、-Munroll=m の場合のデフォルトの n 値は 4 です。 |
最適化 |
| [no]upcase |
(pgf77、pgfortranとpghpfのみ)コンパイラがプログラム識別子に大文字を許すかどうかを決定します。upcase の場合、大文字も識別されます。デフォルトは、noupcase
で全てが小文字として識別されます。特に、リンク時のモジュール名の識別において重要です。 |
Fortran言語 |
| unsafe_par_align |
並列化ループでの配列の参照において、その配列の最初の要素が「整列」されている限り、「整列移動(aligned moves)」を行うことは安全であるとみなします。
NOTE: このオプションは、コンパイラがその安全性を疑った場合でも、「整列移動」で行うコードを生成します。このオプションは、特に、 STREAM Benchmark やメモリ・インテンシブなメモリアクセスを含むループブロックの並列化で効果を発揮します。 |
最適化 |
| vect |
コードベクタライザを起動。プログラムのベクトル化を行います。 -Mvect の指示だけでも良い。以下のサブ・フラグ flags の詳細は、User's Guide を参照のこと。
altcode:n / noaltcode : 代替スカラコードの生成
assoc / noassoc : ループの結合の許可
cachesize:n : cache tileing の最適化における cache size の仮定
nosizelimit : 全てのループに対して、そのソースコード数の制限なしで、ベクトル化の適用を行うように指示する
prefetch : ベクトル可能なコードの可能な限りの prefetch操作
smallvect[:n] : 最大のベクトル長の定義
sse : SSE/SSE2 インストラクションの使用によるベクトル化
(PGI 7.1 以降)
gether : 配列のgather(ギャザー)間接参照を有するループのベクトル化ができるようになりました。コンパイラのデフォルトは、-Mvect=gather
(PGI 7.2 新設)
partial : 最内側ループの分離によるループのベクトル化を有効にするように指示するサブオプション
(PGI 8.0 以降)
[no]short : 短いベクトル演算を有効化[無効化]
-Mvect=short は、ループ外のスカラコードから生じる、あるいは、ループ・イテレーションの中から生じる短ベクトル演算のためのパックSSE演算の生成を有効化します。
(PGI 11.6 新設)
simd:{128|256} : SIMD命令とデータを使用してベクトル化する際、そのデータ幅を 128bit / 256bit のどちらを使用するかを選択する。256bit
を使用できるかはプロセッサに依存する。 |
最適化 |
| novector |
ベクトル化を抑制します。-fastsse のような機能複合オプションの後に、このオプションを指定した場合、他の機能に関しては影響せず、ベクトル化のみを抑制することができます。(PGI
6.0) |
最適化 |
| novintr |
コンパイラに、イディオム認識を実行しないように指示する、あるいは、手製の最適化ベクトル関数を導入することを指示する。 |
最適化 |
| varargs |
(pgf77 と pgfortran のみ) Fortran ユニットに対して、C ルーチンが vararg 型のインタフェースを有すると仮定する場合に指定します。 |
コード生成 |
| writable-strings |
(pgcc/pgCC: PGI 7.2新設)書き込み可能なデータセグメント内に string constant をストアできるようにします。(注意)既存の-Xt並びに-Xsは、本オプションを含む |
|