Skip to content

PTsolvers/Julia-AD-NuTS

Repository files navigation

Julia-AD-NuTS

NuTS NuTS - workshop

High-performance computing in geosciences and adjoint-based optimisation with Julia on GPUs

The computational resources for this workshop are provided by the
GLiCID mesocentre NuTS

Program

Part 1 (Thursday May 30, 14h - 18h)

Part 2 (Friday May 31, 9h - 12h and 13h30 - 15h30)

The SMALL print

The goal of this workshop is to develop a fast iterative GPU-based solver for elliptic equations and use it to:

  1. Solve a steady state subsurface flow problem (geothermal operations, injection and extraction of fluids)
  2. Invert for the subsurface permeability having a sparse array of fluid pressure observations

anim.mp4

We will not use any "black-box" tooling but rather try to develop concise and performant codes (300 lines of code, max) that execute on graphics processing units (GPUs). We will also use automatic differentiation (AD) capabilities and the differentiable Julia language to automatise the calculation of the adjoint solutions in the gradient-based inversion procedure.

The main Julia packages we will rely on are:

Most of the workshop is based on "hands-on". Changes to the scripts -Jupyter notebooks for this workshop- are incremental and should allow to build up complexity throughout the 2 days. Blanked-out notebooks for most of the steps are available in the notebooks folder. Solutions notebooks (following the s_xxx.ipynb pattern) will be shared at some point in the notebooks_solutions folder. (Script versions of the notebooks are available in the corresponding scripts and the scripts_solutions folders.)

💡 Useful extra resources

Login to the GLiCID Jupyter Hub

To start, let's make sure that everyone can connect to the GLiCID Jupyter Hub in order to access GPU resources: https://nuts-workshop.glicid.fr/

To start the GLiCID Jupyter Hub, you should use the credentials you received in the second email (subject Your account has been validated) after having followed the account creation procedure (see attached PDF in the info mail from Friday 17.05.24)

If all went smooth, you should be able to see and execute the notebooks/visu_2D.ipynb notebook which will produce this figure:

out visu

Note

Deploy: The Jupyter notebooks are generated automatically using Literate.jl-powered literate programming in Julia upon running using Pkg; Pkg.add("Literate") and then the deploy_notebooks.jl script.

Warning

Current ipynb will fail on plotting if run in VS code native notebook env because of unsupported IJulia.clear_output(true).