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
explicit runge kutta, hopefully can reuse most of the code from runge_kutta.rs if its suitable for cuda-oxide
uses batching information from context (see feat: batching on linear algebra backends #298), constructs an array of OdeSolverState of length nbatch / warp_size, each warp operates on a single OdeSolverState (with nbatch_local = warp_size), so that each warp is an independent solver trajectory (i.e. each warp has its own dt=h)
logically, this solver is one thread = one solve. But the threads in a warp cooperate to use a shared timestepper, so threads in a warp never diverge
the array of OdeSolverState should probably live in shared memory, indexed by warp id.
uses a new linear algebra backend with nbatch_local = warp_size, that is called from device code, so reductions like squared_norm() are done at the warp level (max reduction across the warp, then broadcast to all threads in the warp)
ExplicitRkOxide