[SYCL][InvokeSimd][E2E] Fix scale tests on hardware that doesn't support fp64 #9552
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.
We do a check with
dev.has(aspect::fp64)
, but that's a runtime check.With InvokeSimd, we need to compile with
-fno-sycl-device-code-split-esimd
which disables any module splitting.Usually modules are split into images based on optional device features, such as fp64, but because of the above option we only end up with a single device image that contains both fp64 and non-fp64 code because of the runtime check.
Since there can only be one image, we can't use fp64 at all on non-fp64 hardware, so a runtime check won't work.
Split the test into a non-fp64 and fp64-only version.
The above is what we do for other tests that test double conditionally on non-fp64 hardware, such as invoke_simd_conv_double.cpp