An object-oriented optimization framework for large-scale inverse problems. (September 2021) - Biondi, Ettore; Barnier, Guillaume; Clapp, Robert G.; Picetti, Francesco; Farris, Stuart
Abstract: We present an object-oriented optimization framework that can be employed to solve small- and large-scale problems based on the concept of vectors and operators. By using such a strategy, we implement different iterative optimization algorithms that can be used in combination with architecture-independent vectors and operators, allowing the minimization of single-machine or cluster-based problems with a unique codebase. We implement a Python library following the described structure with a user-friendly interface that is designed to seamlessly scale to high-performance-computing (HPC) environments. We demonstrate its flexibility and scalability on multiple inverse problems, where convex and non-convex objective functions are optimized with different iterative algorithms. Highlights: General object-oriented framework to solve small- and large-scale inverse problem. Simple interface to develop elaborated optimization workflows. Seamless scalability from local machines to HPC clusters with the same codebase. Multiple algorithms to solve convex and non-convex inverse problems. Seismic data imaging and inversion examples using high-performance CUDA kernels.