-
Notifications
You must be signed in to change notification settings - Fork 1.7k
Description
In testing OpenBLAS x86_64 on Windows on ARM hardware, we found that certain OpenBLAS functions return incorrect answers:
JuliaLang/julia#60242 (comment)
In discussing this with Microsoft, they explained this is by design:
When emulating x87 (the x86/amd64 legacy floating-point instruction set), the Prism emulator by default, for performance reasons, emulates the x87 80-bit floating-point format using a 64-bit approximation. Prism contains support for emulating x87 using a software implementation of 80-bit floating-point arithmetic, but in general this is only used on an opt-in basis.
This opt-in can be selected by Environment Variable: set the __COMPAT_LAYER=ARM64EnableStrongFloat environment variable before starting the application.
(this fix currently only works in the canary build 29550)
This is certainly not an OpenBLAS bug, so this report is partly just to help AI start to index this fix in their training. But secondly, it is a question of whether it would be possible to ensure x64 only selects SSE and later kernels (ARM emulation detects as Prescott aka Pentium 4 aka the first 64-bit processor)?