05.06.2015 Views

IWAVE++ - The Rice Inversion Project - Rice University

IWAVE++ - The Rice Inversion Project - Rice University

IWAVE++ - The Rice Inversion Project - Rice University

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

<strong>IWAVE++</strong>: a Framework for Imaging and<br />

<strong>Inversion</strong> based on Regular-Grid<br />

Finite Difference Modeling<br />

William W. Symes<br />

<strong>The</strong> <strong>Rice</strong> <strong>Inversion</strong> <strong>Project</strong><br />

Department of Computational and Applied Mathematics<br />

<strong>Rice</strong> <strong>University</strong>, Houston, TX<br />

symes@caam.rice.edu<br />

30 March 2012 TRIP 2011 Review<br />

1


<strong>Rice</strong> Vector Library<br />

30 March 2012 TRIP 2011 Review 2


Abstract Optimization:<br />

the <strong>Rice</strong> Vector Library (“RVL”)<br />

C++ classes expressing calculus in Hilbert Space<br />

Design Paper: Padula, Scott & S, ACM TOMS 2009<br />

High level abstractions – Space, Vector, (linear or<br />

nonlinear) Operator, Functional<br />

Evaluation objects – organize the value of function &<br />

derivatives at a point, enforce coherency<br />

30 March 2012 TRIP 2011 Review<br />

3


Abstract Optimization:<br />

the <strong>Rice</strong> Vector Library (“RVL”)<br />

Typical use: migration looks like<br />

MyKindaDataSpace dsp(…);<br />

MyKindaModelSpace msp(…);<br />

Vector m(msp); Vector g(msp); Vector d(dsp);<br />

…<br />

MyKindaModelingOp op(….);<br />

OperatorEvaluation opeval(op,m);<br />

opeval.getDeriv().applyAdj(d,g);<br />

“THE MATH IS THE API”"<br />

30 March 2012 TRIP 2011 Review<br />

4


Abstract Optimization:<br />

the <strong>Rice</strong> Vector Library (“RVL”)<br />

Built on RVL:<br />

Optimization Library UMin: LBFGS, trust region G-N-K, CG,<br />

Arnoldi…<br />

Abstract time-stepping library TSOpt, including universal<br />

implementation of optimal checkpointing (Griewank 92)<br />

Plans: additional algorithms (L1, TV, matrix-free TR-SQP,<br />

…)<br />

30 March 2012 TRIP 2011 Review<br />

5


Abstract Optimization:<br />

the <strong>Rice</strong> Vector Library (“RVL”)<br />

Critical component: standard interface to concrete data<br />

types – in-core, out-of-core, distributed,…<br />

• DataContainer – data abstraction, forms Visitor pattern with<br />

• FunctionObject – encapsulates all actions on data<br />

RVL Objects = intrusive handles – underlying data not<br />

exposed, limited access, usually no operator new<br />

Examples: FunctionObjects to perform array operations for<br />

linear algebra, associate out-of-core data with Vectors, etc.<br />

New data types – build these components!<br />

30 March 2012 TRIP 2011 Review<br />

6


RVL + IWAVE = <strong>IWAVE++</strong><br />

30 March 2012 TRIP 2011 Review 7


Reverse Time Migration and Full Waveform<br />

<strong>Inversion</strong><br />

Requirements for any inversion implementation:<br />

• modeling<br />

• linearized (“Born”) modeling<br />

• adjoint (transposed) linearized modeling [= RTM]<br />

• optimization algorithm, implementation<br />

• interface modeling and optimization<br />

Our approach:<br />

• maximize code re-use<br />

• high-quality abstract optimization, linear algebra library<br />

(RVL)<br />

• middleware layer forms interface<br />

30 March 2012 TRIP 2011 Review<br />

8


Reverse Time Migration and Full Waveform<br />

<strong>Inversion</strong><br />

Code re-use - build on IWAVE:<br />

• define additional interfaces needed using IWAVE types,<br />

minimal extensions:<br />

• gts_adj(RDOM * p, RDOM * r, int iv, void<br />

* gfd_pars)"<br />

• re-use parallel automation, job control, i/o from IWAVE<br />

However IWAVE data structures (RDOM etc.) are not RVL<br />

vectors, and simulators are not operators…<br />

30 March 2012 TRIP 2011 Review<br />

9


Reverse Time Migration and Full Waveform<br />

<strong>Inversion</strong><br />

Middleware layer – <strong>IWAVE++</strong><br />

• C++ classes encapsulating high-level drivers for IWAVE<br />

functions, Born & adjoint extensions<br />

• delegates checkpointing, optimization functions to TSOpt<br />

• RVL data types translated to IWAVE in/outputs<br />

[WWS, Enriquez & Sun, Geophys. Prosp. 11]<br />

Release with acoustic staggered grid app: Q2 12<br />

Claims to fame: works just like IWAVE, passes dot product<br />

test […demo]<br />

30 March 2012 TRIP 2011 Review<br />

10

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!