oclib: out of core optimization
DESCRIPTION
oclib: out of core optimization. Paul Sava. My goal. Quick introduction to the library Not much about inversion theory Ask the right questions. Jon Claerbout’s optimization book. Image estimation by example: Geophysical sounding image construction Multidimensional autoregression - PowerPoint PPT PresentationTRANSCRIPT
My goal
• Quick introduction to the library
• Not much about inversion theory
• Ask the right questions
Jon Claerbout’s optimization book
• Image estimation by example:Geophysical sounding image construction
Multidimensional autoregression
http://sepwww.stanford.edu/sep/prof
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
Regularized inversion
0
dm
W
A
WL
W: weighting
A: regularization
: relative weight
dm L
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
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)
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
)
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
)
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)
}
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
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
)
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
)
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
Example
Example: d = Lm
Example: m = L*d
Example: m = [L*L+2A*A]-1L*d
Iteration 1: Rd=d-Lm
Iteration 2: Rd=d-Lm
Iteration 3: Rd=d-Lm
Iteration 4: Rd=d-Lm
Iteration 5: Rd=d-Lm
Summary
• Flexible, reusable f90 code
• Cluster ready
• Standard operator interface
• Conjugate-gradient solvers– Regularization– Preconditioning