Moose Performance Scaling


Created a high-performance testing interface on the supercomputer, Frontera, to test the scaling performance of MOOSE.



Through the Moncrief Internship, I created a testing interface for large-scale computational problems regarding time-dependent and steady-state heat diffusion problems. I was tasked to build and compile the parallel finite element library, MOOSE, for robustness and scalability. I worked with a supercomputer architecture where I learned how to run software on the Frontera supercomputer at the Texas Advanced Computing System. As a starting point, I learned how to use MPICH, a portable implementation of the Message Passing Interface, for performance benchmarking. I evaluated strong and weak scaling which tests a parallel architecture performance in terms of the work done per processor. For strong scaling, the number of CPU instructions per processor decreases as the number of processors working together is increased. While for weak scaling, the number of CPU instructions is constant as the number of processors is increased. The following strong and weak scaling benchmarks of MPI on Frontera are below.

After obtaining all the performance benchmarks regarding strong and weaking for MPI, I investigated the scaling performance of MOOSE through strong and weaking scaling. MOOSE's performance benchmarks are seen below where the parallel software library efficiency started to drop compared to MPI benchmarks.

The scaling performance starts to bottleneck as the number of processors increases. Because of this, I discovered that the MOOSE's mesh generator object creates the mesh serially on each processor which slows down the parallel finite element solver significantly. The serial mesh generation process causes each processor to load the entire mesh object on its allocated RAM. In many cases, the mesh overfills the memory-bound of the CPU's allocated RAM and causes the program to crash. Through the help of Dr. Clarno, I had the opportunity to collaborate with the MOOSE source code developer to purpose a fix to the mesh generation process within MOOSE.