Acceleration of the Geostatistical Software Library (GSLIB) by code optimization and hybrid parallel programming

The Geostatistical Software Library (GSLIB) has been used in the geostatistical community for more than thirty years. It was designed as a bundle of sequential Fortran codes, and today it is still in use by many practitioners and researchers. Despite its widespread use, few attempts have been reported in order to bring this package to the multi-core era. Using all CPU resources, GSLIB algorithms can handle large datasets and grids, where tasks are compute- and memory-intensive applications. In this work, a methodology is presented to accelerate GSLIB applications using code optimization and hybrid parallel processing, specifically for compute-intensive applications. Minimal code modifications are added decreasing as much as possible the elapsed time of execution of the studied routines. If multi-core processing is available, the user can activate OpenMP directives to speed up the execution using all resources of the CPU. If multi-node processing is available, the execution is enhanced using MPI messages between the compute nodes.Four case studies are presented: experimental variogram calculation, kriging estimation, sequential gaussian and indicator simulation. For each application, three scenarios (small, large and extra large) are tested using a desktop environment with 4 CPU-cores and a multi-node server with 128 CPU-nodes. Elapsed times, speedup and efficiency results are shown. HighlightsThis work is part of an effort to accelerate geostatistical simulation codes.We apply acceleration techniques to a package of legacy geostatistical codes (GSLIB).Acceleration techniques are code optimization and hybrid OpenMP/MPI parallelization.Accelerations were applied to variogram, kriging and sequential simulation.Elapsed time and speedup results are shown.

[1]  Clayton V. Deutsch,et al.  GSLIB: Geostatistical Software Library and User's Guide , 1993 .

[2]  Jack Dongarra,et al.  MPI: The Complete Reference , 1996 .

[3]  No License,et al.  Intel ® 64 and IA-32 Architectures Software Developer ’ s Manual Volume 3 A : System Programming Guide , Part 1 , 2006 .

[4]  Philippe Renard,et al.  Parallel Multiple-Point Statistics Algorithm Based on List and Tree Structures , 2013, Mathematical Geosciences.

[5]  Alejandro Duran,et al.  The Design of OpenMP Tasks , 2009, IEEE Transactions on Parallel and Distributed Systems.

[6]  Rohit Chandra,et al.  Parallel programming in openMP , 2000 .

[7]  Alexandre Boucher,et al.  Applied Geostatistics with SGeMS: A User's Guide , 2009 .

[8]  Jack Dongarra,et al.  MPI - The Complete Reference: Volume 1, The MPI Core , 1998 .

[9]  R. Wikramaratna ACORN-A new method for generating sequences of uniformly distributed Pseudo-random Numbers , 1989 .

[10]  Julián M. Ortiz,et al.  Tuning and hybrid parallelization of a genetic-based multi-point statistics simulation code , 2014, Parallel Comput..

[11]  Jie Cheng,et al.  Programming Massively Parallel Processors. A Hands-on Approach , 2010, Scalable Comput. Pract. Exp..

[12]  Grégoire Mariethoz,et al.  A general parallelization strategy for random path based geostatistical simulation methods , 2010, Comput. Geosci..

[13]  Alfred V. Aho,et al.  Compilers: Principles, Techniques, and Tools , 1986, Addison-Wesley series in computer science / World student series edition.

[14]  Anoop Gupta,et al.  Parallel computer architecture - a hardware / software approach , 1998 .

[15]  John L. Gustafson,et al.  Reevaluating Amdahl's law , 1988, CACM.

[16]  Nancy Hitschfeld-Kahler,et al.  Improving the GPU space of computation under triangular domain problems , 2013, ArXiv.

[17]  Alfred V. Aho,et al.  Compilers: Principles, Techniques, and Tools (2nd Edition) , 2006 .

[18]  James Reinders,et al.  Intel Xeon Phi Coprocessor High Performance Programming , 2013 .

[19]  Luiz Gustavo Rasera,et al.  A conflict-free, path-level parallelization approach for sequential simulation algorithms , 2015, Comput. Geosci..

[20]  G. Amdhal,et al.  Validity of the single processor approach to achieving large scale computing capabilities , 1967, AFIPS '67 (Spring).