Negative-stride views crash kernels
I maintainer di solito rispondono entro 3 giorni
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 52/100
Direzione di ricerca
Start with TileArray(arr) conversion and src/compiler/analysis/assume.jl, especially the op_predicates chain applying nonneg_range() to strides. Trace how a reversed view reaches codegen and compare the stated rejection and ArraySpec approaches. Done means negative-stride views no longer cause an illegal GPU memory access and instead are safely rejected or handled without an invalid non-negative-stride assumption.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
A view with a negative stride converts to a TileArray without complaint, but kernels using it read out of bounds:
using CUDA, cuTile; import cuTile as ct
function copy_tiles(dst, src)
i = ct.bid(1)
ct.store(dst, i, ct.load(src, i, (256,)))
return
end
n = 4096
x = CuArray(Float32.(1:n)); y = CUDA.zeros(Float32, n)
@cuda backend=cuTile blocks=n÷256 copy_tiles(y, view(x, n:-1:1))
# CUDA error: an illegal memory access was encountered (code 700, ERROR_ILLEGAL_ADDRESS)
TileArray(arr) takes strides(arr) as is, so the reversed view becomes a TileArray with stride -1. Codegen asserts every size and stride is non-negative (op_predicates in src/compiler/analysis/assume.jl chains nonneg_range() for :stride), so tileiras may rely on an assumption that doesn't hold. cuTile Python makes the same assumption (stride_lower_bound_incl=0 for every JIT array argument), but PyTorch doesn't produce negative strides; view(x, n:-1:1) or reverse views do.
Options: reject negative strides when converting (an ArgumentError rather than a GPU fault), or record in the ArraySpec that strides may be negative and drop the assumption for such arrays, as Python's ArrayConstraint.stride_lower_bound_incl allows.
Reproduced on main (5c8e90b5), RTX 5080, Julia 1.13.
- Lingua principale
- Julia
- Stelle
- 90
- Fork
- 13
- Merge medio
- 4g 8h
- PR unite (30g)
- 19
Preparare l'ambiente
Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di JuliaGPU/cuTile.jl
-
cuTile-specific launch macroAperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
JuliaGPU/cuTile.jl#295 · 3 commenti ·
I maintainer di solito rispondono entro 3 giorni
-
`atomic_store_add` of a slice extracted from a tile adds nothing when the slice is under 256 bytesAperta
Difficoltà 4/5 3-5 giorni Idoneità per principianti 48/100
I maintainer di solito rispondono entro 3 giorni
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 35/100
JuliaGPU/cuTile.jl#333 · 1 commento ·
I maintainer di solito rispondono entro 3 giorni
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 30/100
I maintainer di solito rispondono entro 3 giorni
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 52/100
I maintainer di solito rispondono entro 3 giorni
Tutte le issue di JuliaGPU/cuTile.jl
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
MagneticResonanceImaging/MRIReco.jl#366 ·
I maintainer di solito rispondono entro 3 giorni
-
`AdamW` gives `NaN` for zero-gradient entries of `Float16` parameters (epsilon underflows to 0)Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 79/100
FluxML/Optimisers.jl#253 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
JuliaGraphs/GraphNeuralNetworks.jl#736 ·
I maintainer di solito rispondono entro 2 giorni
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
I maintainer di solito rispondono entro 1 giorno
-
`poissonians` is not public, unlike `brownians` and `jumps`Forse già presa @isaacsas l’ha presa oggi. Aperta
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 86/100
SciML/ModelingToolkit.jl#5389 ·
I maintainer di solito rispondono entro 2 giorni