This event has ended. Create your own event → Check it out
This event has ended. Create your own
View analytic
Wednesday, March 2 • 4:30pm - 4:50pm
Algorithms & Accelerators I: Parallelizing Seismic One-Way Based Migration for GPUs Using OpenACC

Sign up or log in to save this to your schedule and see who's attending!


One-Way Migration is a popular algorithm used in the industry for migrating seismic data. A parallel version of this algorithm using MPI is widely implemented. GPUs have become popular in the past few years in HPC due to their high computational throughput at reasonable power consumption, and hybrid CPU-GPU architectures are seen as a stepping stone towards next generation supercomputing. In this talk, we describe our experience in using OpenACC to parallelize One-Way Migration on NVIDIA GPUs.

In seismic applications, input data is typically made up of 'shots' which are processed independently using MPI tasks. One-Way Migration uses Fourier Finite Differencing. 'Phase-Shift' and 'Wide-Angle Correction' form the bulk of the computation for every task, taking as much as 80% of the computation time. These components form good candidates for computation on GPUs and thereby reduce application runtime by a significant amount.

Traditionally, low-level programming languages and extensions such as CUDA are used for programming on GPUs. However, this is non-trivial and the resulting code is not portable between different GPU architectures. As different accelerator technologies are being evaluated as the path forward towards exascale computing, code portability is highly desired. OpenACC is an emerging directive-based programming model for accelerators, similar to OpenMP. Application users can annotate their code using pragmas that instruct the compiler to generate appropriate device code.

We use OpenACC to parallelize One-Way Migration, which involves optimizing kernels that involve FFT operations and solving systems of tridiagonal sparse matrices. The process of optimizing applications for GPUs is discussed along with challenges and potential pitfalls for application users. We discuss our experience with different compilers and the evolution of OpenACC as a standard. Using acoustic isotropic data, we are able to improve the performance of the application by a factor of 3 using the NVIDIA K20X GPU on the Titan supercomputer at Oak Ridge National Lab, as compared with the CPU-only version of the application run on an 8-core SandyBridge CPU. However, the performance of an application that uses OpenACC does not match that written in CUDA, and it would be beneficial for future versions of compilers to focus on reducing this gap.

avatar for Kshitij Mehta

Kshitij Mehta

HPC R&D Scientist, Total E&P

Attendees (4)