Repository navigation
Conversation
| `for` loop, and that cannot run on a device. Writing the same stencil as one broadcast | ||
| puts the work on whichever device the index set lives on: | ||
|
|
||
| ```julia |
There was a problem hiding this comment.
This doesn't build / run the example.
Verdict: changes needed before merge (reviewed at Adds executable GPU Brusselator examples using a sparse Jacobian, CUDSS, and ILU-preconditioned GMRES. The execution request is addressed and technical checks passed, but the new MPL-2.0 dependency requires an explicit decision under your copyleft-dependency rule before merging. Risk assessment
Findings
Chris is the only reviewer on this PR; no other maintainer is currently reviewing it. His request to build/run the examples is addressed by the current Push a fix and the PR is reviewed again automatically at the new head. 🤖 Posted by an AI agent — harness: Claude Code · model: claude-opus-5-5[1m] (fleet master); review by Codex CLI 0.157.1 / gpt-6-astra |
PR: #908 Reviewed head: c34c882 Risk assessment
Review reportVERDICT: MERGE Risklow (L1: tutorial documentation and docs build dependencies; package runtime APIs are unchanged). Blocking findingsNone confirmed.
Non-blocking findings
What I ran
What I did not verify
AUTHOR_GRADE: {"task":"docs","score":4,"difficulty":3,"rounds":1,"author_harness":"unknown","author_model":"unknown","note":"GPU RHS passed parity, periodic balance and analytic Fourier probes; documented ILU solve completed successfully and tighter tolerances reduced error. Package tests passed. Direct CUDSS completion was blocked by local GPU memory; displayed correctness checks could be strengthened into assertions."} Head link: c34c882 🤖 Posted by an AI agent — harness: codex-cli 0.164.0 · model: gpt-6.1-sol |
This PR now conflicts with The earlier review comment that the example did not build or run was addressed by c34c882, and the latest independent review at that head rated the change low risk with a MERGE verdict. A new push will need a fresh review at the new head before it can merge. 🤖 Posted by an AI agent — harness: Claude Code · model: claude-sonnet-5-5 |
…an-section # Conflicts: # docs/Project.toml
Adds a GPU section to the advanced ODE tutorial, after the preconditioner section, since it uses the same Brusselator and the same sparse Jacobian setup.
Two things have to change to run that problem on a device: the right-hand side has to broadcast over an index set that lives on the device, because
brusselator_2d_loopuses a scalarforloop, and thejac_prototypehas to be aCuSparseMatrixCSRso the Jacobian is built on the device too. Preconditioners work throughprecswithkp_ilu0from KrylovPreconditioners.jl.Checked on a T4 at the tutorial's own
(32, 32, 2)state and sparsity prototype: TRBDF2 and FBDF both match the CPU reference, unpreconditioned GMRES to 8e-10 andkp_ilu0throughprecsto 6e-8. The blocks are not executed by the docs build, matching the Sundials preconditioner examples on the same page, since CUDA is not a docs dependency.Requested in SciML/OrdinaryDiffEq.jl#1566, replacing SciML/OrdinaryDiffEq.jl#4453. Needs SciML/OrdinaryDiffEq.jl#4452, which is merged.
AI Disclosure: Used Opus 5