Better Productivity and Portable Finite Difference Wave Equation Propagators Using Directive Based Programming
G. Hugues and H. Calandra
Event name: Third EAGE Workshop on High Performance Computing for Upstream
Session: Wave Models
Publication date: 01 October 2017
Info: Abstract, PDF ( 114.34Kb )
Heterogeneous architectures such as GPU have demonstrated during the past decade to be highly efficient and provide better performance than conventional CPU for seismic depth imaging. GPUs requires the use of specific language extension that are considered as low-level programming model such as CUDA. Unfortunately, CUDA is not standard and not portable on multiple vendors and hardware. OpenACC is standard high-level programming model based on directives that aims to simplify GPU programming. Despite offering a more productive way to develop parallel code on GPU, OpenACC has been considered way less efficient than low-level programming models like CUDA or OpenCL. In order to understand what is the performance gap between those models, we have implemented finite difference wave equation propagators using OpenACC. In this paper, we are demonstrating that OpenACC can achieve up to 70% of efficiency when compared to the best CUDA implementation. From this experience, we have developed an optimization methodology based on an increased arithmetic intensity and applied it on acoustic and elastic wave equation for both isotropic and anisotropic media.