celeritas icon indicating copy to clipboard operation
celeritas copied to clipboard

Potential student/collaborator projects

Open sethrj opened this issue 1 year ago • 0 comments

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 syncthreads and 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

sethrj avatar Sep 16 '24 16:09 sethrj