libadjoint a new abstraction for developing adjoint models
play

libadjoint: a new abstraction for developing adjoint models S.W. - PowerPoint PPT Presentation

libadjoint: a new abstraction for developing adjoint models S.W. Funke, P.E. Farrell and D.A. Ham Imperial College London June 6, 2012 S.W. Funke (Imperial) A library for developing discrete adjoints June 6, 2012 1 / 25 Outline


  1. libadjoint: a new abstraction for developing adjoint models S.W. Funke, P.E. Farrell and D.A. Ham Imperial College London June 6, 2012 S.W. Funke (Imperial) A library for developing discrete adjoints June 6, 2012 1 / 25

  2. Outline Introduction to adjoints Applications Options to adjoin a model Introduction to libadjoint Summary S.W. Funke (Imperial) A library for developing discrete adjoints June 6, 2012 2 / 25

  3. Introduction to adjoints Outline Introduction to adjoints Applications Options to adjoin a model Introduction to libadjoint Summary S.W. Funke (Imperial) A library for developing discrete adjoints June 6, 2012 3 / 25

  4. Introduction to adjoints Example problem What is the optimal turbine layout in a tidal stream to extract most energy from the tidal current? 1 Problem formulation To solve this problem efficiently, we max m Power ( u, m ) want to apply gradient based optimisation. s.t. u t + ∇ η = mu, How do we compute d Power dm ? η t + ∇ · u = 0 . m : turbine positions u : velocity η : water elevation. 1 Divett et al. Optimisation of multiple turbine arrays in a channel, 2011. S.W. Funke (Imperial) A library for developing discrete adjoints June 6, 2012 4 / 25

  5. Introduction to adjoints Derivation of the adjoint equation The general form of the example problem is: min m J ( u, m ) subject to F ( u, m ) = 0 , (1) J ( u, m ) ∈ R is the functional of interest, m are the control variables and F is the PDE operator with solution u ( m ) . S.W. Funke (Imperial) A library for developing discrete adjoints June 6, 2012 5 / 25

  6. Introduction to adjoints Derivation of the adjoint equation The general form of the example problem is: min m J ( u, m ) subject to F ( u, m ) = 0 , (1) J ( u, m ) ∈ R is the functional of interest, m are the control variables and F is the PDE operator with solution u ( m ) . We seek the total derivative of J with respect to the controls m : dJ du dm = J u dm + J m . (2) Taking the derivative of the constraint in (1) w.r.t. m yields: du F u dm + F m = 0 . (3) S.W. Funke (Imperial) A library for developing discrete adjoints June 6, 2012 5 / 25

  7. Introduction to adjoints Derivation of the adjoint equation The general form of the example problem is: min m J ( u, m ) subject to F ( u, m ) = 0 , (1) J ( u, m ) ∈ R is the functional of interest, m are the control variables and F is the PDE operator with solution u ( m ) . We seek the total derivative of J with respect to the controls m : dJ du dm = J u dm + J m . (2) Taking the derivative of the constraint in (1) w.r.t. m yields: du F u dm + F m = 0 . (3) (3) in (2) yields: := λ ∗ � �� � dJ J u F − 1 dm = − u F m + J m , where λ is the adjoint solution. S.W. Funke (Imperial) A library for developing discrete adjoints June 6, 2012 5 / 25

  8. Introduction to adjoints Adjoint equation The adjoint equation is therefore: F ∗ u ( u, m ) λ = J ∗ u ( u, m ) Key properties 1. The adjoint equation is a linear. 2. The adjoint equation is solved backward in time. 3. The functional gradient is obtained by computing dJ dm = − λ ∗ F m + J m . Hence the derivative computation requires one forward solve for u and one adjoint solve for λ , independently of the choice of m ! S.W. Funke (Imperial) A library for developing discrete adjoints June 6, 2012 6 / 25

  9. Applications Outline Introduction to adjoints Applications Options to adjoin a model Introduction to libadjoint Summary S.W. Funke (Imperial) A library for developing discrete adjoints June 6, 2012 7 / 25

  10. Applications Efficient gradient computation Applications ◮ Sensitivity analysis ◮ Data assimilation ◮ Design optimisation ◮ Inverse problems S.W. Funke (Imperial) A library for developing discrete adjoints June 6, 2012 8 / 25

  11. Applications The turbine layout optimisation problem Figure: Initial and optimised turbine positions and the power increase. S.W. Funke (Imperial) A library for developing discrete adjoints June 6, 2012 9 / 25

  12. Applications Goal-oriented adaptivity Goal-oriented adaptivity Goal-oriented adaptivity and error control optimises the computational resources by targeting the numerical simulations at a specific quantity of interest. 2 2 W. Bangerth, R. Rannacher. Adaptive Finite Element Methods for Differential Equations, 2003. S.W. Funke (Imperial) A library for developing discrete adjoints June 6, 2012 10 / 25

  13. Options to adjoin a model Outline Introduction to adjoints Applications Options to adjoin a model Introduction to libadjoint Summary S.W. Funke (Imperial) A library for developing discrete adjoints June 6, 2012 11 / 25

  14. Options to adjoin a model The stages of developing a model Source Continuous Discretised code equations equations S.W. Funke (Imperial) A library for developing discrete adjoints June 6, 2012 12 / 25

  15. Options to adjoin a model Continuous adjoint Continuous Source Discretised equations code equations pen+paper Continuous adjoint S.W. Funke (Imperial) A library for developing discrete adjoints June 6, 2012 13 / 25

  16. Options to adjoin a model Algorithmic differentiation Continuous Source Discretised equations code equations automatic pen+paper differentiation tool Adjoint of the Continuous source code adjoint S.W. Funke (Imperial) A library for developing discrete adjoints June 6, 2012 14 / 25

  17. Options to adjoin a model Libadjoint ’s approach Continuous Source Discretised equations code equations automatic pen+paper libadjoint differentiation tool Adjoint of the Adjoint of the Continuous discretised equations source code adjoint S.W. Funke (Imperial) A library for developing discrete adjoints June 6, 2012 15 / 25

  18. Introduction to libadjoint Outline Introduction to adjoints Applications Options to adjoin a model Introduction to libadjoint Summary S.W. Funke (Imperial) A library for developing discrete adjoints June 6, 2012 16 / 25

  19. Introduction to libadjoint The fundamental idea of Libadjoint libadjoint is a library that facilitates the development of discrete adjoint models. The fundamental idea of AD A model is a sequence of elementary instructions. S.W. Funke (Imperial) A library for developing discrete adjoints June 6, 2012 17 / 25

  20. Introduction to libadjoint The fundamental idea of Libadjoint libadjoint is a library that facilitates the development of discrete adjoint models. The fundamental idea of AD A model is a sequence of elementary instructions. The fundamental idea of libadjoint A model is a sequence of equation solves. S.W. Funke (Imperial) A library for developing discrete adjoints June 6, 2012 17 / 25

  21. Introduction to libadjoint Example: Burgers equation The non-viscous Burgers equation has the form: ∂u ∂t + u · ∇ u = 0 . The (explicit) discretisation with one nonlinear iteration per time step yields: u n + Mu n +1 = 0 , − ( M + ∆ tA ( u n )) � �� � := T ( u n ) where M is the mass matrix, A is the discretised advection operator and ∆ t is the time step. We linearise the advection term using the velocity at the previous time step. S.W. Funke (Imperial) A library for developing discrete adjoints June 6, 2012 18 / 25

  22. Introduction to libadjoint Example: Burgers equation Three time steps can be written as a block matrix:    u 0    I u init T ( u 0 ) u 1 M      0  =       T ( u 1 ) u 2 M 0       T ( u 2 ) u 3 0 M � �� � � �� � � �� � b F ( u ) u We have cast the model in the form F ( u ) u = b . S.W. Funke (Imperial) A library for developing discrete adjoints June 6, 2012 19 / 25

  23. Introduction to libadjoint Example: Burgers equation Three time steps can be written as a block matrix:    u 0    I u init T ( u 0 ) u 1 M      0  =       T ( u 1 ) u 2 M 0       T ( u 2 ) u 3 0 M � �� � � �� � � �� � b F ( u ) u We have cast the model in the form F ( u ) u = b . The associated adjoint equation is: � � ∗ F ( u ) + ∂F ( u ) λ = ∂J ∗ u . ∂u ∂u S.W. Funke (Imperial) A library for developing discrete adjoints June 6, 2012 19 / 25

  24. Introduction to libadjoint Example: Burgers equation Three time steps can be written as a block matrix:    u 0    I u init T ( u 0 ) u 1 M      0  =       T ( u 1 ) u 2 M 0       T ( u 2 ) u 3 0 M � �� � � �� � � �� � b F ( u ) u We have cast the model in the form F ( u ) u = b . The associated adjoint equation is: � � ∗ F ( u ) + ∂F ( u ) λ = ∂J ∗ u . ∂u ∂u Therefore the adjoint equation reads: � � ∗  T ( u 0 ) + ∂T ( u 0)  u 0 I ∗ ∂u 0  λ 0    � � ∗   T ( u 1 ) + ∂T ( u 1) u 1 λ 1   ∂J ∗ M ∗    ∂u 1    =  .   λ 2 � � ∗  ∂u  T ( u 2 ) + ∂T ( u 2)   u 2  M ∗ λ 3  ∂u 2  M ∗ S.W. Funke (Imperial) A library for developing discrete adjoints June 6, 2012 19 / 25

  25. Introduction to libadjoint The development of an adjoint model with libadjoint requires two steps: 1. Annotation 2. Callback registration S.W. Funke (Imperial) A library for developing discrete adjoints June 6, 2012 20 / 25

Recommend


More recommend