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
- Compact kernel parameters: adapt every DataLayout view to a
CompactDeviceView at kernel launch, storing an Int32 offset per
restricted dimension instead of a SubArray (72-88 vs 128-160 bytes per
broadcast argument), so that large EDMF broadcasts fit the 4 KiB
parameter limit of sm_60 GPUs; full arrays pass through unchanged.
- Combine DataScopes with pairwise recursion instead of unrolled
helpers: broadcasts with many arguments (EDMF tendencies) make
inference hit its recursion limiter inside UnrolledUtilities' methods,
which the DataLayouts recursion_relation lift cannot cover, so every
scope in the launch path widens to Any and dispatches at runtime at
every slice. Interleaved Larcform1 measurements: median step
allocations drop from 17118 (10.19 MB) to 3280 (1.18 MB), below
main's 5298 (1.12 MB), with median step time 9.6 ms -> 8.2 ms.
- QuasiMonotoneLimiter: apply the limit through one scalar view per
component of ρq, indexing DataLayouts instead of reshaping slab
parent arrays, since Base.reshape of a device-array SubArray is
uncompilable in kernels under Julia 1.11.
- Fix the GPU MPI DSS exchange buffer index, which overlapped items
whenever Nv > 1 and Nf > 1, corrupting every distributed GPU
weighted_dss! of extruded multi-component fields.
- Restore two behaviors from main that downstream code relies on:
zero-size fields are hidden from DataLayout propertynames (restart
comparisons recurse into Tensor bases otherwise), and array2field
derives its parent shape from any layout (PointSpace included).
- Support the old universal CartesianIndex{5} indexing convention on
layouts, slabs, and columns, which registered downstream packages
like ClimaCoreTempestRemap still use.
- Dev-install lib/ClimaCoreMakie in the performance pipeline, since the
registered version still destructures the old 5-tuple layout size.
- Remove the unused needs_projection methods for AutoBroadcasters.
- unit_loops.jl: seed the RNG, and compare single-threaded reductions
against a hand-written pairwise reference, since the @simd blocks in
Base's mapreduce reassociate contiguous values unless bounds checks
are enabled.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
0 commit comments