Google Summer of Code 2022
Introduction
Through this work we present a C++ with R interface implementation of the CRHMC algorithm. This project was build through the Google Summer of Code program in GeomScale. Main goal for this problem was to implement the CRHMC in VolEsti with high performance. With this project now the VolEsti library has the capability to sample from large sparse polytopes. Previously all VolEsti random walks would process the constraint matrix in dense form. One can view the project Proposal Here.
Bonding Period
In the bonding period we had a number of meetings that helped me understand the goals of the program and the CRHMC algorithm. In one of the meetings I was asked to present the overall algorithm (Slides).
Code Included
The code for this module is currently under review by the VolEsti team and it spans multiple pull requests.
- Polytope preparation process: Pull Request Status: Merged
- Initial implementation of the CRHMC walk: Pull Request Status: Under Review
- Performance optimization of the implementation through the use of vectorized computation and R-interface: Pull Request Status: Under Review
Results and Testing
Our main concern of the project was the performance of the resulting computation. So we will present a number of experiments that show the speed of our implementation. Examples are run against the PolytopeSampler package.
As for testing the code we added a number of examples and post processing scripts in the VolEsti library. This way a user can easily run our code and process the output. Here are a couple of plots that demonstrate possible possible results and correctness.