しきい値データ

デノーマル数は、浮動小数点形式の境界値で、プロセッサーにとって特別な値です。デノーマルデータは、例えば、浮動小数点形式の信号を、無限インパルス応答 (IIR) フィルターおよび有限インパルス応答 (FIR) フィルターでフィルタリングした場合に発生します。デノーマルデータに対する操作を行うと、対応する割り込みが無効な場合でも処理は遅くなります。デノーマルデータの処理による影響を回避するため、インテル® IPP しきい値関数をフィルタリングの前に入力信号に適用することができます。次に例を示します。

     if (denormal_data)

      ippsThreshold_LT_32f_I( src, len, 1e-6f );

     ippsFIR_32f( src, dst, len, st );

1e-6f はしきい値レベルです。このレベルよりも小さな入力データはゼロに設定されます。 インテル® IPP しきい値関数は非常に高速なので、ソースデータにデノーマル数がある場合、2 つの関数が実行されることで処理速度は大幅に向上します。当然、フィルタリング中にデノーマルデータが発生した場合、しきい値関数では対応できません。

ゼロフラッシュ (FTZ) と デノーマルゼロ (DAZ) の 2 つの特別な計算モードを設定できます。 これらのモードを設定するには、ippSetFlushToZero および ippSetDenormAreZeros 関数を使用します。 (詳細は、http://software.intel.com/en-us/articles/x87-and-sse-floating-point-assists-in-ia-32-flush-to-zero-ftz-and-denormals-are-zero-daz/ (英語) を参照してください)。

次の表は、デノーマルデータがパフォーマンスに与える影響と、しきい値を設定した場合の効果を示しています。しきい値を設定した場合、クロック数は 3 クロック増加するだけです。しきい値を設定しない場合、デノーマルデータによりアプリケーションのパフォーマンスが約 250 倍遅くなることが分かります。

デノーマルデータにしきい値を設定した場合のパフォーマンス結果

データ/方法

ノーマル

デノーマル

デノーマル +

しきい値

デノーマル + FTZ + DAZ

要素ごとのプロセッサー・サイクル

46

11467

49

46

最適化に関する注意事項

インテル® コンパイラーは、互換マイクロプロセッサー向けには、インテル製マイクロプロセッサー向けと同等レベルの最適化が行われない可能性があります。これには、インテル® ストリーミング SIMD 拡張命令 2 (インテル® SSE2)、インテル® ストリーミング SIMD 拡張命令 3 (インテル® SSE3)、ストリーミング SIMD 拡張命令 3 補足命令 (SSSE3) 命令セットに関連する最適化およびその他の最適化が含まれます。インテルでは、インテル製ではないマイクロプロセッサーに対して、最適化の提供、機能、効果を保証していません。本製品のマイクロプロセッサー固有の最適化は、インテル製マイクロプロセッサーでの使用を目的としています。インテル® マイクロアーキテクチャーに非固有の特定の最適化は、インテル製マイクロプロセッサー向けに予約されています。この注意事項の適用対象である特定の命令セットの詳細は、該当する製品のユーザー・リファレンス・ガイドを参照してください。

改訂 #20110804


このヘルプトピックについてのフィードバックを送信