celeritas
celeritas copied to clipboard
Potential student/collaborator projects
The Celeritas code base is designed to be modular and have many self-contained components so that it can be easily extended and modified without knowledge of the entire code base. The small learning curve makes it ideal for student projects and other low-overhead external collaboration.
Geometry
Methods
- #1339: Add a 3D raytracer and explore performance optimizations
- Add integer/reduced-precision float local BVH (see https://www.scitepress.org/Papers/2016/57280/57280.pdf)
- Implement quadric bounding box refinement
- Add a CNF solver for simplifying ORANGE CSG boolean expressions
- Implement toroidal surface solver and explore GPU optimizations
- Explore GPU optimizations of involute intersections #1342
- Use quaternions for applying transforms for track direction/polarization, and for implementing scattering rotations
- Compare performance of cell-neighbor lists vs BVH
Analysis
- Run scaling studies of problem complexities with mixed volume types
- Compare performance of various LHC subdetector test beams
- Integrate safety calculator from #1443 and compare different geometry results
- Implement covfie from ACTS as a magnetic field backend and test performance
Physics
Methods
- Implement GPU-compatible spline interpolation and other interpolation methods (#213)
- Implement GPU-based cross section evaluation for on-the-fly and pre-calculated cross sections
- Port additional methods from Geant4
- Develop GPU-optimized multiple scattering models or hybrid MSC/SS
- Implement woodcock/delta tracking for trackers/calorimeters
- Parameterize within-step cross sections for improved accuracy of slowing-down operator splitting
- Implement DPM for trackers/calorimeters
- Represent directions, photon polarizations, and interaction angle changes as quaternions
- Add interface to G4HepEm to replicate AdePT physics using Celeritas stepping loop
- Use nonrelativistic speed calculation for slow particles (see https://github.com/openmc-dev/openmc/pull/2811), check for single/double precision
Analysis
- Asymptotic analysis of MSC implementation in Geant4 and Celeritas, according to Kawrakow/Bielajew 1998
- Run convergence studies of cross section for EM models, MSC treatments
- Compare results from individual sampling distributions and form factors to references and experiment
- Validate EM physics results against experiments (Fano test for 200 MeV beams, pencil beam on single isotopes)
- Implement an awful, deliberately autocorrelated but independently "unbiased" PRNG and analyze physics results for correlations
- Validate EM physics against https://arxiv.org/pdf/1307.0933v1 , and/or creating an open source data set/validation framework for easily comparing in the future
Computer science
Methods
- Add REST interface to use Celeritas via JSON commands
- Auto-generate C++ structs (like quicktype but more tailored to Celeritas data structures) from python
- #1292: use asynchronous pooled memory allocation to improve performance of physics kernels
- Replace preallocation of certain components with async pool allocation
- Implement and study performance impact of higher-quality RNG (e.g. RANLUX, MixMax)
- Refactor kernels and algorithms using stdpar: https://github.com/celeritas-project/celeritas/issues/505
- Use SIMDJSON ?
- Explore #1528 ?
- Add helper CUDA functions to launch kernels that are active for all threads, giving the core track view with a "mask" argument so that the different parts of code can use
syncthreadsand warp-local operations. - ASYNC LOOP! Probably using coroutines
- Share a single GPU state (running on a separate thread) among all CPU threads
- Alternate memory layouts, see #1172
Analysis
- Perform parameter studies of track slots for various problems
- Verify reproducibility on CPU/GPU with the same thread slots
- Identify performance bottlenecks in kernels
- Implement various hypot implementations on GPU and CPU, study performance and register usage