I finished the Rensselaer Summer Program: Advanced Cyberinfrastructure Training for Modeling Physical Systems summer school last week. My group’s project got second place and my work with performance analysis and optimization was cited as a major reason for the high placement. We built a random walk code that simulated a virus and antibodies walking over a cell surface looking for receptors. My job was to convert the python version to C++. My very rushed conversion netted a speedup of 25x on a test with 20,000 walkers and with 200,000 walkers the python version wouldn’t run at all and the C++ version worked fine.
Testing Frameworks & Continuous Integration
I spent some time this week working on finding a testing framework for Cholla along with a service for continuous integration (CI). Both GoogleTest and Catch2 seem like good candidates for testing frameworks. GoogleTest is more complicated to use but includes death tests (i.e. test if the program crashes) whereas Catch2 is far simplier with more logical syntax but doesn’t include death tests. Since Cholla doesn’t have widespread error handling and generally just crashes on errors I’m leaning towards GoogleTest. I found that Gitlab CI, CircleCI, and Jenkins all support NVIDIA GPU’s for testing, I’m going to look into GitHub Actions as well since we already use GitHub.