You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Fix GPU reductions, kernel-side slice lengths, and mask device placement
Fixes for the CI failures on build 7043, all in code that can only run with
a GPU:
- Compute slice lengths from shape parameters instead of inferring the
types of slices; the return_type of a slice operator cannot be obtained
from within a GPU kernel, and the previous approach also failed on the
host for slices of broadcasted expressions and for single-point views of
expressions with mixtures of parent array types
- Generate the butterfly shuffle offsets in warp reductions from a static
thread count, since tuples with runtime lengths cannot be constructed in
GPU kernels
- Launch at most one reduction thread per point, so that every thread has
at least one value to reduce; threads without values would need
placeholders for warp shuffles, but reductions without neutral elements
(like minimum) cannot generate placeholders
- Use the active mask instead of the full mask for warp shuffles, so that
partial warps can also execute them, and exclude the lanes of partial
warps from reduction results
- Construct each grid's mask from its device-side local geometry, so that
masks of GPU spaces are not stored in CPU arrays
- Qualify the CUDA intrinsics and import slab in the GPU DataLayouts test
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
0 commit comments