DOI: 10.5281/zenodo.15287991
title: PUMI-Tally Performance Study for SC25

description: PUMI-Tally Library and Refactored OpenMC



A copy of the repository PUMI-Tally at the commit `a53e393`. It is used for performance and verification runs.

A copy of the repository OpenMC at the commit `08b89db`. It contains the refactoring made to call the PUMI-Tally API calls.


Compilation Scripts







This includes the compilation scripts for the refactored OpenMC with PUMI-Tally. First, install the PUMI-related dependencies (pumi-compilation-scripts.tar.gz) and then the OpenMC dependencies(OpenMC-Dep-Configs.tar.gz). Each of the related files contains a README.md for a more detailed description. Finally, OpenMC can be installed with the given configuration with config-OpenMC.sh. Please check that the directories and options in the bash scripts are correct before executing them.

 

To compile on EMIRE AI, please consult "\Compilation Scripts\README-for-EMPIRE-AI.txt".

PUMI-Tally Performance Analysis, Verification, Energy Consumption

Performance Case Setup

Different mesh sizes and the number of particles are simulated to measure PUMI-Tally's performance compared to the current solution. Meshes are created using a custom-made Omega_h-based utility to streamline the process called buildOmega_hBox. They are used in the case setup for OpenMC. The other necessary files: geometry.xml, materials.xml, settings.xml, and tallies.xml files are given along with the created meshes in case.tar.gz. It also contains a bash script called "ineractive_run.sh". It is used to run a batch of cases with a varying number of particles for a specific mesh. Mesh name is specified in the script in cases for PUMI-Tally. Make sure to rename or move the tallies.xml when running only for PUMI-Tally. If you are trying to run with OpenMC's internal tallying, replace the appropriate mesh name in the tallies.xml file and remove the "--ohMesh" flag and the mesh name from the interactive_run.sh. If both "--ohMesh" and tallies.xml are there, both kinds of tallying will be run. The timings for different sections will be written to files named as "n_#.out" where # is the number of particles.

To run on EMPIRE AI, please use the batch scripts in "PUMI-Tally Performance Analysis, Verification, Energy Consumption\Batch Scripts for EMPIRE AI". 

Performance Analysis

Times are read using a Python script (read_times.py). These collected times are analyzed using python in the attached Jupyter Notebook file named performance.ipynb. 

Verification

One of the cases (10,000 Mesh with 100,000 particles) from the performance analysis is used to verify that the flux is correct. OpenMC produces a statepoint file, which is read using a Python script called get_flux_from_sp.py in Verfication.zip. PUMI-Tally produces a pvtu file directly. Both are opened in Paraview, and lines are drawn from (0, 0, 0) to (0, 1, 1) to plot flux along them. This is then exported to CSV files and read in verification.ipynb to plot and verify.

Energy Consumption

Perlmutter reports time-resolved energy consumption data (Cray Telemetry Power Data) using this web tool, power-analysis.nersc.gov. EnergyConsumtionAnalysis.zip shows the analysis of these data and integrates to get energy consumption.

Memory Consumption and Allocations

Heaprack is used to quantify memory consumption. The heaptrack files are uploaded in heaptrack-files.tar.gz. Since this is time-consuming, instead of tracking a whole batch, 3 or 4 interactions were tracked. The files are named accordingly.