パフォーマンス上の利点がある場合、複数のプロセッサー固有の自動ディスパッチ・コードを生成するようにコンパイラーに指示します。
Windows: [Optimization (最適化)] > [Generate Alternate Code Paths (指定された命令セットの専用及び汎用コード生成)]
[Optimization (最適化)] > [Generate Alternate Code Paths (指定された命令セットの専用及び汎用コード生成)]
Linux: なし
Mac OS X: [Optimization (最適化)] > [Generate Alternate Code Paths (指定された命令セットの専用及び汎用コード生成)]
IA-32 アーキテクチャーおよびインテル® 64 アーキテクチャー
Linux* および Mac OS* X: | -axcode |
Windows: | /Qaxcode |
code |
各説明にある命令セットに対応した命令が生成されます。次の説明は、インテル® ストリーミング SIMD 拡張命令 (インテル® SSE) および SSE 補足命令 (SSSE) についてです。設定可能な値は以下のとおりです。
|
オフ |
ディスパッチ・コードは生成されません。プロセッサー固有のコードが生成され、コンパイラー・オプション -m および -x (Linux* OS)、コンパイラー・オプション /arch および /Qx (Windows* OS)、またはコンパイラー・オプション -x (Mac OS* X) の設定で制御されます。 |
このオプションは、パフォーマンス上の利点がある場合、複数のプロセッサー固有の自動ディスパッチ・コードを生成するようにコンパイラーに指示します。また、汎用コードも生成します。通常、インテル® プロセッサー固有の自動ディスパッチ・コードは汎用コードよりも最適化されます。O3 などのその他のオプションは、汎用コードでどの程度の最適化を行うかを制御します。
汎用コードは、-m または -x (Linux* OS および Mac OS* X) や /arch または /Qx (Windows* OS) で指定されたアーキテクチャーにより決まります。-x オプションまたは /Qx オプションのデフォルトは使用しているオペレーティング・システムに依存しますが、デフォルトよりも上位または下位のアーキテクチャーと最適化レベルを指定することもできます。指定されるアーキテクチャーは、汎用コード向けの最小アーキテクチャーとなります。
-ax と -x オプション (Linux* OS および Mac OS* X) または /Qax と /Qx オプション (Windows* OS) の両方を指定すると、-x または /Qx オプションで指定されたプロセッサーの種類と互換性のあるインテル® プロセッサーでのみ実行できる汎用コードが生成されます。
-ax と -m オプション (Linux* OS) または /Qax と /arch オプション (Windows* OS) の両方を指定すると、-m または /arch オプションで指定されたプロセッサーの種類と互換性のあるインテル以外のプロセッサーで実行できる汎用コードが生成されます。
-ax と /Qax このオプションは、指定したインテル® プロセッサーの機能を活用できる別の関数バージョンを生成できるかどうか検出するように、コンパイラーに指示します。
固有の関数バージョンを生成できることが判明した場合、コンパイラーはそれがパフォーマンスの向上につながるかどうかをチェックします。パフォーマンスが向上すると判明した場合、コンパイラーはプロセッサー固有バージョンと汎用バージョンの関数を生成します。プログラムの実行時に、使用されているインテル® プロセッサーに応じて、この 2 つのバージョンのどちらを実行するかが選択されます。この方法により、プログラムは従来のプロセッサーやインテル以外のプロセッサーとの互換性を保ちながら、最新のインテル® プロセッサー上でパフォーマンスを大幅に向上できます。インテル以外のプロセッサーは、常に汎用コードを実行します。
2 つ以上の processor 値を組み合わせて使用できます。例えば、-axSSE4.1,SSSE3 (Linux* OS および Mac OS* X) または /QaxSSE4.1,SSSE3 (Windows* OS) のように指定することができます。ただし、以前のスタイル、古いオプション、および新しいオプションを組み合わせることはできません。例えば、-axSSE4.1,T (Linux* OS および Mac OS* X) または /QaxSSE4.1,T (Windows* OS) のように指定することはできません。
以前の値である W および K は古いオプション (非推奨) です。新しいオプションについては、次のとおりです。
Mac OS* X システム: W または K の完全な後継オプションはありません。デフォルトオプション -msse3 (IA-32 アーキテクチャー) または -mssse3 (インテル® 64 アーキテクチャー) にアップグレードすることができます。
Windows* OS および Linux* OS システム: W の後継オプションは -msse2 (Linux* OS)、/arch:SSE2 (Windows* OS) です。K の完全な後継オプションはありません。しかし、Windows* OS システムで /QaxK は /arch:IA32 と解釈され、Linux* OS システムでは -axK は -mia32 と解釈されます。 または、次のいずれかを行います。
-msse2 (Linux* OS) オプション、/arch:SSE2 (Windows* OS) オプションにアップグレードします。これは、インテル® SSE2 専用のコードを 1 つ生成します。このコードは、以前のプロセッサーでは動作しません。
-mia32 -axSSE2 (Linux* OS)、/arch:IA32 /QaxSSE2 (Windows* OS) のように 2 つのオプションを組み合わせて指定します。IA-32 アーキテクチャー・ベース用とインテル® SSE2 用のこの組み合わせで、あらゆるプロセッサーで実行可能なファイルが生成されます。
最適化に関する注意事項 |
---|
インテル® コンパイラー、関連ライブラリーおよび関連開発ツールには、インテル製マイクロプロセッサーおよび互換マイクロプロセッサーで利用可能な命令セット (SIMD 命令セットなど) 向けの最適化オプションが含まれているか、あるいはオプションを利用している可能性がありますが、両者では結果が異なります。また、インテル® コンパイラー用の特定のコンパイラー・オプション (インテル® マイクロアーキテクチャーに非固有のオプションを含む) は、インテル製マイクロプロセッサー向けに予約されています。これらのコンパイラー・オプションと関連する命令セットおよび特定のマイクロプロセッサーの詳細は、『インテル® コンパイラー・ユーザー・リファレンス・ガイド』の「コンパイラー・オプション」を参照してください。インテル® コンパイラー製品のライブラリー・ルーチンの多くは、互換マイクロプロセッサーよりもインテル製マイクロプロセッサーでより高度に最適化されます。インテル® コンパイラー製品のコンパイラーとライブラリーは、選択されたオプション、コード、およびその他の要因に基づいてインテル製マイクロプロセッサーおよび互換マイクロプロセッサー向けに最適化されますが、インテル製マイクロプロセッサーにおいてより優れたパフォーマンスが得られる傾向にあります。 インテル® コンパイラー、関連ライブラリーおよび関連開発ツールは、互換マイクロプロセッサー向けには、インテル製マイクロプロセッサー向けと同等レベルの最適化が行われない可能性があります。これには、インテル® ストリーミング SIMD 拡張命令 2 (インテル® SSE2)、インテル® ストリーミング SIMD 拡張命令 3 (インテル® SSE3)、ストリーミング SIMD 拡張命令 3 補足命令 (SSSE3) 命令セットに関連する最適化およびその他の最適化が含まれます。インテルでは、インテル製ではないマイクロプロセッサーに対して、最適化の提供、機能、効果を保証していません。本製品のマイクロプロセッサー固有の最適化は、インテル製マイクロプロセッサーでの使用を目的としています。 インテルでは、インテル® コンパイラーおよびライブラリーがインテル製マイクロプロセッサーおよび互換マイクロプロセッサーにおいて、優れたパフォーマンスを引き出すのに役立つ選択肢であると信じておりますが、お客様の要件に最適なコンパイラーを選択いただくよう、他のコンパイラーの評価を行うことを推奨しています。インテルでは、あらゆるコンパイラーやライブラリーで優れたパフォーマンスが引き出され、お客様のビジネスの成功のお役に立ちたいと願っております。お気づきの点がございましたら、お知らせください。 改訂 #20110307 |
なし
© 1996-2011 Intel Corporation. 無断での引用、転載を禁じます。