MOD3D/RTM
Back to Applications
Back to Applications
Principal Contact Person and Organization (including e-mail address):
Ernesto Bonomi, Head of Geophysics Area, CRS4, Sardinia, Italy
ernesto@crs4.it
Brief Description of Application:
A 3D Scalar Wave Propagation Modeler / Reverse Time Migration code. The code solves the scalar wave propagation in isotropic media by 4th order 5-step leap-frog scheme for tikme integration and by calculating the laplacian either by compact finite differences (implicit scheme) or by a spectral scheme in space. The same code running backward in time and feeded by the seismic stack as surface boundary condition acts as a full two-way migration and permits imaging of steep dip structures or even turning waves. The Hamiltonian scheme adopted gives control to the energy flow and therefore very effective absorbing boundary conditions have been implemented.
Number of Lines of Code: 2700+
Target Platforms and HPF Compilers Used:
IBM SP2, SGI PowerChallenge and SGI/Cray Origin 2000; homogeneous cluster of IBM RS/6000 or SGI workstations; pghpf (The Portland Group, Inc) compiler
Coding Styles (data decompositions, computational methods):
The computational domain is a regular, uniform, rectangular 3D mesh for the pressure, pressure time derivative and the velocity model in direct space (z,x,y). The data is BLOCK-distributed along the last axis (y). Communications are generated to calculate the Laplacian either by the solution of a tridiagonal system (local pattern) or by a full 3D FFT (all-to-all pattern due to a transpose).
Extrinsic Interfaces Used (and reasons):
F77_LOCAL is used to achieve a 3D FFT by 2D FFT + transpose + 1D FFT and in many cases simply to get a better sequential optimization from the native compiler
Please comment on any aspects of the application that might be interesting, including any problems using HPF effectively:
- the memory requirement of the executable is much larger than simple estimates based on the large multidimensional arrays used in the HPF source (which, in turn, are close to the memory requested by executables compiled by Fortran 90 + MP-style directives);
- the single processor performance for most routines or code segments involving pure concurrent operations is disappointing, therefore F77_LOCAL has been used in many cases simply to get a better sequential optimization from the native compiler