Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

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)

Aperta
#174 1 commento 0 reazioni 0 assegnatari Vedi su GitHub

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

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-by-agent performance upstream

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

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di exanauts/SparseDirectSolver.jl

Tutte le issue di exanauts/SparseDirectSolver.jl

Issue simili

Altre issue su Julia

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.