Skip to main content
QUICK REVIEW

[論文レビュー] Short Note on Costs of Floating Point Operations on current x86-64 Architectures: Denormals, Overflow, Underflow, and Division by Zero

Markus Wittmann, Thomas Zeiser|arXiv (Cornell University)|Jun 12, 2015
Parallel Computing and Optimization Techniques被引用数 4
ひとこと要約

この論文は、AVX、AVX2、FMA3/4命令を用いて、現代のx86-64プロセッサにおける浮動小数点例外—非正規化数、オーバーフロー、アンダーフロー、ゼロ除算—の性能コストを定量的に評価している。FTZ/DAZを有効にしない場合、非正規化演算は100倍の性能ペナルティを受けることが示された。一方、FMA演算は加算部のアンダーフローが発生する場合にのみコストが高くなる。主な貢献は、IntelおよびAMDのシステムにおけるサイクルレベルの遅延を実測することであり、FTZ/DAZを無効にすると数値ワークロードで著しく性能が低下することが明らかになった。

ABSTRACT

Simple floating point operations like addition or multiplication on normalized floating point values can be computed by current AMD and Intel processors in three to five cycles. This is different for denormalized numbers, which appear when an underflow occurs and the value can no longer be represented as a normalized floating-point value. Here the costs are about two magnitudes higher.

研究の動機と目的

  • 現代のx86-64プロセッサにおける浮動小数点例外(非正規化数、オーバーフロー、アンダーフロー、ゼロ除算)の性能影響を定量的に評価すること。
  • FTZ(Flush-to-Zero)およびDAZ(Denormals-Are-Zero)モードの使用が、浮動小数点演算の実行遅延に与える影響を評価すること。
  • AVX、AVX2、FMA3/4命令セットを用いて、正規化済みと非正規化浮動小数点演算の性能差を測定すること。
  • 例外発生時に最も高い性能ペナルティを受ける浮動小数点演算を特定すること、特にFMA命令における影響を特定すること。

提案手法

  • C/C++およびアセンブリ言語を用いてマイクロベンチマークを実装し、倍精度ベクトルにおける浮動小数点演算を分離した。
  • 内側のループをAVX命令を用いてベクトル化し、1サイクルあたり4要素を処理することで、メモリバッファの影響を最小限に抑えた。
  • MXCSR制御レジスタを組み込み関数を介して操作することで、FTZおよびDAZモードを有効・無効に切り替え、測定を実施した。
  • 3つのIntel(SandyBridge、IvyBridge、Haswell)および1つのAMD(Interlagos)システムを用い、高分解能タイマーを用いて遅延を測定した。
  • 4つの演算タイプ(加算、乗算、除算、結合乗算加算:FMA)をベンチマーク化し、特定の例外を引き起こす入力を設定した。
  • 結果は1演算あたりのサイクル数として報告され、異なるプロセッサマイクロアーキテクチャにおける正規化および例外発生時のケースを比較した。

実験結果

リサーチクエスチョン

  • RQ1現在のx86-64プロセッサにおいて、非正規化浮動小数点演算の性能コストは正規化演算と比べてどの程度か?
  • RQ2FTZおよびDAZモードは、アンダーフロー、オーバーフロー、またはゼロ除算を伴う浮動小数点演算の遅延にどのように影響するか?
  • RQ3FMA演算は、別個の乗算と加算命令と比較して、アンダーフローに対してより感受性が高いか、それとも低いのか?
  • RQ4NaN値の存在やゼロ除算が、AVXおよびFMA命令における実行時間に顕著に影響を与えるか?

主な発見

  • Intel HaswellおよびAMD Interlagosでは、正規化されたAVX加算および乗算は3〜5サイクルであるが、FTZ/DAZを無効にした場合のアンダーフロー演算は30〜40サイクルにまで上昇し、10倍から100倍のペナルティが発生する。
  • ゼロ除算はFTZ/DAZが有効な場合、4〜5サイクルと高速であるが、非正規化被除数が関与すると著しく遅延し(最大64サイクル)、性能が著しく低下する。
  • 除算において、被除数または除数のアンダーフローが発生すると、Haswellでは遅延が約7サイクルから最大56.5サイクルにまで上昇し、顕著な性能低下が生じる。
  • FMA演算は、加算部のアンダーフローが発生する場合にのみコストが高くなる:乗算部のアンダーフローではペナルティなしであるが、加算部のアンダーフローでは33.5〜36.5サイクルを要する。
  • FTZおよびDAZを有効にすると、すべての例外ケース(アンダーフロー、オーバーフロー、NaN、ゼロ除算)に顕著な性能影響がなく、正規化演算と同等の遅延を示す。
  • 非正規化入力の性能ペナルティは、除算および加算で最も顕著であり、乗算およびFMAでは、どの成分がアンダーフローを起こすかに応じてより複雑な挙動を示す。

より良い研究を、今すぐ始めましょう

論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。

クレジットカード登録不要

このレビューはAIが作成し、人間の編集者が確認しました。