[email protected] oclib: out of core optimization Paul Sava.

31
[email protected]. edu oclib: out of core optimization Paul Sava
  • date post

    21-Dec-2015
  • Category

    Documents

  • view

    218
  • download

    0

Transcript of [email protected] oclib: out of core optimization Paul Sava.

[email protected]

oclib: out of core optimization

Paul Sava

[email protected]

My goal

• Quick introduction to the library

• Not much about inversion theory

• Ask the right questions

[email protected]

Jon Claerbout’s optimization book

• Image estimation by example:Geophysical sounding image construction

Multidimensional autoregression

http://sepwww.stanford.edu/sep/prof

[email protected]

Linear operators

dm LL: linear operator

m: image

d: data

[email protected]

Linear operators

dm L

call operator_init(…)

stat=operator(adj,add,m,d)

m d L

[email protected]

Least-squares inversion

dm *1* LLL

dm Ldmm

Lmin

[email protected]

Simple inversion

R=Lm0-d

iterate {

g = L* R

G = L g

(m,R) <- step(m,R,g,G)

}

dm L m: model

d: data

L: physics

[email protected]

Regularized inversion

0

dm

W

A

WL

W: weighting

A: regularization

: relative weight

dm L

[email protected]

Preconditioned inversion

pm 1A

0

1 dp

W

I

WLA

p: preconditioned mdm L

[email protected]

Why out-of-core optimization

• Least-squares imagingm: image

d: data

L: WE modeling operator

A: styling operator

W: weighting operator

• Velocity analysism: slowness perturbation

d: image perturbation

L: WE MVA operator

A: styling operator

W: weighting operator

0

dm

W

A

WL

[email protected]

Linear operator example: WE MVA

stat = weimva(adj,add, dS,dR,SLop=weiop_sllN,SCop=weiop_bor1,WCop=weiop_mwcN,FKop=weiop_wem3,FXop=weiop_ssf3,IGop=weiop_hcig)

call weimva_init(SLin=weiop_sllN_init,SCin=weiop_bor1_init,

WCin=weiop_mwcN_init,FKin=weiop_wem3_init,FXin=weiop_ssf3_init,IGin=weiop_hcig_init)

[email protected]

Outline

• Overview

• Solvers

• Examples

[email protected]

Simple solver initdm L

R=Lm-diterate {

g=L* RG=L g(m,R) <- step(m,R,g,G)

}

call oc_mpi_solver_init (

impi,

ocniter,

ocmaxmem,

ocverb,

mmovie,

dmovie

)

[email protected]

Simple solverdm L

R=Lm-diterate {

g=L* RG=L g(m,R) <- step(m,R,g,G)

}

call oc_mpi_solver (

L=weimva,

m_=dS,

d_=dR,

S=oc_cgstep,

op1=weiop_slo1,

op2=weiop_mwc1,

op3=weiop_bor1,

op4=weiop_wem3,

op5=weiop_ssf3,

op6=weiop_hcig

)

[email protected]

Simple solverdm L

do i=1,ocniter

stat=L( T,F, g_, rd_, op1 … op9)

stat=L( F,F, g_, gd_, op1 … op9)

stat=S(forget,m_,g_,(/rd_/),(/gd_/),…)

end do

R=Lm-diterate {

g=L* RG=L g(m,R) <- step(m,R,g,G)

}

[email protected]

Cluster executiondm L

do i=1,ocniter

stat=L( T,F, g_, rd_, op1 … op9)

stat=L( F,F, g_, gd_, op1 … op9)

stat=S(forget,m_,g_,(/rd_/),(/gd_/),…)

end do

R=Lm-diterate {

g=L* RG=L g(m,R) <- step(m,R,g,G)

}

mas

ter

node

1

node

2

node

3

node

4

[email protected]

Solver with regularization

0

dm

W

A

WL

call oc_mpi_solverreg(L=weimva,m_=dS,d_=dR,A=oc_laplacian,S=oc_cgstep,op1=weiop_slo1,op2=weiop_mwc1,op3=weiop_bor1,op4=weiop_wem3,op5=weiop_ssf3,op6=weiop_hcig

)

[email protected]

Solver with preconditioning

0

1 dp

W

I

WLA

call oc_mpi_solverpre(L=weimva,m_=dS,d_=dR,P=oc_ilaplacian,S=oc_cgstep,op1=weiop_slo1,op2=weiop_mwc1,op3=weiop_bor1,op4=weiop_wem3,op5=weiop_ssf3,op6=weiop_hcig

)

[email protected]

Outline

• Overview

• Solvers

• Examples

[email protected]

Example & Lab

• WE MVA for diffracted data• d: image perturbation• m: slowness perturbation

• Operator calls• forward: scattering mode• adjoint: backprojection mode

• Regularized inversion• model movie• data residual movie

[email protected]

Example

[email protected]

Example: d = Lm

[email protected]

Example: m = L*d

[email protected]

Example: m = [L*L+2A*A]-1L*d

[email protected]

Iteration 1: Rd=d-Lm

[email protected]

Iteration 2: Rd=d-Lm

[email protected]

Iteration 3: Rd=d-Lm

[email protected]

Iteration 4: Rd=d-Lm

[email protected]

Iteration 5: Rd=d-Lm

[email protected]

Summary

• Flexible, reusable f90 code

• Cluster ready

• Standard operator interface

• Conjugate-gradient solvers– Regularization– Preconditioning

[email protected]

Resources ([email protected])

• Developers:– Paul, Bob

• Manual– Marie

• Users– Antoine, Nick