Download presentation
Presentation is loading. Please wait.
1
paul@sep.stanford.edu weilib: wave-equation imaging Paul Sava
2
paul@sep.stanford.edu My goal Quick introduction to the library Not much about the imaging science Ask the right questions
3
paul@sep.stanford.edu Library goals Flexible research –Code recycling –Efficiency vs. flexibility Cluster access –Parallelization with MPI, OMP Large problems –3-D data
4
paul@sep.stanford.edu Characteristics Programming –Fortran 90 –OO Problem types –Shot-receiver migration –Shot-profile migration Versions
5
paul@sep.stanford.edu Linear operators call operator_init(…) stat=operator(adj,add,m,d) m d L
6
paul@sep.stanford.edu WE imaging Large datasets ( m,d ) –Data partition Complicated operators ( L ) –Operator partition
7
paul@sep.stanford.edu The problem DATA ( d ) IMAGE ( m ) z
8
paul@sep.stanford.edu Cluster distribution MPI z
9
paul@sep.stanford.edu Outline Overview Objects –Partitioning –I/O Operators –WE migration –WE MVA Examples
10
paul@sep.stanford.edu WEI initialization … call sep_init() call weipar_init() call weipar_report() call weitag_init() call weipro_init() call weipro_bcast() …
11
paul@sep.stanford.edu WEI objects & procedures Objects –Data –Image –Slowness –Wavefield Procedures –file tag –dimensions –I/O –MPI communication
12
paul@sep.stanford.edu 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
13
paul@sep.stanford.edu 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) …
14
paul@sep.stanford.edu WEI migration workflow data slowness image slowness data image Node 2 Node 4 Node 3 Node 1 MPI
15
paul@sep.stanford.edu WEI workflow example … call weiS_mpicopy(SS) call weiR_mpizero(RR) call weiD_mpisprd(DD) … call weimigof(…) … call weiR_mpisumm(RR) …
16
paul@sep.stanford.edu I/O blocking z
17
paul@sep.stanford.edu 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 …
18
paul@sep.stanford.edu Shared memory parallelization OMP z
19
paul@sep.stanford.edu 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 !$OMP END DO !$OMP END PARALLEL
20
paul@sep.stanford.edu Outline Overview Objects –Partitioning –I/O Operators –WE migration –WE MVA Examples
21
paul@sep.stanford.edu WE migration extrapolation imaging depth frequency DATA ( d ) IMAGE ( m )
22
paul@sep.stanford.edu Extrapolation depth frequency WzWz W z+ z
23
paul@sep.stanford.edu Imaging depth frequency W z+ z R z+ z
24
paul@sep.stanford.edu WE migration
25
paul@sep.stanford.edu WCop: wavefield continuation operator Single reference slowness Multi reference slowness –Wavefield interpolation
26
paul@sep.stanford.edu SLop: slowness selection operator Min/Mean/Median Lloyd
27
paul@sep.stanford.edu FKop: phase-shift operator Common-azimuth Narrow-azimuth Full prestack
28
paul@sep.stanford.edu FXop: finite-difference operator Phase-shift Split-step Fourier Generalized Screen Propagator
29
paul@sep.stanford.edu IGop: imaging operator Offset Ray parameter
30
paul@sep.stanford.edu Outline Overview Objects –Partitioning –I/O Operators –WE migration –WE MVA Examples
31
paul@sep.stanford.edu WE MVA
32
paul@sep.stanford.edu SCop: scattering operator
33
paul@sep.stanford.edu Outline Overview Objects –Partitioning –I/O Operators –WE migration –WE MVA Examples
34
paul@sep.stanford.edu 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)
35
paul@sep.stanford.edu 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)
36
paul@sep.stanford.edu 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)
37
paul@sep.stanford.edu 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)
38
paul@sep.stanford.edu Summary Flexible, reusable f90 code Cluster ready (MPI,OMP) Standard operator interface Applications –WE datuming –WE migration –WE MVA
39
paul@sep.stanford.edu Resources (name@sep.stanford.edu) Developers –Paul, Bob Manual –Marie Users –Biondo, Antoine, Morgan, Brad, Nick, Alejandro
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.