cuSOLVER potrf is not CUDA-graph capturable on CUDA.jl 6.5: no graph replay with vendor dense fronts (T34 step 6, PLAN §2.5)
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 38/100
- Tipo di issue
- Bug
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Attiva
- Stack tecnologico
- julia
- Ambito
- performance, testing-qa
Direzione di ricerca
Start with ext/SparseDirectSolverCUDAExt.jl and the reproducer in the issue, then check bench/fact_split.jl to see how graph capture handles vendor dense fronts. First test whether cuSOLVER's 64-bit cusolverDnXpotrf API with user workspace is capture-safe. Done when graph replay works for vendor fronts, or the limitation and required in-kernel wide-front setting are documented in bench/ARCH-TUNING.md and bench/fact_split.jl.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Found while working on: the chores PR #173 (#164, bench/fact_split.jl), not a task
What: cuSOLVER potrf cannot be captured into a CUDA graph on CUDA.jl 6.5.0 (CUDA runtime 13.4, H200). SDS.vendor_potrf_info! (ext/SparseDirectSolverCUDAExt.jl, device-side info, no host read: the library's regime-C / wide-front path) raises CUSOLVER_STATUS_INTERNAL_ERROR inside CUDA.capture(); cuSOLVER.potrf! raises CaptureError: cannot copy to host memory while capturing a graph. The same calls factor correctly outside capture (info = 0, relative error 2.5e-16 on a 256×256 SPD matrix). Consequence: a refactorization that includes a vendor dense front — the stock DirectSolver regime C with impl = :vendor/:auto, and the fused Cholesky with wides = :host (the default_tuning on sm_70/80/90) — is not graph-capturable; bench/fact_split.jl's graph replay now prints graph capture failed: CUSOLVERError ... CUSOLVER_STATUS_INTERNAL_ERROR on every run (PR #107 had recorded that replay as bit-identical and timing-neutral, on CUDA.jl 5.x). LDLᵀ is unaffected since #170 factors its wide fronts in-kernel on every part.
Reproducer (one process, julia --project=bench):
using CUDA, LinearAlgebra, SparseDirectSolver; const SDS = SparseDirectSolver
n = 256; A0 = (M = randn(n, n); M * M' + n * I); A = CuArray(A0); info = CUDA.zeros(Cint, 2)
SDS.vendor_potrf_info!('L', A, info, 1); CUDA.synchronize() # fine
copyto!(A, A0); g = CUDA.capture() do; SDS.vendor_potrf_info!('L', A, info, 1); end # CUSOLVER_STATUS_INTERNAL_ERROR
Why it is out of scope: a property of cuSOLVER under CUDA.jl 6.5 / CUDA 13, found through a bench script; no task owns it. It constrains T34 step 6 and PLAN §2.5 (CUDA-graph replay of refactorize + inverse for n ≲ 1e5): replay is only possible with in-kernel wide fronts (wides = :merged, or the :ka dense fallbacks of T32) or by excluding the vendor calls from the captured range. It does not block T25.
Suggested fix or plan change: before T34 step 6, test whether the cuSOLVER 64-bit API (cusolverDnXpotrf with a user workspace) is capture-safe; if not, make graph replay require in-kernel wides (and document it in bench/ARCH-TUNING.md), and note in bench/fact_split.jl that the graph column needs regime_c_rows large enough that no front takes the vendor path.
- Lingua principale
- Julia
- Stelle
- 4
- Fork
- 0
- Merge medio
- 7h 54m
- PR unite (30g)
- 84
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Ha un modello di pull request
- Nessuna guida per i contributori
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 exanauts/SparseDirectSolver.jl
-
bug enhancement metal on-hold performance
Difficoltà 5/5 Più di una settimana Idoneità per principianti 25/100
exanauts/SparseDirectSolver.jl#168 ·
I maintainer di solito rispondono entro 1 giorno
-
In-front Bunch–Kaufman pivoting for the fused pipeline: state of the closed prototypes #135 and #139Apertadesign-record enhancement found-by-agent fused madnlp
Difficoltà 5/5 Più di una settimana Idoneità per principianti 20/100
exanauts/SparseDirectSolver.jl#167 ·
I maintainer di solito rispondono entro 1 giorno
-
design-record enhancement found-by-agent performance
Difficoltà 5/5 Più di una settimana Idoneità per principianti 20/100
exanauts/SparseDirectSolver.jl#163 ·
I maintainer di solito rispondono entro 1 giorno
-
api found-by-agent
Difficoltà 4/5 1-2 giorni Idoneità per principianti 42/100
exanauts/SparseDirectSolver.jl#159 ·
I maintainer di solito rispondono entro 1 giorno
-
found-by-agent fused performance task
Difficoltà 5/5 Più di una settimana Idoneità per principianti 35/100
exanauts/SparseDirectSolver.jl#156 ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di exanauts/SparseDirectSolver.jl
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
osrep/Runes2P.jl#153 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
I maintainer di solito rispondono entro 1 giorno
-
documentation invalid
Difficoltà 1/5 1-3 ore Idoneità per principianti 88/100
JuliaPhysics/BeamletOptics.jl#190 ·
I maintainer di solito rispondono entro 1 giorno