このセクションでは、GCC* の C/C++ コンパイラー Linux* 版のアプリケーションをインテル(R) C/C++ コンパイラー Linux 版に移植する際の基本的なアプローチを説明します。これらの Linux コンパイラーは、それぞれ次のように対応しています。
Language (言語) | インテル コンパイラー |
GCC* コンパイラー |
---|---|---|
C | icc | gcc |
C++ | icpc | g++ |
GNU gcc から Microsoft* Visual C++* へ移植する際に -diag-enable port-win オプションを使用して一般的な構文の問題に関する警告を表示する方法についての情報も含まれています。
アプリケーションの移植を簡単に説明するために、ここでは特に明記されている場合を除いて、"gcc" は GNU コンパイラー・コレクションの gcc コンパイラーと g++ コンパイラーの両方を指します。
多くの場合、gcc からインテル・コンパイラーへのアプリケーションの移植は、gcc を起動する代わりにインテル・コンパイラー (icc) を起動するという簡単なものです。インテル・コンパイラーを使用すると、特にインテル(R) プロセッサーで実行されるアプリケーションのパフォーマンスが向上します。多くの場合、インテル・プロセッサー以外で実行する場合でも、アプリケーションのパフォーマンスが向上します。アプリケーションをインテル・コンパイラーでコンパイルする際、以下の項目へアクセスできます。
IA-32 アーキテクチャー、インテル(R) 64 アーキテクチャー、IA-64 アーキテクチャー上の最新のインテル・プロセッサー向けにコードを最適化するコンパイラー・オプション
gprof と同様の高度なプロファイリング・ツール (PGO)
高レベルな最適化 (HLO)
プロシージャー間の最適化 (IPO)
精度を向上する、高度に最適化されたインテルの算術ライブラリー
インテル・コンパイラーは、gcc との互換性と相互運用性があり、gcc アプリケーションのインテル・コンパイラーへの移植にはバイナリー互換の利点もあります。そのため、gcc アプリケーションのライブラリーをリビルドしてはなりません。インテル・コンパイラーでは、gcc 製品で提供しているようなコンパイラー・オプション、マクロ、環境変数を多くサポートしています。
多くの gcc アプリケーションでは、gcc によるコンパイルと icc によるコンパイルによる相違を考慮するため、インテル・コンパイラーへの移植には makefile を変更する以上の手間が少々かかります。その他の考慮事項についても記述します。