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
compiler: Keep the outer Dimension parallel on a short par-tile
When a multi `par-tile` entry is shorter than the blocked nest, the
innermost Dimensions consume the available block sizes and the outermost
one runs into a StopIteration, raised by the top-level tuple once the
entry is exhausted. It was then dropped into `compact`, which promotes it
back to its root Dimension, discarding its BlockDimension.
On a device that is a serialization: the Dimension ends up outside the
blocked nest, `filter_iterations` rejects it as non-parallel, and the
kernel is launched over a 2D grid from a host loop iterating the outer
Dimension one slice at a time.
Walk this nest's own entry instead, which repeats its innermost size for
as long as the nest needs it, so the nest stays fully blocked. Whether to
do so is decided when the par-tile is built, where the target is already
known, rather than by inspecting a cluster back in the pass. It applies
to multi par-tiles on a device only: a single user-supplied par-tile
defines the block rank on purpose, and on a host a short entry is the
documented way to ask for 2.5D blocking.
0 commit comments