GSoC'21 : Final Report

Published On: 19-08-2021, Reading Time: 3 minutes


Name : Mohd Jeeshan Sheikh
Organization : NumFOCUS
Mentors : Chris Rackauckas, Kanav gupta, Yingbo Ma
Project : Discretizations of Partial Differential Equations

Greetings to everyone! Finally my journey through various walks of GSoC'21, starting from preps to application, acceptance and ultimately gettings things done in sync with my proposal has came to end. Big thanks to my mentors, especially Chris Rackauckas for deciding to commit with me on this project, engaging in insightful discussions and providing his inputs at several pivotal instances.In retrospect, I came in with little idea about the SciML org and will be walking out with a really comprehensive knowledge about DiffEqOperators.jl, one of the many awesome and state-of-the-art packages that the organization has developed over the years which prove to be miles ahead in terms of performance in comparison to many other commercially popular tools in the domain of scientific computing.s

Summary of Things Done

My work can be summarized to lie under two categories :

  • Feature enhancements
  • Optimizations

I took the task to look for potentially desirable but missing components in DiffEqOperators.jl and introduced Vector Calculus Operators, which carry wide applications in scientific domain. This sub-goal included designing the structures, methods and various operations for the operators and finally working towards their optimization to match the API standards and benchmarks. During this I learnt the concepts of cache-efficiency and vectorization of loops. Having acquired this knowledge, I also benchmarked the convolutions for DerivativeOperators and generated a speed-up of over 2x for uniform grid CenteredDifference convolutions (though there were observed improvements in others as well!). Moving on, I designed multiple concretizations for AffineBC operators, synced concretizations for updated UpwindDifference and reduced the bandwidths in BandedMatrices for Derivative (and as a result GhostDerivative) Operators. In the end, the symbolic handling by MOLFiniteDifference was extended to support a general N-ordered BC in 1D space.

A more detailed account of these works can be found in the following blog posts :

Compilation of all contributions

Description Pull Request Status
Introduce NonLinearDiffusion function #327 Merged
Docs update for NonLinearDiffusion #332 Merged
Dimensional corrections for PeriodicBC #334 Merged
Address type mismatch in GeneralBC #337 Merged
Debug broken tests #340 Merged
Operator Tutorials page #346 Merged
Introduce Biased Upwind Operator #347 Merged
Docs update for Biased Upwind #368 Merged
Operators for Vector Calculus #375 Merged
Multi-Dimensional BC Operator #414 Open
Reduce allocations and fix loop orders in VCOps #427 Merged
LoopVectorization in VCOps convolutions #428 Merged
Vectorize loops in derivative operators convolutions #431 Merged
Concretizations : BC operator enhancements, bandwidth optimization
& restructuring for Derivative Operators
#432 Merged
MOLFinitieDifference : support for N-ordered derivatives in BCs #435 Merged

Future Prospects

I feel privileged for landing the opportunity of working with this amazing global community, learning from the basic know-hows to some really advanced level stuff going around in development. I’ll always carry this share of experience and try to incorporate it whenever and wherever possible.
During my journey I was able to get past many blocks that came along the way and the purpose seems fulfilled. But then every ending is followed by a new beginning :) There are lots of sought out features like the symbolic interface provided by ModelingToolkit.jl that are being looked up to and would hopefully provide a more versatile experience to users.
Having said that, I would love to pitch in and collaborate with other contributors from time to time, for working towards the bigger goal of providing efficient and top-notch utilities for the scientific community by SciML and The Julia Lang.