[email protected] weilib: wave-equation imaging paul sava
Post on 21-Dec-2015
221 views
TRANSCRIPT
My goal
• Quick introduction to the library
• Not much about the imaging science
• Ask the right questions
Library goals
• Flexible research– Code recycling – Efficiency vs. flexibility
• Cluster access– Parallelization with MPI, OMP
• Large problems– 3-D data
Characteristics
• Programming– Fortran 90– OO
• Problem types– Shot-receiver migration– Shot-profile migration
• Versions
WE imaging
dm L• Large datasets (m,d)
– Data partition
• Complicated operators (L)– Operator partition
Outline
• Overview
• Objects– Partitioning– I/O
• Operators– WE migration– WE MVA
• Examples
WEI initialization
…
call sep_init()
call weipar_init()
call weipar_report()
call weitag_init()
call weipro_init()
call weipro_bcast()
…
WEI objects & procedures
• Objects– Data– Image– Slowness– Wavefield
• Procedures– file tag– dimensions– I/O– MPI communication
WEI data object
type wedata
character(len=128) :: tag
character(len=128) :: from
integer :: bites,esize
type(axis) :: amx,amy,ahx,ahy,aw
complex, pointer :: bin(:,:,:,:,:)
end type wedata
WEI data object
DD%tag=wtag%D
call weiD_init(DD)
call weiD_report(DD)
call weiD_allocate(DD)
call weiD_read(DD)
call weiD_write(DD)
call weiD_mpisprd(DD)
call weiD_mpigthr(DD)
…
WEI migration workflow
data
slowness
image
image
image
image
slowness
slowness
slowness
slowness
data
data
data
data
imageNode 2
Node 4
Node 3
Node 1MPI
MPI
WEI workflow example
…
call weiS_mpicopy(SS)
call weiR_mpizero(RR)
call weiD_mpisprd(DD)
…
call weimigof(…)
…
call weiR_mpisumm(RR)
…
I/O blocking example
…
do iwb=1,nwb
call weiD_read(bW,iwb)
do izb=1,nzb
call weiR_read(RR,izb)
call weiS_read(SS,izb)
…
call weiR_write(RR,izb)
end do
end do
…
Shared memory parallelization
!$OMP PARALLEL
!$OMP DO &
!$OMP$ PRIVATE(iws,izs,ith)
do iws=1,nws
ith=omp_get_thread_num()+1
do izs=1,nzs
…
end do
end do
!$OMP END DO
!$OMP END PARALLEL
Outline
• Overview
• Objects– Partitioning– I/O
• Operators– WE migration– WE MVA
• Examples
WCop: wavefield continuation operator
• Single reference slowness• Multi reference slowness
– Wavefield interpolation
zssds
dki
zik
zzzs
z
z eeWW
000
zzzz RW
SLop: slowness selection operator
• Min/Mean/Median• Lloyd
zssds
dki
zik
zzzs
z
z eeWW
000
zzzz RW
FKop: phase-shift operator
• Common-azimuth• Narrow-azimuth • Full prestack
zssds
dki
zik
zzzs
z
z eeWW
000
zzzz RW
FXop: finite-difference operator
• Phase-shift• Split-step Fourier• Generalized Screen Propagator
zssds
dki
zik
zzzs
z
z eeWW
000
zzzz RW
IGop: imaging operator
• Offset• Ray parameter
zssds
dki
zik
zzzs
z
z eeWW
000
zzzz RW
Outline
• Overview
• Objects– Partitioning– I/O
• Operators– WE migration– WE MVA
• Examples
Outline
• Overview
• Objects– Partitioning– I/O
• Operators– WE migration– WE MVA
• Examples
WEI datuming (survey sinking)
f-x operator
Slowness operator
f-k operator
Continuation operator
stat = weidtm(adj,add, D, U,SLop=weiop_slo1,
WCop=weiop_mwc1,FKop=weiop_wem3,
FXop=weiop_ssf3)
call weidtm_init(SLin=weiop_slo1_init,
WCin=weiop_mwc1_init,FKin=weiop_wem3_init,FXin=weiop_ssf3_init)
WEI migration: example 1
stat = weimig(adj,add, R, D,SLop=weiop_slo1,WCop=weiop_mwc1,FKop=weiop_wem3,FXop=weiop_ssf3,IGop=weiop_pcig)
Imaging operator
call weimig_init(SLin=weiop_slo1_init,
WCin=weiop_mwc1_init,FKin=weiop_wem3_init,FXin=weiop_ssf3_init,IGin=weiop_pcig_init)
WEI migration: example 2
stat = weimig(adj,add, R, D,SLop=weiop_sllN,WCop=weiop_mwcN,FKop=weiop_cam3,FXop=weiop_ssf3,IGop=weiop_hcig)
call weimig_init(SLin=weiop_sllN_init,
WCin=weiop_mwcN_init,FKin=weiop_cam3_init,FXin=weiop_ssf3_init,IGin=weiop_hcig_init)
WEI 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)
Scattering operator
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)
Summary
• Flexible, reusable f90 code
• Cluster ready (MPI,OMP)
• Standard operator interface
• Applications– WE datuming– WE migration– WE MVA
Resources ([email protected])
• Developers– Paul, Bob
• Manual– Marie
• Users– Biondo, Antoine, Morgan, Brad, Nick, Alejandro