First Evaluation Report

I have completed the implementation of ESERK4 method. I also worked towards making the ROCK and SERK solvers GPU compatible. This allows using DifferentialEquations.jl problem type mixed with neural networks. These methods are a very promising option in training data generation, for example ROCK2 taking 3 minutes against 40 minutes with BS3.[1]

I also started the implementation of Stochastic-ROCK solvers. These solvers boast similar benifits for SDEs like ROCK methods for ODEs. The three methods that I’ve implemented so far are SROCK1 both for Stratonovich and Ito type problems and SROCK2 for Ito type problems.

Solver Description
SROCK1{:Ito} This is an explicit strong order 1 solver for stiff Ito type problems. It gives strong order 1 for 1-Dimensional Noise and Diagonal Noise and strong order 1/2 for General Noise case. It can be configured to get strong order 1 for Commutative Noise with some extra calculation but this is not yet implemented. Also this methods gives weak order 1 convergence for all the above Noise cases.
SROCK1{:Stratonovich} This is an explicit strong order 1 solver for stiff Stratonovich type problems. It has convergence of strong order 1 for 1-Dimensional, Diagonal and Commutative Noise and strong order 1/2 for General Noise cases. Also we get weak order 1 for the above mentioned noise cases.
SROCK2 This is an explicit solver with weak order 2 for Ito type problems.

The above mentioned solvers are compatible with 1-D, Diagonal, Commutative and General Noise. Note that SROCK1{:Ito} is also compatible with Commutative Noise but with strong order 1/2.

Apart from these I’ve also added Three stage split-step Explicit Milstein Methods mentioned in StochasticDiffEq.jl Issue #65. These solvers are compatible with 1-D noise and Diagonal Noise.

In addition to the above solver I’ve added Benchmark files for ROCK2 and ROCK4 ODE solvers.

List of Contributions during Weeks 1 - 4

OrdinaryDiffEq.jl

Description Pull Requests Current Status
Implemented ESERK4 #737 Merged
RKC_utils GPU Compatibility #765 Merged

StochasticDiffEq.jl

Description Pull Requests Current Status
Implemented Three Stage Split-Step Milstein Methods #150 Merged
Implemented SROCK Method for Stratonovich-type Problems #153 Merged
Optimised Stage-selection for SROCK1 method #159 Merged
Implemented SROCK Method for Ito-type Problems #161 Merged
Bug Fix in RKMilCommute #164 Merged
Implemented SROCK2 Method for Ito-type Problems #166 Merged

DiffEqBenchmarks.jl

Description Pull Requests Current Status
Added Benchmark files for ROCK2 and ROCK4 #39 Merged

Work Precision Diagrams for Stabilized ODE-Solvers including ESERK4

  1. Non-Stiff Problems

  2. Stiff Problems

Future Work

Right now I’m focusing on implementing and optimising all the SROCK solvers mentioned in Issue #73 of StochasticDiffEq.jl. I also plan to add benchmarks for these solvers.

All the problems for benchmarking purposes are taken from DiffEqBenchmarks.jl

Refrences

  1. Neural Jump SDEs (Jump Diffusions) and Neural PDEs
Written on July 1, 2019