Linux 版インテル(R) Fortran コンパイラは、すべてのインテル(R) IA-32 プロセッサおよびインテル(R) Itanium(R) プロセッサに対応し、これらのプロセッサ上できわめて高速に動作するソフトウェアを生成します。インテル(R) コンパイラは、インテル(R) Pentium(R) 4 プロセッサと Pentium M プロセッサのストリーミング SIMD 拡張命令 2 (SSE2)、ハイパー・スレッディング (HT) テクノロジ インテル Pentium 4 プロセッサのストリーミング SIMD 拡張命令 3 (SSE3)、インテル Itanium 2 プロセッサのソフトウェアのパイプライン化など数々の最適化機能に対応しているほか、 プロシージャ間の最適化 (IPO) やプロファイルに基づく最適化 (PGO) によってアプリケーションのパフォーマンスを大きく向上させます。また、OpenMP* に対応し、自動並列化機能も備えるなど、マルチスレッド・コードの開発もサポートしています。
インテル・コンパイラを使用して、Pentium 4 プロセッサおよび Itanium プロセッサ用にアプリケーションを最適化する方法については、『Optimizing Applications with the Intel C++ and Fortran Compilers for Windows* and Linux』(英語) を参照してください。インテル・ソフトウェア開発製品の詳しい情報については、http://www.intel.co.jp/jp/developer/software/products/ を参照してください。
IA-32 ベース・アプリケーション開発用インテル Fortran コンパイラは以下の内容で構成されています。
/doc/fcompindex.htm
) が提供されています。
Itanium ベース・アプリケーション開発用インテル Fortran コンパイラは、以下の内容で構成されています。
/doc/fcompindex.htm
) が提供されています。
.mod ファイルを生成するバージョンを含む、バージョン 8.0 以前のコンパイラでコンパイルされたすべての Fortran ソースは再コンパイルする必要があります。8.0 以前のバージョンでビルドされたサードパーティのライブラリを使用している場合、これらのライブラリもリビルドする必要があります。リビルドが必要なライブラリの詳細については、インテル(R)プレミア・サポート (英語) でご確認ください。インテル Fortran 8.0 でコンパイルされた Fortran ソースをバージョン 8.1 で再コンパイルする必要はありません。
バージョン 8.1 は、インテル Fortran のマイナー・アップデートです。このリリースの主目的は、コンパイラの安定性とランタイム・パフォーマンスの向上です。
次の新しい定義済みプリプロセッサ・シンボルが利用可能になりました。
__INTEL_COMPILER_BUILD_DATE
は、YYYYMMDD 形式でコンパイラのビルド日付を指示します。この日付は、バージョン・バナーに表示されるビルド日付と同じです。この定義済みマクロを使用して、インテル・コンパイラの特定のアップデートに対応するように、コードを条件付きにすることができます。YYYYMMDD 文字列の値は、新しいリリースに合わせて変更されます。-zero
の実装-zero
オプションが実装されました。このオプションを指定すると、プログラムが実行された際に、コンパイラはローカル (COMMON と MODULE 以外)、スタティック (割り当て可能または自動でない)、スカラ (配列または派生型でない) 変数の値をゼロに初期化します。これは、変数が DADA ステートメント中で命名され、初期値がゼロの場合と同じです。
BLOCK DATA
サブプログラムの禁止コンパイル中に 2 つ以上の名前を指定されていない BLOCK DATA サブプログラムがあると、Fortran 標準に従って、エラーになります。
-fast
の意味の変更バージョン 8.1 では、-fast
を指定すると、オプション -O3 -ipo -static -xP
が指定されます。
-ipoN
オプション以前のバージョンでは、-ipo
を指定してマルチファイル IPO 実行すると、リンカへの入力として 1 つのオブジェクト・ファイルのみが生成されていました。これは、バージョン 8.1 でもデフォルトの動作です。バージョン 8.1 で新しくなったのは、リンカへの入力用に複数のオブジェクト・ファイルをコンパイラが作成できるようになった点です。この機能により、大規模なアプリケーションではリンク時間が短くなることがあります。生成されるオブジェクト・ファイルの最大数を指定するには、-ipoN
オプション (N
は作成されるオブジェクト・ファイルの最大数) を使用します。例えば、-ipo4
は最大 4 つのオブジェクト・ファイルを指定します。コンパイラは、アプリケーションのサイズに応じて、最大数以下のファイルを作成します。-ipo0
が指定されると、コンパイラは、アプリケーションの合計サイズに基づいて、オブジェクト・ファイルの適切な数を選択します。
KMP_SCHEDULE
環境変数 新しい環境変数 KMP_SCHEDULE
は、OpenMP でチャンクサイズを指定することなく静的にスケジュールされる並列ループの負荷のバランス調整に使用することができます。デフォルト値は KMP_SCHEDULE="static,greedy"
です。反復結果 (#iterations/#threads) は切り上げられてほとんどのスレッドに割り当てられますが、最後のスレッドに割り当てられる反復回数は少なくなります。これは、以前のコンパイラの動作に相当します。別の値 KMP_SCHEDULE="static,balanced"
を使用すると、反復結果は切り捨てられてほとんどのスレッドに割り当てられ、いくつかのスレッドに割り当てられる反復回数は他のスレッドよりも 1 回多くなります。スレッドに割り当てられる最大の反復回数は同じですが、各スレッドの反復回数が平均化することで、パフォーマンスの向上につながることがあります。
例えば、4 つのスレッドで反復回数が 9 回のループを実行すると、次のようになります。
|
反復回数 |
|||
スレッド 0 |
スレッド 1 |
スレッド 2 |
スレッド 3 |
|
|
3 |
3 |
3 |
0 |
|
3 |
2 |
2 |
2 |
これらのオプションの情報は、『コンパイラ・オプション・クイック・リファレンス・ガイド』の「新規オプション」を参照してください。
インテル Fortran コンパイラ 8.0 は、インテル Fortran と Compaq* Visual Fortran の最高のテクノロジを組み合わせた新世代のインテル Fortran コンパイラです。Fortran 言語機能を提供し、Fortran 特有の最適化を行う、コンパイラの "フロントエンド" には、Compaq Visual Fortran のテクノロジが採用されています。Fortran ランタイム・ライブラリ (I/O および数値演算以外の組込み関数) も、Compaq Visual Fortran のテクノロジが採用されています。コンパイラの "バックエンド" には、インテル・プロセッサ上で最高のパフォーマンスを実現するべく、インテルの最新のハイパフォーマンスなコード生成と最適化テクノロジが採用されています。
新しいインテル Pentium 4 プロセッサは、複素数データ型、浮動小数点から整数への変換、および水平加算を含むベクトル化ループのパフォーマンスを向上させる新しいストリーミング SIMD 拡張 3 (SSE3) 命令セットをサポートしています。
バージョン 8.0 では、SSE3 をサポートするインテル・プロセッサ用の最適化機能が追加されました。この機能を使用するには、-xP
または -axP
オプションを指定します。詳細は、『インテル(R) Fortran コンパイラ・ユーザーズ・ガイド』の「最適化」のセクションを参照してください。
このリリースでは、2 つの新しいコード生成オプションが追加されました。-xB
および -axB
は、インテル Pentium M プロセッサで最高のパフォーマンスを引き出すコードを生成するようにコンパイラに指示します。新しい -xN
および -axN
オプションは、すべてのインテル Pentium 4 プロセッサ向けに最適化します。Pentium 4 プロセッサで最高のパフォーマンスを引き出すため、新しい -xN
および -axN
オプションを使用することを推奨します。Pentium M プロセッサの場合は、-xB
または -axB
オプションを使用してください。詳細は、『インテル(R) Fortran コンパイラ・ユーザーズ・ガイド』の「最適化」のセクションを参照してください。
最適化オプション -[a]xi
(Pentium Pro および Pentium II 用に最適化) および -[a]xM
(MMX(R) 命令セット用に最適化) は、最新のインテル Fortran コンパイラではサポートされていません。これらのオプションがコンパイラのコマンドラインで指定されると、メッセージが表示され、オプションは無視されます。-[a]xi
または -[a]xM
オプションを使用している場合、これらのオプションの使用を中止してください。デフォルトで生成される汎用コードは、Pentium プロセッサ上でも新しい IA-32 プロセッサ上でも動作します。
-[a]xW
(Pentium 4 用の低い最適化レベル) は、将来のバージョンで削除される予定です。インテル Pentium 4 プロセッサ用のコードを生成する場合は、-[a]xW
のかわりに -[a]xN
オプションを使用してください。
詳細は、『インテル(R) Fortran コンパイラ・ユーザーズ・ガイド』の「最適化」のセクションを参照してください。
コンパイラの設定ファイル <インストール先ディレクトリ>/bin/ifort.cfg
が変更され、リンカへの RPATH
コマンドが削除されました。このコマンドは、以前のバージョンで、実行ファイル形式のインテル共用ライブラリの場所を設定していたものです。この RPATH
ディレクティブを設定ファイルに記述する方法では、"ifort
" とだけ入力した場合に、次のようなエラーが表示されていました。
/usr/lib/crt1.o: In function `_start': /usr/lib/crt1.o(.text+0x18): undefined reference to `main'
このエラーの原因は、使用しているコンパイラやインストールに問題があるのではないかという混乱を招いたため、このバージョンでは RPATH
ディレクティブが削除され、"ifort
" と入力すると次のように詳細なエラー・メッセージが表示されるようになりました:
ifort: Command line error: no files specified; for help type "ifort -help"
ただし、実行ファイルにはインテル共用ライブラリの場所が含まれていないため、その場所を指定する必要があります。次のいずれかの方法で指定できます。
LD_LIBRARY_PATH
環境変数にインテル共用ライブラリの場所を含める。sh 型のシェルの場合は、" export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:<インストール先ディレクトリ>/lib
" と入力する。ldconfig
システム・ユーティリティを使用する。(注: ユーティリティの実行には、root ユーザ権限が必要です。) ;/bin/ifort.cfg
を変更する。次のようなエラー・メッセージが表示された場合は、上記の 3 つのいずれかの方法を使用してインテル共用ライブラリの場所を設定する必要があります:
error while loading shared libraries: libcprts.so.5: cannot open shared object file: No such file or directory
インテル・コンパイラのコード・カバレッジ・ツールは、インテル・コンパイラのプロファイルに基づく最適化テクノロジを利用して、開発者に特定のワークロードにおけるアプリケーション・コードのカバレッジの全体像を呈示します。ツールはアプリケーションのコード・カバレッジを把握するために、コンパイラにより生成された静的プロファイル情報と、ユーザのインストルメント済みバイナリをワークロードで実行した結果、生成される動的プロファイル情報を組み合わせます。カバレッジ・ツールは、この情報とアプリケーションのソースを併用して、コード・カバレッジが色付きの注釈で強調表示された HTML ページを作成します。また、アプリケーションのファイルと関数を並べ替えて、カバレッジの低いモジュールと関数を簡単に識別できるフレームを作成します。コード・カバレッジは、任意のブラウザを使用して表示できます。
インテル・コンパイラのコード・カバレッジ・ツールをさまざまな方法で活用して、開発効率を改善し、問題を減少し、アプリケーションのパフォーマンスを向上させることができます。ツールをテストスペースのアプリケーション・プロファイルに適用すると、カバレッジ情報に基づいてテストの全体の質を測定することができます。同様に、パフォーマンス・ワークロードのプロファイルに適用すると、コード・カバレッジ情報により実行されたワークロードが、アプリケーションの重要なコードをどの程度カバーするかを把握できます。インテル・コンパイラが提供するプロファイルに基づく最適化の利点を享受するには、パフォーマンス・クリティカルなモジュールの高いカバレッジが必要です。また、このツールは、アプリケーションの各基本ブロックの動的実行カウントを表示して、カバレッジとパフォーマンス・チューニングの両方に有用な情報を示すオプションを提供します。カバレッジ・ツールは、アプリケーションの 2 つの異なる実行におけるプロファイルを比較できます。この機能は、アプリケーションがカスタマなどによってテストスペース外で実行される場合、アプリケーションのテストでカバーされないアプリケーションのコードの部分を検索するのに使用することができます。
インテル・コンパイラのコード・カバレッジ・ツールは、Windows/Linux 上の IA-32 プロセッサ・ファミリおよび Itanium プロセッサ・ファミリでサポートされます。また、C、C++、および Fortran をシームレスにサポートします。
テスト・プライオリタイゼーション・ツールは、インテル・コンパイラのプロファイルに基づく最適化テクノロジを利用して、以前のアプリケーションの実行プロファイルを基に、アプリケーションのテストの選択と重要度付けを行います。ユーザは、このツールを使用して、アプリケーションのコードのサブセットに対してより適切なテストを選択し、重要度付けを行うことができます。アプリケーションの特定のモジュールが変更されると、テスト・プライオリタイゼーション・ツールはそのセットの変更によって最も影響を受けるテストを示唆します。また、以前に実行されたアプリケーションのプロファイル・データを分析して、アプリケーションのコンポーネントとテストの依存性を確認し、この情報を基にテストのプロセスをガイドします。このツールは、アプリケーションのコード・カバレッジを基に、効率的なテスト階層を作成するのに使用できます。例えば、テストの全体をカバーするアプリケーション・テストの最小サブセットを定義します。また、テストのターンアラウンド時間を大幅に短縮します。長い時間を費やして多くの失敗を見つける代わりに、ユーザは、セットの変更によって問題が発生する少数のテストをすばやく見つけられます。このツールはまた、テストがボトルネックとなる大規模なアプリケーションのテストと開発に要する時間を大幅に短縮するのに役立ちます。アプリケーションの任意のサブセットで全体をカバーするために必要なテストの数を最小限にし、 さらに、テストの実行時間が決まっている場合は、特定のレベルのコード・カバレッジを最小限の時間で達成するテストを選択して重要度付けを行うことができます。
インテル・コンパイラのテスト・プライオリタイゼーション・ツールは、Windows/Linux 上の IA-32 プロセッサ・ファミリおよび Itanium プロセッサ・ファミリでサポートされます。また、C、C++、および Fortran をシームレスにサポートします。
詳細に関しては、次のリンクを参照してください: http://www.intel.com/software/products/compilers/techtopics/pgt.htm (英語)
インテル・デバッガ idb
に、オプションのグラフィカル・ユーザ・インターフェイスが用意されました。既知の問題と制限を含む詳細は、インテル・デバッガのリリースノートを参照してください。
.il
)IPO で生成された各 .il ファイルには、バージョン番号が割り当てられます。コンパイラは、同じバージョンの .il
ファイルのみを処理します。バージョン番号はビルド処理の一部として、自動的に生成され、更新されます。
TRACEBACKQQ
ルーチン ifort
に変更されました。インテル Fortran の以前のバージョンでは、コマンド名に ifc
または efc
が使用されていました。インテル Fortran 8.1 でも ifc と efc コマンド名を使用することができます。しかし、インテル Fortran の将来のバージョンでは、ifort
コマンド名以外は使用できなくなる予定です。true
と false
の値がインテル Fortran の以前のバージョンで使用されていた値から変更されました。インテル Fortran の以前のバージョンでは、整数表現が LOGICAL として解釈された場合、ゼロは .FALSE.
、ゼロ以外の値は .TRUE.
として解釈されていました。インテル Fortran コンパイラ 8.1 では、偶数の整数値が .FALSE.
、奇数の整数値が .TRUE.
として解釈されます。さらに、論理定数 .TRUE.
の値が、インテル Fortran の以前のバージョンで使用されていた 1
ではなく -1
に変更されました。この変更は Compaq Visual Fortran の仕様と一致するように行われたものですが、-fpscomp logicals
コンパイラ・オプションを使用してインテル Fortran の以前のバージョンの仕様に戻すこともできます。GETARG、IARGC
および NARGS
は、組込みプロシージャとして解釈されるように変更されました。アプリケーションでこれらのルーチンを EXTERNAL
として宣言している場合、またはこれらのルーチンへの明示的なインターフェイスを用意している場合、宣言およびインターフェイス部分を削除しないとビルドに失敗します。-vms
コンパイラ・オプションの効果が変更されました。インテル Fortran の以前のバージョンでは、このオプションは文字リテラル中で \n
を新しい行として認識できないようにして、書式なしファイルの RECL のデフォルトのサイズを 4 バイトに設定していました。バージョン 8.1 では、これらの処理に対して別々のスイッチ (-assume [no]bscc
および -assume [no]byterecl
) が追加されています。-vms
オプションの効果の詳細は、『インテル(R) Fortran コンパイラ・ユーザーズ・ガイド』の「-vms
」の説明を参照してください。-assume byterecl
を追加すれば、1 バイト単位で指定することもできます。-warn noalign
が指定されている場合を除きます)。この変更は、アプリケーション名以外で COMMON 中の変数にアクセスするアプリケーション (例えば、COMMON が C extern
で共用されている場合) を除けば、ほとんどのアプリケーションでは影響はありません。これまでと同じように、COMMON 中の変数がパディングされるようにするには、-align commons
(4 バイト境界までアライメント) または -align dcommons
(8 バイト境界までアライメント、バージョン 7.1 と同じ) を指定してください。共有ライブラリを使用する際は binutils 2.14 以降を使用してください (binutils 2.11 には問題があることが報告されています)。
注: 数千行にも及ぶ非常にサイズの大きいソース・ファイルを、高度な最適化オプション (-O3、-ipo
、-openmp
など) をつけてコンパイルする際は、さらに大容量の RAM が必要となります。
以前のバージョンのコンパイラを使用している場合は、インテル Fortran コンパイラ 8.1 をインストールする前に、以前のコンパイラをアンインストールする必要があります。アンインストールに関しては、「コンパイラとデバッガのアンインストール」 を参照してください。
インテル Fortran コンパイラのインストール・スクリプトは、システム・ユーティリティ RPM を使用してファイルをインストールします。RPM 4.0.2 および RPM 4.1 の両方に制限があるので注意してください。詳細は「既知の制限事項」を参照してください。
インテル Fortran コンパイラは、Macrovision 社の FLEXlm* 電子ライセンス・テクノロジを使用しています。ライセンスの管理は透過的に行われます。インテル Fortran コンパイラ 8.1 のインストール・プログラムは、製品コンポーネントをインストールする前に有効なライセンスをチェックします。また、プログラムのコンパイル時とビルド時にもライセンス・ファイルのチェックを行います。
インテル・ソフトウェア用の FLEXlm ライセンス・デーモンは、フローティング・ライセンスおよびノードロック・ライセンスで使用され、多くの一般的なプラットフォームで利用できます。ライセンス・デーモンは、ローカル・ネットワーク上のアクセス可能な任意のサポートされているプラットフォーム上にインストールされます。コンパイラ CD には、さまざまな Linux ディストリビューション用のライセンス・デーモンが含まれています。CD をお持ちでない場合、または別のプラットフォーム用のライセンス・デーモンが必要な場合は、インテル・プレミア・サポート (英語) の [Downloards] セクションからライセンス・デーモンをダウンロードしてください。
注: サポート・サービスの有効期間内であれば、Linux 版インテル Fortran コンパイラの既存のライセンスをバージョン 8.1 でもそのまま使用できます。
インストール前に、以下の手順に従ってライセンス・ファイルをセットアップしてください。
.lic
" です。/opt/intel_fc_80/licenses/
です。次の手順に従ってコンパイラをインストールします。
> tar -xvf l_fc_p[c]_8.1.xxx.tar
> tar -zxvf l_fc_p[c]_8.1.xxx.tar.gz
> source ./install.sh
rpm2cpio
を使用して RPM ファイルを手動で解凍し、ifortvars.sh (.csh)
ファイルを編集してコンパイラのインストール先ディレクトリを含めると、root 権限なしでもコンパイラをインストールできます。インストール・スクリプトでは、この手順を自動的に行います。*.lic
) を保存したディレクトリです。インストール・プログラムは、Linux コンポーネントのインテル Fortran コンパイラをインストールする前に、有効なライセンスをチェックします。32 ビット・アプリケーション用インテル・コンパイラ
(IA-32 システムにインストールする場合) または Itanium アーキテクチャ用インテル・コンパイラ
(Itanium ベース・システムにインストールする場合) 32 ビット・アプリケーション用 Linux Application Debugger
または Itanium ベース・アプリケーション用 Linux Application Debugger
"accept"
と入力してライセンス契約に同意します。-U --replacefiles --force
を使用することを推奨します。/opt/intel_fc_80/
、インテル・デバッガでは /opt/intel_idb_80/
です。'x'
を入力してインストール・スクリプトを終了します。インテル Fortran コンパイラは、定義されている場合、次の環境変数をサポートします:
FPATH
- INCLUDE
および USE
(コンパイル済み .mod
) ファイルを検索する追加ディレクトリを指定します。ドライバは、これらを -I
オプションに変換します。LIBRARY_PATH
- リンカが検索する追加ディレクトリを指定します。ドライバは、これらを -L
オプションに変換します。インストール・スクリプト (install.sh)
は、PATH
、LD_LIBRARY_PATH
、および MANPATH
のような環境変数を設定するコンパイラ環境スクリプト・ファイル (ifortvars.sh/ idbvars.sh)
を作成します。これらのスクリプト・ファイルをログイン・スクリプト (.login
ファイル) に追加することを強く推奨します。".login"
ファイルで一旦、変数が設定されれば、セッションごとにスクリプト・ファイルを実行する必要がなくなります。
コンパイラ環境を設定するスクリプトの実行
> source <インストール先ディレクトリ>/bin/ifortvars.sh(.csh)
> source <インストール先ディレクトリ>/bin/idbvars.sh(.csh)
また、インストール・プログラムにより、すべてのコンパイル処理に共通の設定を含むコンパイラ設定ファイル (<インストール先ディレクトリ>/bin/ifort.cfg
) が作成されます。これらのファイルを編集して、デフォルトのオプションを追加することができます。注: コンパイラのアップデート・パッケージをインストールする場合は、変更した設定ファイルを別のファイル名で保存し、ファイルが上書きされないようにする必要があります。
インテル Fortran とインテル C++ の両方のコンパイラを使用する場合は、インテル C++ の環境変数スクリプト iccvars.sh も実行する必要があります。
製品のインストールが完了したら、サポートへ登録してください。登録方法については、「テクニカル・サポート」を参照してください。
> source <コンパイラ・インストール先ディレクトリ>/bin/uninstall.sh
コンパイラをデフォルトのディレクトリにインストールした場合は、次のようになります。> source /opt/intel_fc_80/bin/uninstall.sh
> source <デバッガ・インストール先ディレクトリ>/bin/uninstall.sh
デバッガをデフォルトのディレクトリにインストールした場合は、次のようになります。> source /opt/intel_idb_80/bin/uninstall.sh
RPM 4.0.2 はデフォルト以外のディレクトリにはインストールできません。この問題は RPM 4.0.3 で修正されています。また、RPM 4.1 もデフォルト以外のディレクトリにはインストールできません。この問題は RPM 4.11 から 4.2 で修正されています。
インテル・デバッガの以前のバージョンがシステムにインストールされている場合、インテル Fortran コンパイラ 8.1 パッケージから IA-32 または Itanium ベース・アプリケーション用インテル・デバッガ 8.1 をインストールすると、インテル・デバッガはバージョン 8.1 にアップグレードされます。
libpthreads.a を静的にリンクして作成されたアプリケーション (-static が使用された場合、libpthreads.a がデフォルトで使用されます) で 2MB 以上のスタック領域を使用すると、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 でのみ動作し静的にリンクされるバイナリを作成します。
Itanium システムでは、ダイナミック共用オブジェクト (.so) の作成を指定する –shared
スイッチが使用された場合、ld は診断メッセージ "@gprel relocation against dynamic symbol" を出力します。この問題を解決するには、.so のビルドに使用されているコマンドラインに –i_dynamic
および –nofor_main
スイッチを追加します。インテル Fortran の将来のバージョンでは、これらのオプションは –shared
が指定されたときに自動的に設定される予定です。
大きなサイズのスタックを必要とする 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
を使用することで、最大スタックサイズを何回でもリセットできます。
上記の回避方法は RedHat 7.2 Linux ディストリビューションの glibc バージョン 2.2.4-13 (IA-32 版) および glibc 2.2.4-19 (Itanium プロセッサ・ファミリ版) で検証済みです。IA-32 版の glibc 2.2.4-13 に関しては、POSIX スレッド・ライブラリの共用バージョンを必ず使用してください (コンパイラの .cfg ファイル、またはコマンドラインで -static
フラグを使用しないでください)。
さらに、共用ブロックが OpenMP ディレクティブで "THREADPRIVATE
" として宣言された場合、共用ブロックの長さはブロックが宣言されたすべてのソースファイルで同じでなければなりません。
Itanium ベース・システムでは、システム BIOS の一部である Floating Point Software Assistance ハンドラ (FPSWA) が NaN や無限大のような例外値を生成する浮動小数点演算を完了します。FPSWA のバージョン 1.12 には、Red Hat Linux 7.2 システムでアプリケーションの実行中に予期しないセグメンテーション違反が発生する問題があります。インテルでは、この問題が Itanium システム用 Linux の他のディストリビューションで再現するかどうかは確認しておりません。
この問題を解決するには、システム BIOS を FPSWA のバージョン 1.18 以降を含むものにアップグレードしてください。BIOS のアップデート情報については、ご使用の Linux システムの製造元にお問い合わせください。
gprel relocation
エラー・メッセージItanium ベースの 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
スイッチを追加します。バージョン 8.1 では、-shared
を指定すると、オプション -i_dynamic
および -nofor_main
が自動的に設定されます。
次の問題は、将来のバージョンで解決される予定です。
-ipo1
を指定しても複数のオブジェクト・ファイルが生成される -ipoN
を指定して生成されるオブジェクト・ファイルの数を明示的に指定しても、分割に関するコンパイラのヒューリスティックはオンのままで、オブジェクト・ファイルが大きくなると、2 つのオブジェクト・ファイルに分割されます。
このため、現時点では、-ipo1
を使用してオブジェクト・ファイルの数が 1 になるように明示的に指定しても、ファイルの分割を防ぐことはできません。
-qipo_separate
が xild
で認識されない -qipo_separate
オプションは xild
で認識されません。これは、このオプションを使用した IPO コンパイルが失敗するためです。
-ipo
オプションで指定した .o および .s ファイルの明示的な名前が無視されるipo_c
または -ipo_S
(.o または .s ファイルの名前を明示的に指定する) オプションを使用してファイル名を明示的に指定した場合、コンパイラは複数のオブジェクトを生成するときにこれらの指定を無視します。
-ipo_S
で生成された s ファイルが複数オブジェクト IPO でアセンブルできない2 つの問題があります。
WRITE
ステートメント中の文字列) が定義されていないと解釈する。この問題は、Itanium ベースの Linux システムでのみ発生します。(-ax*
) 使用時のデバッグ情報の制限-ax{W|N|B|P}
を使用してコンパイルを行うと、各関数について IA-32 ジェネリック・コードと CPU 特有のコードの 2 種類のコードが生成されます。各関数のシンボルは自動 CPU ディスパッチ・ルーチンを参照して、ランタイムに実行するコード・セクションを決定します。これらの関数にデバッガのブレークポイントが名前でセットされると、ディスパッチ・ルーチンでアプリケーションが停止します。その結果、デバッグ時に予測できない動作が発生します。この問題は、インテル・デバッガおよびインテル・コンパイラの将来のバージョンで修正される予定です。
-fp
オプションを使用しないでビルドされた IA-32 プログラムをデバッグまたはトレースバック表示できない-fp
を使用してコンパイルを行うと、IA-32 EBP レジスタは汎用レジスタではなくフレーム・ポインタとして使用されます。デバッガおよびトレースバック・ハンドラは、-fp
を使用しないでコンパイルされた関数への呼び出しを含むスタックから適切にスタックを戻すことができません。-g
または -O0
を使用してコンパイルすると、-fp
は暗黙的に有効になりますが、より高い最適化レベル (-O2
など) を明示的に指定した場合は有効になりません。アプリケーションでデバッガまたはトレースバックを使用する場合で、-O0
よりも高い最適化レベルを使用する場合は、デバッガおよびトレースバック・ハンドラがフレーム・ポインタを使用できるように、-fp
も指定してください。
-xP
オプションを使用して生成されたコードを認識しないGNU アセンブラの古いバージョンは、-[a]xP
オプションを使用して生成されたアセンブリ・コードを処理できません。この問題が発生した場合は、binutils バージョン 2.14.90.0.4.1 以降、または FSFbinutils 2.15 以降を使用してください。
インテル Fortran コンパイラ 8.x で生成されたコードは、以前のバージョンよりも多くのスタック空間を使用します。適切な limit
、unlimit
または ulimit
シェル・コマンドを使用して、スタックサイズの制限を増やしてください。
!DEC$ ATTRIBUTES ALIGN
が ALLOCATABLE/POINTER
変数でサポートされない!DEC$ ATTRIBUTES ALIGN ディレクティブは、現在、ALLOCATABLE または POINTER 属性の変数では無視されます。
インテル Fortran コンパイラ 7.1 の次の機能はインテル Fortran 8.1 では利用できません。
ランタイムの正確さをチェックする -CA、-CS、-CU
および -CV
オプション (配列と文字列境界を確認する -CB
は利用可能です)
コンパイル時の配列境界警告を有効にする -WB
オプション (オプションを指定することはできますが無視されます)
インテルでは、お客様からのフィードバックを非常に重視しております。本製品で提供されるツールについてのテクニカル・サポートおよび FAQ や製品のアップデート情報を含むテクニカル情報を受けるには、https://premier.intel.com (英語) でインテル・プレミア・サポート・アカウントに登録してください。http://support.intel.com/support/performancetools/support.htm (英語) で [Registration Center]
をクリックして登録します。
インテル Fortran コンパイラのユーザ・フォーラム、FAQ、ヒント、およびその他のサポート情報は、http://support.intel.com/support/performancetools/fortran/linux/ (英語) を参照してください。サポート情報全般については、http://www.intel.com/software/products/support/ (英語) を参照してください。
[Submit]
ボタンをクリックします。[I Accept]
ボタンを押します。[Product]
ドロップダウン・リストの隣の [Go]
ボタンをクリックします。[Submit Issue]
リンクをクリックします。[Product Type]
ドロップダウン・リストから [Development Environment (tools,SDV,EAP)]
を選択します。[Product Name]
ドロップダウン・リストから [Intel(R) Fortran Compiler for Linux*]
を選択します。 > uname -a
> rpm -qa | grep glibc
rpm
をインストールしている場合は、下記のコマンドを実行します。 > ls /lib/libc*
下記のコマンドで、インテル Fortran コンパイラのパッケージ ID を取得します。
> ifort -V
出力された [Package ID] (例:.l_fc_p[c]_8.1.xxx
) をプレミア・サポートの適切なフィールドにコピーします。また、問題の解決に役立つと思われる事項はすべてお伝えください。
コンパイラの最新バージョンで修正された問題点については、インテル・プレミア・サポート (https://premier.intel.com)(英語) からダウンロードできる <パッケージ ID>_README
(例: l_fc_p[c]_8.1.xxx_README
) を参照してください。
インテル・コンパイラのドキュメントおよび HTML ベースの関連ドキュメントは、ナビゲーション、インデックス検索、およびハイパーテキスト機能を備えており、ご使用の Web ブラウザでご覧になれます。Adobe Acrobat Reader* を使用して簡単に印刷できる、PDF 版のドキュメントも提供しています。
ドキュメントは <インストール先ディレクトリ>/doc
(デフォルト: /opt/intel_fc_80/doc
) ディレクトリにインストールされます。HTML 版のドキュメント・インデックスは、<インストール先ディレクトリ>/doc/fcompindex.htm
(デフォルト: /opt/intel_fc_80/doc/fcompindex.htm
) です。インタラクティブ形式 (HTML ベース) のトレーニング・チュートリアル、『Enhancing Performance with Intel Compilers』(英語) もドキュメント・インデックスのリンクからアクセスできます。『Intel(R) Debugger Manual』(英語) は、インテル・デバッガの doc ディレクトリ (デフォルト: /opt/intel_idb_80/doc
) にあります。
『インテル(R) Fortran コンパイラ ユーザーズ・ガイド』は、ご使用の Web ブラウザでご覧になれる HTML ベースのドキュメントで、次のように複数のドキュメントで構成されています。
『Enhancing Performance with Intel Compilers』は、IA-32 および Itanium ベース・システムにおけるアプリケーションの最適化に役立つコンパイラ・オプションと Itanium アセンブラについて説明するインタラクティブな HTML 形式のチュートリアルです。Itanium アセンブラについて説明するドキュメントも提供されます。
ifort
(1) manpage では、コマンドライン・オプションおよび ifort
コンパイラ・コマンドに関する情報のリストが提供されています。ifort
(1) manpage を表示するには、<インストール先ディレクトリ>/bin/ifortvars.*sh
ファイルを実行する source コマンドを使用して環境を設定してから、次のコマンドを入力してください。
$ man ifort
man
コマンドは、表示された内容のスクロール、文字列の検索、特定の場所へのジャンプ、その他の機能を実行する単一キーまたはキーの組み合わせを提供します。例えば、z
を入力すると次の画面、w
を入力すると前の画面を表示します。man コマンドのヘルプを表示するには、h
キーを入力します。ヘルプを閉じるには、q
キーを入力して、表示されている manpage に戻ります。検索するには、/
文字を入力してから検索する文字列 (/string
) を入力して、Enter を押します。man コマンドのテキストの表示後、q
を押すとシェル・コマンドのプロンプトに戻ります。
HTML 形式のユーザーズ・ガイドを表示する際、以前のように Java* や Javascript が有効なブラウザを使用する必要がなくなりました。このドキュメント形式は、標準 Red Hat* ディストリビューションに付属している Web ブラウザで使用できることが確認されています。HTML 形式のユーザーズ・ガイドは Java サポートを必要とせず、さらにブラウザに依存しないようにするため、検索機能が削除されました。ユーザーズ・ガイドで検索を行う必要がある場合は、提供されている PDF 形式のファイル (HTML 形式と同じ内容) を使用してください。
xpdf
ユーティリティ (検索機能を含む) を使用するか、gv
または ghostview
コマンドを使用します。いくつかの Linux ディストリビューションでは、mozilla
を使用すると PDF helper を使用して PDF ファイルが表示されます。インテル・ソフトウェア開発製品の詳しい情報については、http://www.intel.co.jp/jp/developer/software/products/ を参照してください。
関連製品の一部を次にリストします。
本資料に掲載されている製品のうち、外国為替および外国為替管理法に定める戦略物資等または役務に該当するものについては、輸出または再輸出する場合、同法に基づく日本政府の輸出許可が必要です。また、米国産品である当社製品は日本からの輸出または 再輸出に際し、原則として米国政府の事前許可が必要です。
【資料内容に関する注意事項】
本ドキュメントの内容を予告なしに変更することがあります。
インテルでは、この資料に掲載された内容について、市販製品に使用した場合の保証あるいは特別な目的に合うことの保証等は、いかなる場合についてもいたしかねます。また、このドキュメント内の誤りについても責任を負いかねる場合があります。
インテルでは、インテル製品の内部回路以外の使用にて責任を負いません。また、外部回路の特許についても関知いたしません。
本書の情報はインテル製品を使用できるようにする目的でのみ記載されています。
インテルは、製品について「取引条件」で提示されている場合を除き、インテル製品の販売や使用に関して、いかなる特許または著作権の侵害をも含み、あらゆる責任を負わないものとします。
本書に含まれている内容は、出荷時の内容を正確に著すよう記述されていますが、製品の不具合の発見とその改良に伴い、製品および本書の内容は予告なく変更される場合があります。現在報告されているソフトウェアの不具合につきましては、お問い合わせください。
いかなる形および方法によっても、インテルの文書による許可なく、この資料の一部またはすべてを複写することは禁じられています。
著作権法で許可されている場合を除き、文書による事前の許可なく、複製、改変、または翻訳することを禁じます。無断転載を禁じます。
版権制限:米国政府による使用、複製、または開示は、DFARS 252-227-7013 の条項「Rights in Technical Data and Computer Software」の副項 (c)(I)(ii) に規定されている制限を受けます。
非 DOD U.S. Government Departments and Agencies の権利は、FAR 52.227-19(c0(1,2) に規定されています。
Intel、インテル、Itanium、MMX、Pentium、および VTune は、アメリカ合衆国およびその他の国における Intel Corporation またはその子会社の商標または登録商標です。
* その他の名称およびブランド名は、各社の商標および登録商標です。
© 2004 Intel Corporation. 無断での引用、転載を禁じます。