Design: ΠŸΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅: Ρ„Π»Π°Π³ΠΈ уровня соотвСтствия Fp IEEE для Wasm (FP-Fast-Math для Wasm Scalar ΠΈ SIMD)

Π‘ΠΎΠ·Π΄Π°Π½Π½Ρ‹ΠΉ Π½Π° 12 янв. 2021  Β·  7ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ  Β·  Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: WebAssembly/design

БобствСнныС компиляторы, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ gcc, clang, msvc, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ ΡƒΡ€ΠΎΠ²Π½ΠΈ соотвСтствия fp IEEE с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΡ€Π°Π³ΠΌ ΠΈΠ»ΠΈ Ρ„Π»Π°Π³ΠΎΠ² Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ компиляции, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ /fp(strict-fast), ffast-math, -ffp-contract ΠΈ Ρ‚. Π΄. Π­Ρ‚ΠΈ Ρ„Π»Π°Π³ΠΈ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ для ΡˆΠΈΡ€ΠΎΠΊΠΎΠ³ΠΎ спСктра Π·Π°Π΄Π°Ρ‡. ряд ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ML-свСртки, DSP, Π½ΠΈΠ·ΠΊΠΎΡ‚ΠΎΡ‡Π½Ρ‹Π΅ графичСскиС/физичСскиС Π΄Π²ΠΈΠΆΠΊΠΈ...), Π³Π΄Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°ΡŽΡ‚ компромисс ΠΌΠ΅ΠΆΠ΄Ρƒ пСрСносимой Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒΡŽ ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ.

ΠŸΡ€ΠΈΡ€ΠΎΡΡ‚ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ Π² зависимости ΠΎΡ‚ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… настроСк ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… компиляторов. Π­Ρ‚ΠΈ подсказки/прСдпочтСния Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ компиляторам бСзопасно Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ большС матСматичСских ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΉ Fp, Π»ΡƒΡ‡ΡˆΠΈΠΉ Π²Ρ‹Π±ΠΎΡ€ инструкций (слияниС/fma), ограничСния Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΈ смягчСнныС ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ.

Π’ настоящСС врСмя эти Ρ„Π»Π°Π³ΠΈ, ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌΠΈ для Wasm, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠΎΠΉ инструмСнтов Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°, ΠΈ ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· Π½ΠΈΡ… Π² зависимости ΠΎΡ‚ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ³ΠΎ инструмСнта (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, https://github.com/WebAssembly/binaryen/pull/3155). Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ ΠΎΠ± этих настройках Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚Π±Ρ€ΠΎΡˆΠ΅Π½Π°, Ссли ΠΎΠ½ΠΈ нСдоступны/Π½Π΅ Π²ΠΈΠ΄Π½Ρ‹ для срСды выполнСния, Ссли ΠΎΠ½ΠΈ захотят ΠΈΡ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ.

Π‘Ρ€Π΅Π΄Ρ‹ выполнСния Wasm ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹ΠΈΠ³Ρ€Π°Ρ‚ΡŒ ΠΎΡ‚ доступа ΠΊ этим Ρ„Π»Π°Π³Π°ΠΌ/подсказкам Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ собствСнныС Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΏΠΎ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ Π²Ρ‹Π±ΠΎΡ€Ρƒ инструкций, ΠΊΠΎΠ³Π΄Π° это бСзопасно. Π­Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ особСнно ΠΏΠΎΠ»Π΅Π·Π½ΠΎ для выполнСния Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΉ Π²ΠΎ врСмя выполнСния, особСнно Π² компиляторах AOT wasm. Π­Ρ‚ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ нСсколько извСстных ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ с ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ Π² SIMD-ΠΊΠΎΠ΄Π΅ FP Wasm, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ ΠΎΠΊΡ€ΡƒΠ³Π»Π΅Π½ΠΈΠ΅, минимальноС/максимальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈ Ρ‚. Π΄. Один ΠΈΠ· высоких ΡƒΡ€ΠΎΠ²Π½Π΅ΠΉ позволяСт Π½Π΅ Π·Π°Π²ΠΈΡΠ΅Ρ‚ΡŒ ΠΎΡ‚ инструмСнтов Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° для ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΉ FP ΠΈ удаляСт Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊ для Wasm для Π±ΠΎΠ»Π΅Π΅ Ρ‚Ρ‰Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ отслСТивания Π½Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ.

БущСствуСт ΠΏΡ€Π΅Ρ†Π΅Π΄Π΅Π½Ρ‚ JVM 1.2, ΠΎΡΠ»Π°Π±Π»ΡΡŽΡ‰ΠΈΠΉ соотвСтствиС IEEE Π² качСствС Ρ€Π΅ΠΆΠΈΠΌΠ° ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΈ вводящий ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ strictfp для обСспСчСния пСрСносимости с Π΄Π΅Ρ‚Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ классов/интСрфСйсов/ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ². БущСствуСт Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈΠ·ΡƒΡ‡ΠΈΡ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ совмСстимый ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ для Wasm.

Π― Ρ…ΠΎΡ‚Π΅Π» Π±Ρ‹ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΡ‚ΡŒ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ для кодирования Ρ„Π»Π°Π³ΠΎΠ² соотвСтствия fp IEEE Π² Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅ Wasm, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ°ΠΌΠΈ выполнСния. Как ΠΈ Π² случаС с Ρ€ΠΎΠ΄Π½Ρ‹ΠΌΠΈ языками, сами Ρ„Π»Π°Π³ΠΈ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅, ΠΈ ΠΈΡ… использованиС ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹Π±ΠΎΡ€ΠΎΠΌ срСды выполнСния. ВлияниС Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΡΠ²Π»ΡΡ‚ΡŒΡΡ Π² Π²ΠΈΠ΄Π΅ ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, согласованности сСмантики Π½Π° Π΄Π°Π½Π½ΠΎΠΉ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ ΠΈ мСньшСй пСрСносимости ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹. ΠŸΡ€Π΅Π΄Π»Π°Π³Π°Π΅ΠΌΡ‹ΠΉ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½ΠΎ ΠΌΠ°Ρ€ΠΊΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ участки ΠΊΠΎΠ΄Π° Π² Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅ Wasm с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ этих ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚Π΅Π½ΠΈΠΉ/Π½Π°ΠΌΠ΅ΠΊΠΎΠ² Π½Π° ΡΡ‚Π΅ΠΏΠ΅Π½ΡŒ Π΄Π΅Ρ‚Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π±Π»ΠΎΠΊΠ° инструкций.

Π”ΠΈΠ·Π°ΠΉΠ½ ΠΌΠΎΠΆΠ½ΠΎ Π΄Π΅Ρ‚Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ продвиТСния. Один ΠΈΠ· Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² β€” ввСсти Π½ΠΎΠ²Ρ‹ΠΉ настраиваСмый Ρ€Π°Π·Π΄Π΅Π» с записями, ΠΎΡ‚ΠΌΠ΅Ρ‡Π°ΡŽΡ‰ΠΈΠΌΠΈ прСдпочтСния ΠΈ смСщСния сСгмСнтов ΠΊΠΎΠ΄Π°, Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ β€” ввСсти Π½ΠΎΠ²ΡƒΡŽ ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ для ΠΌΠ°Ρ€ΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ сСгмСнтов ΠΊΠΎΠ΄Π° этими прСдпочтСниями Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°, ΠΊΠ°ΠΊ Π² JVM. ΠšΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Π΅ Ρ„Π»Π°Π³ΠΈ для ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΠ±ΡΡƒΠΆΠ΄Π°Ρ‚ΡŒΡΡ ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒΡΡ ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ продвиТСния (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, -fp-finate-math-only, -fp-no-signed-zeros..)

Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚ обсуТдСния ΠΏΠΎ добавлСнию инструкций Scalar / Vector FMA ΠΈ аппроксимации FP Π² ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ Wasm ΠΈ/ΠΈΠ»ΠΈ SIMD.

Π­Ρ‚ΠΎΡ‚ выпуск для отслСТивания интСрСса ΠΊ Π΄Π°Π½Π½ΠΎΠΉ Ρ‚Π΅ΠΌΠ΅ ΠΈ обсуТдСния этого Π² CG sync.

Π‘Π°ΠΌΡ‹ΠΉ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’ΠΈΠΏΠΈΡ‡Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠ΅ gcc/clang -ffast-math, ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π² собствСнный ΠΊΠΎΠ΄. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠ΅ ΠΈΡ…, ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΡƒΡŽΡ‚ всС Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ Π½Π°Ρ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ½ΠΈ сами ΡΠΎΠ·Π΄Π°ΡŽΡ‚. А ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ всС популярныС Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½Ρ‹Π΅ ISA ΠΈΠΌΠ΅ΡŽΡ‚ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Π΄Π΅Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ запятой, послС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ протСстировали эти Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹, ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΡƒΠ²Π΅Ρ€Π΅Π½Ρ‹, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π½Π΅ измСнится для ΠΈΡ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ. Π’ настоящСС врСмя Ρ‚Π°ΠΊ ΠΆΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ WebAssembly с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ запятой; ΠΎΠ½ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Π΄Π΅Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Π½, ΠΊΠ°ΠΊ ΠΈ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½Ρ‹Π΅ ISA, поэтому ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Π΄Π°Π²Π½ΠΈΠ΅ прСдполоТСния Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΠΎ возмоТности добавлСния -ffast-math ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ Β«Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ для Π½ΠΈΡ…Β», ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ.

Π€Π»Π°Π³ -ffast-math уровня WebAssembly Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ·Π½Π°Ρ‡Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ WebAssembly большС Π½Π΅ ΠΏΠΎΡ…ΠΎΠΆ Π½Π° Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΡƒΡŽ ISA Π² этом ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΈ ΠΈ большС Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ эти прСдполоТСния. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Π±ΡƒΠ΄ΡƒΡ‚ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ созданный ΠΈΠΌΠΈ Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ», Π½ΠΎ ΠΏΡ€ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ΅ wasm своим ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ ΠΈΡ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΠΆΠΈΠ΄Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ смогут Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ Π΅Π³ΠΎ Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΌ ΠΎΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠΈ ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… Π΄Π²ΠΈΠΆΠΊΠ°Ρ…. Π‘ Ρ„Π»Π°Π³Π°ΠΌΠΈ, ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹ΠΌΠΈ быстрой ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ΅, Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ WebAssembly, WebAssembly Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ вСсти сСбя ΠΊΠ°ΠΊ ISA, ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ смогут ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ вычислСний с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ запятой, ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΎΡ‚ Ρ‚Π΅Ρ…, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ тСстировал Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ.

Π’Π°ΠΊΠΆΠ΅ стоит ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠ΅ эти Ρ„Π»Π°Π³ΠΈ, сСгодня Π½Π΅ Ρ‚Π΅Ρ€ΡΡŽΡ‚ΡΡ ΠΏΡ€ΠΈ компиляции Π² WebAssembly. НапримСр, ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ, доступныС с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ -fassociative-math, ΡΠ²Π»ΡΡŽΡ‚ΡΡ оптимизациями, ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈ Π½Π° Ρ†ΠΈΠΊΠ»Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ LLVM ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Π΄ΠΎ создания WebAssembly.

ВсС 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 ...
Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΈΠ· Π½ΠΈΡ… ΡΠ²Π»ΡΡŽΡ‚ΡΡ подсказками, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΌΠΈ Π±ΠΎΠ»Π΅Π΅ агрСссивно ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ fp, снимая ограничСния Π½Π° алгСбраичСскиС прСобразования, nans, Π½ΡƒΠ»ΠΈ со Π·Π½Π°ΠΊΠΎΠΌ, Π»ΠΎΠ²ΡƒΡˆΠΊΠΈ, ΠΎΠΊΡ€ΡƒΠ³Π»Π΅Π½ΠΈΠ΅ ΠΈ Ρ‚. Π΄. Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ всСх ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Ρ… Ρ„Π»Π°Π³ΠΎΠ² Π² Π²ΠΈΠ΄Π΅ Π½ΠΎΠ²Ρ‹Ρ… инструкций Π½Π΅ являСтся ΠΈΠ΄Π΅Π°Π»ΡŒΠ½Ρ‹ΠΌ imo.

Π’ качСствС Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ контСкста JVM, со своСй стороны, рассматриваСт Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ удалСния strictfp ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ строгой сСмантики.

Бпасибо @sunfishcode Π·Π° Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½Ρ‹ΠΉ контСкст! Π― Π½Π΅ Π·Π½Π°Π» ΠΎΠ± этом Π½ΠΎΠ²ΠΎΠΌ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ ΠΈ, ΠΏΠΎΡ…ΠΎΠΆΠ΅, мотивация состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ матСматичСских Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ. ΠŸΡ€ΠΈ блиТайшСм рассмотрСнии Java strict-fp каТСтся Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π±ΠΎΠ»Π΅Π΅ спСциализированным ΠΈ Π½Π΅ являСтся Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΌ прСдставлСниСм Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Ρ‹Ρ… Ρ‚ΠΎΡ‡Π΅ΠΊ, ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅ΠΌΡ‹Ρ… gcc/clang. Π€Π»Π°Π³ΠΈ -ffast-math ΠΈ связанныС с Π½ΠΈΠΌΠΈ Ρ„Π»Π°Π³ΠΈ каТутся довольно популярными Π² Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Ρ… рСпозиториях ΠΈΠ· быстрого поиска Π½Π° github. Π― ΠΏΠ»Π°Π½ΠΈΡ€ΡƒΡŽ ΠΈΠ·ΡƒΡ‡ΠΈΡ‚ΡŒ использованиС Π²Ρ‹ΡˆΠ΅ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Ρ… Ρ„Π»Π°Π³ΠΎΠ² ΠΈ связанных с Π½ΠΈΠΌΠΈ ΠΏΠ°Ρ€Π³ΠΌ.

Π’ΠΈΠΏΠΈΡ‡Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠ΅ gcc/clang -ffast-math, ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π² собствСнный ΠΊΠΎΠ΄. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠ΅ ΠΈΡ…, ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΡƒΡŽΡ‚ всС Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ Π½Π°Ρ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ½ΠΈ сами ΡΠΎΠ·Π΄Π°ΡŽΡ‚. А ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ всС популярныС Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½Ρ‹Π΅ ISA ΠΈΠΌΠ΅ΡŽΡ‚ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Π΄Π΅Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ запятой, послС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ протСстировали эти Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹, ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΡƒΠ²Π΅Ρ€Π΅Π½Ρ‹, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π½Π΅ измСнится для ΠΈΡ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ. Π’ настоящСС врСмя Ρ‚Π°ΠΊ ΠΆΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ WebAssembly с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ запятой; ΠΎΠ½ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Π΄Π΅Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Π½, ΠΊΠ°ΠΊ ΠΈ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½Ρ‹Π΅ ISA, поэтому ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Π΄Π°Π²Π½ΠΈΠ΅ прСдполоТСния Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΠΎ возмоТности добавлСния -ffast-math ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ Β«Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ для Π½ΠΈΡ…Β», ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ.

Π€Π»Π°Π³ -ffast-math уровня WebAssembly Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ·Π½Π°Ρ‡Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ WebAssembly большС Π½Π΅ ΠΏΠΎΡ…ΠΎΠΆ Π½Π° Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΡƒΡŽ ISA Π² этом ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΈ ΠΈ большС Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ эти прСдполоТСния. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Π±ΡƒΠ΄ΡƒΡ‚ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ созданный ΠΈΠΌΠΈ Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ», Π½ΠΎ ΠΏΡ€ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ΅ wasm своим ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ ΠΈΡ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΠΆΠΈΠ΄Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ смогут Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ Π΅Π³ΠΎ Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΌ ΠΎΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠΈ ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… Π΄Π²ΠΈΠΆΠΊΠ°Ρ…. Π‘ Ρ„Π»Π°Π³Π°ΠΌΠΈ, ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹ΠΌΠΈ быстрой ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ΅, Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ WebAssembly, WebAssembly Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ вСсти сСбя ΠΊΠ°ΠΊ ISA, ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ смогут ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ вычислСний с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ запятой, ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΎΡ‚ Ρ‚Π΅Ρ…, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ тСстировал Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ.

Π’Π°ΠΊΠΆΠ΅ стоит ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠ΅ эти Ρ„Π»Π°Π³ΠΈ, сСгодня Π½Π΅ Ρ‚Π΅Ρ€ΡΡŽΡ‚ΡΡ ΠΏΡ€ΠΈ компиляции Π² WebAssembly. НапримСр, ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ, доступныС с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ -fassociative-math, ΡΠ²Π»ΡΡŽΡ‚ΡΡ оптимизациями, ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈ Π½Π° Ρ†ΠΈΠΊΠ»Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ LLVM ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Π΄ΠΎ создания WebAssembly.

Π”Π°, Π»ΡŽΠ±Ρ‹Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ, Π²Π»ΠΈΡΡŽΡ‰ΠΈΠ΅ Π½Π° Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ/ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ float, Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ встроСны Π² ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Wasm с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ инструмСнтов. НовыС инструкции ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ для повСдСния, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΎ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΌΠΈ.

Π£ нас Π±Ρ‹Π»Π° дискуссия Π½Π° эту Ρ‚Π΅ΠΌΡƒ Π½Π° послСднСм собрании CG с Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ Π½ΠΎΠ²ΠΎΠΉ инструкции ΠΊΠ°ΠΊ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ срСдства достиТСния Ρ†Π΅Π»ΠΈ. По-Π²ΠΈΠ΄ΠΈΠΌΠΎΠΌΡƒ, сущСствуСт ΠΎΠ±Ρ‰ΠΈΠΉ интСрСс ΠΊ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡŽ этого вопроса Π² послСднСм Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ. Π£ мСня Π½Π΅Ρ‚ Π²ΠΎΠ·Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ, Ссли оТидания Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² Π² ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΈ прироста ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½Ρ‹ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠΈ инструмСнтов ΠΈ Π²Π²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² инструкций. Π’ этом случаС Π½Π΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ нСобходимости ΠΎΠΏΡ€Π°Π²Π΄Ρ‹Π²Π°Ρ‚ΡŒ распространСниС этих Ρ„Π»Π°Π³ΠΎΠ² Π²ΠΎ врСмя выполнСния, ставя ΠΏΠΎΠ΄ ΡƒΠ³Ρ€ΠΎΠ·Ρƒ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ абстракции Wasm. Π‘ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΠΏΠΎΠ½ΡΡ‚ΡŒ инструкции сСмантичСского Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ для достиТСния этой Ρ†Π΅Π»ΠΈ. Π£ нас Π΅ΡΡ‚ΡŒ нСсколько Π½ΠΎΠ²Ρ‹Ρ… инструкций, ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… Π² контСкстС SIMD, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, потрСбуСтся Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ΠΈ соотвСтствовали инструкциям, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ инструмСнтам для ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ выраТСния Ρ„Π»Π°Π³ΠΎΠ² быстрой ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠΈ. Π‘ΡƒΠ΄Ρƒ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Ρ‚ΡŒ ΠΈΡΠΊΠ°Ρ‚ΡŒ Π² этом Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ.

Бпасибо Π·Π° ΠΎΡ‚Π²Π΅Ρ‚.

ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ для обсуТдСния ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½ΠΎΠΉ Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ. Wasm ffast-math.pptx

Π‘Ρ‹Π»Π° Π»ΠΈ эта страница ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ?
0 / 5 - 0 Ρ€Π΅ΠΉΡ‚ΠΈΠ½Π³ΠΈ

Π‘ΠΌΠ΅ΠΆΠ½Ρ‹Π΅ вопросы

beriberikix picture beriberikix  Β·  7ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ

nikhedonia picture nikhedonia  Β·  7ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ

frehberg picture frehberg  Β·  6ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ

cretz picture cretz  Β·  5ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ

thysultan picture thysultan  Β·  4ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ