[SYCL] fix segmentation fault on consumer CPUs without bfloat16 hardware #19247
+5
−1
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR fixes a bug introduced in #17780 due to an issue in the oneAPI toolkit.
The original PR automatically enabled bfloat16 support by simply checking for the existence of the include file:
sycl/ext/oneapi/bfloat16.hppHowever, bfloat16 is only supported on server class CPUs and this include file does not seem to correctly fallback to software emulation. (Tested with oneAPI 2025.3.1 and also in 2025.3.0 on a Meteor Lake CPU)
Have tried to avoid making this PR by undefining
__SYCL_USE_NATIVE_BFLOAT16__during compilation to overcome this issue, but this also did not work - still resulting in segmentation fault.This PR simply turns off the bfloat16 option by default for the majority of users with consumer class Intel CPUs while still allowing those with server class CPUs to enable it by compiling with the
-DGGML_SYCL_HAS_BF16option