Repository navigation
Fix float16_t and target selection in the CUDA device pass for Arm hosts. - #3512
Merged
Merged
Conversation
|
Thanks for your pull request! It looks like this may be your first contribution to a Google open source project. Before we can look at your pull request, you'll need to sign a Contributor License Agreement (CLA). View this failed invocation of the CLA check for more information. For the most up to date status, view the checks section at the bottom of the pull request. |
copybara-service
Bot
force-pushed
the
test_1005110876
branch
from
October 26, 2026 19:51
2e7424a to
7c2ff61
Compare
…sts. The CUDA device pass (__CUDA_ARCH__ is only defined there) for an aarch64 host still sees the host's __aarch64__/__ARM_NEON. Highway therefore selected NEON (and SVE for foreach_target), whose intrinsics NVPTX cannot compile, and made float16_t wrap __fp16, whose use as a parameter or return value NVPTX disallows. In the device pass only: - Add HWY_BROKEN_CUDA_DEVICE_ARM (overridable) to HWY_BROKEN_TARGETS so that only EMU128 is compiled. Highway SIMD does not run on the GPU, so there is no runtime cost. - Default HWY_ARM_HAVE_FP16 to 0 (overridable). float16_t then wraps _Float16 if HWY_ARM_HAVE_FLOAT16_TYPE, as in the device pass on x86 hosts. Host passes of .cu and .cc files are unchanged (no ODR risk), the float16_t layout is unchanged, and x86 hosts are unaffected. PiperOrigin-RevId: 1007498527
copybara-service
Bot
force-pushed
the
test_1005110876
branch
from
October 26, 2026 20:15
7c2ff61 to
72cc1c9
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Fix float16_t and target selection in the CUDA device pass for Arm hosts.
The CUDA device pass (CUDA_ARCH is only defined there) for an aarch64
host still sees the host's aarch64/__ARM_NEON. Highway therefore
selected NEON (and SVE for foreach_target), whose intrinsics NVPTX cannot
compile, and made float16_t wrap __fp16, whose use as a parameter or return
value NVPTX disallows.
In the device pass only:
that only EMU128 is compiled. Highway SIMD does not run on the GPU, so
there is no runtime cost.
_Float16 if HWY_ARM_HAVE_FLOAT16_TYPE, as in the device pass on x86 hosts.
Host passes of .cu and .cc files are unchanged (no ODR risk), the float16_t
layout is unchanged, and x86 hosts are unaffected.