Oil/Gas Solutions

Stone Ridge Technology has been working on solutions for the oil and gas industry for more than seven years and has deep experience with real world production codes including:

  • Reverse Time Migration

  • Kirchhoff Time Migration

  • Reservoir Simulation

  • Sparse Linear Algebra

These applications have been studied and developed for CPU and GPU and at least one, RTM, for FPGA's. SRT can develop codes from scratch as well as adapt and optimize codes for GPU or multi-core CPU. Our work in Reservoir Simulation and in GeoMechanics in particular has led to a deep expertise in Sparse Linear Algebra--a particularly difficult topic that arises in many physical applications constrained to local nearest neighbor interactions.

 

Reverse Time Migration

RTM is a critical application for the oil and gas industry that has only in recent years become practical to implement computationally. As commonly devised RTM proceeds on a grid in a finite difference formulation, stencils chosen can vary from the simple 7-point star to 8th order stencils. The higher orders allow a coarser grid but lead to more overlap between domains and therefore more communication. In RTM the source is propagated forward with results stored at frequent timesteps throughout the simulation cell. The receiver signal is propagated backwards in time and summed with the stored source values at each cell at each time to get the final result.  RTM is a particularly good match for GPU where factors of 15X to 20X over CPU solutions are not uncommon.

 

Kirchhoff Time Migration

While less computationally-intense than RTM, KTM is still an inversion method of choice for a wide variety of seismic cases. In KTM, a ray tracing approach is taken where each subsurface image point is treated as a diffractor. Travel times are computed to the source and receiver using a velocity model, and data from each receiver trace from the correct travel time is summed with calculated weights at the image point to create a representation of the subsurface. This describes a typical gather approach that is commonly implemented. Stone Ridge has worked with clients to port their KTM code to a multi-GPU NVIDIA platform and has worked with core code that is several thousand lines of highly optimized C++ all of which must be moved onto the GPU.  SRT has also built a KTM code that uses a scatter approach scattering data from traces to calculated image points. A paper on this work can be found in the HPC Toolshed.

 

Reservoir Simulation

SRT has deep experience in reservoir simulation: the modeling of oil, water and gas flow in the reservoir in the presence of wells. SRT has worked on reservoir codes for more than ten years with both the major energy companies and service companies. Reservoir simulators are complicated codes with many different components. If there is one bottleneck it would be in the sparse solver however there are many other parts of the code which can take significant time such as in coefficient generation, matrix assembly, compositional flash and in the treatment of facilities. Because there are multiple time consuming kernels a good overall approach to harness parallelism on both CPU and, where appropriate, on GPU is important. Stone Ridge can assist your developers by implementing new features, optimizing parallel CPU performance and GPU porting. We also bring experience in best practices for professional technical software development including source control, validation and bug tracking. 

 

Sparse Linear Algebra (SLA)

SLA arises in numerous physical simulations. Any problem in which local physics is captured through near neighbor interactions will result in SLA. The field is rich and can be very daunting for the researcher looking for direction on the correct methodologies. For example there are direct, simple iterative (Jacobi, Gauss-Siedel, SOR, SSOR) and Krylov sub-space(CG, BiCG, GMRES, MINRES) iterative approaches. There is also a full literature around pre-conditioners which are critical for achieving optimal convergence. Some of these methods scale well with the number of non-zeros and some do not. Some of these methods scale well over independent processors and some do not. There are also multi-grid methods that can be implemented in geometric ways on structured grids or through the use of algebraic multi-grid for unstructured grids. Problems of practical size with greater than nearly 1,000,000 unknowns are usually treated with iterative Krylov subspace methods and/or multi-grid.  Pre-conditioners and data storage options present another variable. Since parallel multi-core, multi-processor systems are the dominant computing platform today and for the foreseeable future, methods that scale well over independent cores are essential for good performance.

 

SRT has experience with these approaches in the context of reservoir simulation and finite element methods. It also has access to domain experts through strong academic ties. In most of the Krylov approaches, the primary performance bottleneck is found in the sparse matrix-vector multiply (SpMVM) which is done repeatedly. It is an expensive operation because the sparcity of the matrix makes the multiply a poor match to hierarchical caches such as those found on modern CPU platforms. SLA is a classic memory bound problem. As such it is amenable to acceleration on GPUs which have greater bandwidth capability. SRT has measured 4-10x acceleration on SpMVM with the new NVidia Fermi platform vs. quad-core Nehalem.