While attaining a Ph.D. is initially about the classes, the majority of my time was spent on programming projects that revolved around using multigrid methods in a variety of settings, from massively parallel architectures, to single GPU implementations. Here I have outlined some of the major projects, as well as selected details behind them.
Multi-Level Domain Decomposition
As machines become more and more parallel, on massive scales, the number, and distance of communications become of great concern. This project was formed around finding an algorithm that would swap communication globally for local effective computation. Work was performed with the Center for Applied Scientific Computiing at Lawrence Livermore National Laboratory.
Developed a new algorithm that uses existing implementations of AMG to form globally overlapping problems.
Implemented a C++ code that allows a mock-up serial version of the parallel algorithm to test the method.
May 2011 - August 2013
The project is focused around research into the solution of linear systems formed from large scale-free graphs. Work is performed under a subcontract with Lawrence Livermore National Laboratory, with the long-term goal being to help develop scalable parallel solvers for linear- and eigen-systems on large-scale architectures.
Developed theory about eigenspaces of modularity matrices and demonstrated this in the setting of spectral clustering.
Implemented a C++ code that uses a variant of algebraic multigrid to solve graph laplacians.
Designed and implemented new algorithms that allow for efficient coarsening of graph laplacians, and then embedded them within the C++ code.
Developed theory about the effects of aggressive coarsening on graph laplacians and also for the specific problem of Random Walks.
Developed theory about the effects of high-degree structure on the values of eigenvectors of graph laplacians and used this to design and implement code for coarsening high-degree nodes.
Scale-free graph solvers
August 2013 - Current
May 2014 - Current
Developing a multigrid pre-conditioner to accelerate linear solves for time stepping cloth.
Responsible for developing debugging and visualization tools for linear systems from external cloth discretization.
Build an understanding of the fundamental problem and animation process.
Project goal is to create a multigrid pre-conditioner to accelerate the solution of the linear systems that arise from the time stepping of cloth. The work is performed on a contract basis for an animation company.