GSoC Blog: Final Report
Name: Utkarsh
Organisation: The Julia Language
Proposal: Performance Enhancements and Optimizations for Differential Equation solvers
Mentors: Chris Rackauckas, Kanav Gupta & Samuel Issacson
Hello Everyone! This blog marks my end of the journey in which I had enjoyed every bit of it. I learnt a variety of things and explored the power and awesomeness of Julia. Special shoutout to Chris Rackauckas, Kanav Gupta and Yingbo Ma who immensely helped me in getting my work done and helping me throughout this whole summer. I would always be greatful to them for accepting me as a student. I also thank Google Summer of Code which is an excellent platform to get students acquainted to open-source for which I would always remain grateful.
Summary
Regarding my work, I accomplished my project by completing its sub-tasks in a defined timeline. They are mostly related to optimisations and bug fixes to make the code-base more robust. I had initially started with multi-step backward solvers and continued to optimise while benchmarking with other existing suites of solvers. They were continuously benchmarked, and the performance was reviewed with prevalent ODE problems. I then moved to implement 4th and 5th order Kennedy-Carpenter methods. It proved to have one of the best benchmarks on stiff and IMEX classes of problems.
I worked on implicit & explicit extrapolation class of methods with in-built parallelism. Most of the work was to optimise them and add multi-threading support to solvers which proved significant improvements on a large number of ODEs. I researched and worked on Barycentric Extrapolation and implemented an implicit Euler discretisation version of it. I significantly worked on step-sizing adaptivity of solvers to increase speed and accuracy. Other than that, I worked on extraneous optimisations and reduction of memory allocations.
Other detailed blog posts
The know about the work done, features and goals achieved, please check these blog posts.
- GSoC Blog: Second Evaluations :: Utkarsh’s Blog
- GSoC Blog: Community Bonding & First Evaluations :: Utkarsh’s Blog
- GSoC 2020 with the Julia Language :: Utkarsh’s Blog
List of all Contributions
OrdinaryDiffEq.jl
Description | Pull Requests | Current Status |
---|---|---|
Zero Dissipation ERK6(5) | #1033 | Merged |
Phase Fitted RK8(7) with zero dissipations | #1047 | Merged |
Attempty at RKM Mead, Renaut | #1052 | Merged |
BDF Fixes | #1058 | Merged |
Fix::Array{Float64,1} use case in QNDF | #1085 | Merged |
Fixes for QNDF and QBDF Tests | #1088 | Merged |
Improvements in adaptivity of QNDF | #1106 | Open |
Failed step handling in NDF | #1125 | Merged |
Conditions for order and step change in NDFs | #1130 | Merged |
Migrating NDF methods to controllers.jl | #1132 | Merged |
Fix quasi-constant step-sizing | #1158 | Merged |
Update QNDF1 to new multistep solver | #1163 | Merged |
Update QNDF2 to new multistep solver | #1164 | Merged |
Update QNDF to new multistep solver | #1165 | Merged |
Adaptivity fixes in QNDF | #1173 | Open |
Adding new Kennedy Carpenter 4th order methods | #1177 | Merged |
Fix redundant copies of tdir_t in tstops heap |
#1178 | Merged |
Adding new Kennedy Carpenter 5th order methods | #1187 | Merged |
KenCarp47 and KenCarp58 tests | #1189 | Merged |
Split methods test timeout fix in Travis | #1192 | Merged |
Add sequences for Implicit Euler Extrapolation | #1199 | Merged |
DEStats update in extrapolation method and fixes | #1200 | Merged |
Sequence factor option in explicit extrapolation algo | #1202 | Merged |
Recalculating Jacobian in Internal Discretisation | #1203 | Merged |
Update T cal in adaptive step-sizing Extrapolation | #1208 | Merged |
Update Work Calc in Implicit Extrapolation Methods | #1209 | Merged |
Fix Overflow in Implicit Extrapolation Methods | #1211 | Merged |
Add Gragg’s Smoothing to ImplicitHW Extrapolation | #1212 | Merged |
Multi-threading for Implicit Hairer-Wanner | #1213 | Merged |
Multi-threading for Implicit Extrapolation Methods | #1215 | Merged |
Update Work Calculation in ImplicitEulerExtrapolation | #1217 | Merged |
Update step-sizing in Implicit Euler Extrapolation | #1230 | Merged |
Implemented Implicit Euler Barycentric Extrapolation | #1232 | Merged |
Update work calculation and minor fixes | #1233 | Merged |
Fix tests in ImplicitEulerExtrapolation | #1235 | Merged |
Order convergence issue in Barycentric Euler Ex | #1239 | Merged |
Fixes in ImplicitEulerBarycentricExtrapolation | #1243 | Merged |
Order and step-sizing fixes in Implicit Euler Extrapolation Methods | #1244 | Merged |
Fix similar->zero causing NaN dt | #1245 | Merged |
Allocation fixes in controllers in Implicit Extrapolation Methods | #1246 | Merged |
Allocation fixes in controllers for Hairer Wanner Methods | #1251 | Merged |
Higher order calculations in ImplicitEulerExtrapolation | #1254 | Approved |
MATLABDiffEq.jl
Description | Pull Requests | Current Status |
---|---|---|
Importing MATLAB Solver stats to DiffEq | #20 | Merged |
Change saveat handling similar to DiffEq | #18 | Merged |
DiffEqDocs.jl
Description | Pull Requests | Current Status |
---|---|---|
Fix Typos and added new KenCarp methods | #377 | Merged |
Broken Eg. in Implicit Euler Extrapolation | #379 | Merged |
Update Parallel Extrapolation Docs | #388 | Merged |
DiffEqDevDocs.jl
Description | Pull Requests | Current Status |
---|---|---|
Update Benchmarks to DiffEqDevTools | #20 | Merged |
Future Goals
I really loved the Google Summer of Code program and the Julia language community. I will continue to contribute in Julia and extend my work in OrdinaryDiffEq.jl
. People here are amazing and I have never seen a community that works towards efficiency in code more than this. GSoC was a great way of getting involved in SciML and Julia organizations. I will try to explore other facets of SciML, including NeuralPDE.jl, Stochastic solvers and welcome other contributors.