NonlinearSolve.jl: High-Performance and Robust Solvers for Systems of Nonlinear Equations in Julia

Avik Pal,Flemming Holtorf,Axel Larsson,Torkel Loman,Utkarsh,Frank Schäefer,Qingyu Qu,Alan Edelman,Chris Rackauckas
2024-03-28
Abstract:Efficiently solving nonlinear equations underpins numerous scientific and engineering disciplines, yet scaling these solutions for complex system models remains a challenge. This paper presents NonlinearSolve.jl - a suite of high-performance open-source nonlinear equation solvers implemented natively in the Julia programming language. NonlinearSolve.jl distinguishes itself by offering a unified API that accommodates a diverse range of solver specifications alongside features such as automatic algorithm selection based on runtime analysis, support for GPU-accelerated computation through static array kernels, and the utilization of sparse automatic differentiation and Jacobian-free Krylov methods for large-scale problem-solving. Through rigorous comparison with established tools such as Sundials and MINPACK, NonlinearSolve.jl demonstrates unparalleled robustness and efficiency, achieving significant advancements in solving benchmark problems and challenging real-world applications. The capabilities of NonlinearSolve.jl unlock new potentials in modeling and simulation across various domains, making it a valuable addition to the computational toolkit of researchers and practitioners alike.
Numerical Analysis
What problem does this paper attempt to address?
The paper primarily focuses on the efficient solving of nonlinear systems of equations and proposes a high-performance open-source software package named NonlinearSolve.jl to address this challenge. Specifically, the software package aims to solve the following core issues: 1. **Efficiency and Scalability**: In the fields of science and engineering, solving nonlinear systems of equations is fundamental to many applications. However, as the complexity of the problems increases, existing methods often struggle to effectively scale to large-scale systems. 2. **Uniformity and Flexibility**: Researchers and engineers need a flexible and easy-to-use interface to quickly experiment with different nonlinear equation-solving algorithms and choose the optimal solution based on the specific problem requirements. 3. **Automatic Optimization and Intelligent Selection**: For different types of nonlinear problems, intelligent algorithms are needed to automatically select the most suitable internal solving methods and parameter settings to balance solving speed and reliability. 4. **Support for Advanced Features**: For example, automatic sparsity detection, GPU-accelerated computation, support for sparse automatic differentiation, and matrix-free Krylov methods are especially important for solving large-scale problems. The NonlinearSolve.jl software package provides a unified application programming interface (API) that allows users to easily switch between different solver algorithms, including the choice of algorithms, line search methods, trust region strategies, automatic differentiation backends, linear solvers, and sparsity detection algorithms. Additionally, it features an intelligent multi-algorithm selection mechanism that can automatically adjust algorithms and their parameters based on runtime analysis, thereby achieving efficient nonlinear system solving. These characteristics make NonlinearSolve.jl perform excellently in solving benchmark problems and challenging real-world applications, becoming a valuable tool in interdisciplinary research and practice.