fimf-use-svml、Qimf-use-svml

インテルの数学ライブラリー (LIBM) の代わりに、SVML (Short Vector Math Library) を使用して数学ライブラリー関数を実装するようにコンパイラーに指示します。これは C++ 固有のコンテンツです。DPC++ には適用されません。

構文

Linux*:

-fimf-use-svml=value[:funclist]

macOS*:

-fimf-use-svml=value[:funclist]

Windows*:

/Qimf-use-svml:value[:funclist]

引数

funclist

属性が適用される 1 つまたは複数の数学ライブラリー関数のリストです (オプション)。複数の関数を指定する場合は、カンマで区切る必要があります。

sin と sinf のように特定の精度向けのバリエーションは異なる関数と見なされるため、単精度と倍精度の両方の正弦関数で SVML を使用するように指定するには、-fimf-use-svmlt=true:sin,sinf (または /Qimf-use-svml:true:sin,sinf) を使用する必要があります。

デフォルト

false

数学ライブラリー関数は、インテルの数学ライブラリーを使用して実装されますが、ほかのコンパイラー・オプションを指定すると、コンパイラーは LIBM または SVML を利用して数学ライブラリー関数を実装することができます。

説明

このオプションは、SVML (Short Vector Math Library) を使用して数学ライブラリー関数を実装するようコンパイラーに指示します。-fimf-use-svml=true または /Qimf-use-svml:true を指定すると、選択された固有の SVML バージョンは -fimf-precision (Linux* および macOS*) または /Qimf-precision (Windows*) と -fp-model (Linux* および macOS*) または /fp (Windows*) の影響を受けます。このオプションは、LIBM で実装され、SVML では実装されていない数学ライブラリー関数には効果がありません。

-fp-model (Linux* および macOS*) または /fp (Windows*) オプションの安全な設定 (precise など) では、このオプションにより数学ライブラリー関数の精度がわずかに低下します。これは、最も高精度の SVML 関数であっても LIBM の対応する関数よりも精度がわずかに劣るためです。さらに、SVML 関数は、浮動小数点例外を正確に発行できない可能性があり、errno を維持できず、最も近い偶数への丸めモードでのみ正しく動作するように設計されています。

-fimf-use-svml=true または /Qimf-use-svml:true-fp-model (Linux* および macOS*) または /fp (Windows*) の安全な設定と一緒に使用する利点は、コンパイラーが数学ライブラリー関数の呼び出しを含むループを効率良くベクトル化できるようにして、パフォーマンスを大幅に向上できることです。

SVML を使用して特定の数学関数で精度を指定する必要がある場合は、その精度の関数名を指定します。例えば、倍精度の正弦関数の場合は sin を -fimf-use-svml=true:sin または /Qimf-use-svml:true:sin のように指定します。単精度の平方根の場合は sqrtf を -fimf-use-svml =false:sqrtf または /Qimf-use-svml:false:sqrtf のように指定します。

関数名を指定しない場合、すべての関数 (およびすべての精度) に設定が適用されます。ただし、個々の関数名を指定すると、指定された関数の対応する精度のみに設定が適用されます。例えば、sinf は単精度の正弦関数のみ、sin は倍精度の正弦関数のみ、sinl は拡張精度の正弦関数のみ、というように適用されます。

SVML 関数は予期しない浮動小数点例外を発行する可能性があるため、浮動小数点例外をトラップする機能の使用には注意が必要です。

性能は、使用法、構成、およびその他の要因によって異なります。詳細については、www.Intel.com/PerformanceIndex (英語) を参照してください。

注意事項の改訂 #20201201

IDE オプション

なし

代替オプション

なし

関連情報