インテル® Fortran コンパイラー Linux 版は、最高のパフォーマンスを実現する Fortran アプリケーションを作成するためのツールを提供します。Fortran 2003 規格のさまざまな機能に加え、一般的な言語拡張に幅広く対応した完全な Fortran 95 コンパイラーです また、OpenMP* に対応し、自動並列化機能も備えるなど、マルチスレッド・コードの開発もサポートしています。
この製品には 2 つのエディションがあります。
スタンダード・エディションには、以下のコンポーネントが含まれます。
<install-dir>/doc/Doc_Index.htm
) が提供されています。 プロフェッショナル・エディションには、スタンダード・エディションのすべての機能に加えて、インテル® マス・カーネル・ライブラリー (インテル® MKL) が含まれています。インテル® MKL には、最大限のパフォーマンスを必要とする工学、科学、金融系アプリケーション向けに高度に最適化およびスレッド化された数値演算関数が含まれています。
注: インテル® Fortran コンパイラーのデフォルトのインストール・パスは、/opt/intel/fc/10.1.xxx
です。ここで、xxx
は 3 桁のビルド番号です。このドキュメントでは、デフォルトのインストール・パスを <install-dir>
として表記しています。
コンパイラーのインストールとは別に、インテル® MKL のインストールが必要です。詳細は、インテル® MKL のインストール・ガイドを参照してください。
テクニカルサポートを受けたり、製品のアップデート・モジュールを入手するには、製品を登録する必要があります。製品の登録方法は、この後にある「テクニカルサポート」セクションを参照してください。
.mod ファイルを生成するバージョンを含む、バージョン 8.0 より前のコンパイラーでコンパイルされたすべての Fortran ソースは再コンパイルする必要があります。8.0 より前のバージョンでビルドされたサードパーティーのライブラリーを使用している場合、これらのライブラリーもリビルドする必要があります。リビルドが必要なライブラリーの詳細については、インテル® プレミアサポート (英語) でご確認ください。インテル® Fortran 8.0 以降でビルドされた Fortran ソースは、バージョン 10.1 で再コンパイルする必要はありません。
後のセクション、「Fortran と C++ 言語が混在したアプリケーションのリンクの変更」も参照してください。
このセクションでは、インテル® Fortran コンパイラー 10.0 以降の新機能および変更点について説明します。インテル® デバッガーのリリースノートも参照してください。
以下に、バージョン 9.1 の最初のリリースから変更または追加されたコマンドライン・オプションをリストします。これらのオプションの詳細な情報は、コンパイラーのドキュメントを参照してください。
-assume [no]old_boz
-assume:noold_boz
) -assume [no]old_unit_star
-assume:old_unit_star
) -assume protect_parens
REAL
および COMPLEX
の式評価で、演算の関連付けを変更せずに、括弧を考慮に入れて最適化するかどうかを指定します。(デフォルト: オフ) -assume [no]realloc_lhs
-assume [no]std_mod_proc_name
-axS
-check [no]pointer
ALLOCATABLE
変数によるアクセスのランタイムチェックを有効または無効にします。(デフォルト: オフ)-cxxlib-nostd
-diag-<type> <diag-list>
-diag-dump
-diag-enable sv[1|2|3]
-diag-enable sv-include
-diag-file[=file]
-diag-file-append[=file]
-[no-]diag-id-numbers
-f[no-]align-functions[=n]
-fast
-f[no-]instrument-functions
-f[no]-keep-static-consts
-fp-speculation=<mode>
-[no-]func-groups
-gdwarf-2
-heap-arrays[-]
-help [category]
-ipo-jobs<n>
-march=<cpu>
-msse[n]
-msse2
) -mtune=core2
-openmp-lib type
legacy
) -[no-]opt-multi-version-aggressive
-opt-ra-region-strategy [=keyword]
default
) -opt-streaming-stores keyword
auto
) -[no-]par-runtime-control
-par-schedule-<keyword>[=n]
-[no-]prefetch
-xT
を指定する必要があります。(IA-32 および IA-64 システムのみ。デフォルト: オフ) -save-temps[-]
-shared-intel
libguide
を除くすべてのライブラリーを静的にリンク)-shared-libgcc
-static-intel
libguide
を除くすべてのライブラリーを静的にリンク) -static-libgcc
-std または -stand
-std03
または -stand f03
-tcheck [<mode>]
-tcollect
-[no-]unroll-aggressive
-[no-]vec-guard-write
-xO
-xS
推奨されていない (現在はサポートされているが、将来のバージョンでは削除される予定の) コマンドライン・オプション、または削除された (サポートが終了した) コマンドライン・オプションの詳細は、ドキュメントの「コンパイラー・オプション」 > 「推奨されていないコンパイラー・オプション (古いオプション) と削除されたコンパイラー・オプション」を参照してください。
-fast
の変更
-fast
オプションは、一般的にランタイム・パフォーマンスを向上させるオプションのセットを指定するための簡単な方法です。ドキュメントに記載されているように、オプションのセットは変更されることがあります。-fast
は、バージョン 10.0 では -xT
を設定しますが、以前のバージョンでは -xP
を設定します。この変更により不都合が生じる場合は、-fast
を使用する代わりに、各オプションを個別に設定する必要があります。詳細は、ドキュメントの「コンパイラー・オプション」を参照してください。
-stand
の変更バージョン 10.0 では、キーワードなしで -stand
オプションを指定すると、-stand:f03
または Fortran 2003 規格に対する適合性のチェックとして処理されます。Fortran 90 または Fortran 95 への適合性をチェックする場合は、-stand:f90
または -stand:f95
を指定してください。-std
と -stand
は同じです。『Intel® Fortran Language Reference』(英語) は、まだ Fortran 2003 の機能を Fortran 95 の拡張機能として説明しています。
-xW
オプション インテル® 64 対応システムでは、-xW
はデフォルトで有効になります。これは、ベクトル化を有効にする効果があります。また、以前のバージョンを使用したときには表示されていなかった場所で、ベクトル化レポートメッセージが表示されます。ベクトル化レポートメッセージを表示しないようにするには、-diag-disable vec
を使用してください。-xP
や -axT
のような代替オプションも指定できます。
多くのコマンドライン・オプションでは、オプション名でハイフン ("-") の代わりに、古い記述方法の下線 ("_") を使用しています。この古い記述方法は、まだ有効です。
バージョン 10.1 から -openmp-lib compat
オプションにより、OpenMP ライブラリー互換の gcc を使用するように指定できるようになりました。アプリケーションに gcc または g++ で構築されたソースモジュールが含まれており、アプリケーションで OpenMP を使用する場合、このオプションを指定することを推奨します。デフォルトは、-openmp-lib legacy
で、インテルが提供する OpenMP ライブラリーを使用します。
Fortran 2003 では、以前の規格では拡張機能であった言語機能と、定義されていなかった言語機能の動作が定義されています。インテル® Fortran コンパイラー 10.1 は Fortran 2003 を完全にサポートしていませんが、以前のバージョンでは異なる動作を使用していた以下の場合において、Fortran 2003 規格の動作を採用しています。それ以外のケースでは、コンパイラーのデフォルトは変更されていません。以下に具体的な動作について説明します。
Fortran 95 では、割り当て可能な配列へ代入するには、代入の左辺と右辺の形状および長さパラメーターが一致している必要があります。Fortran 2003 では、形状と長さパラメーターが一致していない場合、代入されている変数の割り当ては解除され、代入されている式と一致する形状と長さパラメーターに再度割り当てられます。バージョン 10.1 では、Fortran 2003 の動作を実行することもできますが、パフォーマンスが大幅に損なわれるため、デフォルトでは形状と長さのパラメーターが一致していなければならない Fortran 95 の動作を選択しています。形状の一致していない変数の割り当てを解除して再度割り当てる Fortran 2003 の動作を選択する場合は、-assume realloc_lhs
を指定してください。
Fortran 95 では、2 進、8 進、および 16 進の定数 (BOZ 定数) は DATA 文でのみ使用可能で、整数型のスカラー変数の初期化に限定されていました。Fortran 95 の拡張として、インテル® Fortran コンパイラーでは、コンテキストでの BOZ 定数の使用を許可し、コンテキストにより型を解釈していました。Fortran 2003 では、数値型の初期化に加え、INT、REAL、DBLE、および CMPLX 組み込み関数の引数に BOZ 定数を使用することができます。
BOZ 定数の使用に対する Fortran 2003 のセマンティクスは、INT、REAL、DBLE、および CMPLX 組み込み関数の引数として使用する場合を除き、以前のバージョンのインテル® Fortran コンパイラーの拡張と同じです。組み込み関数の引数として BOZ 定数を使用する場合、Fortran 2003 では、組み込み関数によって返されるデータ型のバイナリー値として直接解釈しています。一方、以前のバージョンのインテル® Fortran コンパイラーでは、符号付整数値として解釈してから変換しています。
次に例を示します。
print *, real(Z'40490FDB')
以前の動作 (-assume:old_boz
) は 1.0785300E+09 を出力しますが、新しい動作 (-assume:noold_boz
) は 3.141593 を出力します。
バージョン 10.0 では、インテル® Fortran コンパイラーのデフォルトの動作は Fortran 2003 と同じで、変換せずにバイナリー値を渡します。アプリケーションで以前の動作が必要な場合は、-assume:old_boz
オプションを使用してコンパイルしてください。
インテル® Fortran コンパイラーでは、デフォルトで、I/O ユニットおよび ACCEPT
文、PRINT
文、TYPE
文で使用される暗黙的なユニットに、OPEN
文で指定される可能性があるユニット 5 またはユニット 6 以外のユニット番号が関連付けられています。Fortran 2003 では、デフォルトのユニットに対して OPEN を使用できますが、インテル® Fortran コンパイラーはこの動作に対応していません。
バージョン 10.0 では、この動作に対応するために、-assume:[no]old_unit_star
コンパイル・コマンド・オプションが追加されました。デフォルトの -assume:old_unit_star
は、ユニットにユニット 5 およびユニット 6 以外を使用するという現在および以前の動作を引き継いでいます。Fortran 2003 規格の動作を使用する場合、または Fortran 2003 の組み込みモジュール ISO_FORTRAN_ENV
およびその定義済み定数 INPUT_UNIT
と OUTPUT_UNIT
を使用する場合は、-assume:noold_unit_star
を指定して、ユニット (および ACCEPT
、PRINT
、TYPE
) にユニット 5 (入力) とユニット 6 (出力) を使用できます。
この動作のデフォルトは、将来のリリースで変更されることがあります。
RECL=
書式なしファイルの単位インテル® Fortran コンパイラー 10.0 では、バージョン 8.x および 9.x と同様、書式なし I/O でファイルを開く場合、OPEN
文の RECL=
キーワードには、デフォルトの整数のサイズである 4 バイトが指定されます。以前の Fortran 規格では、RECL=
単位は実装依存とされていましたが、Fortran 2003 では 1 桁のバイト単位を推奨しています。書式なし I/O の RECL=
単位にバイトを指定するには、-assume:byterecl
コンパイラー・オプションを使用します。アプリケーションで組み込みモジュール ISO_FORTRAN_ENV
の名前付き定数 FILE_STORAGE_SIZE
を使用している場合も、このコンパイラーオプションを使用する必要があります。
.XOR
. 組み込み演算子インテル® Fortran コンパイラーは、組み込み演算子 .XOR.
を拡張として定義します。この結果、組み込み演算子と同じ名前で優先順位が異なるユーザー定義演算子との間で競合が発生します。独自の演算子 .XOR.
を定義している場合は、-assume no_old_xor
を指定して、コンパイラーの組み込み演算子としての .XOR.
の定義を無効にすることができます。
インテル® Fortran コンパイラーは、モジュール名とプロシージャーまたは変数名をセパレーター "_mp_
" と組み合わせ、標準の名前修飾規則を適用して、モジュール・プロシージャーと変数のグローバル名を作成します。例えば、モジュール MYMOD
のプロシージャー SUB
のグローバル名は MYMOD_mp_SUB
です。この方法では、名前に文字列 _mp_
を含むユーザー・プロシージャーとグローバル名が競合することがあります。アプリケーションでこの競合が発生した場合、オプション -assume noold_mod_proc_name
を指定してください。このオプションは、セパレーターの大文字と小文字を変換してデフォルトの名前と逆になるようにします。名前の一貫性を保つために、アプリケーション全体で同じオプションを指定する必要があります。
バージョン 10.1 は、ファイルをバイトのストリームとして読み書きできる Fortran 2003 ストリーム I/O 機能をサポートします。ストリームアクセスを有効にするには、ACCESS='STREAM'
を指定してファイルを開いてください。READ
および WRITE
文は、ファイルの位置を指定する POS=
キーワードをサポートします。詳細は、『Intel® Fortran Language Reference』(英語) を参照してください。
インテル® Fortran コンパイラーは、OPEN 文で RECORDTYPE 値 STREAM、STREAM_CR および STREAM_LF を拡張としてサポートしています。以前のバージョンでは、ドキュメントと実装のどちらも不正確で、この 2 つに一貫性がありませんでした。古い動作は次のとおりです。
さらに、CARRIAGECONTROL='NONE' が指定されると、動作が変更されていました。
バージョン 10.1 では、動作が次のように変更されました。
新しいオプションが次のように定義されました。
CARRIAGECONTROL は RECORDTYPE の動作に影響しなくなりました。
Windows のデフォルトのレコード区切り文字は CR-LF で、Linux および Mac OS では LF です。これらの変更により、3 つのオペレーティング・システムすべてで、一貫した方法で特定の区切り文字を指定できるようになりました。
ソースを変更しないでアプリケーションのランタイム動作を変更する場合、新しい環境変数 FOR_FMT_TERMINATOR
を定義してください。この環境変数の値は、次の形式になります。
mode[:ulist][;mode[:ulist]...]
mode は CR
、LF
、CRLF
のいずれかです。ulist は mode を適用するユニット番号の範囲 (例えば、2,17-20, 91
) です。
バージョン 9.1 の最初のリリースから、次の Fortran 2003 規格の新機能が追加されています (一部の機能は、バージョン 9.1 のアップデートで追加されました)。詳細は、『Intel® Fortran Language Reference』(英語) を参照してください。
/assume:byterecl
および /assume:noold_unit_star
を使用してコンパイルする必要があります)COMMAND_ARGUMENT_COUNT 組み込みプロシージャー次の新しい言語機能に関する詳細は、『Intel® Fortran Language Reference』(英語) を参照してください。
ランタイム時のアプリケーションの動作を変更するための新しい環境変数が 2 つ (FORT_FMT_RECL
および FORT_UFMT_RECL
) 追加されました。
FORT_FMT_RECL
は、書式付き I/O 用に開かれるすべての Fortran ユニットで使用する RECL
(レコード長) のデフォルト値を指定します。符号なし 10 進整数値が定義されると、RECORDTYPE
が 'FIXED'
でない場合、環境変数の値が OPEN
に対して指定されている RECL=
であるかのように使用されます。この環境変数は、リスト指定の出力でカラム数 (デフォルトでは 80) を変更するのによく使用します。
FORT_UFMT_RECL
は、書式なし I/O 用に開かれるすべての Fortran ユニットで使用する RECL
(レコード長) のデフォルト値を指定します。符号なし 10 進整数値が定義されると、RECORDTYPE
が 'FIXED'
でない場合、環境変数の値が OPEN
に対して指定されている RECL=
であるかのように使用されます。この環境変数は、一般的に、RECORDTYPE='SEGMENTED'
で開いたファイルの最大セグメント長 (デフォルトでは 2040 バイト) を変更するのに使用されます。
KMP_AFFINITY
環境変数 OpenMP アプリケーションでは、KMP_AFFINITY
を使用して、システム上のプロセッサーに実行スレッドをバインドする方法を指定することができます。この設定はプログラム実行中、各スレッドを、生成される順序 (ラウンドロビン方式 (総当り)) に基づき、システム上のプロセッサー・コアにバインドします。KMP_AFFINITY
の値は、次の形式になります。
compact,<level>
<level>
は正の整数です。次に例を示します。
compact,1
<level>
引数は、バイナリーツリーで表されるマシンのトポロジーマップで、バインドされる連続スレッドのコア間のギャップを指定します。レベル 0 は、インテル® ハイパースレッディング・テクノロジー (HT テクノロジー) 対応のプロセッサー、または連続するプロセッサーの連続するスレッド・コンテキストにスレッドがバインドされることを示します。スレッド・コンテキストからコア、そしてパッケージ (プロセッサー) の順に、レベルが 1 つずつ上がります。この設定は、インテル® プロセッサーが搭載され、スレッド・バインディングに対応したオペレーティング・システムでのみサポートされています。
このバージョンでは、メモリーおよびループの最適化を行う最適化レベル O2
と O3
で、並列化 (すべてのシステム) とベクトル化 (IA-32 およびインテル® 64 対応システム) を統合するように最適化機構が完全に再設計されています。
次の改善により、パフォーマンスの大幅な向上が期待できます。
ループ変換 (HLO) の最適化レポートは、ループ変換 (交換) を適用できなかった原因を示し、検出されたボトルネックが、ソースの変更により排除できる場合はループ変換を推奨します。これらのレポートは、より詳細な情報を提供し、理解しやすいように強化されています。
スタティックの検証は、複数のソースファイルに渡ってプログラムを静的に解析する新しい機能です。ユーザーコード内のさまざまな不具合や言語機能と矛盾している箇所を特定して、重要度に応じて報告します。スタティックの検証は、C/C++ および Fortran のコードを理解し、OpenMP 宣言子の解析も行います。
インテル® Fortran コンパイラーは、最新の Fortran 規格である、Fortran 2003 の多くの機能をサポートしています。現在サポートしていない Fortran 2003 機能についても、今後サポートしていく予定です。現在のコンパイラーでは、以下の Fortran 2003 機能がサポートされています。
スタティックの検証は、クロスファイルのプロシージャー間の最適化 (/Qipo) とともに使用することはできません。
詳細は、ドキュメントの「アプリケーションのビルド」 > 「エラー処理」 > 「コンパイル時エラー処理」 > 「スタティックの検証診断オプションの使用」を参照してください。
インテル® コンパイラーは、一般的なプロセッサーとオペレーティング・システムを組み合わせた、3 つのプラットフォームをサポートしています。このセクションでは、本ドキュメント、インストール手順、およびサポートサイトでプラットフォームの記述に使用されている用語について説明します。
「ネイティブ」とは、アプリケーションを実行するプラットフォームと同じプラットフォームでアプリケーションをビルドする (例えば、IA-32 システムで実行するアプリケーションを IA-32 システムでビルドする) ことを指します。「クロスプラットフォーム」または「クロスコンパイル」とは、アプリケーションを実行するプラットフォームとは異なる種類のプラットフォームでアプリケーションをビルドする (例えば、IA-64 システムで実行するアプリケーションを IA-32 システムでビルドする) ことを指します。すべての組み合わせのクロスプラットフォーム開発がサポートされているわけではありません。また、組み合わせによっては、オプションのツールとライブラリーをインストールする必要があります。
サポートされているホスト (アプリケーションをビルドするシステム) とターゲット (アプリケーションを実行するシステム) の組み合わせを次に示します。
注: ホストと異なるターゲットの開発を行う場合、Linux ディストリビューションから別のライブラリー・コンポーネントのインストールが必要になることがあります。
注: インテル® クラスター OpenMP にはライセンスが別途必要で、動作環境もコンパイラーとは異なります。詳細は、インテル® クラスター OpenMP のドキュメントを参照してください。
libstdc++.so.5
を提供する Linux コンポーネント compat-libstdc++
libstdc++.so.5
を提供する Linux コンポーネント compat-libstdc++
libstdc++.so.5
を提供する Linux コンポーネント compat-libstdc++
インテル® コンパイラーは、 さまざまな Linux ディストリビューションと gcc バージョンで動作確認されています。一部の Linux ディストリビューションには、動作確認に使用したヘッダーファイルとは異なるバージョンのものが含まれていて、問題を引き起こすことがあります。使用する glibc のバージョンは、gcc のバージョンと同じでなければなりません。
注:
-O3
、-ipo
および -openmp
などの高度な最適化オプションを使用してコンパイルする場合は、相当な量の RAM が必要になります。コンパイラーのインストールおよびコンパイラー環境の設定についての情報は、「インストール・ガイド」を参照してください。デフォルトのインストール・ディレクトリーは、次のとおりです (このドキュメントでは <install-dir>
および <idb-install-dir>
として表記されています)。
/opt/intel/fc/10.1.xxx
(IA-32 および IA-64 システム)
/opt/intel/fce/10.1.xxx
(インテル® 64 対応システム)
/opt/intel/idb/10.1.xxx
(IA-32 および IA-64 システム)
/opt/intel/idbe/10.1.xxx
(インテル® 64 対応システム)
-openmp
スイッチを使用してインテル® コンパイラー 9.0 でコンパイルしたプログラムは、インテル® コンパイラー 10.1 をインストールすると実行できなくなることがあります。ローダーはランタイム時に終了し、_intel
(例: _intel_fast_memset
) という文字列から始まる未定義のシンボルに関するエラーメッセージが表示されます。この場合、インテル® コンパイラー 10.1 を使用して実行ファイルを再コンパイルすると、ローダー・エラー・メッセージは表示されなくなります。
RPM 4.0.2 はデフォルト以外のディレクトリーにはインストールできません。この問題は RPM 4.0.3 で修正されています。また、RPM 4.1 もデフォルト以外のディレクトリーにはインストールできません。この問題は RPM 4.11 から 4.2 で修正されています。
libpthreads.a
を静的にリンクして作成されたアプリケーション (-static
が使用された場合、libpthreads.a
がデフォルトで使用されます) で 2GB 以上のスタック領域を使用すると、Linux のバージョンによってはセグメンテーション違反が発生することがあります。これは Linuxthreads の既知の制限です。この問題が発生した場合、libpthreads を動的にリンクしてください。Red Hat Linux 9 および Red Hat Enterprise Linux 3.0 では、nptl-devel
パッケージをインストールして、ifort コマンドラインで "-I/usr/include/nptl -L/usr/lib/nptl
" を指定する方法もあります。このコマンドは、スタックサイズの制限がない、nptl でのみ動作し静的にリンクされるバイナリーを作成します。
大きなサイズのスタックを必要とする POSIX* スレッドのプログラムの場合、一部の Linux のバージョンでは正常に動作しないことがあります。これは、Linux の POSIX スレッド・ライブラリーのバージョンによっては、ハードコードされたスタックサイズに制限があるためです。インテル® コンパイラーでは POSIX スレッド・ライブラリーを使用して OpenMP ベースおよび自動生成による並列化を実装しているため、上記の制約は OpenMP プログラム (-openmp
)、およびインテル® コンパイラーで自動生成された並列プログラム (-parallel
) にも適用されます。通常、スタックの容量制限を超過したスレッドプログラムを実行すると、セグメンテーション違反またはアドレッシング・エラーが発生します。
この制約を回避するには、FLOATING_STACKS
パラメーターが定義されている glibc のバージョンを使用するようにしてください。いくつかのディストリビューションでは、これは pthreads ライブラリーのスタティック・バージョンではなく、共用バージョンを使用することを意味します。そして、ulimit -s
または limit stacksize
コマンドを実行して、最大シェル・スタック・サイズを (unlimited
ではない) 十分な大きさの値 (単位:KB) に設定し、さらに環境変数 KMP_STACKSIZE
を必要なスレッド・スタック・サイズ (単位:バイト) に設定してください。bash シェルでは、ulimit -s
コマンドを使用して最大スタックサイズを設定できるのは 1 回のみであることに注意してください。C シェル (csh) では、limit stacksize
を使用することで、最大スタックサイズを何回でもリセットできます。
一部の Linux バージョン (例: Red Hat Enterprise Linux 4 以前) で、/usr/lib/libpthread.a
および /usr/lib/libc.a
のデフォルトのインストールでは、Linux スレッド・ローカル・ストレージ (TLS) を完全にサポートしていません。Linux TLS メカニズムを使用して -static
でリンクする場合は、スレッド・ローカル・ストレージにアクセスしようとすると、-openmp
のインクルードまたは libpthread
の呼び出しはランタイムエラーを引き起こすことがあります。この問題を解決するには、nptl-devel.rpm
パッケージ (Linux インストール CD に含まれる) をインストールして、-L/usr/lib/nptl
を指定してコンパイルします。
THREADPRIVATE
" として宣言された場合、共用ブロックの長さはブロックが宣言されたすべてのソースファイルで同じでなければなりません。 gprel relocation
エラーメッセージIA-64 ベースの Linux システムでダイナミック共用オブジェクト (.so) の作成を指定する –shared スイッチが使用された場合、ld は次のように診断メッセージ "@gprel relocation against dynamic symbol" を出力します。
/usr/bin/ld: for_init.o: @gprel relocation against dynamic symbol for__segv_default_msg
...
/usr/bin/ld: for_init.o: @gprel relocation against dynamic symbol for__l_fpe_mask
/usr/bin/ld: for_init.o: @gprel relocation against dynamic symbol for__l_undcnt
この問題を解決するには、コマンドラインに –i_dynamic
および –nofor_main
スイッチを追加します。バージョン 9.0 では、-shared
を指定すると、オプション -i_dynamic
および -nofor_main
が自動的に設定されます。
-ipo_obj
オプションのサポートの終了直接オブジェクト・コードの生成を強制する -ipo_obj
オプションはサポートされなくなりました。このオプションが指定された場合、警告が表示され、代わりに -ip
オプションが指定された状態になります。
-relax
がリンカーに渡されない バージョン 9.0 から、-r
オプションと競合するために、コンパイラー・ドライバーは IA-64 システムで -relax
スイッチをリンカーに渡さないようになりました。binutils 2.11.90.0.27 以降 (2.14 を推奨) を使用している場合、-relax オプションはデフォルトで指定されるため、指定する必要はありません。古いバージョンの binutils を使用していて -relax
オプションを指定する場合、リンカーを起動するコンパイラーのコマンドで -Xlinker -relax
を使用してください。
libunwind.so.7
に関する ld
警告SUSE LINUX Enterprise Server 10 上でインテル® コンパイラーを使用してアプリケーションをビルドすると、次のような警告が表示されることがあります。
ld: warning: libunwind.so.7, needed by /usr/lib/gcc/ia64-suse-linux/4.1.0/../../..//libgcc_s.so, may conflict with libunwind.so.6
ifort.cfg
に次の行を追加して、この問題を回避することができます。
-L /usr/lib
この問題は、インテル® コンパイラーの将来のバージョンで修正される予定です。
(-ax*
) 使用時のデバッグ情報の制限-ax{W|N|B|P}
を使用してコンパイルを行うと、各関数について汎用コードと CPU 特有のコードの 2 種類のコードが生成されます。各関数のシンボルは自動 CPU ディスパッチ・ルーチンを参照して、ランタイムに実行するコードセクションを決定します。これらの関数にデバッガーのブレークポイントが名前でセットされると、ディスパッチ・ルーチンでアプリケーションが停止します。その結果、デバッグ時に予測できない動作が発生します。この問題は、インテル® デバッガーおよびインテル® コンパイラーの将来のバージョンで修正される予定です。
-fp
オプションを使用しないでビルドされた IA-32 プログラムをデバッグまたはトレースバック表示できない
-fp
を使用してコンパイルを行うと、IA-32 EBP レジスターは汎用レジスターではなくフレームポインターとして使用されます。デバッガーおよびトレースバック・ハンドラーは、-fp
を使用しないでコンパイルされた関数への呼び出しを含むスタックから適切にスタックを戻すことができません。-g
または -O0
を使用してコンパイルすると、-fp
は暗黙的に有効になりますが、より高い最適化レベル (-O2
など) を明示的に指定した場合は有効になりません。アプリケーションでデバッガーまたはトレースバックを使用する場合で、-O0
よりも高い最適化レベルを使用する場合は、デバッガーおよびトレースバック・ハンドラーがフレームポインターを使用できるように、-fp
も指定してください。
古いバージョンの GNU アセンブラーは、-[a]xP
、T
、または S
オプションを使用して生成されたアセンブリー・コードを処理できません。この問題が発生した場合は、binutils バージョン 2.17.50.0.15 以降を使用してください。
idb
の使用-debug
キーワード inline_debug_info
、semantic_stepping
、variable_locations
または extended
を使用する場合、インテル® デバッガーを使用してください。他のデバッガーを使用すると、拡張デバッグ情報が正しく処理されず、予期しない動作が行われる可能性があります。弊社では、現在、他のデバッガーの開発者と拡張デバッグ情報をサポートするための作業を進めております。
-auto_ilp32
オプションがサポートされていないアプリケーションが 32 ビットのアドレス空間を超えることができないことを指定する -auto_ilp32
オプションは、ドキュメントに記載されていますが、サポートされていません。
-check
オプションまたは -C
オプションを使用してランタイムチェックを有効にすると、コンパイラーはコンパイル時に (その時点で診断を行うことができる) 要求された条件の診断を発行することがあります。例えば、-check:bounds
または -CB
を使用する場合、インデックスが定数である配列の境界違反は、コンパイル時にエラーとなります。
インストール時にコンパイラーの登録を行わなかった場合は、インテル® ソフトウェア開発製品レジストレーション・センターで登録してください。登録を行うことで、サポートサービス期間 (通常は 1 年間) の間、すべてのアップデートと新しいバージョンの入手を含む、インテル® プレミアサポートのすべての機能にアクセスできます。
テクニカルサポート、製品のアップデート、ユーザーフォーラム、FAQ、ヒント、およびその他のサポート情報は、http://www.intel.com/software/products/support/flin を参照してください。
注: 代理店がテクニカルサポートを提供している場合は、インテルではなく代理店にお問い合わせください。
Submit Issue
] リンクをクリックします。
Product Type
] ドロップダウン・リストから [Development Environment (tools,SDV,EAP)
] を選択します。
Product Name
] ドロップダウン・リストから [Intel® Fortran Compiler for Linux*
] を選択します。
注: 特定の国へのアクセスを制限する必要があるソースコードを送信する場合は、ソースコードを送信する前にサポート担当者までお問い合わせください。
> uname -a
> rpm -qa | grep glibc
rpm
をインストールしている場合は、下記のコマンドを実行します。 > ls /lib/libc*
下記のコマンドで、インテル® Fortran コンパイラーのパッケージ ID を取得します。
> ifort -V
出力された「Package ID」(例: l_fc_x_10.1.xxx
) をインテル® プレミアサポートの適切なフィールドにコピーします。また、問題の解決に役立つと思われる事項はすべてお伝えください。
コンパイラーの最新バージョンで修正された問題点については、インテル® ソフトウェア開発製品レジストレーション・センターからダウンロードできる <package ID>_README
(例: l_fc_x_10.1.xxx_README
) を参照してください。
Compiler Error Source Reducer (CESR) は、C/C++ または Fortran ソースコードで構成されたテストケースの収集、縮小、特定、保護、文書化、およびバンドルを行うユーティリティーのセットです。大規模なアプリケーションからインテル® プレミアサポートに送信する小さなテストケースを抽出する場合に便利です。CESR は、インテル® ソフトウェア開発製品レジストレーション・センターの [製品のダウンロード] からダウンロードできます。製品を選択して、バージョンのドロップダウンから [CESR] を選択します。CESR は試験的に提供されているもので、サポートは提供されておりません。CESR に関するご意見およびご感想は、インテル® プレミアサポートまでお寄せください。CESR を利用するには、Python* 2.2 またはそれ以降をあらかじめインストールしておく必要があります。
インテル® コンパイラーのドキュメントおよび HTML ベースの関連ドキュメントは、ご使用の Web ブラウザーでご覧になれます。Firefox などの JavaScript をサポートしている Web ブラウザーで、JavaScript を有効にしてアクセスすることで、オンライン・ヘルプ・ファイルでフル・ナビゲーション、検索、キーワード検索、およびハイパーリンク機能を利用できます。
ドキュメントは、<install-dir>/doc
ディレクトリーにインストールされます。HTML 版のドキュメント・インデックスは、<install-dir>/doc/doc_index.htm
です。『Intel® Debugger Manual』(HTML 形式、英語) は、インテル® デバッガーの doc ディレクトリーにあります。
ifort
(1) manpage では、コマンドライン・オプションおよび ifort
コンパイラー・コマンドに関する情報のリストが提供されています。ifort
(1) manpage を表示するには、<install-dir>/bin/ifortvars.*sh
ファイルを実行する source コマンドを使用して環境を設定してから、次のコマンドを入力してください。
$ man ifort
man
コマンドでは、表示された内容のスクロール、文字列の検索、特定の場所へのジャンプ、その他の機能を実行する単一キーまたはキーの組み合わせを利用できます。例えば、z
を入力すると次の画面、w
を入力すると前の画面を表示します。man コマンドのヘルプを表示するには、h
キーを入力します。ヘルプを閉じるには、q
キーを入力して、表示されている manpage に戻ります。検索するには、/
文字の後に検索する文字列 (/string
) を入力して、Enter を押します。man コマンドのテキストの表示後、q
を押すと、シェルコマンドのプロンプトに戻ります。
HTML ドキュメント形式は、サポートされている Linux ディストリビューションに付属している Web ブラウザーで動作することを確認しています。コンパイラー・ドキュメンテーションの PDF バージョン (英語) は、http://developer.intel.com/software/products/compilers/flin/docs/manuals.htm から入手できます。
インテル® ソフトウェア開発製品の詳しい情報については、http://www.intel.co.jp/jp/software/products/ を参照してください。
関連製品の一部を次にリストします。
本資料に掲載されている情報は、インテル製品の概要説明を目的としたものです。本資料は、明示されているか否かにかかわらず、また禁反言によるとよらずにかかわらず、いかなる知的財産権のライセンスを許諾するためのものではありません。製品に付属の売買契約書『Intel's Terms and Conditions of Sale』に規定されている場合を除き、インテルはいかなる責を負うものではなく、またインテル製品の販売や使用に関する明示または黙示の保証(特定目的への適合性、商品性に関する保証、第三者の特許権、著作権、その他、知的所有権を侵害していないことへの保証を含む)にも一切応じないものとします。インテルによる書面での同意がない限り、インテル製品は、インテル製品の停止を起因とする人身傷害または死亡を想定して設計されていません。
インテル製品は、予告なく仕様や説明が変更される場合があります。機能または命令の一覧で「留保」または「未定義」と記されているものがありますが、その「機能が存在しない」あるいは「性質が留保付である」という状態を設計の前提にしないでください。これらの項目は、インテルが将来のために留保しているものです。インテルが将来これらの項目を定義したことにより、衝突が生じたり互換性が失われたりしても、インテルは一切責任を負いません。この情報は予告なく変更されることがあります。この情報だけに基づいて設計を最終的なものとしないでください。
本資料で説明されている製品には、エラッタと呼ばれる設計上の不具合が含まれている可能性があり、公表されている仕様とは異なる動作をする場合があります。現在確認済みのエラッタについては、インテルまでお問い合わせください。
最新の仕様をご希望の場合や製品をご注文の場合は、お近くのインテルの営業所または販売代理店にお問い合わせください。
本書で紹介されている注文番号付きのドキュメントや、インテルのその他の資料を入手するには、1-800-548-4725 (アメリカ合衆国) までご連絡いただくか、インテルの Web サイトを参照してください。
Intel、インテル、Intel ロゴ、Intel Core、Itanium、Pentium、Xeon は、アメリカ合衆国およびその他の国における Intel Corporation の商標です。
* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。
© 2007 Intel Corporation.無断での引用、転載を禁じます。