Design: 提案WasmのFp IEEEコンプラむアンスレベルフラグWasm ScalarおよびSIMDのFP-Fast-Math

䜜成日 2021幎01月12日  Â·  7コメント  Â·  ゜ヌス: WebAssembly/design

gcc、clang、msvcなどのネむティブコンパむラを䜿甚するず、開発者はプラグマたたは/ fpstrict-fast、ffast-math、-ffp-contractなどのコンパむル時フラグを䜿甚しおfpIEEE準拠レベルを蚭定できたす。開発者がパフォヌマンスを優先しおポヌタブル粟床ずのトレヌドオフを奜むアプリケヌションの範囲MLコンボリュヌション、DSP、䜎粟床グラフィックス/物理゚ンゞンなど。

䜿甚する特定の蚭定ずコンパむラヌによっおは、パフォヌマンスが倧幅に向䞊する可胜性がありたす。 これらの開発者向けのヒント/蚭定により、コンパむラヌはより倚くのFp数孊の最適化、より優れた呜什遞択fusing / fma、倀の範囲の制限、および緩和された怜蚌を安党に実行できたす。

珟圚、Wasmの開発者によっお指定された堎合、これらのフラグは開発者ツヌルチェヌンによっお消費され、䜿甚される特定のツヌルに応じおいく぀かを尊重する堎合がありたすhttps://github.com/WebAssembly/binaryen/pull/3155など。 これらの蚭定情報は砎棄されたすが、ランタむムで䜿甚したい堎合は䜿甚できたせん。

Wasmランタむムは、これらの開発者フラグ/ヒントにアクセスしお、安党なずきに最適化ず呜什遞択に぀いお独自の決定を䞋す手段を持぀こずで恩恵を受けるこずができたす。 これは、特にAOT wasmコンパむラで、远加のランタむム最適化を実行する堎合に特に圹立ちたす。 これは、䞞め、最小/最倧などのFP Wasm SIMD codegenの既知のパフォヌマンスの懞念のいく぀かに察凊するのにも圹立ちたす。1぀は高レベルです。これにより、ランタむムが特定のFP最適化のために開発者ツヌルに䟝存しないようになり、ネむティブパフォヌマンスをより厳密に远跡するためのWasm。

デフォルトモヌドずしおIEEEコンプラむアンスを緩和し、クラス/むンタヌフェむス/メ゜ッドの粒床で移怍性を確保するために「strictfp」修食子を導入するJVM1.2の前䟋がありたす。 Wasmのより䞋䜍互換性のあるアプロヌチを怜蚎する機䌚がありたす。

ランタむム゚ンゞンによっお消費されるWasmバむナリでfpIEEEコンプラむアンスフラグを゚ンコヌドするメカニズムを提案したいず思いたす。 ネむティブ蚀語の堎合ず同様に、フラグ自䜓はオプションずしお扱うこずができ、それらの䜿甚はランタむムの遞択になりたす。 この圱響は、パフォヌマンスの向䞊、特定のプラットフォヌムでの䞀貫したセマンティクス、およびプラットフォヌムの移怍性の䜎䞋ずしお珟れたす。 提案されたメカニズムにより、Wasmバむナリ内のコヌドセクションに、呜什のブロックの粒床でこれらの蚭定/ヒントを明確にマヌクするこずができたす。

先に進むに぀れお、蚭蚈を詳现に敎理できたす。1぀のオプションは、蚭定ずコヌドセグメントオフセットをマヌクする゚ントリを含む新しいカスタムセクションを導入するこずです。別のオプションは、JVMのように、これらの開発者蚭定を䜿甚しおコヌドセグメントをマヌクする新しい呜什を導入するこずです。 サポヌトする特定のフラグに぀いおは、先に進むに぀れお話し合い、組み蟌むこずができたすたずえば、-fp-finate-math-only、-fp-no-signed-zeros ..。

このメカニズムは、スカラヌ/ベクトルFMA、およびFP近䌌呜什をWasmおよび/たたはSIMD仕様に远加するための議論を補完したす。

この問題は、このトピックぞの関心を远跡し、CG同期でこれに぀いお議論するこずです。

最も参考になるコメント

gcc / clangの-ffast-mathを䜿甚する兞型的なプロゞェクトは、ネむティブコヌドにコンパむルされおいたす。 それらを䜿甚するアプリケヌション開発者は、通垞、自分で䜜成したすべおのネむティブコヌドバリアントをテストしたす。 たた、䞀般的なハヌドりェアISAはすべお完党に決定論的な浮動小数点の動䜜をしおいるため、開発者がこれらのバリアントをテストするず、ナヌザヌの動䜜が倉わらないこずをかなり確信で​​きたす。 珟圚、WebAssemblyの浮動小数点もこのように機胜したす。 これは、ハヌドりェアISAず同様に完党に決定論的であるため、-ffast-mathを远加しお、「それらに察しお機胜する」こずをテストできるずいう、長幎の開発者の前提が守られおいたす。

WebAssemblyレベルの-ffast-mathフラグは、WebAssemblyがこの点でハヌドりェアISAに䌌おおらず、これらの仮定を支持しおいないこずを意味したす。 開発者は䜜成したバむナリをテストしたすが、ナヌザヌにwasmを出荷する堎合、ナヌザヌはさたざたなハヌドりェアたたはさたざたな゚ンゞンで実行できるこずを期埅する必芁がありたす。 WebAssemblyレベルで高速数孊のようなフラグを䜿甚するず、WebAssemblyはISAのように動䜜せず、ナヌザヌは開発者がテストしたものずは異なる浮動小数点の結果を芋るこずができたす。

たた、これらのフラグを䜿甚するプロゞェクトは、今日WebAssemblyにコンパむルするずきに芋逃すこずはありたせん。 たずえば、-fassociative-mathによっお有効になる最適化の倚くは、WebAssemblyを䜜成する前にLLVMが実行できるルヌプ指向の最適化です。

党おのコメント7件

fp操䜜の厳密さはプログラムのセマンティクスに圱響を䞎えるため、より寛容なセマンティクスを可胜にする最善の方法は、カスタムセクションやブロック構造ではなく、新しい呜什を導入するこずだず思いたす。 NaN䌝播ルヌルにより、浮動小数点の非決定性を凊理するために必芁な仕様メカニズムはすでに甚意されおいるため、より倚くの結果を可胜にする新しい浮動小数点呜什を導入するのは簡単だず思いたす。

远加のコンテキストずしお、JVMは、その䞀郚ずしお、 strictfpをするこずを怜蚎しおいたす。

より寛容なセマンティクスを可胜にする最良の方法は、カスタムセクションやブロック構造ではなく、新しい呜什を導入するこずです。

新しい呜什を導入するこずは䟿利ですが、拡匵性が高すぎたり、ツヌルチェヌンの䟝存関係を完党に削陀したりするこずはありたせん。 fma、reciprocalなどの優れたプラットフォヌムサポヌトを備えた呜什は、新しい呜什の远加に適しおいたす。 ネむティブコンパむラが提䟛するヒント/フラグにはかなりの
-fassociative-math -ffast-math -fno-honor-nans -ffinate-math-only -fdenormal-fp-math -fno-strict-float-cast-overflow -fno-math-errno -fno-trapping-math ...
これらのほずんどは、代数倉換、nans、笊号付きれロ、トラップ、䞞めなどの制限を解陀する、より積極的なfp最適化を可胜にするためのヒントです。新しい呜什ずしおすべおの有甚なフラグを衚珟するこずは理想的なimoではありたせん。

远加のコンテキストずしお、JVMは、その䞀郚ずしお、strictfpを削陀し、厳密なセマンティクスのみをサポヌトするこずを怜蚎しおいたす。

この远加されたコンテキストを@sunfishcodeに感謝したす 私はこの新しい曎新に぀いお知りたせんでした、そしお動機は数孊ラむブラリの倉圢を統合するこずであるように思われたす。 よく芋るず、Java strict-fpはもう少し特殊化されおいるように芋え、gcc / clangによっお提䟛されるコントロヌルポむントの範囲を適切に衚しおはいたせん。 -ffast-mathフラグず関連するフラグは、githubのクむック怜玢からのネむティブリポゞトリで非垞に人気があるようです。 䞊蚘のフラグず関連するpargmasの䜿甚法を調べる予定です

gcc / clangの-ffast-mathを䜿甚する兞型的なプロゞェクトは、ネむティブコヌドにコンパむルされおいたす。 それらを䜿甚するアプリケヌション開発者は、通垞、自分で䜜成したすべおのネむティブコヌドバリアントをテストしたす。 たた、䞀般的なハヌドりェアISAはすべお完党に決定論的な浮動小数点の動䜜をしおいるため、開発者がこれらのバリアントをテストするず、ナヌザヌの動䜜が倉わらないこずをかなり確信で​​きたす。 珟圚、WebAssemblyの浮動小数点もこのように機胜したす。 これは、ハヌドりェアISAず同様に完党に決定論的であるため、-ffast-mathを远加しお、「それらに察しお機胜する」こずをテストできるずいう、長幎の開発者の前提が守られおいたす。

WebAssemblyレベルの-ffast-mathフラグは、WebAssemblyがこの点でハヌドりェアISAに䌌おおらず、これらの仮定を支持しおいないこずを意味したす。 開発者は䜜成したバむナリをテストしたすが、ナヌザヌにwasmを出荷する堎合、ナヌザヌはさたざたなハヌドりェアたたはさたざたな゚ンゞンで実行できるこずを期埅する必芁がありたす。 WebAssemblyレベルで高速数孊のようなフラグを䜿甚するず、WebAssemblyはISAのように動䜜せず、ナヌザヌは開発者がテストしたものずは異なる浮動小数点の結果を芋るこずができたす。

たた、これらのフラグを䜿甚するプロゞェクトは、今日WebAssemblyにコンパむルするずきに芋逃すこずはありたせん。 たずえば、-fassociative-mathによっお有効になる最適化の倚くは、WebAssemblyを䜜成する前にLLVMが実行できるルヌプ指向の最適化です。

はい、フロヌトの粟床/動䜜に圱響を䞎える決定は、ツヌルによっおWasmモゞュヌルに組み蟌たれる必芁がありたす。 珟圚の呜什では衚珟できない動䜜に察しお、新しい呜什を远加できたす。

前回のCGミヌティングでこのトピックに぀いお話し合い、目暙の代替手段ずしお新しい呜什を远加したした。 埌者の方向でこれを解決するこずに䞀般的な関心があるようです。 ツヌルチェヌンの最適化ず欠萜しおいる呜什バリアントの導入によっお、パフォヌマンスの向䞊に察する開発者の期埅が支持されれば、私は異議を唱えたせん。 その堎合、Wasmの抜象化レベルを損なうランタむムにこれらのフラグを䌝播するこずを正圓化する必芁はありたせん。 この目暙を達成するために必芁なセマンティックバリアント呜什を理解するこずは良いこずです。 SIMDのコンテキストで識別されたいく぀かの新しい呜什がありたす。これらは、高速挔算フラグを完党に衚珟するために必芁な呜什ツヌルず䞀臎するように拡匵する必芁がある堎合がありたす。 その方向を芋続けたす。

フィヌドバックをお寄せいただきありがずうございたす。

CGディスカッションに䜿甚されるコンテンツ。 Wasm ffast-math.pptx

このペヌゞは圹に立ちたしたか
0 / 5 - 0 評䟡

関連する問題

konsoletyper picture konsoletyper  Â·  6コメント

mfateev picture mfateev  Â·  5コメント

Thaina picture Thaina  Â·  8コメント

Artur-A picture Artur-A  Â·  3コメント

nikhedonia picture nikhedonia  Â·  7コメント