Oracle® Solaris Studio 12.4: Fortran ユーザーズガイド

印刷ビューの終了

更新: 2014 年 12 月
 
 

3.4.186 -xvector[=a]

ベクトルライブラリ関数呼び出しの自動生成、または SIMD (Single Instruction Multiple Data) をサポートする x86 プロセッサ上での SIMD 命令の生成を可能にします。このオプションを使用するときは -fround=nearest を指定することによって、デフォルトの丸めモードを使用する必要があります。

-xvector オプションを指定するには、最適化レベルが -xO3 かそれ以上に設定されていることが必要です。最適化レベルが指定されていない場合や —xO3 よりも低い場合はコンパイルは続行されず、メッセージが表示されます。

a に指定可能な値を次の表に示します。no% 接頭辞は関連付けられたサブオプションを無効にします。

表 3-23  -xvector のサブオプション
意味
[no%]lib
(Oracle Solaris) コンパイラは可能な場合はループ内の数学ライブラリへの呼び出しを、同等のベクトル数学ルーチンへの単一の呼び出しに変換します。大きなループカウントを持つループでは、これによりパフォーマンスが向上します。このオプションを無効にするには no%lib を使用します。
[no%]simd
(SPARC) -xarch=sparcace-xarch=sparcaceplus の場合、特定のループのパフォーマンスを改善するために、浮動小数点および整数の SIMD 命令を使用するようにコンパイラに指示します。ほかの SPARC プラットフォームの場合とは反対に、-xvector=simd は、-xvector=none および -xvector=no%simd を除き、任意の -xvector オプションを指定した -xarch=sparcace および -xarch=sparcaceplus のもとで常に有効です。さらに、-xvector=simd には 3 よりも大きい -O が必要であり、それ以外の場合はスキップされ、警告は発行されません。
ほかのすべての -xarch 値の場合、特定のループのパフォーマンスを改善するために Visual Instruction Set [VIS1、VIS2、ViS3 など] SIMD 命令を使用するようにコンパイラに指示します。基本的に -xvector=simd オプションを明示的に使用すると、コンパイラは、ループ繰り返し数を減らすためにループ変換を実行して、特殊なベクトル化した SIMD 命令の生成を有効にします。-xvector=simd オプションは、-O が 3 より大きく -xarchsparcvis3 以上である場合にのみ有効です。それ以外の場合、-xvector=simd はスキップされ、警告は発行されません。
[no%]simd
(x86) コンパイラにネイティブ x86 SSE SIMD 命令を使用して特定のループのパフォーマンスを向上させるよう指示します。ストリーミング拡張機能は、x86 で最適化レベルが 3 かそれ以上に設定されている場合にデフォルトで使用されます。このオプションを無効にするには、no%simd を使用します。
コンパイラは、ストリーミング拡張機能がターゲットのアーキテクチャーに存在する場合、つまりターゲットの ISA が SSE2 以上である場合にのみ SIMD を使用します。たとえば、最新のプラットフォームで -xtarget=woodcrest、—xarch=generic64、-xarch=sse2、-xarch=sse3、または -fast を指定して使用できます。ターゲットの ISA にストリーミング拡張機能がない場合、このサブオプションは無効です。
%none
このオプションを完全に無効にします。
yes
このオプションは非推奨です。代わりに –xvector=lib を指定してください。
no
このオプションは非推奨です。代わりに –xvector=%none を指定してください。

デフォルトは、x86 では -xvector=simd で、SPARC プラットフォームでは -xvector=%none です。サブオプションなしで -xvector を指定すると、コンパイラは x86 Solaris では -xvector=simd,lib、SPARC Solaris では -xvector=lib、Linux プラットフォームでは -xvector=simd と想定します。

コンパイラは、リンク時に libmvec ライブラリを取り込みます。

コンパイルとリンクを個別のコマンドで実行する場合は、リンク時の CC コマンドでも必ず -xvector を使用してください。