SYNTOLOGY HomeExplorerAtlasCodeMethodologyAboutDevelopersFeedPricing
Paper · 2304.01294 · 2023

Sparse Cholesky Factorization for Solving Nonlinear PDEs via Gaussian Processes

arXiv · PDF · Open in the Atlas

Code that ran

We lifted 10 functions out of this paper's own repositories and ran 7 of them in a sandbox. "Ran" means the function executed on a synthesized input and returned a value. It is not a reproduction of the paper's results.

RepositoryRoleRan
yifanc96/pdes-gp-koleskysolver canonical 7 of 10
FunctionStatusWhere it lives
get_coordinates Ran yifanc96/pdes-gp-koleskysolver/kolesky/measurements.py
code served (permissive licence) · get_code("7085dc411741ae9f")
maximin_ordering Ran yifanc96/pdes-gp-koleskysolver/kolesky/ordering.py
code served (permissive licence) · get_code("2a1458b9c610ab9f")
point_measurements Ran yifanc96/pdes-gp-koleskysolver/kolesky/measurements.py
code served (permissive licence) · get_code("8eef393ee4ffcb7d")
sample_points_grid_1d Ran yifanc96/pdes-gp-koleskysolver/kolesky/pde/burgers.py
code served (permissive licence) · get_code("b2e0ad3ec2c87401")
sample_points_grid_2d Ran yifanc96/pdes-gp-koleskysolver/kolesky/pde/sampling.py
code served (permissive licence) · get_code("102b26282b953a2b")
sample_points_rdm_2d Ran yifanc96/pdes-gp-koleskysolver/kolesky/pde/sampling.py
code served (permissive licence) · get_code("7c86caf8f73dfb8b")
supernodal_reverse_maximin_sparsity_pattern Ran yifanc96/pdes-gp-koleskysolver/kolesky/supernodes.py
code served (permissive licence) · get_code("cffa7eba92feb5c4")
ordering_and_sparsity_pattern Not yet run yifanc96/pdes-gp-koleskysolver/kolesky/supernodes.py
code served (permissive licence) · get_code("3353b886794b28d2")
predict_via_big Not yet run yifanc96/pdes-gp-koleskysolver/kolesky/pde/pcg_ops.py
code served (permissive licence) · get_code("92d7f41f0f7477c1")
stack_measurements Not yet run yifanc96/pdes-gp-koleskysolver/kolesky/measurements.py
code served (permissive licence) · get_code("a9836252df3f5f70")

Repositories linked to this paper

Some links come from the archived Papers with Code dataset (CC BY-SA 4.0): attribution and licence.

Abstract

In recent years, there has been widespread adoption of machine learning-based approaches to automate the solving of partial differential equations (PDEs). Among these approaches, Gaussian processes (GPs) and kernel methods have garnered considerable interest due to their flexibility, robust theoretical guarantees, and close ties to traditional methods. They can transform the solving of general nonlinear PDEs into solving quadratic optimization problems with nonlinear, PDE-induced constraints. However, the complexity bottleneck lies in computing with dense kernel matrices obtained from pointwise evaluations of the covariance kernel, and its \textit{partial derivatives}, a result of the PDE constraint and for which fast algorithms are scarce. The primary goal of this paper is to provide a near-linear complexity algorithm for working with such kernel matrices. We present a sparse Cholesky factorization algorithm for these matrices based on the near-sparsity of the Cholesky factor under a novel ordering of pointwise and derivative measurements. The near-sparsity is rigorously justified by directly connecting the factor to GP regression and exponential decay of basis functions in numerical homogenization. We then employ the Vecchia approximation of GPs, which is optimal in the Kullback-Leibler divergence, to compute the approximate factor. This enables us to compute $ε$-approximate inverse Cholesky factors of the kernel matrices with complexity $O(N\log^d(N/ε))$ in space and $O(N\log^{2d}(N/ε))$ in time. We integrate sparse Cholesky factorizations into optimization algorithms to obtain fast solvers of the nonlinear PDE. We numerically illustrate our algorithm's near-linear space/time complexity for a broad class of nonlinear PDEs such as the nonlinear elliptic, Burgers, and Monge-Ampère equations.

For agents

The same record, over MCP at https://syntology.ai/mcp:

get_harvested_code_for_paper("2304.01294")
get_code_for_paper("2304.01294")
have("2304.01294")

Connect an agent — have() is free.