コンパイラーの最適化

多くの Fortran コンパイラーは、実行速度を高めたり、生成されたコードに必要なメモリー量を減らすために、コード生成の最適化を実行します。最適化されたプログラムと最適化されていないプログラムの動作は、言語標準の仕様の範囲内では同じですが、言語標準の仕様の範囲外では異なる場合があります。コンパイラーの最適化は、特に浮動小数点数の結果に影響を与えます。

インテル® Fortran コンパイラーは、実行速度と、浮動小数点の一貫性を高める最適化を実行することができます。

浮動小数点の一貫性とは、IEEE バイナリー浮動小数点標準との一貫性がある結果を取得することを意味します。詳細は、-fltconsistency オプション (Linux* OS および Mac OS* X) または /fltconsistency オプション (Windows* OS) を参照してください。

コードが適切に設計されていないと、実行速度を最大限に高める最適化を実行したときに、数値結果に問題が発生する可能性があります。/nofltconsistency オプションまたは /nofltconsistency オプションは、可能な限り、格納された変数よりも高い精度を持つ浮動小数点レジスターを使用します。この結果、格納された変数の精度と一貫性のない結果が生成される傾向があります。/fltconsistency オプションまたは /fltconsistency オプションは、文の評価結果を標準データ型の精度に丸めることで、生成されるコードの一貫性を改善することができますが、実行時間は遅くなります。

最適化に関する注意事項

インテル® コンパイラー、関連ライブラリーおよび関連開発ツールには、インテル製マイクロプロセッサーおよび互換マイクロプロセッサーで利用可能な命令セット (SIMD 命令セットなど) 向けの最適化オプションが含まれているか、あるいはオプションを利用している可能性がありますが、両者では結果が異なります。また、インテル® コンパイラー用の特定のコンパイラー・オプション (インテル® マイクロアーキテクチャーに非固有のオプションを含む) は、インテル製マイクロプロセッサー向けに予約されています。これらのコンパイラー・オプションと関連する命令セットおよび特定のマイクロプロセッサーの詳細は、『インテル® コンパイラー・ユーザー・リファレンス・ガイド』の「コンパイラー・オプション」を参照してください。インテル® コンパイラー製品のライブラリー・ルーチンの多くは、互換マイクロプロセッサーよりもインテル製マイクロプロセッサーでより高度に最適化されます。インテル® コンパイラー製品のコンパイラーとライブラリーは、選択されたオプション、コード、およびその他の要因に基づいてインテル製マイクロプロセッサーおよび互換マイクロプロセッサー向けに最適化されますが、インテル製マイクロプロセッサーにおいてより優れたパフォーマンスが得られる傾向にあります。

インテル® コンパイラー、関連ライブラリーおよび関連開発ツールは、互換マイクロプロセッサー向けには、インテル製マイクロプロセッサー向けと同等レベルの最適化が行われない可能性があります。これには、インテル® ストリーミング SIMD 拡張命令 2 (インテル® SSE2)、インテル® ストリーミング SIMD 拡張命令 3 (インテル® SSE3)、ストリーミング SIMD 拡張命令 3 補足命令 (SSSE3) 命令セットに関連する最適化およびその他の最適化が含まれます。インテルでは、インテル製ではないマイクロプロセッサーに対して、最適化の提供、機能、効果を保証していません。本製品のマイクロプロセッサー固有の最適化は、インテル製マイクロプロセッサーでの使用を目的としています。

インテルでは、インテル® コンパイラーおよびライブラリーがインテル製マイクロプロセッサーおよび互換マイクロプロセッサーにおいて、優れたパフォーマンスを引き出すのに役立つ選択肢であると信じておりますが、お客様の要件に最適なコンパイラーを選択いただくよう、他のコンパイラーの評価を行うことを推奨しています。インテルでは、あらゆるコンパイラーやライブラリーで優れたパフォーマンスが引き出され、お客様のビジネスの成功のお役に立ちたいと願っております。お気づきの点がございましたら、お知らせください。

改訂 #20110307


このヘルプトピックについてのフィードバックを送信

© 1996-2011 Intel Corporation. 無断での引用、転載を禁じます。