Skip to content

Conversation

@cuddandr
Copy link
Collaborator

@cuddandr cuddandr commented Dec 9, 2025

The light lookup table (LUT) is a large consumer of GPU memory, especially for FSD/ND-LAr (about 19.3 GB in total), and is an area for potentially large reductions in memory usage. I studied methods for reducing the total size while maintaining as much accuracy as possible compared to the original LUTs. See the following presentations for the different methods studied (polynomial fitting, precision reduction, etc.) and some validation on the impact:

For now I went with reducing the precision of the time_dist array inside the light LUT from single to half precision floats (FP32 to FP16), which results in nearly 2x memory savings. Overall it has no impact on nearly all light waveforms, and a small impact on a few (about ~0.04%) based on a single larnd-sim file.

New LUT files were created and stored in the same directory as the rest. Adds new configuration options for using the reduced precision (FP16) light lookup table to save GPU memory when running. The reduced precision is only applied to 'time_dist' and the 'vis' and 't0' arrays remain at FP32.

Added an explicit cast in light_sim.py to account for using the FP16 version of the LUT.

cuddandr and others added 2 commits December 9, 2025 15:00
Adds new configuration options for using a reduced precision (FP16)
light lookup table to save GPU memory when running. The reduced
precision is only applied to 'time_dist' and the 'vis' and 't0' arrays
remain at FP32.

Added an explicit cast in light_sim.py to account for using the FP16
version of the LUT.
@cuddandr cuddandr merged commit 5793cec into develop Jan 13, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants