Porting Exageostat Software From C To C
Wael Mobeirek · King Abdullah University of Science and Technology Repository (King Abdullah University of Science and Technology) · 2021
PORTING EXAGEOSTAT SOFTWARE FROM C TO C++ -MOTIVATION AND GOALS • ExaGeoStat is a parallel high-performance unified framework for computational geostatistics on many-core systems for geospatial statistics in climate and environment modeling. • ExaGeoStat employs a statistical model based on the evaluation of the Gaussian log-likelihood function, which operates on a large dense covariance matrix. Generated by the parametrizable Matérn covariance function. • ExaGeoStat was developed in C, which has several practical limitations and difficulties. For instance, C follows the procedural programming approach with no support of the concept of object-oriented programming (OOP). This unnecessarily complicates the coding and debugging processes when ExaGeoStat is extended. • C++ is an OOP language that is more suitable in large applications due to its multi-paradigm structure that allows splitting the software into several components. It provides more flexibility to separately maintain each component through a set of predefined abstraction levels. • In this work, we propose porting the existing C version of ExaGeoStat to C++, supporting the multi-precision computation in ExaGeoStat using the concept of the C++ templates. The templates help in generating optimized code for different numeric precisions at runtime. • We also used the C++ lambda expressions to provide an easier way to add new model kernels to the C++ version or even through the C++ version of the software or the R version of ExaGeoStat (i.e., ExaGeoStatR). • We assessed the accuracy and the performance of the new C++ code through a set of experiments on different parallel computing hardware. We validated the correctness from the statistical perspective and demonstrate its high performance