-
Notifications
You must be signed in to change notification settings - Fork 1.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
BFloat16 assembler errors with Windows Sapphire Rapids kernels #4450
Comments
Note, this is the compiler used:
|
Could be a case of the assembler (binutils package) being too old for the compiler output ? |
Hmm, we're using the assembler that is included
Looking at the assembly produced by the GCC version, it is choking on the AMX instructions:
which correspond to the lines here
According to the release notes, AMX instructions were added to gas/binutils in 2.36 (https://github.com/bminor/binutils-gdb/blob/48a121f83cae0a625f63d3ad5f8a9149f7fa964a/gas/NEWS#L256). However, after quite a bit of digging, I think it is actually a GCC bug, and it is specifically because they decided to implement the |
Looks like this is Windows-specific then, which might explain why it has not come up before. I guess I need to add some form of the tileloadd instruction to the code snippet used in the NO_AVX512BF16 check. |
Thinking about this more, I don't know if it is really worth fixing in the OpenBLAS build system. It seems like it would be a bit of a complicated fix, and from what I can see it shouldn't be a problem in GCC 12.3 or 13+, so recent compilers should work, and I guess not a lot of people actually compile with older GCC and BFloat16 on Windows. I think we'll work on patching this locally downstream as a fix for us (basically just patching the GCC headers we use to fix it, not an OpenBLAS patch). |
When building the BFloat16 API for Julia, we are seeing an assembler failure in the 64-bit Windows builds for the Sapphire Rapids kernels: https://buildkite.com/julialang/yggdrasil/builds/7890#018d31fe-fdfa-4892-870d-1f9e89ccf362/6-2212.
The errors are:
and
The command line used to compile the kernel is
We are using GCC 11.1, so the Sapphire Rapids architecture should be available.
Note that we are building with the patch from #4423 applied to the build tree.
The text was updated successfully, but these errors were encountered: