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

3.4.179 –xvector[= [[ no%]lib, [no%] simd, %none] ]

ベクトルライブラリ関数を自動呼び出しします。

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

このオプションを使用する場合、-xvector を使用してコンパイルするときに、デフォルトの丸めモードである -fround=nearest でコンパイルする必要があります。

-xvector=lib (Solaris プラットフォームのみ) が指定されると、可能な場合は、コンパイラはループ内の数学ライブラリへの呼び出しを、同等のベクトル数学ルーチンへの単一の呼び出しに変換します。大きなループカウントを持つループでは、これによりパフォーマンスが向上します。この機能は、-xvector=no%lib で無効になります。

-xvector=simd を使用すると、コンパイラはネイティブ x86 SSE SIMD 命令を使用して特定のループのパフォーマンスを向上させます。ストリーミング拡張機能は、x86 で最適化レベルが 3 かそれ以上に設定されている場合にデフォルトで使用されます。サブオプション no%simd を使用すると、この機能を無効にできます。

コンパイラは、ストリーミング拡張機能がターゲットのアーキテクチャーに存在する場合、つまりターゲットの ISA が SSE2 以上である場合にのみ SIMD を使用します。たとえば、最新のプラットフォームで -xtarget=woodcrest、—xarch=generic64、-xarch=sse2、-xarch=sse3、または -fast を指定して使用できます。ターゲットの ISA にストリーミング拡張機能がない場合、このサブオプションは無効です。

-xvector=simd-fsimple=2 の両方を指定すると、-xvector=simd だけを指定した場合よりもパフォーマンスが向上します。ただし、-fsimple=2 では浮動小数点演算の並べ替えが許可されるため、浮動小数点の結果がわずかに異なる場合があります。

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

コンパイラは、ロード時に libmvec ライブラリを取り込みます。コンパイル時に -xvector=lib を指定した場合は、リンク時にも指定する必要があります。

このオプションは以前のインスタンスを上書きするため、-xvector=%none は、それ以前に指定した -xvector=lib よりも優先されます。