software

Some codes (I wrote) that can be freely used for noncommercial purposes. Please comply with the copyright notice and acknowledge the use.

Other software assets resulting from my team’s research projects and papers can be found either inside the paper or through clicking the CODE button in the publications page.

GNP: Graph Neural Preconditioner (Python, PyTorch)
This is a PyTorch implementation of GNP. It is a graph neural network that serves as a preconditioner for solving linear systems. For more information, see the ICLR paper Graph Neural Preconditioners for Iterative Solutions of Sparse Linear Systems.
Download: https://github.com/jiechenjiechen/GNP
FastGCN: Method and Theory (Matlab)
[Update: A few years after the publication of FastGCN, Gabe Mancino-Ball (a student I advised) implemented a modern version of it in PyTorch, with deliberation of several algorithmic choices of the method and a demonstration of numerical results. You may download the PyTorch codes from his GitHub.]
This suite of codes includes a Matlab implementation of FastGCN, as well as companion codes for the optimization theory that explains stochastic gradient descent with biased but consistent gradient estimators. The Matlab code for FastGCN was observed to be substantially faster than other implementations in Tensorflow or PyTorch. For more information, see the ICLR paper FastGCN: Fast Learning with Graph Convolutional Networks via Importance Sampling and preprint Stochastic Gradient Descent with Biased but Consistent Gradient Estimators.
Download: https://github.com/jiechenjiechen/FastGCN-matlab
RLCM: Recursively Low-Rank Compressed Matrices (C++)
This library offers the low-level linear algebra routines for recursively low-rank compressed matrices, as well as the high-level application routines for Gaussian processes and kernel methods. For more information, see the JASA paper Linear-Cost Covariance Functions for Gaussian Random Fields and JMLR paper Hierarchically Compositional Kernels for Scalable Nonparametric Learning.
Download: https://github.com/jiechenjiechen/RLCM
TreeCodeMatern (C++, MPI)
This is an MPI program for computing the matrix-vector product with the Matern kernel. It is based on a tree code algorithm proposed in the SISC paper A Fast Summation Tree Code for Matern Kernel. The implementation is documented in preprint A Parallel Tree Code for Computing Matrix-Vector Products with the Matern Kernel.
Download: http://press3.mcs.anl.gov/scala-gauss/software
ScalaGAUSS (C++, Matlab)
ScalaGAUSS is a suite of scalable tools for analyzing large-scale spatiotemporal data modeled as a Gaussian process/random field. The project addresses the computational challenges in statistical data modeling and analysis of the data in a very large scale. A number of publications arose from this project. For more information please see the project website.
Download: http://press3.mcs.anl.gov/scala-gauss/software
Block Preconditioned Conjugate Gradient (Matlab)
This is a Matlab implementation of the block preconditioned conjugate gradient algorithm for solving linear systems. This program is useful for prototyping and proof of concepts.
Download: bpcg.tar.gz (version: 2011.04.08)
Computing $f(A)b$ via Least Squares Polynomial Approximations (Matlab)
This is a Matlab program for computing a function of a large sparse matrix times a vector. The underlying technique is a least squares polynomial approximation to the function, and the method can be applied to a general arbitrary function. For more information, see the SISC paper Computing $f(A)b$ via Least Squares Polynomial Approximations.
Download: fAb.tar.gz (version: 2010.11.10)
Fast Approximate kNN Graph Construction for High Dimensional Data (C++)
This is a C++ program that efficiently computes an approximate kNN graph for high dimensional data via divide and conquer. For more information, see the JMLR paper Fast Approximate $k$NN Graph Construction for High Dimensional Data via Recursive Lanczos Bisection.
Download: knn.tar.gz (version: 2009.10.13)
Low Rank Orthogonal Approximation of Tensors (Matlab)
This toolkit provides Matlab functions to compute the low rank orthogonal approximation of a given tensor. For more information, see the SIMAX paper On the Tensor SVD and the Optimal Low Rank Orthogonal Approximation of Tensors.
Download: lroat.tar.gz (version: 2009.01.20)
Sparse Matrix SVD (Matlab)
This toolkit provides a Matlab function that has a similar functionality to the standard svds() function, but consumes much less memory and runs significantly faster than svds() for sparse matrices and large dense matrices. The computation of the SVD is based on the Lanczos algorithm. The toolkit also provides a similar function for those low-rank-modified matrices. The provided functions are not meant to replace the standard svds() for two reasons: (1) The provided functions can only compute the largest/smallest singular values/vectors, but not other ones (although modifications to meet such requirements are easy); (2) The provided functions have almost no error checks so one has to use them at caution.
Known issues: The codes were originally developed for large scale data analysis tasks (such as dimensionality reduction), where the largest singular components are in concern. The underlying algorithm is known to be less effective for computing the smallest components.
Download: sparseSVD.tar.gz (version: 2008.12.10)
Convex Quadratic Program with Box Constraints (Matlab)
This is a handy Matlab function that solves the quadratic program with box constraints $$\min \,\, \frac{1}{2} x^T H x + f^T x \,\, \text{ s.t. } \,\, \text{lb} \leq x \leq \text{ub}$$ where $H$ is positive definite. The function is implemented based on the two-metric projection method, specifically tailored for the positive definite Hessian. This function outperforms the general purpose Matlab function quadprog(). By duality, it may also solve convex quadratic programs with linear constraints $$\min \,\, \frac{1}{2} x^T H x + f^T x \,\, \text{ s.t. } \,\, Ax \leq b.$$ This code was the prototype implementation in the paper Y. Sheng, T. Yapo, and B. Cutler. Global Illumination Compensation for Spatially Augmented Reality. Eurographics 2010.
Download: qppdbox.tar.gz (version: 2011.07.08)